Как я могу использовать нормализацию партии, чтобы нормализовать размер партии? - PullRequest
0 голосов
/ 10 июля 2019

Я хочу использовать пакетную нормализацию для нормализации размера партии, но, естественно, размер партии в кератах равен нулю.Итак, что я могу сделать.

На примере керас показано, что ось равна -1 для conv2d, что означает размер канала.

keras.layers.BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros', gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones', beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None)

ось: целое число, ось, которая должна быть нормализована (обычно это ось объектов).Например, после слоя Conv2D с data_format = "channel_first", установите ось = 1 в BatchNormalization.

1 Ответ

1 голос
/ 10 июля 2019

Просто не имеет смысла наносить слой BN на ось пакета.

Почему? Если это правдоподобно, вы в конечном итоге изучите параметры BN в терминах нескольких обучаемых векторов с размерностью batch_size. ХОРОШО. И что. Вы все еще можете обучить такую ​​модель, не видя сообщения об ошибке.

Но как насчет тестирования? Приведенный выше BN просто подразумевает, что вы должны сделать вывод с точно такой же batch_size, что и при обучении. В противном случае тензорная операция будет неправильно определена, и вы увидите ошибку.

Что еще более важно, BN, который вы предложили, означает обработку образцов по-разному в зависимости от их относительного положения в партии. Потому что вы всегда нормализуете те сэмплы, которые появляются на 1-м месте в пакете с одним набором параметров, при этом используя другой набор параметров для тех сэмплов, которые появляются в другом месте. Опять же, вы можете сказать, что.
Однако факт заключается в том, что вам все равно придется перетасовать свои тренировочные образцы, подразумевая, что такие относительные позиции в пакете совершенно бессмысленны. Другими словами, изучение чего-либо об этих относительных позициях обречено на провал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...