Tensorflow 如何手动创建tf.Summary()

Tensorflow 如何手动创建tf.Summary(),tensorflow,Tensorflow,我经常想记录python变量,而不是tf张量 在文档中,它说“您可以传递一个用您自己的数据填充的tf.Summary协议缓冲区”,但没有tf.Summary文档,我不知道如何使用它 有人知道如何以这种方式创建标量摘要吗?如果要记录python值,必须创建一个占位符,在运行tf.summaryop时必须输入该占位符 这是一个被截取的密码 value_ = tf.placeholder(tf.float32, []) summary_op = tf.scalar_summary("value_log

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

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


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

如果要记录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})

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

tf.Summary
类是一个用于。每个
Summary
都包含一个协议缓冲区列表,每个缓冲区都有一个标记和一个“简单”(浮点标量)值、一个、一个或一个。例如,可以从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)
循环内部:

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
的索引是按照变量添加到摘要中的顺序进行的。

谢谢,但我明确要求一种直接创建摘要协议的方法,以避免这种繁琐的方法。如何创建图像摘要?我创建了一个要点,说明如何创建图像摘要:
tf.train.SummaryWriter
已被弃用,请改用
tf.summary.FileWriter
如何将当前历元也传递给summary?如果您还想存储全局步骤,请使用
writer.add_summary(summary,global_step)
。可能的重复项