【tensorflow-keras-BatchNormalization】BatchNormalization批量标准化层
標準化層 Normalization - Keras 中文文檔 https://keras.io/zh/layers/normalization/#batchnormalization
什么是批標準化 (Batch Normalization) - zh https://zhuanlan.zhihu.com/p/24810318
BN 效果
Batch normalization 也可以被看做一個層面. 在一層層的添加神經網絡的時候, 我們先有數據 X, 再添加全連接層, 全連接層的計算結果會經過 激勵函數 成為下一層的輸入, 接著重復之前的操作. Batch Normalization (BN) 就被添加在每一個全連接和激勵函數之間.
之前說過, 計算結果在進入激勵函數前的值很重要, 如果我們不單單看一個值, 我們可以說, 計算結果值的分布對于激勵函數很重要. 對于數據值大多分布在這個區間的數據, 才能進行更有效的傳遞. 對比這兩個在激活之前的值的分布. 上者沒有進行 normalization, 下者進行了 normalization, 這樣當然是下者能夠更有效地利用 tanh 進行非線性化的過程.
沒有 normalize 的數據 使用 tanh 激活以后, 激活值大部分都分布到了飽和階段, 也就是大部分的激活值不是-1, 就是1, 而 normalize 以后, 大部分的激活值在每個分布區間都還有存在. 再將這個激活后的分布傳遞到下一層神經網絡進行后續計算, 每個區間都有分布的這一種對于神經網絡就會更加有價值.
Batch normalization 函數
keras.layers.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)批量標準化層 (Ioffe and Szegedy, 2014)。
在每一個批次的數據中標準化前一層的激活項, 即,應用一個維持激活項平均值接近 0,標準差接近 1 的轉換。
參數
- axis: 整數,需要標準化的軸 (通常是特征軸)。 例如,在 data_format=“channels_first” 的 Conv2D 層之后, 在 BatchNormalization 中設置 axis=1。
- momentum: 移動均值和移動方差的動量。
- epsilon: 增加到方差的小的浮點數,以避免除以零。
- center: 如果為 True,把 beta 的偏移量加到標準化的張量上。 如果為 False, beta 被忽略。
- scale: 如果為 True,乘以 gamma。 如果為 False,gamma 不使用。 當下一層為線性層(或者例如 nn.relu), 這可以被禁用,因為縮放將由下一層完成。
- beta_initializer: beta 權重的初始化方法。
- gamma_initializer: gamma 權重的初始化方法。
- moving_mean_initializer: 移動均值的初始化方法。
- moving_variance_initializer: 移動方差的初始化方法。
- beta_regularizer: 可選的 beta 權重的正則化方法。
- gamma_regularizer: 可選的 gamma 權重的正則化方法。
- beta_constraint: 可選的 beta 權重的約束方法。
- gamma_constraint: 可選的 gamma 權重的約束方法。
輸入尺寸
可以是任意的。如果將這一層作為模型的第一層, 則需要指定 input_shape 參數 (整數元組,不包含樣本數量的維度)。
輸出尺寸
與輸入相同。
總結
以上是生活随笔為你收集整理的【tensorflow-keras-BatchNormalization】BatchNormalization批量标准化层的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【tensorflow-keras-GR
- 下一篇: Keras.layers各种层介绍,网络