Keras保存模型并载入模型继续训练的实现


Posted in Python onFebruary 20, 2021

我们以MNIST手写数字识别为例

import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
 
# 载入数据
(x_train,y_train),(x_test,y_test) = mnist.load_data()
# (60000,28,28)
print('x_shape:',x_train.shape)
# (60000)
print('y_shape:',y_train.shape)
# (60000,28,28)->(60000,784)
x_train = x_train.reshape(x_train.shape[0],-1)/255.0
x_test = x_test.reshape(x_test.shape[0],-1)/255.0
# 换one hot格式
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
 
# 创建模型,输入784个神经元,输出10个神经元
model = Sequential([
    Dense(units=10,input_dim=784,bias_initializer='one',activation='softmax')
  ])
 
# 定义优化器
sgd = SGD(lr=0.2)
 
# 定义优化器,loss function,训练过程中计算准确率
model.compile(
  optimizer = sgd,
  loss = 'mse',
  metrics=['accuracy'],
)
 
# 训练模型
model.fit(x_train,y_train,batch_size=64,epochs=5)
 
# 评估模型
loss,accuracy = model.evaluate(x_test,y_test)
 
print('\ntest loss',loss)
print('accuracy',accuracy)
 
# 保存模型
model.save('model.h5')  # HDF5文件,pip install h5py

Keras保存模型并载入模型继续训练的实现

Keras保存模型并载入模型继续训练的实现

载入初次训练的模型,再训练

import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
from keras.models import load_model
# 载入数据
(x_train,y_train),(x_test,y_test) = mnist.load_data()
# (60000,28,28)
print('x_shape:',x_train.shape)
# (60000)
print('y_shape:',y_train.shape)
# (60000,28,28)->(60000,784)
x_train = x_train.reshape(x_train.shape[0],-1)/255.0
x_test = x_test.reshape(x_test.shape[0],-1)/255.0
# 换one hot格式
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
 
# 载入模型
model = load_model('model.h5')
 
# 评估模型
loss,accuracy = model.evaluate(x_test,y_test)
 
print('\ntest loss',loss)
print('accuracy',accuracy)
 
# 训练模型
model.fit(x_train,y_train,batch_size=64,epochs=2)
 
# 评估模型
loss,accuracy = model.evaluate(x_test,y_test)
 
print('\ntest loss',loss)
print('accuracy',accuracy)
 
# 保存参数,载入参数
model.save_weights('my_model_weights.h5')
model.load_weights('my_model_weights.h5')
# 保存网络结构,载入网络结构
from keras.models import model_from_json
json_string = model.to_json()
model = model_from_json(json_string)
 
print(json_string)

关于compile和load_model()的使用顺序

这一段落主要是为了解决我们fit、evaluate、predict之前还是之后使用compile。想要弄明白,首先我们要清楚compile在程序中是做什么的?都做了什么?

compile做什么?

compile定义了loss function损失函数、optimizer优化器和metrics度量。它与权重无关,也就是说compile并不会影响权重,不会影响之前训练的问题。

如果我们要训练模型或者评估模型evaluate,则需要compile,因为训练要使用损失函数和优化器,评估要使用度量方法;如果我们要预测,则没有必要compile模型。

是否需要多次编译?

除非我们要更改其中之一:损失函数、优化器 / 学习率、度量

又或者我们加载了尚未编译的模型。或者您的加载/保存方法没有考虑以前的编译。

再次compile的后果?

如果再次编译模型,将会丢失优化器状态.

这意味着您的训练在开始时会受到一点影响,直到调整学习率,动量等为止。但是绝对不会对重量造成损害(除非您的初始学习率如此之大,以至于第一次训练步骤疯狂地更改微调的权重)。

到此这篇关于Keras保存模型并载入模型继续训练的实现的文章就介绍到这了,更多相关Keras保存模型并加载模型内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python的函数嵌套的使用方法
Jan 24 Python
Python中的Numpy入门教程
Apr 26 Python
让 python 命令行也可以自动补全
Nov 30 Python
python实现将文本转换成语音的方法
May 28 Python
Python通过matplotlib绘制动画简单实例
Dec 13 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 Python
基于Python把网站域名解析成ip地址
May 25 Python
Python内存泄漏和内存溢出的解决方案
Sep 26 Python
python 实现汉诺塔游戏
Nov 28 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 Python
如何在python中实现ECDSA你知道吗
Nov 23 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 #Python
tensorflow2.0教程之Keras快速入门
Feb 20 #Python
在Pycharm中安装Pandas库方法(简单易懂)
Feb 20 #Python
Python3爬虫RedisDump的安装步骤
Feb 20 #Python
python爬取2021猫眼票房字体加密实例
Feb 19 #Python
Python之Sklearn使用入门教程
Feb 19 #Python
Python爬虫UA伪装爬取的实例讲解
Feb 19 #Python
You might like
php cli 方式 在crotab中运行解决
2010/02/08 PHP
php中神奇的fastcgi_finish_request
2011/05/02 PHP
php中file_exists函数使用详解
2015/05/08 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
浅谈node的事件机制
2017/10/09 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
js里面的变量范围分享
2020/07/18 Javascript
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
windows下python连接oracle数据库
2017/06/07 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
python 安装移动复制第三方库操作
2020/07/13 Python
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
关键字final的用法
2013/10/02 面试题
Ajxa常见问题都有哪些
2014/03/26 面试题
工会换届选举方案
2014/05/21 职场文书
片区教研活动总结
2014/07/02 职场文书
借款协议书
2014/09/16 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
python requests模块的使用示例
2021/04/07 Python