1. 程式人生 > >batch_normalization和layer normalization的區別

batch_normalization和layer normalization的區別

直觀的理解,batch vs layer normalization。
batch是“豎”著來的,各個維度做歸一化,所以與batch size有關係。
layer是“橫”著來的,對一個樣本,不同的神經元neuron間做歸一化。

 

給一個批次的資料[b,n,w,h]   

b是batch_size,n是特徵圖數目,w、h是寬和高。

batch_normalization是針對所有的樣本,對某一個特徵圖計算均值和方差,然後然後對這個特徵圖神經元做歸一化。

layer_normalization是對某一個樣本,計算該樣本所有特徵圖的均值和方差,然後對這個樣本做歸一化。

 

BN適用於不同mini batch資料分佈差異不大的情況,而且BN需要開闢變數存每個節點的均值和方差,空間消耗略大;而且 BN適用於有mini_batch的場景。

LN只需要一個樣本就可以做normalization,可以避免 BN 中受 mini-batch 資料分佈影響的問題,也不需要開闢空間存每個節點的均值和方差。