Tensorboard Summaries被困在0

问题描述 投票:0回答:1

我没有在任何地方找到这个;我无法完全理解如何在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摘要的任何可靠文档也将非常受欢迎。谢谢。

python tensorboard
1个回答
0
投票

x = tf.add(x, 1)意味着现在一个python variablex将引用一个新的Tensor,其值比之前的Tensor x大1。所以在第3行中创建的变量 - 比如Variable:0 ---将保持不变并且不会更新,其值仍为0.您在每个循环步骤中创建一个新的张量。由于摘要仍然是指变量Variable:0,其值始终为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()也是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.