TensorFlow:如何在 supervisor.loop 中使用 tf.train.SummaryWriter (0.12.0rc1)
TensorFlow: How to use tf.train.SummaryWriter inside supervisor.loop (0.12.0rc1)
我正在使用 tf.train.Supervisor
来管理我的会话。我已经在supervisor中使用summary_writer
写一些总结了。然而,我会在其他时间间隔写另一组摘要。据我所知,最简单的方法是使用 supervisor.loop
。我基本上是:
伪代码:
summary_merged_valid = tf.summary.merge(summary_ops_valid)
valid_writer = tf.train.SummaryWriter(logdir + '/valid')
global_step = slim.get_or_create_global_step()
...
config = tf.ConfigProto(allow_soft_placement=True)
with sv.managed_session(config=config) as sess:
...
sv.loop(validation_interval,
valid_writer.add_summary,
(summary_merged_valid, global_step)
)
我该怎么办?
您还可以使用
向主管提供自己的摘要
sv.summary_computed(sess, summary, global_step)
手动。一件似乎没有被过多宣传的有趣事情是,您可以像这样将摘要分组到集合中:
tf.summary.scalar('learning_rate', p_lr, collections=['train'])
tf.summary.scalar('loss', t_loss, collections=['train', 'test'])
s_training = tf.summary.merge_all('train')
然后仅通过获取 s_training
并将其提供给上述函数来写入 train
变量。
TensorFlow 在here启动附加服务:
下对此进行了记录
Example: Start a thread to print losses. We want this thread to run every 60 seconds, so we launch it with sv.loop().
sv = Supervisor(logdir='/tmp/mydir') with sv.managed_session(FLAGS.master) as sess:
sv.loop(60, print_loss, (sess)) while not sv.should_stop():
sess.run(my_train_op)
查看@sunside 的回答,了解如何巧妙地做到这一点的好技巧。
我正在使用 tf.train.Supervisor
来管理我的会话。我已经在supervisor中使用summary_writer
写一些总结了。然而,我会在其他时间间隔写另一组摘要。据我所知,最简单的方法是使用 supervisor.loop
。我基本上是:
伪代码:
summary_merged_valid = tf.summary.merge(summary_ops_valid)
valid_writer = tf.train.SummaryWriter(logdir + '/valid')
global_step = slim.get_or_create_global_step()
...
config = tf.ConfigProto(allow_soft_placement=True)
with sv.managed_session(config=config) as sess:
...
sv.loop(validation_interval,
valid_writer.add_summary,
(summary_merged_valid, global_step)
)
我该怎么办?
您还可以使用
向主管提供自己的摘要sv.summary_computed(sess, summary, global_step)
手动。一件似乎没有被过多宣传的有趣事情是,您可以像这样将摘要分组到集合中:
tf.summary.scalar('learning_rate', p_lr, collections=['train'])
tf.summary.scalar('loss', t_loss, collections=['train', 'test'])
s_training = tf.summary.merge_all('train')
然后仅通过获取 s_training
并将其提供给上述函数来写入 train
变量。
TensorFlow 在here启动附加服务:
下对此进行了记录Example: Start a thread to print losses. We want this thread to run every 60 seconds, so we launch it with sv.loop().
sv = Supervisor(logdir='/tmp/mydir') with sv.managed_session(FLAGS.master) as sess: sv.loop(60, print_loss, (sess)) while not sv.should_stop(): sess.run(my_train_op)
查看@sunside 的回答,了解如何巧妙地做到这一点的好技巧。