dropout+Batch Normalization理解
生活随笔
收集整理的這篇文章主要介紹了
dropout+Batch Normalization理解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Dropout理解:
在沒有dropout時,正向傳播如下:
加入dropout后:?
測試時,需要每個權值乘以P:?
?
Dropout官方源碼:
#dropout函數實現 def dropout(x, level): # level為神經元丟棄的概率值,在0-1之間if level < 0. or level >= 1:raise Exception('Dropout level must be in interval [0, 1[.') retain_prob = 1. - level # 利用binomial函數(二項分布),生成與x一樣的維數向量。# 神經元x保留的概率為p,n表示每個神經元參與隨機實驗的次數,通常為1,。# size是神經元總數。 sample=np.random.binomial(n=1,p=retain_prob,size=x.shape)# 上一行代碼最后生成一個0、1分布的向量,0表示該神經元被丟棄 x *=sample #用x乘sample決定哪些神經元被丟棄x /= retain_prob return xBatch Normalization
BN是將輸入的數據分布變成高斯分布,這樣可以保證每一層神經網絡的輸入保持相同分布。BN就是通過規范化的手段,把每層神經網絡任意神經元這個輸入值的分布強行拉回到均值0方差1的標準正態分布,使得激活輸入值落入非線性函數中比較敏感的區域。可以讓梯度變大,學習收斂速度快,能大大加快收斂速度。
?
總結
以上是生活随笔為你收集整理的dropout+Batch Normalization理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Keras: 多输入及混合数据输入的神经
- 下一篇: python、numpy,keras,t