我们训练完模型之后,一般会需要保存模型或者只保存权重文件。可以利用keras中的回调函数ModelCheckpoint进行保存。
keras.callbacks.ModelCheckpoint(
filepath,
monitor='val_loss',
verbose=0,
save_best_only=True,
save_weights_only=False,
mode='auto',
period=1
)
1. filename:模型保存在本地的路径
2. monitor:需要监视的值,val_accuracy、val_loss或者accuracy
3. verbose:信息展示模式
4. save_best_only:当设置为True时,表示当模型这次epoch的训练评判结果(monitor的监测值)比上一次保存训练时的结果有提升时才进行保存。
5. mode:‘auto’,‘min’,‘max’之一,在save_best_only=True时决定性能最佳模型的评判准则,例如,当监测值为val_acc时,模式应为max,当检测值为val_loss时,模式应为min。在auto模式下,评价准则由被监测值的名字自动推断。
6. save_weights_only:若设置为True,占用内存小(只保存模型权重),但下次想调用的话,需要搭建和训练时一样的网络。若设置为False,占用内存大(包括了模型结构和配置信息),下次调用可以直接载入,不需要再次搭建神经网络结构。
7. period:填写 int 值,如果填写 period=3,指模型每训练3个epoch,进行保存一次。
保存.h5文件,以手写数字mnist为例,代码如下:
# -*- coding: utf-8 -*-
import numpy #导入数据库
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.utils import np_utils
from keras.callbacks import EarlyStopping,ModelCheckpoint
from keras.models import load_model
seed = 7 #设置随机种子
numpy.random.seed(seed)
(X_train, y_train), (X_test, y_test) = mnist.load_data(path='mnist.npz') #加载数据
num_pixels = X_train.shape[1] * X_train.shape[2]
X_train = X_trai