keras:将保存的模型权重加载到模型中以进行评估

jin*_*imo 5 keras

我完成模型训练处理。在训练期间,我使用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%的准确度?

我在做错什么吗?

为了安全起见,有什么方法可以直接保存最佳模型而不是模型权重?

jin*_*imo 0

编译模型后放置 model.load_weights(filepath) 可以解决问题!

但我仍然很好奇在训练期间保存最好的模型