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中global与nonlocal比较
Nov 21 Python
python flask 多对多表查询功能
Jun 25 Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
python数字图像处理之高级形态学处理
Apr 27 Python
一文了解Python并发编程的工程实现方法
May 31 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
python__name__原理及用法详解
Nov 02 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 Python
Python smtp邮件发送模块用法教程
Jun 15 Python
python怎么自定义捕获错误
Jun 29 Python
基于python实现复制文件并重命名
Sep 16 Python
超级详细实用的pycharm常用快捷键
May 12 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实现查看邮件是否已被阅读的方法
2013/12/03 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Python中断言Assertion的一些改进方案
2016/10/27 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
Python实现Linux监控的方法
2019/05/16 Python
使用Python pip怎么升级pip
2020/08/11 Python
python用Configobj模块读取配置文件
2020/09/26 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
电信营业员自我评价分享
2014/01/17 职场文书
英文商务邀请信
2014/01/22 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
物业管理交接协议书
2016/03/24 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python
Python 实现定积分与二重定积分的操作
2021/05/26 Python
一文搞懂redux在react中的初步用法
2021/06/09 Javascript
mysql left join快速转inner join的过程
2021/06/30 MySQL
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript