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

时间:2019-04-16 17:10:58

标签: machine-learning keras dropout

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

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

3 个答案:

答案 0 :(得分:1)

当然,您可以在调用 training层时将True参数设置为Dropout。这样,辍学将同时应用于培训和测试阶段:

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

答案 1 :(得分:0)

您不想在测试阶段使用Dropout。

Dropout是一种用于迫使神经元彼此更加独立的技术:每个神经元将以您设置的概率失活,但仅限于训练阶段。

在“测试”阶段,使所有神经元正常工作。

更多详细信息herehere

答案 2 :(得分:0)

两个答案都让我有些困惑。更简单地说,您可能会发现自己正在执行以下操作:

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

也就是说,当您定义模型时,您要添加Dropout层以及训练期间所需的辍学率。测试和培训之间的比率没有明显变化;而是一次将其声明为固定值,然后根据层调用的training参数(在无形中)打开/关闭。参见keras.Model