1. 程式人生 > 程式設計 >使用Keras載入含有自定義層或函式的模型操作

使用Keras載入含有自定義層或函式的模型操作

當我們匯入的模型含有自定義層或者自定義函式時,需要使用custom_objects來指定目標層或目標函式。

例如:

我的一個模型含有自定義層“SincConv1D”,需要使用下面的程式碼匯入:

from keras.models import load_model
model = load_model('model.h5',custom_objects={'SincConv1D': SincConv1D})

如果不加custom_objects指定目標層Layer,則會出現以下報錯:

ValueError: Unknown layer: SincConv1D

同樣的,當我的模型含有自定義函式“my_loss”,需要使用下面的程式碼匯入:

from keras.models import load_model
model = load_model('model.h5',custom_objects={'my_loss': my_loss})

補充知識:keras載入模型load_model報錯——ValueError: Unknown layer: CRF

我就廢話不多說了,大家還是直接看程式碼吧!

from keras.models import load_model
model = load_model(model_path)

會報錯,需要在load_model函式中新增custom_objects引數,來宣告自定義的層

(用keras搭建bilstm-crf,在訓練模型時,使用的是:

from keras_contrib.layers.crf import CRF)

from keras_contrib.layers.crf import CRF,crf_loss,crf_viterbi_accuracy
model = load_model(model_path,custom_objects={"CRF": CRF,'crf_loss': crf_loss,'crf_viterbi_accuracy': crf_viterbi_accuracy})

以上這篇使用Keras載入含有自定義層或函式的模型操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。