Выбор ответа Middle Инициализация и нормализация спрашивают часто обновлено
BatchNorm на инференсе
Вопрос
Модель с BatchNorm на валидации предсказывает по-разному один и тот же объект в зависимости от того, с какими объектами он в батче. В чём ошибка?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Забыли model.eval(): BatchNorm берёт статистики батча, а не накопленные. В режиме train BatchNorm нормирует по текущему батчу, поэтому предсказание зависит от соседей. model.eval() переключает его на накопленные скользящие статистики (и выключает dropout). nograd экономит память, но режим слоёв не меняет. -…
Варианты ответа
- Не вызвали torch.no_grad(), и BatchNorm обновляет статистики по батчу
- Слишком маленький learning rate, и статистики BatchNorm не сошлись
- Нужно перемешивать валидацию, чтобы состав батчей был случайным
- Забыли model.eval(): BatchNorm берёт статистики батча, а не накопленныеправильный ответ
Разбор
В режиме train BatchNorm нормирует по текущему батчу, поэтому предсказание зависит от соседей. model.eval() переключает его на накопленные скользящие статистики (и выключает dropout). no_grad экономит память, но режим слоёв не меняет.
- no_grad не влияет на поведение BatchNorm.
- lr тут ни при чём.
- Перемешивание не устраняет зависимость от батча.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.