TensorFlow:如何在 supervisor.loop 中使用 tf.train.SummaryWriter (0



我正在使用tf.train.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 在启动其他服务下记录了这一点:

示例:启动线程以打印损失。我们希望这个线程每 60 秒运行一次,所以我们使用 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的答案,以获取有关如何以智能方式执行此操作的好提示。

最新更新