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更改已存在excel文件的方法
May 03 Python
对Python 内建函数和保留字详解
Oct 15 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 Python
Python threading的使用方法解析
Aug 28 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
解决pyshp UnicodeDecodeError的问题
Dec 06 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
基于PyTorch的permute和reshape/view的区别介绍
Jun 18 Python
python通过opencv调用摄像头操作实例分析
Jun 07 Python
Python之基础函数案例详解
Aug 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 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
js获取css的各种样式并且设置他们的方法
2017/08/22 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
工商管理应届生求职信
2013/10/07 职场文书
中英文自我评价语句
2013/12/20 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
不同意离婚代理词
2015/05/23 职场文书