動機:
防止隱層分布多次改變,BN讓每個隱層節點的激活輸入分布縮小到-1和1之間.
好處:
縮小輸入空間,從而降低調參難度;防止梯度爆炸/消失,從而加速網絡收斂.
BN計算公式:
keras.layers.normalization.BatchNormalization(axis=-1,momentum=0.99,epsilon=0.001,center=True,scale=True,beta_initializer='zeros',gamma_initializer='ones',moving_mean_initializer='zeros',moving_variance_initializer='ones',beta_regularizer=None,gamma_regularizer=None,beta_constraint=None,gamma_constraint=None)
參數
- axis: 整數,指定要規范化的軸,通常為特征軸。例如在進行
data_format="channels_first的2D卷積后,一般會設axis=1。 - momentum: 動態均值的動量
- epsilon:大於0的小浮點數,用於防止除0錯誤
- center: 若設為True,將會將beta作為偏置加上去,否則忽略參數beta
- scale: 若設為True,則會乘以gamma,否則不使用gamma。當下一層是線性的時,可以設False,因為scaling的操作將被下一層執行。
- beta_initializer:beta權重的初始方法
- gamma_initializer: gamma的初始化方法
- moving_mean_initializer: 動態均值的初始化方法
- moving_variance_initializer: 動態方差的初始化方法
- beta_regularizer: 可選的beta正則
- gamma_regularizer: 可選的gamma正則
- beta_constraint: 可選的beta約束
- gamma_constraint: 可選的gamma約束
