Выбор ответа Senior Инициализация и нормализация обновлено
BatchNorm при батче 2
Вопрос
Сегментация больших изображений: в память влезает батч из 2 картинок. Что с BatchNorm и чем заменить?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Статистики по 2 объектам шумные; взять GroupNorm, SyncBatchNorm или заморозить BN. Оценки среднего и дисперсии по двум объектам шумные, и расхождение между режимами train и eval становится большим.
Варианты ответа
- Ничего: BatchNorm не зависит от размера батча, накопленные статистики всё усреднят
- Увеличить momentum BatchNorm до 1, чтобы статистики сглаживались по многим батчам
- Удалить все нормализации и поднять lr, чтобы компенсировать отсутствие BatchNorm
- Статистики по 2 объектам шумные; взять GroupNorm, SyncBatchNorm или заморозить BNправильный ответ
Разбор
Оценки среднего и дисперсии по двум объектам шумные, и расхождение между режимами train и eval становится большим. GroupNorm нормирует по группам каналов внутри объекта, не завися от батча. SyncBatchNorm собирает статистики со всех GPU. При fine-tuning часто замораживают BN-слои предобученной сети.
- Зависимость от размера батча прямая.
- В PyTorch momentum = 1 сделает накопленные статистики равными последнему батчу, а не сгладит их.
- Убрать нормализацию и поднять lr это путь к расхождению.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.