前言
之前我都是用TensorBoard記錄訓練過程中的Loss、mAP等標量,很容易就知道TensorBoard里的SCALARS(標量)圖是怎么看的(其中橫縱軸的含義、Smoothing等)。
最近在嘗試模型壓縮,其中的一個步驟是對模型進行稀疏訓練。
稀疏訓練時需要記錄模型中BN層的Gamma值的分布情況(取哪些值,這些值出現的次數/頻度),這時用TensorBoard里的SCALARS之類的圖就不合適了,而是應該用TensorBoard里的HISTOGRAMS(直方圖)和DISTRIBUTIONS(暫未找到合適的譯文)。
所以我昨天學習、了解了一點HISTOGRAMS和DISTRIBUTIONS,今天做了一部分簡單記錄,具體見下文。
正文
HISTOGRAMS和DISTRIBUTIONS這兩種圖的數據源是相同的,只是從不同的視角、以不同的方式來表示數據的分布情況。
下面先介紹HISTOGRAMS,再介紹DISTRIBUTIONS。
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
把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/
歡迎討論和交流!