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

2024-04-26 00:07:45 发布

您现在位置:Python中文网/ 问答频道 /正文

专家们,我不熟悉机器学习,并且使用KerasAPI和TensorFlow后端来训练机器学习模型。我使用模型检查点将最佳权重和最佳模型分别保存在.json和.h5文件中。希望我能得到好的解决方案。提前谢谢

    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)
    

Tags: 模型机器jsonverbosemodeltrainstepsgenerator
1条回答
网友
1楼 · 发布于 2024-04-26 00:07:45

解决方案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(培训期间):

我们可以观察到,模型结构在训练期间没有变化,只有权重。因此,您可以使用此检查点在训练期间仅保存最佳权重,并在训练开始/结束时仅保存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

相关问题 更多 >