Увеличение потерь с нормализацией партии (tf.Keras) - PullRequest
0 голосов
/ 27 июня 2018

У меня есть FF NN с 2 скрытыми слоями для решения проблемы регрессии. По сравнению с тем, когда я не добавляю BN, потери (MSE) удваиваются при обучении на том же количестве эпох, и время выполнения также увеличивается примерно на 20%. Почему это так?

Если бы мне пришлось угадывать - BN не стоит этого в двухуровневой сети, и дополнительные накладные расходы, вносимые BN, на самом деле выше, чем любое сокращение времени обработки, которое оно вызывает.

Это объясняет время выполнения, но я не уверен, почему потеря также выше.

model = Sequential()
model.add(Dense(128, 'relu'))
model.add(BatchNormalization())
model.add(Dense(128, 'relu'))
model.add(BatchNormalization())
model.add(Dense(1, 'linear'))
model.compile(loss=mean_squared_error, optimizer='adam')

Я пробовал различные оптимизаторы, функции активации, количество эпох, размер пакета и т. Д., Но без разницы.

1 Ответ

0 голосов
/ 27 июня 2018

Для регрессии не следует использовать BatchNorm перед слоем output.

С другой стороны, вы можете использовать BatchNorm сразу после слоя input и перед первым слоем Dense для нормализации входных данных.

...