Windows 上的 Tensorboard 报告 "No scalar data was found"

Tensorboard on Windows reports "No scalar data was found"

https://github.com/BinRoot/TensorFlow-Book/blob/master/ch02_basics/Concept08_TensorBoard.ipynb

的 TensorFlow 社区 Git 存储库中完成教程

当我在命令面板中 运行 tensorboard --logdir=path/to/logs 时,在 http://0.0.0.0:6006.

处启动 TensorBoard b'47'

然后,当我转到资源管理器并查看它显示的板时,没有找到标量数据。我不确定我错过了什么。

我的 Python 脚本中的代码副本:

import tensorflow as tf
import numpy as np

raw_data = np.random.normal(10, 1, 100)

alpha = tf.constant(0.05)
curr_value = tf.placeholder(tf.float32)
prev_avg = tf.Variable(0.)

update_avg = alpha * curr_value + (1 - alpha) * prev_avg

avg_hist = tf.summary.scalar("running_average", update_avg)
value_hist = tf.summary.scalar("incoming_values", curr_value)

merged = tf.summary.merge_all()
writer = tf.summary.FileWriter("./logs")

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for i in range(len(raw_data)):
        summary_str, curr_avg = sess.run([merged, update_avg], feed_dict=
{curr_value: raw_data[i]})
        sess.run(tf.assign(prev_avg, curr_avg))
        print(raw_data[i], curr_avg)
        writer.add_summary(summary_str, i)

Tensorboard 有一个 known issue,路径在 windows。

总结一下,tensorboard的--logdir可以取一个路径,比如--logdir=/my/path,但是用户也可以给一个或者几个逗号分隔的路径指定一个名字,比如--logdir=foo:/my/path1,bar:/my/path2 .

问题是这个命名系统不适合 Windows' 驱动器名称。指定--logdir=C:\my\path时,tensorboard如何知道C:是驱动器名而不是路径名?好吧,它没有,你最终得到了一个漂亮的 tensorboard 网页,根本没有显示任何摘要。

解决方案是省略驱动器号并确保从正确的驱动器开始,或者更稳健一些,始终提供路径名,如 --logdir foo:"C:\My path\to my logs".

更新

自 TF 1.5 起,tensorboard 学会了识别 Windows 驱动器,不再将它们视为标签。

不要使用绝对路径,比如“--logdir=path/to/logs”。试试更短的路径,比如“--logdir=path”,它适用于我的代码。