本文主要关于如何存储预测模型,加载带有自定义函数的模型。
存储预测模型
在keras.callbacks 包下有个函数叫做ModelCheckpoint,可以实现模型的存储。使用方法如下:
from keras.callbacks import ModelCheckpoint
ModelCheckpoint('model.h5', monitor='val_f1_m', save_best_only=True, mode='max', verbose=1)
其中:
model.h5是存储文件的名字
monitor='val_f1_m' 意思通过监督validation数据的f1_score进行模型存储,其中的f1_m是https://www.jianshu.com/p/e7d53a06a6a6文章中定义的f1_m函数
save_best_only=True, mode='max' 意思只存储在validation数据中得到最大f1_score值的模型。注意当使用自定义函数的时候,不要使用mode='auto'
verbose = 1 将显示每个epoch中val_f1_m的值和模型的存储情况
加载带有自定义函数的模型
加载模型可以使用keras.models包中的load_model函数
from keras.models import load_model
普通加载模型的方法:
model = load_model('model.h5')
当model.h5中含有自定义的函数,如https://www.jianshu.com/p/e7d53a06a6a6中定义的f1_m函数,如果仍用上述的方法加载模型,会出现错误如下:
ValueError: Unknown metric function:f1_m
所以加载带有自定义函数的模型正确使用方法(仍以f1_m为例):
model = load_model('model.h5',custom_objects={'f1_m':f1_m})