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 sqlobject(mysql)中文乱码解决方法
Nov 14 Python
python动态加载包的方法小结
Apr 18 Python
便捷提取python导入包的属性方法
Oct 15 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
python 修改本地网络配置的方法
Aug 14 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
Python自带的IDE在哪里
Jul 01 Python
Python 中的函数装饰器和闭包详解
Feb 06 Python
Python Parser的用法
May 12 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
Jun 05 Python
python3操作redis实现List列表实例
Aug 04 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读书笔记整理_结构语句详解
2016/07/01 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
node.js超时timeout详解
2014/11/26 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
2017/06/11 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
python列表返回重复数据的下标
2020/02/10 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
终端业务员岗位职责
2013/11/27 职场文书
学习委员自我鉴定
2014/01/13 职场文书
药店主任岗位责任制
2014/02/10 职场文书
跳蚤市场口号
2014/06/13 职场文书
IT工程师岗位职责
2014/07/04 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
督导岗位职责
2015/02/04 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js