Keras是否可以在训练和测试/验证阶段自动识别Drop和BatchNorm?

Kev*_*Sun 4 keras

我曾经是Tensorflow用户,在tensorflow中,我必须显式对待Drop和BatchNorm。例如,在测试/验证阶段,必须将“丢弃率”设置为1,并指定BatchNorm的训练标志。

我的问题是:Keras是否可以在训练和测试/验证阶段自动识别Drop和BatchNorm?例如,如果我使用model.predict(),Keras会知道我正在测试/验证中,因此它将自动处理Drop和BatchNorm?

顺便说一句,在验证/测试阶段,Keras会将Dropout的速率设置为0,这与Tensorflow中的设置相反。在Tensorflow中,Drop rate将设置为1。

Mat*_*gro 6

是的,Keras已经在内部跟踪学习/测试阶段,它通过一个称为learning_phase的内部变量来完成该任务,在测试时将其设置为零,在训练时将其设置为1。

您可以将此变量与keras.backend函数进行交互,learning_phase()并且set_learning_phase(value)已对其进行了全面记录