如何使用keras保存最佳权重和最佳模型

how to save best weights and best model using keras

专家们,我是机器学习的新手,我使用 Keras API 和 TensorFlow 后端来训练机器学习模型。到目前为止,我正在使用模型检查点在 .json 和 .h5 文件 independently.in 中保存最佳权重和最佳模型,我尝试编写如下代码,但没有保存任何模型或权重.希望我能提前好起来solution.Thanks

    filepath1="best_weights.h5"
    filepath2="best_model.json"
    checkpoint = ModelCheckpoint(filepath1, monitor='val_acc', verbose=1, save_best_only=True,  mode='max')
    callbacks_list = [checkpoint]
    history = model.fit_generator(train_generator,steps_per_epoch=nb_train_samples // batch_size, epochs=epochs, validation_data=validation_generator, callbacks=callbacks_list, validation_steps=nb_validation_samples // batch_size, verbose=1)
    

解决方案 1(在训练结束时):

您可以尝试使用以下代码片段,在训练结束时分别保存权重和模型架构。

from tensorflow.keras.models import model_from_json
model_json = model.to_json()
with open("model.json", "w") as json_file:
    json_file.write(model_json)
model.save_weights("model.h5")

解决方案 2(训练期间):

我们可以观察到模型架构在训练过程中没有变化,只有权重。因此,您可以使用此检查点在训练期间仅保存最佳权重,并在训练的 beginning/end 处仅保存 model_from_json.

checkpoint = ModelCheckpoint(filepath1, 
                             monitor='val_acc',
                             verbose=1,
                             save_best_only=True, 
                             save_weights_only=True, 
                             mode='max')
....training runs.....
......................
....training ends.....
from tensorflow.keras.models import model_from_json
model_json = model.to_json()
with open("model.json", "w") as json_file:
    json_file.write(model_json)

如果没有保存任何内容,请确保您拥有正确的 filepath1