keras 如何保存最佳的训练模型


Posted in Python onMay 25, 2020

1、只保存最佳的训练模型

2、保存有所有有提升的模型

3、加载模型

4、参数说明

只保存最佳的训练模型

from keras.callbacks import ModelCheckpoint
 
filepath='weights.best.hdf5'
  # 有一次提升, 则覆盖一次.
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1,save_best_only=True,mode='max',period=2) callbacks_list = [checkpoint]
 
model.compile(loss='categorical_crossentropy', optimizer=optimizers.Adam(lr=2e-6,decay=1e-7),metrics=['acc'])
 
history1 = model.fit_generator(
     train_generator,
     steps_per_epoch=100,
     epochs=40,
     validation_data=validation_generator,
     validation_steps=100, callbacks=callbacks_list)

输出的部分结果为:

Epoch 2/40
100/100 [==============================] - 24s 241ms/step - loss: 0.2715 - acc: 0.9380 - val_loss: 0.1635 - val_acc: 0.9600
 
Epoch 00002: val_acc improved from -inf to 0.96000, saving model to weights.best.hdf5
Epoch 3/40
100/100 [==============================] - 24s 240ms/step - loss: 0.1623 - acc: 0.9575 - val_loss: 0.1116 - val_acc: 0.9730
Epoch 4/40
100/100 [==============================] - 24s 242ms/step - loss: 0.1143 - acc: 0.9730 - val_loss: 0.0799 - val_acc: 0.9840
 
Epoch 00004: val_acc improved from 0.96000 to 0.98400, saving model to weights.best.hdf5

保存所有有提升的模型

from keras.callbacks import ModelCheckpoint
 
# checkpoint
filepath = "weights-improvement-{epoch:02d}-{val_acc:.2f}.hdf5"
# 中途训练效果提升, 则将文件保存, 每提升一次, 保存一次
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True,mode='max')
callbacks_list = [checkpoint]
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
 
history1 = model.fit_generator(
     train_generator,
     steps_per_epoch=100,
     epochs=40,
     validation_data=validation_generator,
     validation_steps=100, callbacks=callbacks_list)

因为我只想要最佳的模型,所以没有尝试保存所有有提升的模型,结果是什么样自己试。。。

加载最佳的模型

# load weights 加载模型权重
model.load_weights('weights.best.hdf5')
#如果想加载模型,则将model.load_weights('weights.best.hdf5')改为
#model.load_model('weights.best.hdf5')
# compile 编译
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print('Created model and loaded weights from hdf5 file')
 
# estimate
scores = model.evaluate(validation_generator, steps=30, verbose=0)
print("{0}: {1:.2f}%".format(model.metrics_names[1], scores[1]*100))
ModelCheckpoint参数说明

keras.callbacks.ModelCheckpoint(filepath,monitor='val_loss',verbose=0,save_best_only=False, save_weights_only=False, mode='auto', period=1)

filename:字符串,保存模型的路径

monitor:需要监视的值

verbose:信息展示模式,0或1(checkpoint的保存信息,类似Epoch 00001: saving model to ...)

(verbose = 0 为不在标准输出流输出日志信息;verbose = 1 为输出进度条记录;verbose = 2 为每个epoch输出一行记录)

save_best_only:当设置为True时,监测值有改进时才会保存当前的模型( the latest best model according to the quantity monitored will not be overwritten)

mode:‘auto',‘min',‘max'之一,在save_best_only=True时决定性能最佳模型的评判准则,例如,当监测值为val_acc时,模式应为max,当监测值为val_loss时,模式应为min。在auto模式下,评价准则由被监测值的名字自动推断。

save_weights_only:若设置为True,则只保存模型权重,否则将保存整个模型(包括模型结构,配置信息等)

period:CheckPoint之间的间隔的epoch数

以上这篇keras 如何保存最佳的训练模型就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python文件处理
Feb 29 Python
Python中的变量和作用域详解
Jul 13 Python
浅谈Python爬取网页的编码处理
Nov 04 Python
python利用正则表达式排除集合中字符的功能示例
Oct 10 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
Win10环境python3.7安装dlib模块趟过的坑
Aug 01 Python
Python3和pyqt5实现控件数据动态显示方式
Dec 13 Python
Django import export实现数据库导入导出方式
Apr 03 Python
python实现KNN近邻算法
Dec 30 Python
python 自动刷新网页的两种方法
Apr 20 Python
详解Python生成器和基于生成器的协程
Jun 03 Python
keras处理欠拟合和过拟合的实例讲解
May 25 #Python
python如何调用字典的key
May 25 #Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 #Python
Python+PyQt5实现灭霸响指功能
May 25 #Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 #Python
通过Python扫描代码关键字并进行预警的实现方法
May 24 #Python
关于keras中keras.layers.merge的用法说明
May 23 #Python
You might like
php中文字符截取防乱码
2008/03/28 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
Python实现基于HTTP文件传输实例
2014/11/08 Python
Python 的内置字符串方法小结
2016/03/15 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
Python 删除连续出现的指定字符的实例
2018/06/29 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
Python数学形态学实例分析
2019/09/06 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
2020/03/06 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
Unix如何添加新的用户
2014/08/20 面试题
公司委托书范本
2014/04/04 职场文书
外语专业毕业生自荐信
2014/04/14 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
社区工作者个人总结
2015/02/28 职场文书
导游经典开场白——导游词
2019/04/17 职场文书