微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用keras节省最佳权重和最佳模型

如何解决如何使用keras节省最佳权重和最佳模型

专家,我是机器学习的新手,并结合使用Keras API和TensorFlow后端来训练机器学习模型。我正在使用Model-checkpoint分别将最佳权重和最佳模型保存在.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)
    

解决方法

解决方案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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。