第13章保存和加载你的模型

13保存和加载你的模型

      在上一章,我们使用keras库学习了怎样训练CNNs。但是,我们注意到,在我们每次想评估网络或测试一批图像时,都需要首先训练它。这在网络模型很深、数据集很大时,将花费巨大时间来训练。那么有没有一种方式在训练完模型后,将它保存在磁盘上,然后在分类新图像时仅仅从磁盘加载就可以?

      这种保存和加载一个已训练模型的过程称为模型序列化(model serialization),即本章主要的主题。

1         将一个模型序列化到磁盘上

使用keras库,模型序列化通过对已训练模型调用model.save即可,要加载它通过load_model函数即可。

我们首先以文件shallownet_save.py开始训练部分,见github的chapter12/。

训练过程和测试过程都和之前的程序一样,这里以训练Animals数据集为例。要保存序列化,只需要在model.fit()之后,我们就可以保存权重和优化状态了,通过model.save(args[“model”])即可。序列化后的格式为hdf5格式。

执行python shallownet_save.py –dataset ../datasets/animals –-model shallownet_weights.hdf5

2         从磁盘加载一个已训练的模型

作为模型序列化的一个实际应用,我们演示怎样从Animals数据集中分类单张图片,之后显示分类的图片到屏幕上。

通过shallownet_load.py文件加入该示例代码,见github下chapter12/的文件。加载权重模型使用from keras.models import load_model执行,该函数负责接收已训练网络的路径,解码HDF5中的权重和优化器,并且将权重设置到我们的架构中,让我们可以(1)继续训练或(2)使用这个网络分类新图像。

我们从animals数据集中随机抽取10张图片用于分类:

 

之后,对每一张图片进行预处理。

按照文件,python shallownet_load.py –dataset ../datasets/animals/ --model shallownet_weight.hdf5将显示分类结果。注意我们该网络参数的分类正确率为70%左右,即可能会显示分类错误的情况。我们将继续在后续章节中继续应用深度学习在计算机视觉分类任务中,也将学习更多方法来提升分类正确率。

3         总结

在第18章,我们将讨论如何在每一epoch后将模型权重保存,我们可以检查网络选择最佳性能的那个模型权重。这种停止训练、调整参数、再重新训练的过程将在Practitioner Bundle和ImageNet Bundle中介绍。

转载于:https://www.cnblogs.com/paladinzxl/p/9686005.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值