Выбор ответа Junior Регуляризация спрашивают часто обновлено
Dropout на валидации
Вопрос
Метрика на валидации скачет от запуска к запуску на одной и той же модели. Самая вероятная причина?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Не вызван model.eval(): dropout включён, и предсказания случайны. В режиме train dropout каждый раз выключает разные нейроны, и предсказание случайно. model.eval() выключает dropout и переводит BatchNorm на накопленные статистики.
Варианты ответа
- Слишком большой батч валидации, из-за чего часть объектов теряется
- Не вызван model.eval(): dropout включён, и предсказания случайныправильный ответ
- Не вызван optimizer.zero_grad() перед подсчётом метрики на валидации
- Валидация не перемешана, и порядок объектов влияет на результат
Разбор
В режиме train dropout каждый раз выключает разные нейроны, и предсказание случайно. model.eval() выключает dropout и переводит BatchNorm на накопленные статистики. После валидации нужно вернуть model.train().
- Размер батча не делает предсказания случайными (кроме BatchNorm в train-режиме, что та же ошибка).
- zero_grad влияет на обучение, а не на инференс.
- Перемешивание валидации не нужно и не влияет на метрику.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.