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实现去除代码前行号的方法
Mar 10 Python
详解Python程序与服务器连接的WSGI接口
Apr 29 Python
python实现中文输出的两种方法
May 09 Python
python django事务transaction源码分析详解
Mar 17 Python
python使用turtle库绘制时钟
Mar 25 Python
django框架防止XSS注入的方法分析
Jun 21 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
Python下opencv图像阈值处理的使用笔记
Aug 04 Python
详解Django将秒转换为xx天xx时xx分
Sep 27 Python
Python爬取数据并实现可视化代码解析
Aug 12 Python
Python 中random 库的详细使用
Jun 03 Python
Python 键盘事件详解
Nov 11 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
如何过滤高亮显示非法字符
2006/10/09 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
举例讲解jQuery中可见性过滤选择器的使用
2016/04/18 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
react build 后打包发布总结
2018/08/24 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
Python编码类型转换方法详解
2016/07/01 Python
Django接受前端数据的几种方法总结
2016/11/04 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
Django异步任务线程池实现原理
2019/12/17 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
美国精油公司:Plant Therapy
2019/05/17 全球购物
老教师工作总结的自我评价
2013/09/27 职场文书
收银出纳员岗位职责
2014/02/23 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
英语系本科生求职信
2014/07/15 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL