我跟随一个简单的" 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时,只有一点。应该有一个曲线图。
我还查看了目录中的输出文件。似乎没有多少写入输出文件(只有84个字节):
-rw-r--r-- 1 user.name group 84 Oct 29 13:00 events.out.tfevents.1509307239.mymacbookpro.local
如果有TensorBoard显示事件,我该怎么办?
答案 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将显示减少损失对迭代次数的影响:
输出事件文件也会更大:
-rw-r--r-- 1 user.name group 4638 Oct 29 13:02 events.out.tfevents.1509307332.mymacbookpro.local