keras load model時(shí)出現(xiàn)Missing Layer錯(cuò)誤的解決方式
問(wèn)題描述:訓(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ò)
問(wèn)題分析:
經(jīng)過(guò)debug分析,原因出在model建立過(guò)程中前面lambda層的inbound_node列表中含有后面層,因此從上到下load時(shí),會(huì)找不到后面層。重新建立一次model,然后用model.summary() 可以看出其中的原因。
出現(xiàn)這種情況,可能的原因在于,該lambda層在其他py文件中定義,然后import進(jìn)來(lái),前后多次用到這個(gè)lambda層的話,在模型編譯過(guò)程中,該lambda層可能只編譯了一次,前后層共用之,導(dǎo)致后面層結(jié)點(diǎn)出現(xiàn)在前面層的inbound_node列表中。
解決辦法:
不要在其他py文件中自定義lambda層,直接將其定義在model建立的文件中?;蛘咧苯永^承Layer層,在其他py文件中重新自定義該層。
補(bǔ)充知識(shí):加載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.h5', custom_objects={'tf': tf})
以上這篇keras load model時(shí)出現(xiàn)Missing Layer錯(cuò)誤的解決方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)多進(jìn)程并發(fā)控制Semaphore與互斥鎖LOCK
本文主要介紹了python實(shí)現(xiàn)多進(jìn)程并發(fā)控制Semaphore與互斥鎖LOCK,通過(guò)實(shí)例來(lái)介紹互斥鎖和進(jìn)程并發(fā)控制 semaphore的具體使用,感興趣的同學(xué)可以了解一下2021-05-05
Python 列表(List) 的三種遍歷方法實(shí)例 詳解
這篇文章主要介紹了Python 列表(List) 的三種遍歷方法實(shí)例 詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
Python實(shí)現(xiàn)藍(lán)線挑戰(zhàn)特效的示例代碼
在抖音曾經(jīng)火了一陣子的藍(lán)線挑戰(zhàn)特效,其原理很簡(jiǎn)單。本文將試著用opencv-python實(shí)現(xiàn)這個(gè)效果,做了攝像頭版本和視頻處理版本,感興趣的可以學(xué)習(xí)一下2022-10-10
Python3實(shí)現(xiàn)的Mysql數(shù)據(jù)庫(kù)操作封裝類
這篇文章主要介紹了Python3實(shí)現(xiàn)的Mysql數(shù)據(jù)庫(kù)操作封裝類,涉及Python針對(duì)mysql數(shù)據(jù)庫(kù)的連接、查詢、更新及關(guān)閉連接等相關(guān)操作技巧,需要的朋友可以參考下2018-06-06

