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