30.模型保存

这一章我们主要介绍一下模型保存的方式,我们训练fashion_mnist这个数据集作为例子

首先导入库

之后导入数据集

归一化

建立模型

编译模型

训练模型,我们训练三个epoch就行

之后我们评估一下这个模型

其中有一个参数verbose,它有两个可选值,0或1,0是不显示,1是显示,默认为1

下面我们来保存模型,模型有三个部分组成,分别是

  • 模型权重(每一层的可训练参数是多少)
  • 模型架构(神经网络的每一层是什么)
  • 优化器配置(神经网络的编译情况)

我们下面先保存整个模型,我们下面的所有代码均是在进行完model.fit之后再执行的

目录

1  保存整个模型

2  仅保存架构

3  仅保存权重

3.1  获取与设置权重

3.2  保存与读取


1  保存整个模型

我们之前保存的都是非h5文件,保存的是整个文件夹,那个是之前的写法,今后会逐渐废弃,我们一般将其保存为h5文件

之后我们依然使用tf.keras.models.load_model()就可以读取模型,我们新建一个文件

我们看一下这个模型

我们验证一下有没有保存权重,我们首先导入数据集,然后使用model.evaluate()评估一下

  • 没有优化器是无法使用evaluate()进行评估的



2  仅保存架构

我们使用to_json()方法提取出模型架构

我们看一下json_config

可以发现json_config中记录了模型的很多属性,并且是一个str,我们可以把以上内容写到一个txt中

  • json_config.txt如果没有的话会自动创建
  • 仅保存架构就不需要再进行编译与训练了

我们打开看一下

发现字符串已经写入了json_config.txt,之后我们再另一个文件中进行调用

我们看一下这个模型

发现模型的架构被保存了下来

之后我们对这个模型评估一下

发现是无法评估的,因为我们当前的模型仅有架构,没有优化器

我们可以编译一下它再进行评估

发现可以评估

但效果不行,这个就表示,我们没有保存权重



3  仅保存权重

仅保存权重就使用在我们训练的过程中,我们训练中很有可能遇到突发情况打断训练,这个时候如果没有进行保存,我们就要重新开始训练,非常浪费时间,这个时候我们就需要保存一些东西,如果我们仅仅为了继续训练,我们仅保存权重就可以了,因为架构与编译在训练代码中一定是有的,如果将架构,权重,编译环境都保存就非常的浪费资源



3.1  获取与设置权重

我们先使用get_weights(),看一下权重是什么东西

发现是一个列表中包含了多个array

我们可以使用set_weight()将权重赋给模型,当然这对现在并没有什么用,只是展示一下有这样一个函数

3.2  保存与读取

我们可以使用save_weights()来仅仅保存权重

我们对比一下仅保存权重与刚刚全部保存模型的文件大小

发现权重文件比整体模型文件小了许多,这还是仅仅在只有三层的情况下

之后我们再另一个文件中使用load_weights()加载权重,刚刚我们先加载了模型架构,又增加了编译环节,之后我们对其加载权重

现在我们再对其进行评估

发现与我们之前训练的两个指标差不多

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyuoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值