完美解决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编程中time模块的一些关键用法解析
Jan 19 Python
Python Django使用forms来实现评论功能
Aug 17 Python
python中的计时器timeit的使用方法
Oct 20 Python
PyQt5实现简易计算器
May 30 Python
python实现微信自动回复机器人功能
Jul 11 Python
解析Python3中的Import
Oct 13 Python
python调用Matplotlib绘制分布点图
Oct 18 Python
Python内置方法实现字符串的秘钥加解密(推荐)
Dec 09 Python
python计算二维矩形IOU实例
Jan 18 Python
Python用5行代码实现批量抠图的示例代码
Apr 14 Python
Django权限设置及验证方式
May 13 Python
python中@property的作用和getter setter的解释
Dec 22 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 float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
php回调函数处理数组操作示例
2020/04/13 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
jQuery live
2009/05/15 Javascript
理解JSON:3分钟课程
2011/10/28 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
layerUI下的绑定事件实例代码
2018/08/17 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
python如何在终端里面显示一张图片
2016/08/17 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
python元组的概念知识点
2019/11/19 Python
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
班子四风对照检查材料思想汇报
2014/09/29 职场文书
报到证办理个人委托书
2014/10/06 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
background-position百分比原理详解
2021/05/08 HTML / CSS
MySQL 分组查询的优化方法
2021/05/12 MySQL
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers