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 相关文章推荐
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
21行Python代码实现拼写检查器
Jan 25 Python
python3.5仿微软计算器程序
Mar 30 Python
Python实现将文本生成二维码的方法示例
Jul 18 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
Jun 13 Python
python 三元运算符使用解析
Sep 16 Python
python实现大学人员管理系统
Oct 25 Python
Python imageio读取视频并进行编解码详解
Dec 10 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
关于多元线性回归分析——Python&SPSS
Feb 24 Python
Python3+Django get/post请求实现教程详解
Feb 16 Python
python re模块常见用法例举
Mar 01 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 编程的 5个良好习惯
2009/02/20 PHP
thinkphp控制器调度使用示例
2014/02/24 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
php多重接口的实现方法
2015/06/20 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
JavaScript使用技巧精萃[代码非常实用]
2008/11/21 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
js实现Select头像选择实时预览代码
2015/08/17 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
用tensorflow构建线性回归模型的示例代码
2018/03/05 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
python同步windows和linux文件
2019/08/29 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
违反学校规定检讨书
2014/01/18 职场文书
公司管理建议书范文
2014/03/12 职场文书
广告词串烧
2014/03/19 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
应聘教师自荐书
2014/06/16 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
道歉信怎么写
2015/05/12 职场文书
手写实现JS中的new
2021/11/07 Javascript