-2

F.dropout 仅用于火车,我很困惑如何在其中使用chainer.using_config?它是如何工作的,chainer 如何知道它在训练或预测中?

4

1 回答 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: trainconfig 用于切换“train”模式和“evaluate/validation”。如果需要“预测”代码,则需要单独实现。

于 2017-08-21T00:21:38.683 回答