keras load model時出現(xiàn)Missing Layer錯誤的解決方式
問題描述:訓(xùn)練結(jié)束后,保存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層可能只編譯了一次,前后層共用之,導(dǎo)致后面層結(jié)點出現(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錯誤的解決方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
pandas實現(xiàn)to_sql將DataFrame保存到數(shù)據(jù)庫中
這篇文章主要介紹了pandas實現(xiàn)to_sql將DataFrame保存到數(shù)據(jù)庫中,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07Python3+Django get/post請求實現(xiàn)教程詳解
這篇文章主要介紹了Python3+Django get/post請求實現(xiàn)教程詳解,需要的朋友可以參考下2021-02-02Django數(shù)據(jù)映射(一對一,一對多,多對多)
本文主要介紹了Django數(shù)據(jù)映射(一對一,一對多,多對多),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08聊聊pytorch中Optimizer與optimizer.step()的用法
這篇文章主要介紹了pytorch中Optimizer與optimizer.step()的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05Python實現(xiàn)視頻轉(zhuǎn)換為字符畫詳解
這篇文章主要介紹了如何通過Python實現(xiàn)讀取視頻并將其轉(zhuǎn)換為字符畫的示例代碼,文中講解詳細,對我們的學(xué)習(xí)和工作有一點的價值,感興趣的小伙伴可以了解一下2021-12-12