python - 如何使用 keras 保存最佳权重和最佳模型
问题描述
专家们,我是机器学习的新手,我使用 Keras API 和 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)
解决方案
解决方案 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
.
推荐阅读
- nvidia - Nvidia 显示设置不可用 server 2019
- sap-cloud-connector - SICF:如果通过 Cloud Connector 请求,为什么对 SAP REST 服务的 GET 请求会失败并显示 HTTP 403(禁止)?
- java - aws lambda java:如何在动态编译时设置类路径
- java - 无法解决Java Deque 迭代Bug
- kubernetes - EKS:- 当该节点组选择器没有 Pod 时,ASG 中是否可以有 0 个实例?
- javascript - 想要在选择选项中附加 Ajax 响应数据
- reactjs - 重新排序当前路由组件
- c# - 我如何在不同的应用程序状态下管理我的计时器,我正在使用 MVVM 方法?
- r - 如何在 Shiny Dashboard 的同一选项卡中显示一个下方的图表?
- wordpress - WordPress 中的 TinyMCE 全屏模式和隐藏元素