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”,它适用于我的代码。
在 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.
然后,当我转到资源管理器并查看它显示的板时,没有找到标量数据。我不确定我错过了什么。
我的 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”,它适用于我的代码。