完美解决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 的描述符 descriptor详解
Feb 27 Python
python编写简单爬虫资料汇总
Mar 22 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
Django admin实现图书管理系统菜鸟级教程完整实例
Dec 12 Python
Python使用base64模块进行二进制数据编码详解
Jan 11 Python
Python实现Kmeans聚类算法
Jun 10 Python
Python并发:多线程与多进程的详解
Jan 24 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
Python处理session的方法整理
Aug 29 Python
三个python爬虫项目实例代码
Dec 28 Python
python实现邮件循环自动发件功能
Sep 11 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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
php中变量及部分适用方法
2008/03/27 PHP
php email邮箱正则
2008/10/08 PHP
php 将excel导入mysql
2009/11/09 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
php自定义时间转换函数示例
2016/12/07 PHP
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
python字符串,数值计算
2016/10/05 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
Python如何实现FTP功能
2020/05/28 Python
Python sublime安装及配置过程详解
2020/06/29 Python
PHP中如何创建和修改数组
2012/05/02 面试题
车间工艺员岗位职责
2013/12/09 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
公司员工检讨书
2014/02/08 职场文书
学校后勤岗位职责
2014/02/19 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
2014年城管工作总结
2014/11/20 职场文书
开工典礼致辞
2015/07/29 职场文书
python中的3种定义类方法
2021/11/27 Python
nginx.conf配置文件结构小结
2022/04/08 Servers