TensorBoard中HISTOGRAMS和DISTRIBUTIONS图形的含义

前言

之前我都是用TensorBoard记录训练过程中的Loss、mAP等标量,很容易就知道TensorBoard里的SCALARS(标量)图是怎么看的(其中横纵轴的含义、Smoothing等)。

最近在尝试模型压缩,其中的一个步骤是对模型进行稀疏训练。

稀疏训练时需要记录模型中BN层的Gamma值的分布情况(取哪些值,这些值出现的次数/频度),这时用TensorBoard里的SCALARS之类的图就不合适了,而是应该用TensorBoard里的HISTOGRAMS(直方图)和DISTRIBUTIONS(暂未找到合适的译文)。

所以我昨天学习、了解了一点HISTOGRAMS和DISTRIBUTIONS,今天做了一部分简单记录,具体见下文。

正文

HISTOGRAMS和DISTRIBUTIONS这两种图的数据源是相同的,只是从不同的视角、以不同的方式来表示数据的分布情况。

下面先介绍HISTOGRAMS,再介绍DISTRIBUTIONS。

HISTOGRAMS

HISTOGRAMS

上图是TensorBoard生成的一个直方图(OFFEST模式),下面介绍图中几个元素的含义。

  • 数据源
    • 数据源是一维数组
      • 也在别处看到有人说可以是多维数组,但会被压缩成一维数组,有兴趣的小伙伴可以具体研究一下
      • 如果你只有1个数组,也是可以的
  • 当鼠标放在图上时出现的一条黑线和数字
    • 鼠标放在图上出现的一条黑线,就对应数据源里的一个一维数组
    • 上图中显示的黑线对应我的第41个数组的所有元素(index为40,因为index从0开始计数的)的取值的分布情况
  • 图下方的横轴
    • 横轴的值和数组内元素的取值对应
  • 图右方的纵轴
    • 纵轴的值对应着是哪一个数组,或者说对应了数组的id、index(上边提到的40)
  • 颜色
    • 可以看到上图中的颜色是渐变的,靠上(id小)的颜色深,靠下(id大)的颜色浅
  • 上面的用词比较“学术化”,如果看不懂,就看下边的这个解释吧
    • 我的数据有99个数组,index从0到98,但右侧的纵轴值只标到了90
    • 数组元素的分布范围是横轴上的数字,可以看出我的每个数组中的元素的取值大约集中在0到0.2,超过1.5的元素很少
    • 我的第40个数组(说法不严谨,准确地说是id为40)中大约有505个元素的值为0.536左右
  • 如果还是不懂的话,建议先去看看直方图是什么

DISTRIBUTIONS

DISTRIBUTIONS

把HISTOGRAMS搞懂后,这个图就很好懂的,因为这个图的数据源和HISTOGRAMS一样。

  • 横轴
    • 横轴是对应哪个数组
  • 纵轴
    • 数组中元素的取值
  • 颜色
    • 颜色深代表对应值出现的频数高
  • 如上图,我的99个数组从0到98,数组中元素的取值慢慢地趋近于0

参考链接

剪枝Github

https://github.com/tanluren/yolov3-channel-and-layer-pruning

HISTOGRAMS和DISTRIBUTIONS

https://www.cnblogs.com/rainydayfmb/p/7944224.html

https://vimsky.com/article/3645.html

https://www.jianshu.com/p/8fdc43e48c86

https://blog.csdn.net/wgj99991111/article/details/84708255


作者:@臭咸鱼

转载请注明出处:https://www.cnblogs.com/chouxianyu/

欢迎讨论和交流!