张量板摘要卡在0

时间:2019-02-22 22:39:21

标签: python tensorboard

我在任何地方都找不到。我不太了解如何在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摘要的任何可靠文档也将不胜感激。谢谢。

Picture of summary result

1 个答案:

答案 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) 也是错误的。