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编写检测数据库SA用户的方法
Jul 11 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
Django csrf 两种方法设置form的实例
Feb 03 Python
python语言基本语句用法总结
Jun 11 Python
python django下载大的csv文件实现方法分析
Jul 19 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
Oct 28 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
Python库安装速度过慢解决方案
Jul 14 Python
python 使用tkinter+you-get实现视频下载器
Nov 17 Python
Selenium 配置启动项参数的方法
Dec 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
如何选购合适的收音机
2021/03/01 无线电
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
如何用php获取文件名后缀
2013/06/09 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
jQuery之网页换肤实现代码
2011/04/30 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
利用python将图片转换成excel文档格式
2017/12/30 Python
Python列表对象实现原理详解
2019/07/01 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
护理职业应聘自荐书
2013/09/29 职场文书
机电工程专业应届生求职信
2013/10/03 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
老同学聚会感言
2014/02/23 职场文书
yolov5返回坐标的方法实例
2022/03/17 Python
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技