Как число параметров, связанных с 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 документация, форма выхода для слоя БН такое же как входной сигнал который 512.
тогда как число параметров, связанных с слоем BN, равно 2048?
2 ответов
нормализация партии в Keras реализует этой статье.
Как вы можете прочитать там, чтобы нормализация пакета работала во время обучения, им нужно отслеживать распределения каждого нормализованного измерения. Чтобы сделать это, так как вы находитесь в mode=0
по умолчанию они вычисляют 4 параметра для каждого объекта на предыдущем слое. Эти параметры гарантируют, что вы правильно распространяете и backpropagate информацию.
Так 4*512 = 2048
, это должно ответить на ваш вопрос.
эти 2048 параметров на самом деле [gamma weights, beta weights, moving_mean(non-trainable), moving_variance(non-trainable)]
, каждый из которых имеет 512 элементов (размер входного слоя).