def test_step_counter_every_n_secs(self): with tf.Graph().as_default() as g, tf.Session() as sess: global_step = tf.contrib.framework.get_or_create_global_step() train_op = tf.assign_add(global_step, 1) summary_writer = testing.FakeSummaryWriter(self.log_dir, g) hook = tf.train.StepCounterHook( summary_writer=summary_writer, every_n_steps=None, every_n_secs=0.1) hook.begin() sess.run(tf.global_variables_initializer()) mon_sess = monitored_session._HookedSession(sess, [hook]) mon_sess.run(train_op) time.sleep(0.2) mon_sess.run(train_op) time.sleep(0.2) mon_sess.run(train_op) hook.end(sess) summary_writer.assert_summaries( test_case=self, expected_logdir=self.log_dir, expected_graph=g, expected_summaries={}) self.assertTrue(summary_writer.summaries, 'No summaries were created.') self.assertItemsEqual([2, 3], summary_writer.summaries.keys()) for summary in summary_writer.summaries.values(): summary_value = summary[0].value[0] self.assertEqual('global_step/sec', summary_value.tag) self.assertGreater(summary_value.simple_value, 0)
def test_global_step_name(self): with tf.Graph().as_default() as g, tf.Session() as sess: with tf.variable_scope('bar'): foo_step = tf.get_variable('foo', initializer=0, trainable=False, collections=[ tf.GraphKeys.GLOBAL_STEP, tf.GraphKeys.GLOBAL_VARIABLES ]) train_op = tf.assign_add(foo_step, 1) summary_writer = testing.FakeSummaryWriter(self.log_dir, g) hook = tf.train.StepCounterHook(summary_writer=summary_writer, every_n_steps=1, every_n_secs=None) hook.begin() sess.run(tf.global_variables_initializer()) mon_sess = monitored_session._HookedSession(sess, [hook]) mon_sess.run(train_op) mon_sess.run(train_op) hook.end(sess) summary_writer.assert_summaries(test_case=self, expected_logdir=self.log_dir, expected_graph=g, expected_summaries={}) self.assertTrue(summary_writer.summaries, 'No summaries were created.') self.assertItemsEqual([2], summary_writer.summaries.keys()) summary_value = summary_writer.summaries[2][0].value[0] self.assertEqual('bar/foo/sec', summary_value.tag)
def setUp(self): tf.test.TestCase.setUp(self) self.log_dir = 'log/dir' self.summary_writer = testing.FakeSummaryWriter(self.log_dir) var = tf.Variable(0.0) tensor = tf.assign_add(var, 1.0) self.summary_op = tf.summary.scalar('my_summary', tensor) global_step = tf.contrib.framework.get_or_create_global_step() self.train_op = tf.assign_add(global_step, 1)
def test_summary_saver(self): with ops.Graph().as_default() as g, self.test_session(g): log_dir = 'log/dir' summary_writer = testing.FakeSummaryWriter(log_dir, g) var = variables.Variable(0.0) var.initializer.run() tensor = state_ops.assign_add(var, 1.0) summary_op = summary.scalar('my_summary', tensor) self._run_monitor( learn.monitors.SummarySaver( summary_op=summary_op, save_steps=8, summary_writer=summary_writer), num_epochs=3, num_steps_per_epoch=10) summary_writer.assert_summaries( test_case=self, expected_logdir=log_dir, expected_graph=g, expected_summaries={ 0: { 'my_summary': 1.0 }, 1: { 'my_summary': 2.0 }, 9: { 'my_summary': 3.0 }, 17: { 'my_summary': 4.0 }, 25: { 'my_summary': 5.0 }, 29: { 'my_summary': 6.0 }, })
def test_step_counter_every_n_steps(self): with tf.Graph().as_default() as g, tf.Session() as sess: global_step = tf.contrib.framework.get_or_create_global_step() train_op = tf.assign_add(global_step, 1) summary_writer = testing.FakeSummaryWriter(self.log_dir, g) hook = tf.train.StepCounterHook(summary_writer=summary_writer, every_n_steps=10) hook.begin() sess.run(tf.initialize_all_variables()) mon_sess = monitored_session._HookedSession(sess, [hook]) for _ in range(30): time.sleep(0.01) mon_sess.run(train_op) hook.end(sess) summary_writer.assert_summaries(test_case=self, expected_logdir=self.log_dir, expected_graph=g, expected_summaries={}) self.assertItemsEqual([11, 21], summary_writer.summaries.keys()) for step in [11, 21]: summary_value = summary_writer.summaries[step][0].value[0] self.assertEqual('global_step/sec', summary_value.tag) self.assertGreater(summary_value.simple_value, 0)
def test_step_counter(self): with tf.Graph().as_default() as g, tf.Session() as sess: global_step = tf.contrib.framework.get_or_create_global_step() train_op = tf.assign_add(global_step, 1) summary_writer = testing.FakeSummaryWriter(self.log_dir, g) hook = basic_session_run_hooks.StepCounterHook( summary_writer=summary_writer, every_n_steps=10) hook.begin() sess.run(tf.initialize_all_variables()) mon_sess = monitored_session._HookedSession(sess, [hook]) for _ in range(30): time.sleep(0.01) mon_sess.run(train_op) hook.end(sess) summary_writer.assert_summaries(test_case=self, expected_logdir=self.log_dir, expected_graph=g, expected_summaries={}) for step in [11, 21]: summary_value = summary_writer.summaries[step][0].value[0] self.assertTrue(summary_value.tag, 'global_step/sec') # check at least 10 steps per sec is recorded. self.assertGreater(summary_value.simple_value, 10)
def test_summary_saver(self): with tf.Graph().as_default() as g, tf.Session() as sess: log_dir = 'log/dir' summary_writer = testing.FakeSummaryWriter(log_dir, g) var = tf.Variable(0.0) tensor = tf.assign_add(var, 1.0) summary_op = tf.scalar_summary('my_summary', tensor) global_step = tf.contrib.framework.get_or_create_global_step() train_op = tf.assign_add(global_step, 1) hook = basic_session_run_hooks.SummarySaverHook( summary_op=summary_op, save_steps=8, summary_writer=summary_writer) hook.begin() sess.run(tf.initialize_all_variables()) mon_sess = monitored_session._HookedSession(sess, [hook]) for i in range(30): _ = i mon_sess.run(train_op) hook.end(sess) summary_writer.assert_summaries(test_case=self, expected_logdir=log_dir, expected_graph=g, expected_summaries={ 1: { 'my_summary': 1.0 }, 9: { 'my_summary': 2.0 }, 17: { 'my_summary': 3.0 }, 25: { 'my_summary': 4.0 }, })