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 相关文章推荐
简介Django中内置的一些中间件
Jul 24 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
如何在django里上传csv文件并进行入库处理的方法
Jan 02 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
Django 使用easy_thumbnails压缩上传的图片方法
Jul 26 Python
Python数据库小程序源代码
Sep 15 Python
python实现简单成绩录入系统
Sep 19 Python
python datetime时间格式的相互转换问题
Jun 11 Python
python解压zip包中文乱码解决方法
Nov 27 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 Python
Python中的嵌套循环详情
Mar 23 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变量作用域的深入解析
2013/06/03 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
js常用自定义公共函数汇总
2014/01/15 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
2015/12/08 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
python 定时修改数据库的示例代码
2018/04/08 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
台湾最大网路书店:博客来
2018/03/18 全球购物
Python面试题集
2012/03/08 面试题
财务人员个人自荐信范文
2013/09/26 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书