bn层初始化参数_神经网络参数初始化方式
看了文章《Understanding the difficulty of training deep feedforward neural networks》,里面提出了兩種參數初始化的方法:
以及normalized initialization——xavier方法:
最近做實驗,發現網絡的初始化太重要!其實神經網絡本身就是一個dark box, 但是每一個參數怎么設置怎么調節是最有技術的。
幾種可行的初始化方式:
1. pre-training+fine-tuning
如:先使用greedy layerwise auto-encoder做unsupervised pre-training,然后再做fine-tuning。
① pretraining: 將神經網絡中的每一層取出,構造一個auto-encoder做訓練,使得輸入層和輸出層保持一致。在這一過程中,參數得以更新,形成初始值
② fine-tuning:將pre-train過的每一層放回神經網絡,利用pre-train階段得到的參數初始值和訓練數據對模型進行整體調整。在這一過程中,參數進一步被更新,形成最終模型。
2. random initialization: np.random.randn(m,n)
最常用的方法,但是也有弊端,一旦隨機分布選擇不當,就會陷入困境
3. Xavier initialization:
基本思想:保證輸入和輸出的方差一致,這樣就可以避免所有輸出值都趨向于0。雖然剛開始的推導基于線性函數,但是在一些非線性神經元也很有效。
tf.Variable(np.random.randn(node_in,node_out))/np.sqrt(node_in)
比較適合tanh
4. He initialization
RELU中非常適合:
tf.Variable(np.random.randn(node_in,node_out))/np.sqrt(node_in/2)
5. bengio還提出了一種
tf.Variable(np.random.randn(node_in,node_out))/np.sqrt((node_in+node_out)/2)
其實3、4、5三種方法都是Xavier的變體。
6. BN 其實不是初始化方法了,是一種巧妙而粗暴的削弱bad initialization的影響。
總結
以上是生活随笔為你收集整理的bn层初始化参数_神经网络参数初始化方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ocbase 数据库 蚂蚁_iOS -
- 下一篇: mysql中find_in_set_my