如何手动创建tf.Summary()

Car*_*ada 40 tensorflow

我经常想记录python变量 - 而不是tf张量.

它在文档中说"你可以传递一个tf.Summary用你自己的数据填充的协议缓冲区"但是没有文档tf.Summary,我无法弄清楚如何使用它.

任何人都知道如何以这种方式创建标量摘要?

mrr*_*rry 60

您可以tf.Summary在Python程序中创建一个对象,并将其写入tf.summary.FileWriter使用该SummaryWriter.add_summary()方法获取TensorFlow生成的摘要的同一对象.

tf.Summary类是一个Python的协议封装器缓冲器对于Summary协议缓冲器.每个都Summary包含一个tf.Summary.Value协议缓冲区列表,每个协议缓冲区都有一个标记和一个"简单"(浮点标量)值,一个图像,一个直方图或一个音频片段.例如,您可以从Python对象生成标量摘要,如下所示:

writer = tf.train.SummaryWriter(...)
value = 37.0
summary = tf.Summary(value=[
    tf.Summary.Value(tag="summary_tag", simple_value=value), 
])
writer.add_summary(summary)
Run Code Online (Sandbox Code Playgroud)

  • 我创建了一个关于如何创建图像摘要的要点:https://gist.github.com/gyglim/1f8dfb1b5c82627ae3efcfbbadb9f514#file-tensorboard_logging-py-L41 (4认同)
  • 不推荐使用`tf.train.SummaryWriter`,而是使用`tf.summary.FileWriter` (3认同)

nes*_*uno 6

如果要记录python值,则必须创建一个占位符,在运行tf.Summaryop 时必须输入该占位符.

这是一个剪切的代码

value_ = tf.placeholder(tf.float32, [])
summary_op = tf.scalar_summary("value_log", value_)
my_python_variable = 10
# define everything else you need...
# ...
with tf.Session() as sess:
    for i in range(0, 10):
        sess.run(summary_op, feed_dict={value_: my_python_variable*i})
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但我明确要求一种方法来直接创建一个Summary protobuf,以便我可以避免这种繁琐的方法. (2认同)