当前位置:网站首页>13. Model saving and loading

13. Model saving and loading

2022-07-08 00:55:00 booze-J

We save 3.MNIST Data set classification Take the training model in as an example , To demonstrate the saving and loading of the model .

The first way to save and load models

1. Save the way

To save the model, you only need to add after the model training

#  Save the model   The structure and parameters of the model can be saved at the same time 
model.save("model.h5")  # HDF5 file ,pip install h5py

This saving method can save the structure and parameters of the model at the same time .

2. Loading mode

Before loading the model, you need to import load_model Method

from keras.models import load_model

Then the loaded code is a simple sentence :

#  Load model  
model = load_model("../model.h5")

This loading method can load the structure and parameters of the model at the same time .

The second way to save and load models

1. Save the way

Model parameters and model structure are stored separately :

#  Save parameters 
model.save_weights("my_model_weights.h5")
#  Save network structure 
json_string = model.to_json()

2. Loading mode

Before loading the model structure , You need to import model_from_json() Method

from keras.models import model_from_json

Load network parameters and network structure respectively :

#  Load parameters 
model.load_weights("my_model_weights.h5")
#  Load model structure 
model = model_from_json(json_string)

Model retraining

The code running platform is jupyter-notebook, Code blocks in the article , According to jupyter-notebook Written in the order of division in , Run article code , Glue directly into jupyter-notebook that will do .

In fact, the model can be retrained after loading .
1. Import third-party library

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. Loading data and data preprocessing

#  Load data 
(x_train,y_train),(x_test,y_test) = mnist.load_data()
# (60000, 28, 28)
print("x_shape:\n",x_train.shape)
# (60000,)  Not yet one-hot code   You need to operate by yourself later 
print("y_shape:\n",y_train.shape)
# (60000, 28, 28) -> (60000,784) reshape() Middle parameter filling -1 Parameter results can be calculated automatically   Divide 255.0 To normalize 
x_train = x_train.reshape(x_train.shape[0],-1)/255.0
x_test = x_test.reshape(x_test.shape[0],-1)/255.0
#  in one hot Format 
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)

3. Model retraining

#  Load model  
model = load_model("../model.h5")

#  Evaluation model 
loss,accuracy = model.evaluate(x_test,y_test)

print("\ntest loss",loss)
print("accuracy:",accuracy)

Running results :
 Insert picture description here
Compare the first saved model :
 Insert picture description here
It can be found that the accuracy of the retraining model on the test set has been improved .

原网站

版权声明
本文为[booze-J]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/189/202207072310361252.html