【Python-Keras】keras.layers.BatchNormalization解析與使用
阿新 • • 發佈:2021-01-06
技術標籤:KerasPython深度學習batchnormalization批量標準化keras
1 什麼是BatchNormalization?
(1)Batch Normalization 於2015年由 Google 提出資料歸一化方法,往往用在深度神經網路中啟用層之前。
(2)其規範化針對單個神經元進行,利用網路訓練時一個 mini-batch 的資料來計算該神經元的均值和方差,因而稱為 Batch Normalization。
(3)BatchNormalization層在每個batch上將前一層的啟用值重新規範化,即使得其輸出資料的均值接近0,其標準差接近1
(4)是Normalization 方法中的一種,其他方法有
Weight Normalization —— 引數規範化
2 作用
(1)將輸入神經網路的資料先對其做平移和伸縮變換,將資料分佈規範化成在固定區間範圍的標準分佈
(2)可以加快模型訓練時的收斂速度,使得模型訓練過程更加穩定,避免梯度爆炸或者梯度消失
(3)並且起到一定的正則化作用,幾乎代替了Dropout。控制過擬合,可以少用或不用Dropout和正則
(4)降低網路對初始化權重不敏感
(5)允許使用較大的學習率
3 使用
在呼叫keras.layers.BatchNormalization 時,我們幾乎不需要設定任何引數,只需要輸入資料就好。
from tensorflow.python.keras.layers import *
input_bits = Input(shape=(256 ,))
temp = BatchNormalization()(input_bits)