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