在Keras的训练和测试阶段是否可以使用辍学?
就像这里描述的那样: https://github.com/soumith/ganhacks#17-use-dropouts-in-g-in-both-train-and-test-phase
答案 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是一种用于迫使神经元彼此更加独立的技术:每个神经元将以您设置的概率失活,但仅限于训练阶段。
在“测试”阶段,使所有神经元正常工作。
答案 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。