def f(): with writer.as_default(): with summary_ops.record_if(record_fn): return [ summary_ops.write('tag', 1, step=step), summary_ops.write('tag', 1, step=step), summary_ops.write('tag', 1, step=step)]
def f(): with writer.as_default(): # Use assertAllEqual instead of assertTrue since it works in a defun. self.assertAllEqual(summary_ops.write('default', 1, step=0), True) with summary_ops.record_if(True): self.assertAllEqual(summary_ops.write('set_on', 1, step=0), True) with summary_ops.record_if(False): self.assertAllEqual(summary_ops.write('set_off', 1, step=0), False)
def testWrite_ndarray(self): logdir = self.get_temp_dir() with context.eager_mode(): with summary_ops.create_file_writer_v2(logdir).as_default(): summary_ops.write('tag', [[1, 2], [3, 4]], step=12) events = events_from_logdir(logdir) value = events[1].summary.value[0] self.assertAllEqual([[1, 2], [3, 4]], to_numpy(value))
def testWrite_stringTensor(self): logdir = self.get_temp_dir() with context.eager_mode(): with summary_ops.create_file_writer_v2(logdir).as_default(): summary_ops.write('tag', [b'foo', b'bar'], step=12) events = events_from_logdir(logdir) value = events[1].summary.value[0] self.assertAllEqual([b'foo', b'bar'], to_numpy(value))
def testWrite_tensor(self): logdir = self.get_temp_dir() with context.eager_mode(): t = constant_op.constant([[1, 2], [3, 4]]) with summary_ops.create_file_writer_v2(logdir).as_default(): summary_ops.write('tag', t, step=12) expected = t.numpy() events = events_from_logdir(logdir) value = events[1].summary.value[0] self.assertAllEqual(expected, to_numpy(value))
def testWrite_recordIf_constant(self): logdir = self.get_temp_dir() with context.eager_mode(): with summary_ops.create_file_writer_v2(logdir).as_default(): self.assertTrue(summary_ops.write('default', 1, step=0)) with summary_ops.record_if(True): self.assertTrue(summary_ops.write('set_on', 1, step=0)) with summary_ops.record_if(False): self.assertFalse(summary_ops.write('set_off', 1, step=0)) events = events_from_logdir(logdir) self.assertEqual(3, len(events)) self.assertEqual('default', events[1].summary.value[0].tag) self.assertEqual('set_on', events[2].summary.value[0].tag)
def testMaxQueue(self): logdir = self.get_temp_dir() with context.eager_mode(): with summary_ops.create_file_writer_v2( logdir, max_queue=1, flush_millis=999999).as_default(): get_total = lambda: len(events_from_logdir(logdir)) # Note: First tf.Event is always file_version. self.assertEqual(1, get_total()) summary_ops.write('tag', 1, step=0) self.assertEqual(1, get_total()) # Should flush after second summary since max_queue = 1 summary_ops.write('tag', 1, step=0) self.assertEqual(3, get_total())
def testWrite_gpuDeviceContext(self): logdir = self.get_temp_dir() with context.eager_mode(): with summary_ops.create_file_writer(logdir).as_default(): with ops.device('/GPU:0'): value = constant_op.constant(42.0) step = constant_op.constant(12, dtype=dtypes.int64) summary_ops.write('tag', value, step=step).numpy() empty_metadata = summary_pb2.SummaryMetadata() events = events_from_logdir(logdir) self.assertEqual(2, len(events)) self.assertEqual(12, events[1].step) self.assertEqual(42, to_numpy(events[1].summary.value[0])) self.assertEqual(empty_metadata, events[1].summary.value[0].metadata)
def testNoSharing(self): # Two writers with the same logdir should not share state. logdir = self.get_temp_dir() with context.eager_mode(): writer1 = summary_ops.create_file_writer_v2(logdir) with writer1.as_default(): summary_ops.write('tag', 1, step=1) event_files = gfile.Glob(os.path.join(logdir, '*')) self.assertEqual(1, len(event_files)) file1 = event_files[0] writer2 = summary_ops.create_file_writer_v2(logdir) with writer2.as_default(): summary_ops.write('tag', 1, step=2) event_files = gfile.Glob(os.path.join(logdir, '*')) self.assertEqual(2, len(event_files)) event_files.remove(file1) file2 = event_files[0] # Extra writes to ensure interleaved usage works. with writer1.as_default(): summary_ops.write('tag', 1, step=1) with writer2.as_default(): summary_ops.write('tag', 1, step=2) events = iter(events_from_file(file1)) self.assertEqual('brain.Event:2', next(events).file_version) self.assertEqual(1, next(events).step) self.assertEqual(1, next(events).step) self.assertRaises(StopIteration, lambda: next(events)) events = iter(events_from_file(file2)) self.assertEqual('brain.Event:2', next(events).file_version) self.assertEqual(2, next(events).step) self.assertEqual(2, next(events).step) self.assertRaises(StopIteration, lambda: next(events))
def testWrite_usingDefaultStepVariable_fromLegacyGraph(self): logdir = self.get_temp_dir() try: with context.graph_mode(): writer = summary_ops.create_file_writer(logdir) mystep = variables.Variable(0, dtype=dtypes.int64) summary_ops.set_step(mystep) with writer.as_default(): write_op = summary_ops.write('tag', 1.0) first_assign_op = mystep.assign_add(1) second_assign_op = mystep.assign(10) with self.cached_session() as sess: sess.run(writer.init()) sess.run(mystep.initializer) sess.run(write_op) sess.run(first_assign_op) sess.run(write_op) sess.run(second_assign_op) sess.run(write_op) sess.run(writer.flush()) events = events_from_logdir(logdir) self.assertEqual(4, len(events)) self.assertEqual(0, events[1].step) self.assertEqual(1, events[2].step) self.assertEqual(10, events[3].step) finally: # Reset to default state for other tests. summary_ops.set_step(None)
def testCreate_withInitAndClose(self): logdir = self.get_temp_dir() with context.eager_mode(): writer = summary_ops.create_file_writer_v2( logdir, max_queue=1000, flush_millis=1000000) get_total = lambda: len(events_from_logdir(logdir)) self.assertEqual(1, get_total()) # file_version Event # Calling init() again while writer is open has no effect writer.init() self.assertEqual(1, get_total()) with writer.as_default(): summary_ops.write('tag', 1, step=0) self.assertEqual(1, get_total()) # Calling .close() should do an implicit flush writer.close() self.assertEqual(2, get_total())
def testWriterFlush(self): logdir = self.get_temp_dir() get_total = lambda: len(events_from_logdir(logdir)) with context.eager_mode(): writer = summary_ops.create_file_writer_v2( logdir, max_queue=1000, flush_millis=1000000) self.assertEqual(1, get_total()) # file_version Event with writer.as_default(): summary_ops.write('tag', 1, step=0) self.assertEqual(1, get_total()) writer.flush() self.assertEqual(2, get_total()) summary_ops.write('tag', 1, step=0) self.assertEqual(2, get_total()) # Exiting the "as_default()" should do an implicit flush self.assertEqual(3, get_total())
def testWrite_recordIf_callable(self): logdir = self.get_temp_dir() with context.eager_mode(): step = variables.Variable(-1, dtype=dtypes.int64) def record_fn(): step.assign_add(1) return int(step % 2) == 0 with summary_ops.create_file_writer_v2(logdir).as_default(): with summary_ops.record_if(record_fn): self.assertTrue(summary_ops.write('tag', 1, step=step)) self.assertFalse(summary_ops.write('tag', 1, step=step)) self.assertTrue(summary_ops.write('tag', 1, step=step)) self.assertFalse(summary_ops.write('tag', 1, step=step)) self.assertTrue(summary_ops.write('tag', 1, step=step)) events = events_from_logdir(logdir) self.assertEqual(4, len(events)) self.assertEqual(0, events[1].step) self.assertEqual(2, events[2].step) self.assertEqual(4, events[3].step)
def define_ops(): result = [] # TF 2.0 summary ops result.append(summary_ops.write('write', 1, step=0)) result.append(summary_ops.write_raw_pb(b'', step=0, name='raw_pb')) # TF 1.x tf.contrib.summary ops result.append(summary_ops.generic('tensor', 1, step=1)) result.append(summary_ops.scalar('scalar', 2.0, step=1)) result.append(summary_ops.histogram('histogram', [1.0], step=1)) result.append(summary_ops.image('image', [[[[1.0]]]], step=1)) result.append(summary_ops.audio('audio', [[1.0]], 1.0, 1, step=1)) return result
def testWrite(self): logdir = self.get_temp_dir() with context.eager_mode(): with summary_ops.create_file_writer_v2(logdir).as_default(): output = summary_ops.write('tag', 42, step=12) self.assertTrue(output.numpy()) events = events_from_logdir(logdir) self.assertEqual(2, len(events)) self.assertEqual(12, events[1].step) value = events[1].summary.value[0] self.assertEqual('tag', value.tag) self.assertEqual(42, to_numpy(value))
def testWrite_metadata(self): logdir = self.get_temp_dir() metadata = summary_pb2.SummaryMetadata() metadata.plugin_data.plugin_name = 'foo' with context.eager_mode(): with summary_ops.create_file_writer_v2(logdir).as_default(): summary_ops.write('obj', 0, 0, metadata=metadata) summary_ops.write('bytes', 0, 0, metadata=metadata.SerializeToString()) m = constant_op.constant(metadata.SerializeToString()) summary_ops.write('string_tensor', 0, 0, metadata=m) events = events_from_logdir(logdir) self.assertEqual(4, len(events)) self.assertEqual(metadata, events[1].summary.value[0].metadata) self.assertEqual(metadata, events[2].summary.value[0].metadata) self.assertEqual(metadata, events[3].summary.value[0].metadata)
def testWrite_usingDefaultStep(self): logdir = self.get_temp_dir() try: with context.eager_mode(): with summary_ops.create_file_writer(logdir).as_default(): summary_ops.set_step(1) summary_ops.write('tag', 1.0) summary_ops.set_step(2) summary_ops.write('tag', 1.0) mystep = variables.Variable(10, dtype=dtypes.int64) summary_ops.set_step(mystep) summary_ops.write('tag', 1.0) mystep.assign_add(1) summary_ops.write('tag', 1.0) events = events_from_logdir(logdir) self.assertEqual(5, len(events)) self.assertEqual(1, events[1].step) self.assertEqual(2, events[2].step) self.assertEqual(10, events[3].step) self.assertEqual(11, events[4].step) finally: # Reset to default state for other tests. summary_ops.set_step(None)
def testFlushFunction(self): logdir = self.get_temp_dir() with context.eager_mode(): writer = summary_ops.create_file_writer_v2( logdir, max_queue=999999, flush_millis=999999) with writer.as_default(): get_total = lambda: len(events_from_logdir(logdir)) # Note: First tf.Event is always file_version. self.assertEqual(1, get_total()) summary_ops.write('tag', 1, step=0) summary_ops.write('tag', 1, step=0) self.assertEqual(1, get_total()) summary_ops.flush() self.assertEqual(3, get_total()) # Test "writer" parameter summary_ops.write('tag', 1, step=0) self.assertEqual(3, get_total()) summary_ops.flush(writer=writer) self.assertEqual(4, get_total()) summary_ops.write('tag', 1, step=0) self.assertEqual(4, get_total()) summary_ops.flush(writer=writer._resource) # pylint:disable=protected-access self.assertEqual(5, get_total())
def testWrite_usingDefaultStepConstant_fromLegacyGraph(self): logdir = self.get_temp_dir() try: with context.graph_mode(): writer = summary_ops.create_file_writer(logdir) summary_ops.set_step(1) with writer.as_default(): write_op = summary_ops.write('tag', 1.0) summary_ops.set_step(2) with self.cached_session() as sess: sess.run(writer.init()) sess.run(write_op) sess.run(write_op) sess.run(writer.flush()) events = events_from_logdir(logdir) self.assertEqual(3, len(events)) self.assertEqual(1, events[1].step) # The step value will still be 1 because the value was captured at the # time the graph was constructed. self.assertEqual(1, events[2].step) finally: # Reset to default state for other tests. summary_ops.set_step(None)
def testEagerMemory(self): logdir = self.get_temp_dir() with summary_ops.create_file_writer_v2(logdir).as_default(): summary_ops.write('tag', 1, step=0)
def f(step): with writer.as_default(): with summary_ops.record_if(math_ops.equal(step % 2, 0)): return summary_ops.write('tag', 1, step=step)
def run_fn(): """Function executed for each replica.""" with summary_writer.as_default(): replica_id = ds_context.get_replica_context( ).replica_id_in_sync_group return summary_ops.write("a", replica_id)
def f(t): with summary_ops.create_file_writer(logdir).as_default(): summary_ops.write('tag', t, step=12)
def f(t): with writer.as_default(): summary_ops.write('tag', t, step=12)
def f(): with summary_ops.create_file_writer(logdir).as_default(): return summary_ops.write('tag', 42, step=12)
def f2(): if not hasattr(f2, 'writer'): f2.writer = summary_ops.create_file_writer_v2(logdir) with f2.writer.as_default(): summary_ops.write('tag', 1, step=2)
def f(): with writer.as_default(): summary_ops.write('tag', 1.0)
def f(step): with writer.as_default(): with summary_ops.record_if(math_ops.equal(step % 2, 0)): return summary_ops.write('tag', 1, step=step)
def testWrite_noStep(self): logdir = self.get_temp_dir() with summary_ops.create_file_writer(logdir).as_default(): with self.assertRaisesRegex(ValueError, 'No step set'): summary_ops.write('tag', 42)
def f(step): with summary_ops.create_file_writer(logdir).as_default(): with summary_ops.record_if(math_ops.equal(step % 2, 0)): return summary_ops.write('tag', 1, step=step)
def testWrite_noStep(self): logdir = self.get_temp_dir() with summary_ops.create_file_writer(logdir).as_default(): with self.assertRaisesRegex(ValueError, 'No step set'): summary_ops.write('tag', 42)
def f(): with writer.as_default(): return summary_ops.write('tag', 42, step=12)
def f(): output = summary_ops.write('tag', 42, step=12, name='anonymous') self.assertTrue(output.name.startswith('anonymous'))
def f2(): if not hasattr(f2, 'writer'): f2.writer = summary_ops.create_file_writer_v2(logdir) with f2.writer.as_default(): summary_ops.write('tag', 1, step=2)
def f(t): with writer.as_default(): summary_ops.write('tag', t, step=12)
def f(): with writer.as_default(): return summary_ops.write('tag', 42, step=12)
def f(): output = summary_ops.write('tag', 42, step=12, name='anonymous') self.assertTrue(output.name.startswith('anonymous'))
def f(): with writer.as_default(): summary_ops.write('tag', 1.0)
def testWrite_noStep_okayIfAlsoNoDefaultWriter(self): # Use assertAllEqual instead of assertFalse since it works in a defun. self.assertAllEqual(False, summary_ops.write('tag', 42))
def testNoMemoryLeak_eagerMode(self): logdir = self.get_temp_dir() with summary_ops.create_file_writer_v2(logdir).as_default(): summary_ops.write('tag', 1, step=0)
def testWrite_noStep_okayIfAlsoNoDefaultWriter(self): # Use assertAllEqual instead of assertFalse since it works in a defun. self.assertAllEqual(False, summary_ops.write('tag', 42))
def run_fn(): """Function executed for each replica.""" with summary_writer.as_default(): replica_id = ds_context.get_replica_context().replica_id_in_sync_group return summary_ops.write("a", replica_id)
def testWrite_noDefaultWriter(self): with context.eager_mode(): self.assertFalse(summary_ops.write('tag', 42, step=0))