【问题标题】:How do I add an arbitrary value to a TensorFlow summary?如何将任意值添加到 TensorFlow 摘要?
【发布时间】:2016-09-28 13:16:11
【问题描述】:

为了将一个简单的值 val 记录到 TensorBoard 摘要中,我需要

val = 5
test_writer.add_summary(sess.run(tf.scalar_summary('test', val)), global_step)

sess.run(tf.scalar_summary('test', val))

真的有必要将val 添加为摘要吗?

【问题讨论】:

标签: logging tensorflow tensorboard


【解决方案1】:

这是另一个(可能是最新的)使用 tf.Summary.FileWriter 类的解决方案:

summary_writer = tf.summary.FileWriter(logdir=output_dir)
value = tf.Summary.Value(tag='variable name', simple_value=value)
summary_writer.add_event(summary=tf.summary.Event(tf.Summary([value]),
                         wall_time=time.time(),
                         step=global_step))

然后您可以这样创建 SummarySaverHook:

summary_hook = tf.train.SummarySaverHook(
    summary_writer=summary_writer,
    summary_op=your_summary_op)

您可以将其传递给 MonitoredTrainingSession。 summary_op 的一个例子是tf.summary.merge_all()

注意:您必须等待 FileWriter 刷新才能出现在您的事件文件中。你可以通过调用summary_writer.flush()来强制它


一个更简单的解决方案:

summary_writer = tf.summary.FileWriter(output_dir)
summary = tf.Summary()
summary.value.add(tag='name of var', simple_value=value)
summary_writer.add_summary(summary, global_step)
summary_writer.flush()

【讨论】:

  • FileWriter.add_event 如果要更改序列化的 wall_time 非常有用
【解决方案2】:

你可以自己构建摘要,比如

from tensorflow.core.framework import summary_pb2

value = summary_pb2.Summary.Value(tag="Accuracy", simple_value=0.95)
summary = summary_pb2.Summary(value=[value])

然后您可以像在您的代码中一样使用add_summary 添加summary

【讨论】:

    猜你喜欢
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多