当前位置:网站首页>13.模型的保存和载入
13.模型的保存和载入
2022-07-07 23:11:00 【booze-J】
我们以保存3.MNIST数据集分类中训练的模型为例,来演示模型的保存与载入。
第一种模型保存和载入方式
1.保存方式
保存模型只需要在模型训练完之后添加上
# 保存模型 可以同时保存模型的结构和参数
model.save("model.h5") # HDF5文件,pip install h5py
这种保存方式可以同时保存模型的结构和参数。
2.载入方式
载入模型之前需要先导入load_model方法
from keras.models import load_model
然后载入的代码就是简单一句:
# 载入模型
model = load_model("../model.h5")
这种载入方法可以同时载入模型的结构和参数。
第二种模型保存和载入方式
1.保存方式
模型参数和模型结构分开来保存:
# 保存参数
model.save_weights("my_model_weights.h5")
# 保存网络结构
json_string = model.to_json()
2.载入方式
在载入模型结构之前,需要先导入model_from_json()方法
from keras.models import model_from_json
分别载入网络参数和网络结构:
# 载入参数
model.load_weights("my_model_weights.h5")
# 载入模型结构
model = model_from_json(json_string)
模型再训练
代码运行平台为jupyter-notebook,文章中的代码块,也是按照jupyter-notebook中的划分顺序进行书写的,运行文章代码,直接分单元粘入到jupyter-notebook即可。
其实模型载入之后是可以进行再训练的。
1.导入第三方库
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.models import load_model
2.加载数据及数据预处理
# 载入数据
(x_train,y_train),(x_test,y_test) = mnist.load_data()
# (60000, 28, 28)
print("x_shape:\n",x_train.shape)
# (60000,) 还未进行one-hot编码 需要后面自己操作
print("y_shape:\n",y_train.shape)
# (60000, 28, 28) -> (60000,784) reshape()中参数填入-1的话可以自动计算出参数结果 除以255.0是为了归一化
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)
3.模型再训练
# 载入模型
model = load_model("../model.h5")
# 评估模型
loss,accuracy = model.evaluate(x_test,y_test)
print("\ntest loss",loss)
print("accuracy:",accuracy)
运行结果:
对比首次保存的模型:
可以发现再训练模型在测试集上的准确率有所提高。
边栏推荐
- C # generics and performance comparison
- RPA cloud computer, let RPA out of the box with unlimited computing power?
- Stock account opening is free of charge. Is it safe to open an account on your mobile phone
- Jemter distributed
- Fofa attack and defense challenge record
- My best game based on wechat applet development
- 1293_ Implementation analysis of xtask resumeall() interface in FreeRTOS
- 串口接收一包数据
- Kubernetes Static Pod (静态Pod)
- 去了字节跳动,才知道年薪 40w 的测试工程师有这么多?
猜你喜欢

51 communicates with the Bluetooth module, and 51 drives the Bluetooth app to light up

51与蓝牙模块通讯,51驱动蓝牙APP点灯

搭建ADG过程中复制报错 RMAN-03009 ORA-03113

Lecture 1: the entry node of the link in the linked list

接口测试要测试什么?

Application practice | the efficiency of the data warehouse system has been comprehensively improved! Data warehouse construction based on Apache Doris in Tongcheng digital Department

RPA cloud computer, let RPA out of the box with unlimited computing power?

玩转Sonar

C language 001: download, install, create the first C project and execute the first C language program of CodeBlocks

去了字节跳动,才知道年薪 40w 的测试工程师有这么多?
随机推荐
[note] common combined filter circuit
The weight of the product page of the second level classification is low. What if it is not included?
玩轉Sonar
My best game based on wechat applet development
Summary of the third course of weidongshan
A brief history of information by James Gleick
新库上线 | CnOpenData中华老字号企业名录
手写一个模拟的ReentrantLock
Vscode software
[necessary for R & D personnel] how to make your own dataset and display it.
赞!idea 如何单窗口打开多个项目?
【obs】官方是配置USE_GPU_PRIORITY 效果为TRUE的
动态库基本原理和使用方法,-fPIC 选项的来龙去脉
Kubernetes static pod (static POD)
丸子官网小程序配置教程来了(附详细步骤)
Jouer sonar
What if the testing process is not perfect and the development is not active?
What has happened from server to cloud hosting?
Reentrantlock fair lock source code Chapter 0
Thinkphp内核工单系统源码商业开源版 多用户+多客服+短信+邮件通知