如何解释 TensorFlow 在 TensorBoard 中给出的直方图?

机器算法验证 机器学习 神经网络 卷积神经网络 张量流
2022-02-06 14:51:10

我最近在运行和学习张量流,得到了一些我不知道如何解释的直方图。通常我将条形的高度视为频率(或相对频率/计数)。然而,没有像通常的直方图中那样的条形图以及事物被阴影化的事实让我感到困惑。一次似乎也有很多线条/高度?

有人知道如何解释以下图表(并且可能提供很好的建议,通常有助于阅读 tensorflow 中的直方图):

在此处输入图像描述

也许其他一些有趣的讨论是,如果原始变量是向量或矩阵或张量,那么 tensorflow 实际上显示的是什么,例如每个坐标的直方图?此外,也许参考如何获取这些信息以使人们自给自足会很好,因为我现在很难在文档上找到有用的东西。也许一些教程示例等?也许一些关于操纵它们的建议也会很好。


作为参考,这里是给出这个的代码的摘录:

(X_train, Y_train, X_cv, Y_cv, X_test, Y_test) = data_lib.get_data_from_file(file_name='./f_1d_cos_no_noise_data.npz')
(N_train,D) = X_train.shape
D1 = 24
(N_test,D_out) = Y_test.shape
W1 = tf.Variable( tf.truncated_normal([D,D1], mean=0.0, stddev=std), name='W1') # (D x D1)
S1 = tf.Variable( tf.constant(100.0, shape=[]), name='S1') # (1 x 1)
C1 = tf.Variable( tf.truncated_normal([D1,1], mean=0.0, stddev=0.1), name='C1' ) # (D1 x 1)
W1_hist = tf.histogram_summary("W1", W1)
S1_scalar_summary = tf.scalar_summary("S1", S1)
C1_hist = tf.histogram_summary("C1", C1)
1个回答

目前,“直方图”这个名称是用词不当。您可以在README中找到相关证据。正如他们所说的那样,直方图界面的含义可能有一天会改变。然而,这就是它目前的意思。

您问题中的图表混合了 TensorFlow 的不同运行。相反,请查看以下仅显示一次运行的图表:

在此处输入图像描述

首先我想说的是曲线本身代表percentiles我将从这里借用图片:

在此处输入图像描述

这意味着标记为 93% 的曲线是第 93 个百分位数,这意味着 93% 的观察值在时间步长 1.00k 时低于 ~0.130。因此,该图提供了 3 项信息,根据神经网络训练计算的每个时间步长的某个思考曲线,观察值的百分比低于某个值(至少在这种情况下它的步骤是什么意思)。这让您了解网络的价值分布。

还有最小值和最大值可以在训练期间了解值的范围。

所以y轴告诉你你感兴趣的值,曲线告诉你百分位数和步骤的x轴。因此,如果您有:

(x,fi(x)=y)

这意味着在步骤 x 根据百分位曲线i少于i% 的值低于 y 值。