以全連線模型為例:輸入資料為a[784]的陣列,模型共2層神經元,第一層100個,第二層即輸出層為10個神經元,則第一層的權重有[784,100]個,截距有[100]個,第二層有[100,10]個權重,截距[10]個,**用w1表示第一層權重矩陣,b1表示截距行向量,w2表示第二層權重矩陣,b2表示截距行向量,設定每次輸入101批資料,則輸入資料矩陣為[101,784],用x表示,輸入標籤為[101,10],用y表示。
形狀如下:
x: [101,784],每一行為一批資料
y:[101,10]
w1: [784,100], 每一列為單個神經元的權重
b1: [100]
w2: [100,10]
b2[10]
第一層輸出:
fc1=relu(xw1+b1),b1進行了行廣播
fc1: [101,100]
第二層輸出:
fc2=softmax(fc1w2+b2)
fc2: [101,10]
loss=fc2-y
1.權重初始化為0:
分析:fc2: [101,10]的行向量全部一樣,w(t+1)=w-k▲,▲為矩陣中每個元素的偏導數,這樣進行梯度下降優化,權重矩陣最終穩定為均勻分布,且loss無法降下去,實際效果如下:
2,權重給隨機值
分析,數值分散,無法收斂,損失降不下去,分布直方圖如下
3.權重在0附近的小範圍內給隨機值。
如果神經層數較少,效果還不錯(-0.1到0.1),如果層數較多,到後面層數的神經元輸出逼近偏移值,與全0初始化類似,數值沒有差異性,無法收斂,最後穩定成均勻分布,在2層神經元時,效果如下:
範圍公式(-1/sqart(n),1/sqart(n))
3,權重在較大值附近的小範圍內隨機
分析,初始值較大,由於啟用函式的斜率在-1到1之間,初始值過大(90到100),對應偏導數逼近0,無法收斂,效果如下。
初始化(100到100.01)效果如下:
4,無限定標準正態分佈
效果可以,但由於範圍不限定,會有少部分權重初始化值很大,偏導數趨近0,最好的是截斷正態分佈,標準差與啟用函式有關,tanh或者sigmoid的標準差給1/sqrt(n),relu用sqrt(2/n)
1 11 神經網路的權重初始化
理想的權重矩陣既不會增長過快,也不會太快下降到 0,從而訓練出乙個權重或梯度不會增長或消失過快的深度網路。有乙個神經元的情況 暫時忽略b z 為了預防 z值過大或過小,你可以看到 n越大,你希望 越小,因為 z是 的和如果你把很多此類項相加,希望每項值更小,最合理的方法就是設定 frac n表示神經...
深度學習 2 1 1 神經網路引數初始化
三種引數初始化方法 zero initialization 將輸入引數初始化為0 random initialization 隨機初始化輸入引數,權重w初始化的值較大 he initialization 在一定範圍內隨即初始化權重w值 zero initialization實現 for l in r...
深度學習 深度學習權重初始化
本文對cs231中的training neural networks的權重更新部分進行記錄 權重的初始化在深度神經網路中起著比較大的重要,算是乙個trick,但在實際應用上確是個大殺器。1.如果一開始把網路中的權重初始化為0,會發生什麼?因為權重初始為0,由於網路中的神經元的更新機制完全相同,由於網...