tensorflow中的模型常常是protobuf格式,这种格式既可以是二进制也可以是文本。keras模型保存和加载与tensorflow不同,keras中的模型保存和加载往往是保存成hdf5格式。

keras的模型保存分为多种情况。

一、不保存模型只显示大概结构

  • model.summary()
    这个函数会打印模型结构,但是仅仅是打印到控制台。

  • keras.utils.plot_model()
    使用graphviz中的dot.exe生成网络结构拓扑图

二、保存模型结构

  • keras.models.Model对象的to_json,to_yaml
    只保存模型结构,加载时使用keras.models.model_from_json(),keras.models.model_from_yaml()

  • keras.model.get_config()返回文本形式的配置
    使用keras.model.model_from_config可以加载模型。

三、保存全部结构

keras.core.saving.py这个文件十分重要,keras的模型保存、加载都需要这个文件。
但是不建议直接使用这个文件,因为keras中的Model对象和models模块会调用这个文件。
keras.core包下的内容一般供内部使用,不暴露给使用者。

Model对象提供了save()和save_wights()两个方法。save()方法保存了三种东西:

  • 模型结构
  • 模型参数
  • 优化器参数

其中优化器参数是给优化器用的,用于继续训练模型。有些优化器比如AdamOptimizer需要根据训练步数来调整不同参数的学习速率,这样在分阶段训练模型时才能够保证正确。save()函数保存结果就是一个hdf5文件,不像tensorflow一下子保存好多种文件。tensorflow把模型结构和权重分开保存,目的是多个权重文件可以共用一个模型结构文件,但是模型结构文件通常非常小,所占空间远远小于参数所占空间。

Model对象的save_weights()方法只保存了模型参数而没有保存模型结构,它的保存格式也是hdf5。它保存的数据不能用于继续训练模型。

Model实例的save()方法有一个等价方式:使用models.save_model()。

对于使用save()方法保存的文件,可以使用models.load_model()进行加载,此函数直接返回一个Model对象。因为save()方法保存了模型的全部内容,所以可以直接“无中生有”创造一个模型。

对于使用save_weights()方法保存的文件,只能通过Model对象提供的load_weights()方法加载模型权重。 并且,在加载模型权重之前,必须把网络结构定义好,并且模型的各个层的名称必须与保存模型权重时的各个层保持一致。

转载于:https://www.cnblogs.com/weiyinfu/p/9788179.html

keras中的模型保存和加载相关推荐

  1. Tensorflow 2.x(keras)源码详解之第十章:keras中的模型保存与加载(详解Checkpointmd5模型序列化)

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  2. TensorFlow模型保存和加载方法

    TensorFlow模型保存和加载方法 模型保存 import tensorflow as tfw1 = tf.Variable(tf.constant(2.0, shape=[1]), name=& ...

  3. pytorch模型保存和加载

    定义2个测试脚本test.py和test2.py,用于测试保存和加载,models文件夹保存模型,整个测试的项目文件结构如下: E:. │ test.py │ test2.py └─ modelsdo ...

  4. keras模型保存和加载

    (一)保存和加载整个模型 ​ 包含模型的结构.权重.训练配置项(损失函数.优化器).优化器状态,允许准确地从上次结束的地方开始训练. 1.训练完模型后 path='.../.../xxx.h5' mo ...

  5. 【NLP】from glove import Glove的使用、模型保存和加载

    1 引言 不要被stackflow的上的一个的回答所误导. 2 使用方法举例 # 语料 sentense = [['你', '是', '谁'], ['我', '是', '中国人']] corpus_m ...

  6. paddlepaddle模型的保存和加载

    导读 深度学习中模型的计算图可以被分为两种,静态图和动态图,这两种模型的计算图各有优劣. 静态图需要我们先定义好网络的结构,然后再进行计算,所以静态图的计算速度快,但是debug比较的困难,因为只有当 ...

  7. unity保存加载慢_掌握Unity 5中的保存和加载功能

    unity保存加载慢 Thanks to Vincent Quarles for kindly helping to peer review this article. 感谢Vincent Quarl ...

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

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

  9. tf.keras 05: 使用Keras保存和加载不同格式的模型

    本文是 tf.keras 系列文章的第五篇.通过手写数字识别数据集介绍了 Keras 模型训练中的 检查点(checkpoint) 文件,.weights 文件,.pb 文件以及 .h5 文件等四种格 ...

最新文章

  1. 各种光学仪器成像技术(上)
  2. JVM内存溢出的几种情形
  3. CSS基础学习-7.CSS元素分类
  4. SpringBoot中在普通类里面加载Spring容器中的类
  5. 自编码器及其相关模型
  6. 大话设计模式—组合模式
  7. Python2.6 Cx_Oracle Linux下编译安装
  8. idea 错误: 找不到或无法加载主类(汇总贴)
  9. android profiler 简书,(四)Android 性能优化 Energy Profiler
  10. 【实用工具】eclipse mac安装
  11. 实战matlab之文件与数据接口技术,实战MATLAB之文件与数据接口技术
  12. SpringBoot+zk+dubbo架构实践(四):sb+zk+dubbo框架搭建(内附源码GitHub地址)
  13. 有了linux基础还学习学哪些,学linux的前途和好处有哪些
  14. Linux命令九---Linux进程管理命令---ps-kill-nohup-jobs-fg-bg-top等
  15. Chm 文件资源编辑软件
  16. 微信公众号之简单使用
  17. nanopore测序技术专题(四):纳米孔测序原理
  18. oracle modeler 使用,Navicat Data Modeler使用教程八:图表版面下
  19. 百度飞桨“万有引力”2022首站落地苏州,全面启动中小企业赋能计划
  20. NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,VGA接口显示彩条

热门文章

  1. 软件工程1916|W(福州大学)_助教博客】助教总结
  2. Java16-java语法基础——异常
  3. action support分析
  4. 火狐浏览器插件(XPI 文件)签名指南
  5. 富文本 NSAttributedString
  6. win2003超过最大连接数
  7. javaEE项目发布方法
  8. 《恋上数据结构第1季》二叉树代码实现
  9. 庆祝喜提13337000编号,我悄悄把老板的Windows命令行设置成了这样
  10. GO语言环境搭建 及 helloworld开发