您好,登錄后才能下訂單哦!
小編這次要給大家分享的是keras load model時(shí)出現(xiàn)Missing Layer錯(cuò)誤時(shí)怎么辦,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
問題描述:訓(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)
但是報(bào)錯(cuò)
問題分析:
經(jīng)過debug分析,原因出在model建立過程中前面lambda層的inbound_node列表中含有后面層,因此從上到下load時(shí),會找不到后面層。重新建立一次model,然后用model.summary() 可以看出其中的原因。
出現(xiàn)這種情況,可能的原因在于,該lambda層在其他py文件中定義,然后import進(jìn)來,前后多次用到這個(gè)lambda層的話,在模型編譯過程中,該lambda層可能只編譯了一次,前后層共用之,導(dǎo)致后面層結(jié)點(diǎn)出現(xiàn)在前面層的inbound_node列表中。
解決辦法:
不要在其他py文件中自定義lambda層,直接將其定義在model建立的文件中?;蛘咧苯永^承Layer層,在其他py文件中重新自定義該層。
補(bǔ)充知識:加載keras模型'tf' is not defined on load_model() - using lambda NameError: name 'tf' is not defined報(bào)錯(cuò)
解決方法如下:
import tensorflow as tf import keras model = keras.models.load_model('my_model.h6', custom_objects={'tf': tf})
看完這篇關(guān)于keras load model時(shí)出現(xiàn)Missing Layer錯(cuò)誤時(shí)怎么辦的文章,如果覺得文章內(nèi)容寫得不錯(cuò)的話,可以把它分享出去給更多人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。