链接
Keras中文文档

一、如何保存 Keras 模型?

1.保存/加载整个模型(结构 + 权重 + 优化器状态)

不建议使用 pickle 或 cPickle 来保存 Keras 模型。

你可以使用 model.save(filepath) 将 Keras 模型保存到单个 HDF5 文件中,该文件将包含:

  • 模型的结构,允许重新创建模型
  • 模型的权重 训练配置项(损失函数,优化器)
  • 优化器状态,允许准确地从你上次结束的地方继续训练。

你可以使用 keras.models.load_model(filepath) 重新实例化模型。load_model 还将负责使用保存的训练配置项来编译模型(除非模型从未编译过)。

例子:

from keras.models import load_modelmodel.save('my_model.h5')  # 创建 HDF5 文件 'my_model.h5'
del model  # 删除现有模型# 返回一个编译好的模型
# 与之前那个相同
model = load_model('my_model.h5')

另请参阅如何安装 HDF5 或 h5py 以在 Keras 中保存我的模型?,查看有关如何安装 h5py 的说明。

2.只保存/加载模型的结构

如果您只需要保存模型的结构,而非其权重或训练配置项,则可以执行以下操作:

# 保存为 JSON
json_string = model.to_json()# 保存为 YAML
yaml_string = model.to_yaml()

生成的 JSON/YAML 文件是人类可读的,如果需要还可以手动编辑。
你可以从这些数据建立一个新的模型:

# 从 JSON 重建模型:
from keras.models import model_from_json
model = model_from_json(json_string)# 从 YAML 重建模型:
from keras.models import model_from_yaml
model = model_from_yaml(yaml_string)

3. 只保存/加载模型的权重

如果您只需要 模型的权重,可以使用下面的代码以 HDF5 格式进行保存。
请注意,我们首先需要安装 HDF5 和 Python 库 h5py,它们不包含在 Keras 中。

model.save_weights('my_model_weights.h5')

假设你有用于实例化模型的代码,则可以将保存的权重加载到具有相同结构的模型中:

model.load_weights('my_model_weights.h5')

如果你需要将权重加载到不同的结构(有一些共同层)的模型中,例如微调或迁移学习,则可以按层的名字来加载权重:

model.load_weights('my_model_weights.h5', by_name=True)

例子:

"""
假设原始模型如下所示:model = Sequential()model.add(Dense(2, input_dim=3, name='dense_1'))model.add(Dense(3, name='dense_2'))...model.save_weights(fname)
"""# 新模型
model = Sequential()
model.add(Dense(2, input_dim=3, name='dense_1'))  # 将被加载
model.add(Dense(10, name='new_dense'))  # 将不被加载# 从第一个模型加载权重;只会影响第一层,dense_1
model.load_weights(fname, by_name=True)

4. 处理已保存模型中的自定义层(或其他自定义对象)

如果要加载的模型包含自定义层或其他自定义类或函数,则可以通过 custom_objects 参数将它们传递给加载机制:

from keras.models import load_model
# 假设你的模型包含一个 AttentionLayer 类的实例
model = load_model('my_model.h5', custom_objects={'AttentionLayer': AttentionLayer})

或者,你可以使用 自定义对象作用域:

from keras.utils import CustomObjectScopewith CustomObjectScope({'AttentionLayer': AttentionLayer}):model = load_model('my_model.h5')

自定义对象的处理与 load_model, model_from_json, model_from_yaml 的工作方式相同:

from keras.models import model_from_json
model = model_from_json(json_string, custom_objects={'AttentionLayer': AttentionLayer})

