Как использовать chainer.using_config, чтобы остановить F.dropout в процессе оценки / прогнозирования в цепочке?

F.dropout используется только в поезде, я запутался, как использовать в нем chainer.using_config? Как это работает и как понять, как это происходит на тренировке или предсказывать?

1 ответ

Решение

Начиная с Chainer v2, поведение функции контролируется config переменная, в соответствии с официальным документом,

chainer.config.train

Флаг режима тренировки. Если это правда, Chainer работает в режиме обучения. В противном случае он работает в режиме тестирования (оценки). Значение по умолчанию верно.

Вы можете контролировать это config следуя двум путям.

1. Просто назначьте значение.

chainer.config.train = False
here, code runs in the test mode, and dropout won't drop any unit.
model(x)  
chainer.config.train = True

2. with using_config(key, value) обозначение

Если мы используем вышеупомянутый случай, вам может потребоваться установить True а также False часто цепочник обеспечивает with using_config(key, value) запись, чтобы облегчить эту настройку.

with chainer.using_config('train', False):
    # train config is set to False, thus code runs in the test mode.
    model(x)

# Here, train config is recovered to original value.
...

Примечание 1: если вы используете trainer moudule, Evaluator будет обрабатывать эти конфигурации автоматически во время проверки / оценки (см. документ или исходный код). Это значит train конфиг установлен на False и отсев выполняется в качестве режима оценки при расчете потерь проверки.

Заметка 2: train config используется для переключения режима "поезд" и "оценка / проверка". Если вам нужно "предсказать" код, его нужно реализовать отдельно.

Другие вопросы по тегам