Ruo*_*ong 11 histogram tensorflow tensorboard
我正在使用Google Tensorboard,我对Histogram Plot的含义感到困惑.我阅读了教程,但对我来说似乎不太清楚.如果有人能帮我弄清楚Tensorboard Histogram Plot的每个轴的含义,我真的很感激.
小智 14
我之前遇到过这个问题,同时也在寻找有关如何解释TensorBoard中直方图的信息.对我来说,答案来自绘制已知分布的实验.因此,可以使用以下代码在TensorFlow中生成具有mean = 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()
Run Code Online (Sandbox Code Playgroud)
结果如下: 正态分布的直方图,标准偏差为1.0.横轴表示时间步长.该图是等高线图,并且在垂直轴值为-1.5,-1.0,-0.5,0.0,0.5,1.0和1.5的轮廓线.
由于该图表示正态分布,其中mean = 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个将超出该范围.
虽然维基百科有一个非常详尽的解释,你可以在这里获得最相关的掘金.
实际直方图将显示几件事.随着监测值的变化增加或减少,绘图区域将在垂直宽度上增大和缩小.随着监测值的平均值增加或减少,图也可以向上或向下移动.
(您可能已经注意到代码实际上产生了第二个直方图,标准偏差为0.13.我这样做是为了清除绘图轮廓线和垂直轴刻度线之间的任何混淆.)
绘制直方图时,我们将bin 限制放在 x 轴上,将计数放在 y 轴上。然而,直方图的全部目的是显示张量如何随时间变化。因此,正如您可能已经猜到的那样,包含数字 100 和 300 的深度轴(z 轴)显示了历元数。
默认直方图模式为偏移模式。这里每个时期的直方图在 z 轴上偏移一定的值(以适应图中的所有时期)。这就像从房间天花板的一个角(准确地说是从前天花板边缘的中点)看到所有直方图一个接一个地放置。
在叠加模式下,z 轴折叠,直方图变得透明,因此您可以移动并将鼠标悬停在上方以突出显示与特定纪元相对应的直方图。这更像是Offset模式的前视图,只有直方图的轮廓。
正如此处文档中所解释的:
tf.summary.histogram 采用任意大小和形状的张量,并将其压缩为由许多具有宽度和计数的 bin 组成的直方图数据结构。例如,假设我们想要将数字组织
[0.5, 1.1, 1.3, 2.2, 2.9, 2.99]到容器中。我们可以制作三个垃圾箱:
- 一个包含从 0 到 1 的所有内容的容器(它将包含一个元素
0.5),- 包含 1-2 中所有内容的 bin(它将包含两个元素
1.1和1.3),- 包含 2-3 中所有内容的 bin(它将包含三个元素:
2.2、2.9和2.99)。
TensorFlow 使用类似的方法来创建 bin,但与我们的示例不同的是,它不会创建整数 bin。对于大型、稀疏的数据集,这可能会产生数千个分箱。相反,这些 bin 呈指数分布,许多 bin 接近 0,而对于非常大的数字则相对较少。然而,可视化指数分布的箱是很棘手的。如果使用高度来编码计数,则较宽的容器会占用更多空间,即使它们具有相同数量的元素。相反,该区域中的编码计数使得高度比较变得不可能。相反,直方图将数据重新采样到统一的箱中。在某些情况下,这可能会导致不幸的伪影。
请进一步阅读文档,以全面了解直方图选项卡中显示的绘图。
肉饭,
直方图允许您绘制图表中的变量。
w1 = tf.Variable(tf.zeros([1]),name="a",trainable=True)
tf.histogram_summary("firstLayerWeight",w1)
Run Code Online (Sandbox Code Playgroud)
对于上面的示例,垂直轴将具有我的 w1 变量的单位。水平轴将具有我认为此处捕获的步骤单位:
summary_str = sess.run(summary_op, feed_dict=feed_dict)
summary_writer.add_summary(summary_str, **step**)
Run Code Online (Sandbox Code Playgroud)
了解如何为张量板进行摘要可能会很有用。
大学教师
| 归档时间: |
|
| 查看次数: |
8682 次 |
| 最近记录: |