Keras在load_model 时,如果模型中含有自定义Layer或者损失函数的时候会报错
先看下load_model 的函数定义:
法一:利用 custom_objects 参数
#假设模型包含一个 xxxxLayer 自定义层或者 xxxxloss自定义loss
from keras.models import load_model
model = load_model('./model.h5', custom_objects={'xxxxLayer ': xxxxLayer })
法二: 利用自定义对象作用域
from keras.utils import CustomObjectScope
with CustomObjectScope({'xxxxLayer ': xxxxLayer }):
model = load_model('./model.h5')
法三:不进行模型的编译
该方式适合有自定义的loss函数时,加载模型时不进行编译即可
from keras.models import load_model
model = load_model('./model.h5', compile = False)