Keras:如何在训练和测试阶段使用 dropout?

Keras: how to use dropout at train and test phase?

是否可以在 Keras 的训练和测试阶段使用 dropout?

就像这里描述的那样: https://github.com/soumith/ganhacks#17-use-dropouts-in-g-in-both-train-and-test-phase

当然,您可以在调用 Dropout层时将training参数设置为True。这样,在训练和测试阶段都会应用dropout:

drp_output = Dropout(rate)(inputs, training=True)  # dropout would be active in train and test phases

两个答案都让我有点困惑。更简单地说,您可能会发现自己在做这样的事情:

model = Model(...)
...
model.add(Dropout(0.5))
...
model.fit(...)        # invokes Dropout(training=True)
...
model.evaluate(...)   # invokes Dropout(training=False)

也就是说,当您定义模型时,您可以添加 Dropout 层,并在训练期间使用您想要的丢失率。测试和训练之间的比率没有明显差异;相反,它被声明为一个固定值,然后(不可见地)根据调用层的 training 参数切换 on/off 。参见 keras.Model