zoukankan      html  css  js  c++  java
  • 第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中介绍。

  • 相关阅读:
    python's eithteenth day for me 面向对象——命名空间
    python's seventeenth day for me 面向对象
    python's sixteenth day for me 员工信息表
    python's fifteenth day for me 递归函数
    python's fourteenth day for me 内置函数
    用装饰器做一个登陆功能(进阶):
    装饰器 为多个函数加上认证功能(账号密码来源于文件),要求只要登陆成功一次,后续函数则无需登陆。
    python's thirteenth day for me 迭代器 生成器
    php函数
    php日期格式
  • 原文地址:https://www.cnblogs.com/paladinzxl/p/9686005.html
Copyright © 2011-2022 走看看