Должен ли я установить model.eval для получения текущей потери обучения в Pytorch? - PullRequest
0 голосов
/ 04 апреля 2020

Мы установили model.train () во время обучения, но во время моих итераций обучения я также хочу сделать прямой проход набора данных обучения, чтобы увидеть, какова моя новая потеря. При этом я должен временно установить model.eval ()?

1 Ответ

0 голосов
/ 04 апреля 2020

Если в вашей сети есть слои, которые действуют по-разному во время логического вывода (например, torch.nn.BatchNormNd и torch.nn.DropoutNd, то для второго случая будут использоваться все нейроны, но масштабированные по инвертированной вероятности удержания нейронов , смотрите здесь или здесь например) и вы хотите проверить, как ваша сеть работает в настоящее время (что обычно называется шагом validation), тогда это обязательно использовать module.eval().

Это обычная (и очень хорошая!) практика всегда переключаться в режим eval при выполнении операций, подобных выводам, независимо от того, изменит ли это вашу фактическую модель.

РЕДАКТИРОВАТЬ:

Вы также должны использовать with torch.no_grad(): блок во время вывода, см. официальный учебный код , так как градиенты не нужны на этом этапе, и это расточительно вычислять их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...