網上的教程大多數是教大家如何加載自定義模型和函數,如下圖
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SN4ETZyYTM2M2Y5MzYkJGO2UzN5gjZiJzNmdTYwUzY38CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
這個SelfAttention層是在訓練過程自己定義的一個class,但如果要加載這個自定義層,需要在load_model裡添加custom_objects字典,這個自定義的類,不要用import ,最好是直接複制進再訓練的模型中,這些是基本教程。
------------------分割線講重點------------------
如果直接運作上面的代碼,會出現一個init初始化錯誤,如下圖,
再來看看 這個SelfAttention 自定義的類的初始化
這就說明再調用這個類的時候,輸入的ch=256并不會初始化這個類,需要先自定義好初始化值,如下圖
調用方式不變
這樣問題就解決啦!
補充知識:keras load model的時候,報錯('Keyword argument not understood:', u'******')如何解決
由于keras不同版本的API有變化,是以在一個keras版本下訓練的模型在另一個keras版本下加載時,可能會出現諸如('Keyword argument not understood:', u'data_format')等報錯。
通過打開*.h5檔案,檢視該模型訓練所用環境,再安裝該環境即可解決報錯。
檢視Keras Model所用的Keras環境的方法
import h5py
f = h5py.File('Model.h5', 'r')
print(f.attrs.get('keras_version'))
根據輸出的keras版本安裝對應版本的keras即可解決加載問題。
以上這篇keras的load_model實作加載含有參數的自定義模型就是小編分享給大家的全部内容了,希望能給大家一個參考,也希望大家多多支援腳本之家。