​​Стандартной схемой использования батч нормализации является Conv -> BN -> ReLU. Заметим, что на момент инференса слой батч нормализации является линейным. Таким образом, если этот слой используется в паре с другим линейным слоем, например свёрткой, то эти слои можно сплавить (fusion) в один, что сохранит параметры сети и ускорит её (3). Прочесть с выводом можно здесь.



Батчнормы очень чувствительны к сдвигам в данных. Все будет грустно даже если вы просто забыли перемешать данные между классами. Потому что вместо оценки для среднего всего датасета, батчнорм будет выдавать среднее по какому-то классу. Можно держать в голове простой пример (4): пусть при обучении сети будут идти подряд 100к жёлтых картинок, а затем 100к красных. Что будет, когда на инференсе придет жёлтая картинка? Кажется, что ничего хорошего🙂 Если сменили домен, попробуйте прогнать его через сеть для вычисления новых статистик. Это может значительно поднять качество.