我在任何地方都找不到。我不太了解如何在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摘要的任何可靠文档也将不胜感激。谢谢。
答案 0 :(得分:0)
vector<string> orderAllTheNames(const unordered_map<string, string>& input, const string& begin)
{
vector<string> result;
result.reserve(input.size());
string current = begin;
result.push_back(current);
while(result.size() < input.size())
{
current = input[current];
result.push_back(std::move(current));
}
return result;
}
意味着现在一个python变量x = tf.add(x, 1)
将引用一个 new 张量,其值比以前的Tensor x
大1。因此,在第3行中创建的变量(例如x
-将保持不变,并且不会被更新,其值仍为0。您正在每个循环步骤创建一个新的张量。由于摘要仍将引用为变量Variable: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)
也是错误的。