13.模型的保存和载入

我们以保存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)

运行结果:
在这里插入图片描述
对比首次保存的模型:
在这里插入图片描述
可以发现再训练模型在测试集上的准确率有所提高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布兹学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值