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解析nginx日志文件
May 11 Python
python 全局变量的import机制介绍
Sep 07 Python
python机器人行走步数问题的解决
Jan 29 Python
python中的decorator的作用详解
Jul 26 Python
使用python获取电脑的磁盘信息方法
Nov 01 Python
python 控制Asterisk AMI接口外呼电话的例子
Aug 08 Python
python正则表达式实例代码
Mar 03 Python
Django ValuesQuerySet转json方式
Mar 16 Python
基于python纯函数实现井字棋游戏
May 27 Python
基于Python绘制美观动态圆环图、饼图
Jun 03 Python
Python测试框架:pytest学习笔记
Oct 20 Python
解决python 输出到csv 出现多空行的情况
Mar 24 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并发对MYSQL造成压力的解决方法
2013/02/21 PHP
php中的ini配置原理详解
2014/10/14 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
Jquery 切换不同图片示例代码
2013/12/05 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
Linux下Python获取IP地址的代码
2014/11/30 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
python tkinter基本属性详解
2019/09/16 Python
python获取array中指定元素的示例
2019/11/26 Python
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
班组安全员工作职责
2014/02/01 职场文书
飘柔洗发水广告词
2014/03/14 职场文书
门店业绩提升方案
2014/06/08 职场文书
节能环保标语
2014/06/12 职场文书
法人委托书
2014/07/31 职场文书
小学生自我评价100字(15篇)
2014/09/18 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
办公室岗位职责范本
2015/04/11 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
导师鉴定意见
2015/06/05 职场文书
遗失证明范文
2015/06/19 职场文书
ubuntu下常用apt命令介绍
2022/06/05 Servers