在 Keras 中使用 Normalization 或 dropout 层进行训练时如何进行预测?
How to do predict when trained with Normalization or dropout layer in Keras?
我用归一化层训练了一个模型。代码如下:
训练阶段:
model=Sequential()
model.add()
...
k.set_learning_phase(1)
ModelCheckpoint(weights_file)
model.fit()
推理时间:
k.set_learning_phase(0)
model.load_weights(weights_file)
model.predict_classes()
...
Keras版本:2.0.8。是这样吗,还是需要一些特殊的代码来计算训练后的BN,比如在Caffe中使用SegNet?
不,在使用 BatchNormalization 或 Dropout 层时不需要做任何特殊的事情。 Keras 已经跟踪 learning/testing 阶段,所以当使用 predict
或 predict_classes
时,它会做正确的事情。
你甚至不需要手动设置学习阶段,Keras 已经做到了。
我用归一化层训练了一个模型。代码如下:
训练阶段:
model=Sequential()
model.add()
...
k.set_learning_phase(1)
ModelCheckpoint(weights_file)
model.fit()
推理时间:
k.set_learning_phase(0)
model.load_weights(weights_file)
model.predict_classes()
...
Keras版本:2.0.8。是这样吗,还是需要一些特殊的代码来计算训练后的BN,比如在Caffe中使用SegNet?
不,在使用 BatchNormalization 或 Dropout 层时不需要做任何特殊的事情。 Keras 已经跟踪 learning/testing 阶段,所以当使用 predict
或 predict_classes
时,它会做正确的事情。
你甚至不需要手动设置学习阶段,Keras 已经做到了。