1. 程式人生 > 其它 >【Python-Keras】keras.layers.BatchNormalization解析與使用

【Python-Keras】keras.layers.BatchNormalization解析與使用

技術標籤:KerasPython深度學習batchnormalization批量標準化keras

1 什麼是BatchNormalization?

(1)Batch Normalization 於2015年由 Google 提出資料歸一化方法,往往用在深度神經網路中啟用層之前。

(2)其規範化針對單個神經元進行,利用網路訓練時一個 mini-batch 的資料來計算該神經元的均值和方差,因而稱為 Batch Normalization。

(3)BatchNormalization層在每個batch上將前一層的啟用值重新規範化,即使得其輸出資料的均值接近0,其標準差接近1

(4)是Normalization 方法中的一種,其他方法有

Layer 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)