keras load model時出現(xiàn)Missing Layer錯誤的解決方式
問題描述:訓練結束后,保存model為hdf5和yaml格式的文件
yamlFilename = os.path.join(dir,filename) yamlModel = model.toyaml() with open(yamlFilename, "w") as yamlFile: yamlFile.write(yamlModel)
隨后load model
with open(chkptFilename,'r') as f:
model_yaml = f.read()
model = KM.model_from_yaml(model_yaml,customs_objects={"dict":dict})
model.load_weights(weightFilename)
但是報錯
問題分析:
經(jīng)過debug分析,原因出在model建立過程中前面lambda層的inbound_node列表中含有后面層,因此從上到下load時,會找不到后面層。重新建立一次model,然后用model.summary() 可以看出其中的原因。
出現(xiàn)這種情況,可能的原因在于,該lambda層在其他py文件中定義,然后import進來,前后多次用到這個lambda層的話,在模型編譯過程中,該lambda層可能只編譯了一次,前后層共用之,導致后面層結點出現(xiàn)在前面層的inbound_node列表中。
解決辦法:
不要在其他py文件中自定義lambda層,直接將其定義在model建立的文件中。或者直接繼承Layer層,在其他py文件中重新自定義該層。
補充知識:加載keras模型'tf' is not defined on load_model() - using lambda NameError: name 'tf' is not defined報錯
解決方法如下:
import tensorflow as tf
import keras
model = keras.models.load_model('my_model.h5', custom_objects={'tf': tf})
以上這篇keras load model時出現(xiàn)Missing Layer錯誤的解決方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
pandas實現(xiàn)to_sql將DataFrame保存到數(shù)據(jù)庫中
這篇文章主要介紹了pandas實現(xiàn)to_sql將DataFrame保存到數(shù)據(jù)庫中,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07
Python3+Django get/post請求實現(xiàn)教程詳解
這篇文章主要介紹了Python3+Django get/post請求實現(xiàn)教程詳解,需要的朋友可以參考下2021-02-02
Django數(shù)據(jù)映射(一對一,一對多,多對多)
本文主要介紹了Django數(shù)據(jù)映射(一對一,一對多,多對多),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
聊聊pytorch中Optimizer與optimizer.step()的用法
這篇文章主要介紹了pytorch中Optimizer與optimizer.step()的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05

