Выбор ответа Senior Инициализация и нормализация обновлено

BatchNorm при батче 2

Вопрос

Сегментация больших изображений: в память влезает батч из 2 картинок. Что с BatchNorm и чем заменить?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Статистики по 2 объектам шумные; взять GroupNorm, SyncBatchNorm или заморозить BN. Оценки среднего и дисперсии по двум объектам шумные, и расхождение между режимами train и eval становится большим.

Варианты ответа

  1. Ничего: BatchNorm не зависит от размера батча, накопленные статистики всё усреднят
  2. Увеличить momentum BatchNorm до 1, чтобы статистики сглаживались по многим батчам
  3. Удалить все нормализации и поднять lr, чтобы компенсировать отсутствие BatchNorm
  4. Статистики по 2 объектам шумные; взять GroupNorm, SyncBatchNorm или заморозить BNправильный ответ

Разбор

Оценки среднего и дисперсии по двум объектам шумные, и расхождение между режимами train и eval становится большим. GroupNorm нормирует по группам каналов внутри объекта, не завися от батча. SyncBatchNorm собирает статистики со всех GPU. При fine-tuning часто замораживают BN-слои предобученной сети.

  • Зависимость от размера батча прямая.
  • В PyTorch momentum = 1 сделает накопленные статистики равными последнему батчу, а не сгладит их.
  • Убрать нормализацию и поднять lr это путь к расхождению.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме