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 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
python中assert用法实例分析
Apr 30 Python
举例详解Python中threading模块的几个常用方法
Jun 18 Python
python字典键值对的添加和遍历方法
Sep 11 Python
浅谈Python 的枚举 Enum
Jun 12 Python
django 通过url实现简单的权限控制的例子
Aug 16 Python
python网络爬虫 Scrapy中selenium用法详解
Sep 28 Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 Python
python中tab键是什么意思
Jun 18 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 Python
使用Python开发贪吃蛇游戏 SnakeGame
Apr 30 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连接字符集的方法
2011/01/02 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
javascript写的日历类(基于pj)
2010/12/28 Javascript
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
python发腾讯微博代码分享
2014/01/10 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
python 追踪except信息方式
2020/04/25 Python
Django日志及中间件模块应用案例
2020/09/10 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
美发店5.1活动方案
2014/01/24 职场文书
房产公证书
2015/01/23 职场文书
管理人员岗位职责
2015/02/14 职场文书
学校清洁工岗位职责
2015/04/15 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
家长会感言
2015/08/01 职场文书
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server