TensorFlow的TensorBoard没有显示事件图

时间:2017-10-29 20:15:36

标签: python machine-learning tensorflow tensorboard

我跟随一个简单的" Hello,World" TensorFlow上的tutorial我正在尝试使用TensorBoard来显示梯度下降损失的多次迭代中的机器学习损失。

我认为我在Jupyter(IPython)笔记本中正确地遵循了所有内容,但我不认为生成的事件已保存到文件中以供TensorBoard可视化。

这是我的代码:

summary_y = tf.summary.scalar('output', y)
summary_writer = tf.summary.FileWriter('log_simple_stats')
sess.run(tf.initialize_all_variables())
for i in range(100):
    summary_str = sess.run(summary_y)
    summary_writer.add_summary(summary_str, i)
    sess.run(train_step)

当我查看TensorBoard时,只有一点。应该有一个曲线图。

enter image description here

我还查看了目录中的输出文件。似乎没有多少写入输出文件(只有84个字节):

-rw-r--r--  1 user.name  group   84 Oct 29 13:00 events.out.tfevents.1509307239.mymacbookpro.local

如果有TensorBoard显示事件,我该怎么办?

1 个答案:

答案 0 :(得分:1)

在代码中,需要关闭FileWriter以便刷新所有数据。如果代码作为脚本运行,则在脚本结束时将关闭该文件。但是,由于在这种情况下代码在Jupyter中运行,因此即使在代码块完成之后,Python进程也将继续运行。因此,您必须添加close()语句,如下所示:

summary_y = tf.summary.scalar('output', y)
summary_writer = tf.summary.FileWriter('log_simple_stats')
sess.run(tf.initialize_all_variables())
for i in range(100):
    summary_str = sess.run(summary_y)
    summary_writer.add_summary(summary_str, i)
    sess.run(train_step)

summary_writer.close() # <--- Add this line!

一旦完成,TensorBoard将显示减少损失对迭代次数的影响:

enter image description here

输出事件文件也会更大:

-rw-r--r--  1 user.name  group  4638 Oct 29 13:02 events.out.tfevents.1509307332.mymacbookpro.local