Порядок слоев влияет на конвергенцию вашей модели и, следовательно, на ваши результаты. Основываясь на нормализации партии на бумаге , автор предлагает, чтобы нормализация партии была реализована до активации. Поскольку Dropout применяется после вычисления активаций. Тогда правильный порядок слоев:
- Плотный или Conv
- Нормализация партии
- Активация
- Выпадение.
В коде, использующем кера, вот как вы пишете его последовательно:
model = Sequential()
model.add(Dense(n_neurons, input_shape=your_input_shape, use_bias=False)) # it is important to disable bias when using Batch Normalization
model.add(BatchNormalization())
model.add(Activation('relu')) # for example
model.add(Dropout(rate=0.25))
Пакетная нормализация помогает избежать исчезновения / взрыва градиентов при обучении вашей модели. Поэтому это особенно важно, если у вас много слоев. Вы можете прочитать предоставленный документ для более подробной информации.