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()方法加载模型权重。 并且,在加载模型权重之前,必须把网络结构定义好,并且模型的各个层的名称必须与保存模型权重时的各个层保持一致。

keras中的模型保存和加载的更多相关文章

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

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

  2. 从头学pytorch(十二):模型保存和加载

    模型读取和存储 总结下来,就是几个函数 torch.load()/torch.save() 通过python的pickle完成序列化与反序列化.完成内存<-->磁盘转换. Module.s ...

  3. tensorflow 模型保存和加载

    使用 tf.train.Saver 保存:tf.train.Saver.save(sess, save_path, global_step=None, latest_filename=None, me ...

  4. 使用Pytorch在多GPU下保存和加载训练模型参数遇到的问题

    最近使用Pytorch在学习一个深度学习项目,在模型保存和加载过程中遇到了问题,最终通过在网卡查找资料得已解决,故以此记之,以备忘却. 首先,是在使用多GPU进行模型训练的过程中,在保存模型参数时,应 ...

  5. 背水一战 Windows 10 (62) - 控件(媒体类): InkCanvas 保存和加载, 手写识别

    [源码下载] 背水一战 Windows 10 (62) - 控件(媒体类): InkCanvas 保存和加载, 手写识别 作者:webabcd 介绍背水一战 Windows 10 之 控件(媒体类) ...

  6. 完美实现保存和加载easyui datagrid自定义调整列宽位置隐藏属性功能

    需求&场景 例表查询是业务系统中使用最多也是最基础功能,但也是调整最平凡,不同的用户对数据的要求也不一样,所以在系统正式使用后,做为开发恨不得坐在业务边上,根据他们的要求进行调整,需要调整最多 ...

  7. tensorflow模型持久化保存和加载

    模型文件的保存 tensorflow将模型保持到本地会生成4个文件: meta文件:保存了网络的图结构,包含变量.op.集合等信息 ckpt文件: 二进制文件,保存了网络中所有权重.偏置等变量数值,分 ...

  8. tensorflow模型持久化保存和加载--深度学习-神经网络

    模型文件的保存 tensorflow将模型保持到本地会生成4个文件: meta文件:保存了网络的图结构,包含变量.op.集合等信息 ckpt文件: 二进制文件,保存了网络中所有权重.偏置等变量数值,分 ...

  9. 超详细的Tensorflow模型的保存和加载(理论与实战详解)

    1.Tensorflow的模型到底是什么样的? Tensorflow模型主要包含网络的设计(图)和训练好的各参数的值等.所以,Tensorflow模型有两个主要的文件: a) Meta graph: ...

随机推荐

  1. HMM与分词、词性标注、命名实体识别

    http://www.hankcs.com/nlp/hmm-and-segmentation-tagging-named-entity-recognition.html HMM(隐马尔可夫模型)是用来 ...

  2. 数据挖掘中 决策树算法实现——Bash

    数据挖掘中 决策树算法实现——Bash 博客分类: 数据挖掘 决策树 bash 非递归实现 标准信息熵 数据挖掘决策树bash非递归实现标准信息熵 一.决策树简介: 关于决策树,几乎是数据挖掘分类算法 ...

  3. python 听课笔记(一)

  4. 从Linux服务器下载网站文件

    最近公司迁来一个新客户,该客户的网站是别的网络服务商做的,放在linux主机上,因为客户跟之前的网络服务商合作的不愉快 所以就把网站迁到我们公司,经理让我把网站文件和数据库download下来并在我们 ...

  5. 转:android root tcpdump抓包强烈推荐

    转:http://www.cnblogs.com/findyou/p/3491035.html 写的相当详细且完整,业界良心. adb push d:\tcpdump /data/local/ adb ...

  6. (转)【风宇冲】Unity3D教程宝典之AssetBundles:第一讲

    自:http://blog.sina.com.cn/s/blog_471132920101gz8z.html 原创文章如需转载请注明:转载自风宇冲Unity3D教程学院                 ...

  7. Angular 2的12个经典面试问题汇总(文末附带Angular測试)

    Angular作为眼下最为流行的前端框架,受到了前端开发者的普遍欢迎.不论是初学Angular的新手.还是有一定Angular开发经验的开发者,了解本文中的12个经典面试问题,都将会是一个深入了解和学 ...

  8. javascript获取时间差

    function GetDateDiff(startTime, endTime, diffType) { //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式 startTime ...

  9. OpenGL ES 3.0之顶点缓冲

    所谓顶点缓冲就是直接将顶点数据存储在gpu的一段缓冲区,不需要从cpu拷贝到gpu.提高了程序的运行效率. 操作步骤 1.创建顶点缓冲对象 GLuint vertexBufferID; 2.分配空间 ...

  10. pycharm下设置自己的模板

    在File---settings---File and Code Templates---Python script 脚本里添加: #!usr/bin/env python #-*- coding:u ...