【问题标题】:How does one read TensorBoard histograms for a 1D example in TensorFlow?如何在 TensorFlow 中读取一维示例的 TensorBoard 直方图?
【发布时间】:2016-07-01 00:08:36
【问题描述】:

我为 TensorBoard 制作了最简单的 1D 示例(跟踪二次方的最小化),但我得到的图对我来说没有意义,我不知道为什么。是我自己的实现还是 TensorBoard 有问题?

下面是图:

直方图:

我通常将直方图视为对概率分布(或频率计数)进行编码的条形图。我假设y轴表示值,x轴表示计数?由于我的步数是 120,这似乎是合理的猜测。

和标量图:

为什么我的情节中有一条奇怪的线?

产生它的代码(你应该可以复制粘贴它并运行它):

## run cmd to collect model: python playground.py --logdir=/tmp/playground_tmp
## show board on browser run cmd: tensorboard --logdir=/tmp/playground_tmp
## browser: http://localhost:6006/

import tensorflow as tf

# x variable
x = tf.Variable(10.0,name='x')
# b placeholder (simualtes the "data" part of the training)
b = tf.placeholder(tf.float32)
# make model (1/2)(x-b)^2
xx_b = 0.5*tf.pow(x-b,2)
y=xx_b

learning_rate = 1.0
# get optimizer
opt = tf.train.GradientDescentOptimizer(learning_rate)
# gradient variable list = [ (gradient,variable) ]
gv = opt.compute_gradients(y,[x])
# transformed gradient variable list = [ (T(gradient),variable) ]
decay = 0.9 # decay the gradient for the sake of the example
# apply transformed gradients
tgv = [ (decay*g, v) for (g,v) in gv] #list [(grad,var)]
apply_transform_op = opt.apply_gradients(tgv)

# track value of x
x_scalar_summary = tf.scalar_summary("x", x)
x_histogram_sumarry = tf.histogram_summary('x_his', x)
with tf.Session() as sess:
    merged = tf.merge_all_summaries()
    tensorboard_data_dump = '/tmp/playground_tmp'
    writer = tf.train.SummaryWriter(tensorboard_data_dump, sess.graph)

    sess.run(tf.initialize_all_variables())
    epochs = 120
    for i in range(epochs):
        b_val = 1.0 #fake data (in SGD it would be different on every epoch)

        # applies the gradients
        [summary_str_apply_transform,_] = sess.run([merged,apply_transform_op], feed_dict={b: b_val})
        writer.add_summary(summary_str_apply_transform, i)

【问题讨论】:

  • 我在统计溢出问题上提出了类似的问题:stats.stackexchange.com/questions/220491/… 我不认为我犯了任何错误,但图表对我来说看起来很奇怪。
  • 好像你有多个事件文件,删除除最后一个之外的所有文件
  • @OlivierMoindrot 很有趣。似乎有效,你知道为什么吗?
  • 如果同一个文件夹中有多个事件文件,Tensorboard 会认为它们属于同一个体验。它将绘制第一个文件,当第二个文件从 0 重新开始时,它将以从第 100 步到第 0 步的直线加入两次运行。

标签: python machine-learning neural-network tensorflow


【解决方案1】:

我也遇到了同样的问题,张量板的实例选项卡中出现多条线(即使我尝试了你的代码,板服务显示重复的警告并且只显示一条曲线,比我好)

WARNING:tensorflow:Found more than one graph event per run. Overwriting the graph with the newest event. 

尽管如此,解决方案与@Olivier Moindrot 提到的相同,删除旧日志,而有时董事会可能会缓存一些结果,因此您可能需要重新启动董事会服务。

如 MINIST 示例所示,确保我们提供最新摘要的方法是登录一个新文件夹:

if tf.gfile.Exists(FLAGS.summaries_dir):
    tf.gfile.DeleteRecursively(FLAGS.summaries_dir)
tf.gfile.MakeDirs(FLAGS.summaries_dir)

链接到完整源代码,TF 版本 r0.10:https://github.com/tensorflow/tensorflow/blob/r0.10/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-26
    • 2017-09-26
    • 2019-12-22
    • 2019-10-16
    • 2016-09-06
    • 2016-10-07
    • 1970-01-01
    • 2016-06-04
    相关资源
    最近更新 更多