【问题标题】:Behavior of Dropout layers in test / training phase测试/训练阶段 Dropout 层的行为
【发布时间】:2017-10-08 19:41:48
【问题描述】:

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

请注意,如果您的模型在训练和 测试阶段(例如,如果它使用 Dropout、BatchNormalization 等),你 需要将学习阶段标志传递给您的函数:

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

【问题讨论】:

    标签: tensorflow keras neural-network theano keras-layer


    【解决方案1】:

    Dropout 用于训练阶段,以减少过拟合的机会。正如你提到的,这一层会停用某些神经元。该模型将变得对其他节点的权重更加不敏感。基本上,使用 dropout 层,经过训练的模型将是许多细化模型的平均值。查看更详细的解释here

    但是,当您应用经过训练的模型时,您希望充分利用模型的功能。您希望使用经过训练的(平均)网络中的所有神经元来获得最高准确度。

    【讨论】:

    • 这意味着在测试阶段禁用了dropout?
    • 没错,它是自动禁用的
    • 有什么更新吗?有没有更好的方法来缓解这种转变?
    • 在此处查看答案以实现永久丢失层。这也在测试阶段启用。 stackoverflow.com/questions/47787011/…
    猜你喜欢
    • 2019-09-06
    • 2017-07-27
    • 1970-01-01
    • 2017-07-02
    • 2019-08-22
    • 2019-03-16
    • 2018-02-12
    • 2020-05-10
    • 2020-06-15
    相关资源
    最近更新 更多