web-dev-qa-db-ja.com

BatchNormalizationレイヤーに関連付けられているパラメーターの数は2048ですか?

次のコードがあります。

x = keras.layers.Input(batch_shape = (None, 4096))
hidden = keras.layers.Dense(512, activation = 'relu')(x)
hidden = keras.layers.BatchNormalization()(hidden)
hidden = keras.layers.Dropout(0.5)(hidden)
predictions = keras.layers.Dense(80, activation = 'sigmoid')(hidden)
mlp_model = keras.models.Model(input = [x], output = [predictions])
mlp_model.summary()

そして、これはモデルの要約です:

____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to                     
====================================================================================================
input_3 (InputLayer)             (None, 4096)          0                                            
____________________________________________________________________________________________________
dense_1 (Dense)                  (None, 512)           2097664     input_3[0][0]                    
____________________________________________________________________________________________________
batchnormalization_1 (BatchNorma (None, 512)           2048        dense_1[0][0]                    
____________________________________________________________________________________________________
dropout_1 (Dropout)              (None, 512)           0           batchnormalization_1[0][0]       
____________________________________________________________________________________________________
dense_2 (Dense)                  (None, 80)            41040       dropout_1[0][0]                  
====================================================================================================
Total params: 2,140,752
Trainable params: 2,139,728
Non-trainable params: 1,024
____________________________________________________________________________________________________

BatchNormalization(BN)レイヤーの入力のサイズは512です。 Kerasのドキュメント によると、BNレイヤーの出力の形状は入力の512と同じです。

では、BNレイヤーに関連付けられているパラメーターの数は2048ですか?

14
Wasi Ahmad

Kerasのバッチ正規化は この論文 を実装しています。

ご覧のとおり、トレーニング中にバッチ正規化を機能させるには、正規化された各次元の分布を追跡する必要があります。そうするために、あなたはmode=0デフォルトでは、前のレイヤーのフィーチャごとに4つのパラメーターを計算します。これらのパラメーターは、情報を適切に伝搬および逆伝搬することを確実にします。

そう 4*512 = 2048、これはあなたの質問に答えるはずです。

11
Nassim Ben

これらの2048個のパラメーターは、実際には[gamma weights, beta weights, moving_mean(non-trainable), moving_variance(non-trainable)]であり、それぞれが512個の要素(入力レイヤーのサイズ)を持っています。

11
Monaj