F.dropout 仅用于火车,我很困惑如何在其中使用chainer.using_config?它是如何工作的,chainer 如何知道它在训练或预测中?
问问题
531 次
1 回答
1
根据官方文档,从 Chainer v2 开始,函数行为由config
变量控制,
chainer.config.train
训练模式标志。如果为 True,Chainer 以训练模式运行。否则,它将以测试(评估)模式运行。默认值是true。
您可以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
经常,chainer 提供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
模块,Evaluator
将在验证/评估期间自动处理这些配置(请参阅文档或源代码)。这意味着在计算验证损失时,train
配置被设置为False
并且 dropout 作为评估模式运行。
注2: train
config 用于切换“train”模式和“evaluate/validation”。如果需要“预测”代码,则需要单独实现。
于 2017-08-21T00:21:38.683 回答