我正在玩TensorBoard,无法制作一个简单的示例。计算只是简单地添加两个常量。
import tensorflow as tf
sess = tf.Session()
a = tf.constant(1, name = "const1")
b = tf.constant(10, name = "const2")
c = a + b
asum = tf.summary.scalar("g1" , a)
bsum = tf.summary.scalar("g2", b)
csum = tf.summary.scalar("gsum", c)
merged = tf.summary.merge_all()
train_writer = tf.summary.FileWriter('.logs',sess.graph)
summary, _ = sess.run([merged, c])
train_writer.add_summary(summary, 0)
然后我先编译了它:
>python filename.py
一切看起来都很好。
然后:
>tensorboard --logdir=".logs" --inspect
奇怪的事情发生了:没有标量!
Found event files in:
.logs
These tags are in .logs:
audio -
histograms -
images -
scalars -
tensor -
======================================================================
Event statistics for .logs:
audio -
graph
first_step 0
last_step 0
max_step 0
min_step 0
num_steps 1
outoforder_steps []
histograms -
images -
scalars -
sessionlog:checkpoint -
sessionlog:start -
sessionlog:stop -
tensor -
======================================================================
TensorFlow 的版本是:1.2.1
蟒蛇版本:3.5.2
FileWriter
对象缓冲它收集的事件,然后在缓冲区已满后将它们写入磁盘。 对FileWriter
对象的单个调用不足以填充缓冲区,因此需要强制FileWriter
刷新缓冲区并将内容写入磁盘。为此,只需在add_summary
操作后调用.close()
。
train_writer.add_summary(summary, 0)
train_writer.close()
这将关闭train_writer
对象,您将无法再使用它。
相反,如果只想刷新缓冲区而不关闭文件,则可以使用.flush()
方法。
当我遇到完全相同的问题时,更改 sess.run 的顺序对我有用。
_, summary = sess.run([c, merged])