我完成模型训练处理。在训练期间,我使用ModelCheckpint通过以下方法节省了最佳模型的权重:
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1,
save_best_only=True, mode='max')
Run Code Online (Sandbox Code Playgroud)
训练后,我将模型权重加载到模型中进行评估,但是我发现模型不能提供训练中观察到的最佳准确性。我按如下方式重新加载模型:
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])
Run Code Online (Sandbox Code Playgroud)
Modelcheckpoint所保存的最高准确度约为85%,但是重新编译的模型仅提供16%的准确度?
我在做错什么吗?
为了安全起见,有什么方法可以直接保存最佳模型而不是模型权重?
| 归档时间: |
|
| 查看次数: |
3490 次 |
| 最近记录: |