溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

keras load model時(shí)出現(xiàn)Missing Layer錯(cuò)誤時(shí)怎么辦

發(fā)布時(shí)間:2020-07-17 10:22:44 來源:億速云 閱讀:137 作者:小豬 欄目:開發(fā)技術(shù)

小編這次要給大家分享的是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ò)的話,可以把它分享出去給更多人看到。

向AI問一下細(xì)節(jié)

免責(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)容。

AI