Выпадение и нормализация партии - имеет ли значение порядок слоев? - PullRequest
1 голос
/ 06 октября 2019

Я строил модель нейронной сети, и мой вопрос заключается в том, что какой-либо случай упорядочения слоев отсева и пакетной нормализации действительно влияет на модель? Поместит ли выпадающий слой перед уровнем пакетной нормализации (или наоборот) какое-то значение для вывода модели, если я использую показатель ROC-AUC в качестве метрики измерения.

Я ожидаю выходиметь большую (ROC-AUC) оценку и хотеть знать, повлияет ли это каким-либо образом на порядок слоев.

1 Ответ

0 голосов
/ 06 октября 2019

Порядок слоев влияет на конвергенцию вашей модели и, следовательно, на ваши результаты. Основываясь на нормализации партии на бумаге , автор предлагает, чтобы нормализация партии была реализована до активации. Поскольку 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))

Пакетная нормализация помогает избежать исчезновения / взрыва градиентов при обучении вашей модели. Поэтому это особенно важно, если у вас много слоев. Вы можете прочитать предоставленный документ для более подробной информации.

...