我完成了模型训练过程。在训练过程中,我使用了ModelCheckpint来保存最佳模型的权重:
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1,
save_best_only=True, mode='max')
训练完成后,我将模型权重加载到模型中进行评估,但发现模型的准确率不如训练期间观察到的最佳准确率。我按以下方式重新加载模型:
model.load_weights(filepath) #load saved weights
model = Sequential()
model.add(Convolution2D(32, 7, 7, input_shape=(3, 128, 128)))
....
....
model.compile(loss='categorical_crossentropy',
optimizer=sgd,
metrics=['accuracy'])
#evaluate the model
scores = model.evaluate_generator(test_generator,val_samples)
print("Accuracy = ", scores[1])
Modelcheckpoint 保存的最高准确率约为85%,但重新编译的模型仅提供16%的准确率?
我做错了什么吗?
为了安全起见,是否有直接保存最佳模型而不是模型权重的方法?