2016-03-03 85 views
3

我想在我的卷積神經網絡中實現批量標準化(http://arxiv.org/pdf/1502.03167.pdf),但我真的很困惑,因爲我應該計算平均值和方差。批量標準化:軸上的平均值和方差

如果到conv-layer的輸入形狀爲3 * 224 * 224 * 32
其中:
3-輸入通道。
224 * 224-形狀單通道的
32 minibatch大小

應該是軸什麼下述式
平均數= numpy.mean(input_layer,軸=?)

而,如果輸入到完全連接的層是形狀的100 * 32
其中:
100-輸入數
32- minibatch大小

再次,什麼應該是以下公式中的軸
Mean = numpy.mean(input_layer,axis =? )

回答

1
# 1. axis = (1,2,3) 
numpy.mean(input_layer,axis=(1,2,3)) 
# 2. axis = 1 
numpy.mean(input_layer,axis=1) 

對於具有共享權重的卷積層,它使用特徵方式規範化,對於完全連接的層,它使用樣本規範化。

的Keras庫作參考BN層郵編:https://github.com/fchollet/keras/blob/0daec53acbf4c3df6c054b36ece5c1ae2db55d86/keras/layers/normalization.py

+1

嗨dontloo,感謝您的回覆。但在第3.2節(Batach標準化Convolutoinal Networks)的BN論文中提到:「我們使用有效的最小批量大小m'= | B | = m·pq」,其中pxq是特徵映射的大小。那麼它是不是意味着卷積層和完全連通層的軸應該不同? – Amrit

+0

@Amrit是的,你是對的,非常抱歉我的無稽之談。我會稍微更新一些並鏈接一些代碼以供參考。 – dontloo

+1

謝謝,這對我來說似乎是正確的。只要提一下:我想我們也可以使用「numpy.mean(input_layer,axis =(1,2,3))」作爲conv層,它更加緊湊。 – Amrit