python - Tensorboard 摘要卡在 0
问题描述
我在任何地方都没有找到这个;我不能完全理解如何在 Tensorboard 中添加标量摘要,所以我决定做一个我想到的最基本的例子,一行。这是我的代码:
import tensorflow as tf
import numpy as np
x = tf.Variable(0, dtype=tf.float32)
tf.summary.scalar("X", x)
init = tf.global_variables_initializer()
with tf.Session() as sess:
writer = tf.summary.FileWriter('./logs', sess.graph)
sess.run(init)
for i in range(1, 11):
merge = tf.summary.merge_all()
x = tf.add(x, 1)
summary, x = sess.run([merge, x])
writer.add_summary(summary, i)
print("X = ", x)
无论我尝试更改什么,当我打开 Tensorboard 时,标量摘要都保持为 0。也许我不明白摘要是什么?也许我创造它错了?老实说,我不知道。任何有关 Tensorboard 摘要的可靠文档也将不胜感激。谢谢你。
解决方案
x = tf.add(x, 1)
意味着现在一个 python 变量x
将引用一个新的张量,其值比以前的张量大 1 x
。所以在第 3 行创建的变量——比如说Variable:0
——将保持不变,不会被更新,它的值仍然是 0。你在每个循环步骤中创建一个新的张量。由于摘要仍然引用值始终为 0的变量Variable:0
x
,而不是,因此结果行为是正确的。
你应该这样做:
import tensorflow as tf
import numpy as np
x = tf.Variable(0, dtype=tf.float32)
tf.summary.scalar("X", x)
increment_op = x.assign_add(1) # <------- here
summary_op = tf.summary.merge_all() # <------- watch this too
init = tf.global_variables_initializer()
with tf.Session() as sess:
writer = tf.summary.FileWriter('./logs', sess.graph)
sess.run(init)
for i in range(1, 11):
summary, x = sess.run([summary_op, increment_op]) # <----- here
writer.add_summary(summary, i)
print("X = ", x)
另外,请确保在循环期间不要创建不必要的张量(例如合并摘要)。所以动态创建tf.summary.merge_all()
也是错误的。
推荐阅读
- jms - 插入 ActiveMQ 的 JmsTransactionManager 的 RedeliveryDelay 无法正常工作
- codeigniter-3 - 使用 phpoffice 读取 .doc 文件
- go - 使用 pulumi golang SDK 无法正确创建 Kubernetes 映射类型自定义资源
- typescript - 分页只在第一页显示条目
- r - 在 dplyr 中用逗号连接二进制列名
- java - 包 sun.net.www.protocol.https 不可见
- java - Java - 在 Exchange 2010 中创建约会工作正常,但不适用于 2016
- reactjs - 从父道具推断类型
- xamarin - Visual Studio Mac 上的命令“chmod +x IntuneMAMConfigurator”以代码 1 退出“错误
- popup - 如何阻止 Edge Chromium 显示“恢复页面”弹出窗口