我一直是Tensorflow用户,在tensorflow中,我必须明确地处理Drop和BatchNorm。例如,在测试/验证阶段,Drop率必须设置为1,并指定BatchNorm的训练标志。
我的问题是:Keras能否在列车和测试/验证阶段自动识别Drop和BatchNorm?例如,如果我使用model.predict(),Keras会知道我在test / validate的pjhase中,所以它会自动处理Drop和BatchNorm吗?
B.T.W。,在验证/测试阶段,Keras会将Dropout的速率设置为0,这与Tensorflow中的情况形成鲜明对比。在Tensorflow中,丢弃率将设置为1。
答案 0 :(得分:4)
是的,Keras已经在内部跟踪学习/测试阶段,它是通过一个名为learning_phase的内部变量来实现的,该变量在测试时设置为零,在训练时设置为一个。
您可以将此变量与keras.backend
函数learning_phase()
和set_learning_phase(value)
fully documented进行互动。