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

Posted paladinzxl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第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中介绍。

以上是关于第13章保存和加载你的模型的主要内容,如果未能解决你的问题,请参考以下文章

推荐收藏保存和加载机器学习模型的这两个方法不错

第13章:PE文件格式

Python/Theano 加载和保存模型

Pytorch模型训练&保存/加载(搭建完整流程)

敲除加载和保存视图模型

Torch.load()使用方式