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