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