第18章 检测点模型

在第13章我们讨论了在训练结束后如何保存和序列化模型到磁盘上。在上一章,我们学习了在过拟合和欠拟合发生的时候如何画出它们,使您能够在训练时,在保持显示出希望的模型的同时,杀死性能不佳的实验。

但是,你可能想我们是否能够将上述策略结合到一起。在损失/正确率提高时能序列化模型吗?或者在训练过程中仅序列化最佳模型是可能的吗?答案是肯定的,幸运的是,这些操作不需要我们写回调函数,这些都内置在keras库中了。

1         检查神经网络模型的改进

检查点的一个好的应用是每次在训练中有好的改进时,就序列化到磁盘上。我们定义“改进”要么是损失下降要么是正确率提高,我们将在实际的keras回调函数中设置这些参数。

具体代码见GitHub的chapter18/。

在导入类中注意ModelCheckpoint,这个类让我们在模型性能提高的时候检查和序列化网络到磁盘上。构建回调函数如下:

  

我们在第37-38行定义了保存的检查点文件名,固定值weights-epoch数目-损失值。然后39-40定义检查点模型,参数保存的名字、要监视的变量(这里我们监视验证损失)、mode指明如何监视(由于损失越小越好,因此设为min;如果监视的是正确率,由于越大越好,则要设置为max)、save_best_only参数则表示最新的最佳模型不会被覆盖、最后的verbose参数仅是显示执行过程中的log信息。

然后在训练模型时,加入callback就可以了:

  

之后运行模型,等待完成,就可以看到每次验证损失降低时就记录一次模型文件了。

2         仅检查最佳神经网络

可能在上面运行中最不好的是每次模型改进就会保存一个模型,最后会有很多改进模型,但是我们可能只想保留最佳模型文件。幸好,可以通过ModelCheckpoint接受一个参数,然后无论什么时候性能改进了,仅仅是覆盖这个文件。我们创建一个cifar10_checkpoint_best.py文件,具体见GitHub的chapter18/下。

这里仅仅是通过添加一个覆盖文件即可:

其它代码则与训练一个网络的步骤相同,导入模块,加载数据、划分数据、数据float化、向量化标签、初始化模型与优化器。

这里执行完后,可看到只有一个文件保留,即只保留一个最佳的模型文件。

作者倾向于后者,这可以保留较少文件,且保留了最佳模型文件。

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

第18章 检测点模型相关推荐

  1. 复现经典:《统计学习方法》第18章 概率潜在语义分析

    第18章 概率潜在语义分析 本文是李航老师的<统计学习方法>一书的代码复现.作者:黄海广 备注:代码都可以在github中下载.我将陆续将代码发布在公众号"机器学习初学者&quo ...

  2. 电路 第五版 第一章 电路模型和电路定律

    第一章 电路模型和电路定律 1-1电路和电路模型 1-2电流和电压的参考方向 1-3电功率和能量 1-4电路元件 1-5电阻元件 1-6电压源和电流源 1-7受控电源 1-8基尔霍夫定律

  3. 怎么用matlab画无差别曲线,MATLAB系列第二章初等模型.ppt

    <MATLAB系列第二章初等模型.ppt>由会员分享,可在线阅读,更多相关<MATLAB系列第二章初等模型.ppt(68页珍藏版)>请在人人文库网上搜索. 1.第二章 初等模型 ...

  4. python编程从入门到实践 第18章Django入门 2022年最新

    说明:这篇文章只是记录自己自学本书的一个痕迹,日后来看作为一个念想.至于做为公开,是希望对一些同样跟我一样的朋友有一点点帮助,当然我本人就是小白,帮助可能也不大哈哈. 这篇文章记录了<pytho ...

  5. matlab的meadian函数_24 第二十四章 时间序列模型_W

    <24 第二十四章 时间序列模型_W>由会员分享,可在线阅读,更多相关<24 第二十四章 时间序列模型_W(31页珍藏版)>请在人人文库网上搜索. 1.第二十四章时间序列模型 ...

  6. 计算机软件项目管理第1-8章课后题

    计算机软件项目管理第1-8章课后题 如何理解项目的定义及其含义?项目定义:是一个特殊的将被完成得有限任务,它是在一定时间内,满足一系列特定目标的多项相关工作的总称.项目三重约束条件:时间.费用.性能. ...

  7. 【人工智能系列经典图书翻译】可解释机器学习(第二版) 第8章 全局模型无关方法

    第 8 章 全局模型无关方法 全局方法描述了机器学习模型的一种惯例做法.与全局方法相对应的是局部方法.全局方法通常表示为基于数据分布的预期值.例如,部分依赖图是一个特征效应图,是所有其他特征都被边缘化 ...

  8. 粒子群算法中的罚函数matlab,第18章基于罚函数的粒子群算法的函数寻优范例.ppt...

    第十八章 MATLAB优化算法案例分析与应用 第18章 基于罚函数的粒子群算法的函数寻优 第十八章 MATLAB优化算法案例分析与应用 18.1 粒子群算法概述 自20世纪50年代中期创立了仿生学,许 ...

  9. 第18章:MYSQL分区

    第18章:分区 目录 18.1. MySQL中的分区概述18.2. 分区类型 18.2.1. RANGE分区18.2.2. LIST分区18.2.3. HASH分区18.2.4. KEY分区18.2. ...

最新文章

  1. node-serialport —— Node.js 串口数据读写包
  2. 如何成为有思想、创新的程序员
  3. 关于printf输出 格式化规定符 的
  4. 2017.10.23解题报告
  5. Android碎片Fragment详讲(1)
  6. Java 9代码工具:使用Java微型基准测试工具的实践会话
  7. flashpaper打印机没有被正确安装_条码打印机有哪些常见问题
  8. 在子类中调用父类的方法super
  9. python万年历时钟_python实现万年历类calendar
  10. Play Framework + ReactiveMongo 环境搭建
  11. 技嘉主板bios设置方法
  12. 谈内置创新5.1/7.1声卡效果开混响模式滋滋啦啦炸麦声音【案例解析】
  13. 深度Linux Wine+DXVK
  14. 经典伴读_GOF设计模式_创建型模式
  15. cisco1841(cisco1841路由器设置步骤)
  16. 二项分布的期望方差证明_二项分布的期望和方差
  17. 最新的北京2012年地铁规划图
  18. Edge浏览器或使用谷歌chrome内核的浏览器访问网页版高德地图很卡特别慢解决办法
  19. 小米小方摄像头云存储_小米摄像头离线?
  20. 持安科技孙维伯:实战零信任最佳实践

热门文章

  1. 第13条:合理利用try/expect/else/finally结构中的每个代码块
  2. css alpha滤镜
  3. Spring中IOC和AOP的详细解释(转)
  4. 【转】Oracle当中扫描数据的方法
  5. scrum 11.28
  6. Adobe弄的flex质量也太差了
  7. 根据输入参数创建xml模板
  8. 6.4 SQL Server 加密
  9. oracle instr函数详解
  10. 堆排序实现(C++)