Dropout 层在训练和测试阶段的行为差异

8

根据Keras文档,dropout层在训练和测试阶段表现不同:

请注意,如果您的模型在训练和测试阶段具有不同的行为(例如,如果它使用了Dropout、BatchNormalization等),则需要向您的函数传递学习阶段标志:

不幸的是,没有人谈论实际的差异。为什么dropout在测试阶段的行为会不同?我希望该层将某些神经元设置为0。为什么这种行为会取决于训练/测试阶段?

1个回答

9

在训练阶段,使用Dropout来减少过度拟合的机会。正如您所提到的,这个层会停用某些神经元。模型将变得更加不敏感于其它节点的权重。基本上,使用Dropout层后,经过训练的模型将是许多缩减模型的平均值。在这里可以查看更详细的解释。

然而,在应用训练好的模型时,您想要充分利用模型的全部能力。您希望使用训练(平均)网络中的所有神经元,以获得最高的准确性。


这意味着在测试阶段中关闭了dropout吗? - null
1
确切地说,它会自动禁用。 - Wilmar van Ommeren
有任何进展吗?有没有更好的方法来减轻那个开关的压力? - Chris Tosh
在此处检查如何实现永久性的dropout层,并且也能在测试阶段启用。https://dev59.com/-lYN5IYBdhLWcg3wO10v - Wilmar van Ommeren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接