Выбор ответа Junior Регуляризация спрашивают часто обновлено

Dropout на валидации

Вопрос

Метрика на валидации скачет от запуска к запуску на одной и той же модели. Самая вероятная причина?

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

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

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

Коротко

Правильный ответ: Не вызван model.eval(): dropout включён, и предсказания случайны. В режиме train dropout каждый раз выключает разные нейроны, и предсказание случайно. model.eval() выключает dropout и переводит BatchNorm на накопленные статистики.

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

  1. Слишком большой батч валидации, из-за чего часть объектов теряется
  2. Не вызван model.eval(): dropout включён, и предсказания случайныправильный ответ
  3. Не вызван optimizer.zero_grad() перед подсчётом метрики на валидации
  4. Валидация не перемешана, и порядок объектов влияет на результат

Разбор

В режиме train dropout каждый раз выключает разные нейроны, и предсказание случайно. model.eval() выключает dropout и переводит BatchNorm на накопленные статистики. После валидации нужно вернуть model.train().

  • Размер батча не делает предсказания случайными (кроме BatchNorm в train-режиме, что та же ошибка).
  • zero_grad влияет на обучение, а не на инференс.
  • Перемешивание валидации не нужно и не влияет на метрику.

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

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

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