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)