1.作圖
https://www.cnblogs.com/zpc1001/p/13322902.html
# 每一個epoch,記錄各層權重、梯度 for name, param in net.named_parameters(): # 返回網絡的 writer.add_histogram(name + '_grad', param.grad, epoch) writer.add_histogram(name + '_data', param, epoch)
2.理解
https://blog.csdn.net/u010099080/article/details/77426577
首先是DISTRIBUTIONS,可以查一下從上到下共有八條線,有深有淺,分別表示[maximum, 93%, 84%, 69%, 50%, 31%, 16%, 7%, minimum],是分位數
DISTRIBUTIONS是多分位數折線圖 的堆疊。
下面HISTOGRAMS
可以說是 頻數分布直方圖 的堆疊。
橫軸表示權重值,縱軸表示訓練步數。顏色越深表示時間越早,越淺表示時間越晚(越接近訓練結束)。除此之外,HISTOGRAMS 還有個 Histogram mode,有兩個選項:OVERLAY 和 OFFSET。選擇 OVERLAY 時橫軸為權重值,縱軸為頻數,每一條折線為訓練步數。顏色深淺與上面同理。默認為 OFFSET 模式:
https://blog.csdn.net/qq_33345917/article/details/85008083
更清晰的一個圖
x軸為數值,y軸為循環的次數,z軸為個數。
那么針對一條線縱軸y=100上的類似三角形來說,表示在訓練到這個epochy的情況下,梯度值大約為150-200之間的范圍,z軸為個數,說明梯度都集中在這個范圍內。
真實的分布直方圖應該是一條直線,符合正態分布。