如何手动创建tf.Summary()
tensorflow
5
0

我经常想记录python变量-与tf张量相反。

在文档中说“您可以传递使用自己的数据填充的tf.Summary协议缓冲区”,但是没有tf.Summary文档,我不知道如何使用它。

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

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

您可以在Python程序中创建一个tf.Summary对象,然后使用SummaryWriter.add_summary()方法将其SummaryWriter.add_summary()使用SummaryWriter.add_summary()生成的摘要的同一tf.summary.FileWriter对象。

tf.Summary类是Summary协议缓冲区Python协议缓冲区包装器 。每个Summary包含tf.Summary.Value协议缓冲区的列表, 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)
收藏
评论

在培训期间,我需要对自定义摘要变量进行很多更新,因此我实现了我的方法,如下所示:

循环之前:

writer = tf.summary.FileWriter(log_folder)
accuracy = None
accuracy_summary = tf.Summary()
accuracy_summary.value.add(tag='accuracy', simple_value=accuracy)

循环内:

if i%20000 == 0:
    accuracy = get_accuracy()
    accuracy_summary.value[0].simple_value = accuracy
    writer.add_summary(accuracy_summary, i)

我假设value索引按将变量添加到摘要中的顺序排列。

收藏
评论

如果要记录python值,则必须创建一个占位符,在运行tf.Summary op时必须提供该占位符。

这是一个代码片段

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})
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号