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 相关文章推荐
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
Apr 09 Python
Python脚本实现下载合并SAE日志
Feb 10 Python
pymssql数据库操作MSSQL2005实例分析
May 25 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 Python
python单例模式的多种实现方法
Jul 26 Python
pymysql 开启调试模式的实现
Sep 24 Python
Django 自动生成api接口文档教程
Nov 19 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 Python
tensorflow使用CNN分析mnist手写体数字数据集
Jun 17 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 Python
详解Python中openpyxl模块基本用法
Feb 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
PHP 网页过期时间的控制代码
2009/06/29 PHP
PHP运行模式的深入理解
2013/06/03 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
python实现斐波那契递归函数的方法
2014/09/08 Python
Python中异常重试的解决方案详解
2017/05/05 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
python 列表降维的实例讲解
2018/06/28 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
关于python字符串方法分类详解
2019/08/20 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
python3 使用traceback定位异常实例
2020/03/09 Python
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
酒店管理求职信范文
2014/04/06 职场文书
家长建议怎么写
2014/05/15 职场文书
春节慰问简报
2015/07/21 职场文书
如何书写邀请函?
2019/06/24 职场文书