2017-03-01 8 views
4

Ich habe den folgenden Code.Wie lautet die Anzahl der Parameter, die der BatchNormalization-Schicht zugeordnet sind, 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() 

Und dies ist die Modellübersicht:

____________________________________________________________________________________________________ 
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 
____________________________________________________________________________________________________ 

Die Größe des Eingangs für die BatchNormalization (BN) -Schicht 512. Nach Keras documentation, Form der Ausgabe für die BN-Schicht gleich ist, wie Eingang, der 512 ist.

Dann, wie die Anzahl der Parameter mit BN-Schicht verbunden ist 2048?

+0

einen Grund, diese Frage zu verwerfen? –

Antwort

5

Die Chargennormierung in Keras implementiert this paper.

Wie Sie dort lesen können, müssen Sie, um die Batch-Normalisierung während des Trainings zu machen, die Verteilungen der einzelnen normalisierten Dimensionen verfolgen. Da Sie sich standardmäßig in mode=0 befinden, berechnen sie 4 Parameter pro Feature auf der vorherigen Ebene. Diese Parameter stellen sicher, dass Sie die Informationen ordnungsgemäß propagieren und zurückverbreiten.

So 4*512 = 2048, sollte dies Ihre Frage beantworten.

1

Diese 2048 Parameter sind in der Tat [gamma weights, beta weights, moving_mean(non-trainable), moving_variance(non-trainable)], jede mit 512 Elementen (die Größe der Eingangsschicht).

Verwandte Themen