【问题标题】:TensorFlow's TensorBoard doesn't show event graphTensorFlow 的 TensorBoard 不显示事件图
【发布时间】:2018-04-10 19:33:21
【问题描述】:

我在 TensorFlow 上关注一个简​​单的“Hello, World”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 显示事件?

【问题讨论】:

    标签: python machine-learning tensorflow tensorboard


    【解决方案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
    

    【讨论】:

    • 这解决了我的问题。谢谢!我想说即使从终端运行 python 脚本,在脚本结束时,summary_writer 也可能不会关闭。因此,添加summary_writer.close() 绝对是一个好习惯。
    猜你喜欢
    • 2016-10-07
    • 2018-10-20
    • 2020-03-09
    • 2019-12-22
    • 2020-04-22
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多