完美解決keras保存好的model不能成功加載問題
前兩天調(diào)用之前用keras(tensorflow做后端)訓(xùn)練好model,卻意外發(fā)現(xiàn)報錯了?。≈皬膩頉]有過報錯??!錯誤內(nèi)容粘貼如下:
File “h5py_objects.pyx”, line 54, in h5py._objects.with_phil.wrapper (C:\Minonda\conda-bld\h5py_1496885653697\work\h5py_objects.c:2867)
File “h5py_objects.pyx”, line 55, in h5py._objects.with_phil.wrapper (C:\Minonda\conda-bld\h5py_1496885653697\work\h5py_objects.c:2825)
File “h5py\h5f.pyx”, line 78, in h5py.h5f.open (C:\Minonda\conda-bld\h5py_1496885653697\work\h5py\h5f.c:2140)
OSError: Unable to open file (File signature not found)
意思好像就是文件結(jié)構(gòu)找不到了,然后我百度了,他說是訓(xùn)練好的文件數(shù)據(jù)丟失了,重新訓(xùn)練就好了。
但是,我重新訓(xùn)練了好幾次,確保訓(xùn)練的model文件沒有錯誤,在調(diào)用時依然報了同樣的錯誤。
一氣之下,我卸載了h5py,然后重新安裝h5py的最新版本,問題竟然神奇的解決了,哈哈哈哈!幸運!
補充知識:Keras使用 Lambda后訓(xùn)練出的模型加載后,預(yù)測結(jié)果為隨機
問題
Keras 使用 Lambda后訓(xùn)練出的模型加載后,預(yù)測結(jié)果為隨機accuracy
解決方案
原因出在,我構(gòu)建模型的時候需要用到TensorFlow的一些函數(shù),所以用了Lambda,有把一些需要訓(xùn)練weights的層也寫到了里面。
重點就在這,模型權(quán)重保存的時候,沒保存Lambda里面的。
用notepad打開權(quán)重文件,發(fā)現(xiàn)里面保存的Tensor不包含這些,所以每一次重新加載模型測試的時候都會重新初始化一些層的權(quán)重,導(dǎo)致結(jié)果是隨機的。
結(jié)論
不要在Lambda層里面加入任何需要訓(xùn)練權(quán)重的層
模型保存出錯的時候,看一下模型文件里面保存的Tensor是否一致
以上這篇完美解決keras保存好的model不能成功加載問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python調(diào)用百度AI實現(xiàn)圖片上文字識別功能實例
百度AI功能還是很強大的,百度AI開放平臺真的是測試接口的天堂,免費接口很多,當然有量的限制,但個人使用是完全夠用的,下面這篇文章主要給大家介紹了關(guān)于Python調(diào)用百度AI實現(xiàn)圖片上文字識別功能的相關(guān)資料,需要的朋友可以參考下2021-09-09Python matplotlib實現(xiàn)多重圖的繪制
Matplotlib作為Python的2D繪圖庫,它以各種硬拷貝格式和跨平臺的交互式環(huán)境生成出版質(zhì)量級別的圖形。本文將利用Matplotlib庫繪制多重圖,感興趣的可以了解一下2022-03-03