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中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
python中查看变量内存地址的方法
May 05 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
Python实现打印螺旋矩阵功能的方法
Nov 21 Python
安装python时MySQLdb报错的问题描述及解决方法
Mar 20 Python
用TensorFlow实现lasso回归和岭回归算法的示例
May 02 Python
Python3 导入上级目录中的模块实例
Feb 16 Python
python中 * 的用法详解
Jul 10 Python
pycharm 更改创建文件默认路径的操作
Feb 15 Python
Python装饰器的应用场景代码总结
Apr 10 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 Python
python3中数组逆序输出方法
Dec 01 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 checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
PHP查询网站的PR值
2013/10/30 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
[02:46]完美世界DOTA2联赛PWL DAY4集锦
2020/11/03 DOTA
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python实现简易动态时钟
2018/11/19 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
python利用platform模块获取系统信息
2020/10/09 Python
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
宝信软件JAVA工程师面试经历
2012/08/19 面试题
销售人才自我评价范文
2014/09/27 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
英语读书笔记
2015/07/02 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书
怎么用Python识别手势数字
2021/06/07 Python
Python django中如何使用restful框架
2021/06/23 Python
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python