Keras如何保存、加载Keras模型相关推荐

  1. 基于keras的mnist训练-训练时长计算、loss-acc图形绘制和模型保存加载

    代码注释 loss_acc.py # -*- coding: utf-8 -*-# 加载keras模块 from __future__ import print_function import num ...

  2. Keras中保存和加载权重及模型结构

    微信公众号 1. 保存和加载模型结构 (1)保存为JSON字串 json_string = model.to_json() (2)从JSON字串重构模型 from keras.models impor ...

  3. R语言使用keras包实现卷积自动编码器模型(Convolutional Autoencoder)、加载keras自带的mnist数据集、训练中动态生成每个epoch后模型训练的loss曲线

    R语言使用keras包实现卷积自动编码器模型(Convolutional Autoencoder).加载keras自带的mnist数据集.训练中动态生成每个epoch后模型训练的loss曲线 目录

  4. 6.2 模型保存 --- 加载和保存模型结构权重

    一.只保存/加载模型的结构 保存模型的结构,而非其权重或训练配置项: json_string = model.to_json() model.save('my_model.h5') my_model_ ...

  5. C++ 和 OpenCV 实现卷积神经网络并加载 Keras 训练好的参数进行预测

    C++ 和 OpenCV 实现卷积神经网络并加载 Keras 训练好的参数进行预测 一. 背景 二. Keras 定义神经网络结构 channels_first 与 channels_last cha ...

  6. Python时间序列模型推理预测实战:时序推理数据预处理(特征生成、lstm输入结构组织)、模型加载、模型预测结果保存、条件判断模型循环运行

    Python时间序列模型推理预测实战:时序推理数据预处理(特征生成.lstm输入结构组织).模型加载.模型预测结果保存.条件判断模型循环运行 目录

  7. ​​​​​​​CV:利用cv2(加载人脸识别xml文件及detectMultiScale函数得到人脸列表)+keras的load_model(加载表情hdf5、性别hdf5)并标注

    CV:利用cv2+自定义load_detection_model(加载人脸识别xml文件及detectMultiScale函数得到人脸列表)+keras的load_model(加载表情hdf5.性别h ...

  8. 加载dict_PyTorch 7.保存和加载pytorch模型的两种方法

    众所周知,python的对象都可以通过torch.save和torch.load函数进行保存和加载(不知道?那你现在知道了(*^_^*)),比如: x1 = {"d":" ...

  9. word2vec模型训练保存加载及简单使用

    目录 word2vec模型训练保存加载及简单使用 一 word2vec简介 二.模型训练和保存及加载 模型训练 模型保存和加载 模型的增量训练 三.模型常用API 四.文本相似度计算--文档级别 wo ...

最新文章

  1. Go 1.4 正式版发布,官方正式支持 Android
  2. 谷歌浏览器 关闭 提示恢复网页功能_最强浏览器又更新喽!
  3. 三、Appium-python-UI自动化之元素定位uiautomatorviewer
  4. 将Host Cobol批次和Monolith Webapps移动到云和微服务
  5. “西邮漫记”--自由照耀中国
  6. C++新特性探究(二):override、final
  7. Git--可视化管理工具-SourceTree
  8. 如何给Word参考文献加方括号
  9. 网页打开慢/正在解析主机-解决
  10. 简单投资组合净值的计算
  11. 4.7 合成复用原则
  12. 微软遥测服务服务器,使用 .REST 配置 Azure 媒体服务遥测 | Microsoft Docs
  13. 《流浪星球》作者:区块链让虚拟世界代替现实世界
  14. pbootcms网站模板安装教程图文详解
  15. Android中妙用Selector实现颜色图片切换效果
  16. 仿网易云音乐Android端歌手资料页面的实现
  17. 总结:LSM-Tree
  18. 阿里云mysql创建用户_mysql创建用户-阿里云开发者社区
  19. MFC+OpenGL三维绘图(一)——简单绘图平台的搭建与实现图像的旋转、缩放
  20. 软件测试人员需要懂这些网络知识点

热门文章

  1. RGB和HSV区别与互相转换
  2. JForum论坛安装及配置
  3. linux下使用onedrive同步
  4. Java源码之从零单排--ArrayList
  5. 【区块链技术工坊27期实录】李庆华:HPB底层P2P网络实践
  6. 4键电子手表说明书_四个按钮的手表怎么调 4键电子手表怎么调时间
  7. vue2-router.beforeEach不同角色登录到不同页面
  8. 如何将传统 Web 框架部署到 Serverless
  9. 个人简历项目——需求分析
  10. JZ45,46,47,48