Первоначальный вопрос касался конкретно реализаций TensorFlow. Однако ответы относятся к реализациям в целом. Этот общий ответ также является правильным ответом для TensorFlow.
При использовании пакетной нормализации и выпадения в TensorFlow (в частности, с использованием contrib.layers) нужно ли мне беспокоиться об упорядочивании?
Кажется возможным, что если я использую выпадение, а затем сразу же выполняю пакетную нормализацию, могут возникнуть проблемы. Например, если сдвиг в пакетной нормализации приводит к большим масштабным числам обучающих выходных данных, но затем тот же сдвиг применяется к меньшим (из-за компенсации за большее количество выходных данных) масштабным числам без выпадения во время тестирования, тогда это сдвиг может быть выключен. Компенсирует ли это слой пакетной нормализации TensorFlow автоматически? Или этого не происходит по какой-то причине?
Кроме того, есть ли другие подводные камни, на которые следует обратить внимание при использовании этих двух вместе? Например, предполагая, что я использую их в правильном порядке относительно вышеизложенного (при условии, что есть правильный порядок), могут ли возникнуть проблемы с использованием как пакетной нормализации, так и исключения на нескольких последовательных слоях? Я не сразу вижу в этом проблему, но, возможно, я что-то упускаю.
Спасибо много!
ОБНОВЛЕНИЕ:
Экспериментальный тест кажется предполагает, что порядок имеет значение. Я дважды запускал одну и ту же сеть только с нормой партии и обратным отсечением. Когда выпадение превышает норму партии, потери валидации, кажется, растут, поскольку потери в обучении уменьшаются. В другом случае они оба падают. Но в моем случае движения медленные, поэтому все может измениться после дополнительных тренировок, и это всего лишь один тест. Будем признательны за более точный и осознанный ответ.