完美解决keras保存好的model不能成功加载问题


Posted in Python onJune 11, 2020

前两天调用之前用keras(tensorflow做后端)训练好model,却意外发现报错了!!之前从来没有过报错!!错误内容粘贴如下:

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)

意思好像就是文件结构找不到了,然后我百度了,他说是训练好的文件数据丢失了,重新训练就好了。

但是,我重新训练了好几次,确保训练的model文件没有错误,在调用时依然报了同样的错误。

一气之下,我卸载了h5py,然后重新安装h5py的最新版本,问题竟然神奇的解决了,哈哈哈哈!幸运!

补充知识:Keras使用 Lambda后训练出的模型加载后,预测结果为随机

问题

Keras 使用 Lambda后训练出的模型加载后,预测结果为随机accuracy

解决方案

原因出在,我构建模型的时候需要用到TensorFlow的一些函数,所以用了Lambda,有把一些需要训练weights的层也写到了里面。

重点就在这,模型权重保存的时候,没保存Lambda里面的。

用notepad打开权重文件,发现里面保存的Tensor不包含这些,所以每一次重新加载模型测试的时候都会重新初始化一些层的权重,导致结果是随机的。

结论

不要在Lambda层里面加入任何需要训练权重的层

模型保存出错的时候,看一下模型文件里面保存的Tensor是否一致

以上这篇完美解决keras保存好的model不能成功加载问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python爬取Coursera课程资源的详细过程
Nov 04 Python
Python类的专用方法实例分析
Jan 09 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
纯用NumPy实现神经网络的示例代码
Oct 24 Python
python-tornado的接口用swagger进行包装的实例
Aug 29 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
Python开发之基于模板匹配的信用卡数字识别功能
Jan 13 Python
使用python从三个角度解决josephus问题的方法
Mar 27 Python
k-means 聚类算法与Python实现代码
Jun 01 Python
Python基于xlutils修改表格内容过程解析
Jul 28 Python
python制作微博图片爬取工具
Jan 16 Python
jupyter notebook指定启动目录的方法
Mar 02 Python
keras load model时出现Missing Layer错误的解决方式
Jun 11 #Python
Pyinstaller加密打包应用的示例代码
Jun 11 #Python
解决keras加入lambda层时shape的问题
Jun 11 #Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
Jun 11 #Python
keras slice layer 层实现方式
Jun 11 #Python
Spring http服务远程调用实现过程解析
Jun 11 #Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 #Python
You might like
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
javascript数据类型详解
2017/02/07 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
详解如何在vue项目中引入elementUI组件
2018/02/11 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
python实现用于测试网站访问速率的方法
2015/05/26 Python
Python中pygame的mouse鼠标事件用法实例
2015/11/11 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
浅谈python中get pass用法
2019/03/19 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
python中使用np.delete()的实例方法
2021/02/01 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
银行行长竞聘演讲稿
2014/04/23 职场文书
失职检讨书大全
2015/01/26 职场文书
总经理助理岗位职责
2015/01/31 职场文书
关于运动会的宣传稿
2015/07/23 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
JavaScript数组 几个常用方法总结
2021/11/11 Javascript