【问题标题】:Meaning of Histogram on TensorboardTensorboard 直方图的含义
【发布时间】:2016-06-04 16:13:01
【问题描述】:

我正在研究 Google Tensorboard,我对直方图的含义感到困惑。我阅读了教程,但对我来说似乎不清楚。如果有人能帮我弄清楚 Tensorboard Histogram Plot 的每个轴的含义,我真的很感激。

来自 TensorBoard 的样本直方图

【问题讨论】:

    标签: histogram tensorflow tensorboard


    【解决方案1】:

    我之前遇到过这个问题,同时也在寻找有关如何解释 TensorBoard 中的直方图的信息。对我来说,答案来自绘制已知分布的实验。 因此,可以使用以下代码在 TensorFlow 中生成均值 = 0 和 sigma = 1 的常规正态分布:

    import tensorflow as tf
    
    cwd = "test_logs"
    
    W1 = tf.Variable(tf.random_normal([200, 10], stddev=1.0))
    W2 = tf.Variable(tf.random_normal([200, 10], stddev=0.13))
    
    w1_hist = tf.summary.histogram("weights-stdev_1.0", W1)
    w2_hist = tf.summary.histogram("weights-stdev_0.13", W2)
    
    summary_op = tf.summary.merge_all()
    
    init = tf.initialize_all_variables()
    sess = tf.Session()
    
    writer = tf.summary.FileWriter(cwd, session.graph)
    
    sess.run(init)
    
    for i in range(2):
        writer.add_summary(sess.run(summary_op),i)
    
    writer.flush()
    writer.close()
    sess.close()
    

    结果如下所示: 。 横轴代表时间步长。 该图是等高线图,在纵轴值为 -1.5、-1.0、-0.5、0.0、0.5、1.0 和 1.5 处具有等高线。

    由于该图表示平均值 = 0 和 sigma = 1 的正态分布(请记住,sigma 表示标准差),0 处的等高线表示样本的平均值。

    -0.5 和 +0.5 处等高线之间的面积表示正态分布曲线下的面积,该面积与平均值相差 +/- 0.5 个标准差,这表明它是采样的 38.3%。

    -1.0 和 +1.0 处等高线之间的面积代表正态分布曲线下的面积,该面积与平均值相差 +/- 1.0 标准差,这表明它是抽样的 68.3%。

    -1.5 和 +1-.5 处等高线之间的面积代表正态分布曲线下的面积,该面积与平均值相差 +/- 1.5 个标准差,这表明它是抽样的 86.6%。

    最苍白的区域稍微超出平均值的 +/- 4.0 个标准偏差,每 1,000,000 个样本中只有大约 60 个超出此范围。

    虽然 Wikipedia 有非常详尽的解释,但您可以获得最相关的掘金here

    实际的直方图将显示几件事。随着监测值的变化增加或减少,绘图区域的垂直宽度将增加或缩小。随着监测值的平均值增加或减少,这些图也可能向上或向下移动。

    (您可能已经注意到,代码实际上生成了标准差为 0.13 的第二个直方图。我这样做是为了消除绘图等高线和垂直轴刻度线之间的任何混淆。)

    【讨论】:

    • 这是在记录直方图时如何在 distributions 选项卡下解释 tensorboard 中的分布的解释,OP 询问如何解释 histogram中显示的数据> 选项卡。 OP 进一步发布了在直方图选项卡下看到的数据的屏幕截图。
    【解决方案2】:

    @marc_alain,你是一个明星,因为你制作了如此简单的结核病脚本,很难找到。

    添加到他所说的直方图,显示权重分布的 1,2,3 sigma。这相当于第 68、95 和 98 个百分位数。所以想想如果你的模型有 784 个权重,直方图会显示这些权重的值如何随着训练而变化。

    这些直方图可能对浅层模型没有那么有趣,您可以想象,对于深层网络,由于逻辑函数已饱和,高层的权重可能需要一段时间才能增长。当然,我只是盲目地模仿this paper by Glorot and Bengio,他们在其中通过训练研究权重分布,并展示了逻辑函数如何在一段时间内在较高层中饱和。

    【讨论】:

      【解决方案3】:

      绘制直方图时,我们将 bin 限制放在 x 轴上,将 count 放在 y 轴上。然而,直方图的全部意义在于显示张量如何随时间变化。因此,您可能已经猜到了,包含数字 100 和 300 的 深度轴(z 轴)显示了 epoch 数字。

      默认直方图模式是偏移模式。这里每个时期的直方图在 z 轴上偏移一个特定值(以适合图中的所有时期)。这就像从房间天花板的一个角落(准确地说是从前天花板边缘的中点)看到所有直方图一个接一个的位置。

      叠加模式下,z 轴折叠,直方图变为透明,因此您可以移动并悬停在上方以突出显示与特定时期对应的那个。这更像是 Offset 模式的前视图,只有直方图的轮廓。

      如文档here中所述:

      tf.summary.histogram 取一个任意大小和形状的张量,并将其压缩成一个 直方图数据结构由许多具有宽度和 计数。例如,假设我们要将数字 [0.5, 1.1, 1.3, 2.2, 2.9, 2.99] 组织到 bin 中。我们可以做三个箱子:

      • 一个包含从 0 到 1 的所有内容的 bin(它将包含一个元素,0.5),
      • 一个包含从 1 到 2 的所有内容的 bin(它将包含两个元素,1.11.3),
      • 一个包含 2-3 的所有内容的 bin(它将包含三个元素:2.22.92.99)。

      TensorFlow 使用类似的方法来创建 bin,但与我们的 例如,它不会创建整数箱。对于大型稀疏数据集, 这可能会导致成千上万的垃圾箱。相反,the bins are exponentially distributed, with many bins close to 0 and comparatively few bins for very large numbers。然而,可视化 指数分布的 bin 很棘手;如果使用高度编码 计数,然后更宽的垃圾箱占用更多空间,即使它们具有相同的 元素的数量。相反,该区域中的编码计数使 身高比较是不可能的。相反,直方图resample the data 放入统一的箱中。这可能会导致不幸的伪影 一些情况。

      请进一步阅读文档以全面了解直方图选项卡中显示的图。

      【讨论】:

        【解决方案4】:

        肉饭,

        直方图允许您从图表中绘制变量。

        w1 = tf.Variable(tf.zeros([1]),name="a",trainable=True)
            tf.histogram_summary("firstLayerWeight",w1)
        

        对于上面的示例,垂直轴将具有我的 w1 变量的单位。水平轴将包含我认为在此处捕获的步长单位:

        summary_str = sess.run(summary_op, feed_dict=feed_dict)
            summary_writer.add_summary(summary_str, **step**)
        

        了解如何为张量板制作summaries 可能很有用。

        不要

        【讨论】:

        • 感谢您的回答。我仍然不清楚 y 轴的含义。
        • 若凡,通常y轴为纵轴。还是您的问题是针对本教程的?
        • 是的。我知道是y轴,我在问这个轴的意思。
        • 好吧我不知道你指的是哪个教程。
        • 好的。例如,这是可视化学习结果的教程:tensorflow.org/versions/r0.7/how_tos/summaries_and_tensorboard/…我想知道该示例代码中直方图w_histb_histy_hist 的纵轴含义。谢谢!
        【解决方案5】:

        图表上的每条线代表数据分布中的一个百分位数:例如,底线显示最小值随时间的变化情况,中间的线显示中位数的变化情况。从上往下读,各行含义如下:[maximum, 93%, 84%, 69%, 50%, 31%, 16%, 7%, minimum]

        这些百分位数也可以视为正态分布的标准差边界:[maximum, μ+1.5σ, μ+σ, μ+0.5σ, μ, μ-0.5σ, μ-σ, μ-1.5σ, minimum],因此从内到外读取的彩色区域分别具有 [σ, 2σ, 3σ] 的宽度。

        【讨论】:

        • 我不认为每一行都代表您所描述的含义的百分位数分布。就我而言,我看到每一行都清楚地对应于时代运行。所以“中间”线只是在训练中间运行的某个时期的分布。
        猜你喜欢
        • 2017-10-11
        • 2017-07-24
        • 2017-07-07
        • 2019-10-16
        • 2017-09-26
        • 2016-07-23
        • 2016-10-07
        • 1970-01-01
        • 2018-02-09
        相关资源
        最近更新 更多