完美解决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将人民币转换大写的脚本代码
Feb 10 Python
python模拟新浪微博登陆功能(新浪微博爬虫)
Dec 24 Python
Python SQLite3数据库操作类分享
Jun 10 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
Jan 09 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
django主动抛出403异常的方法详解
Jan 04 Python
pandas修改DataFrame列名的实现方法
Feb 22 Python
Python基于scipy实现信号滤波功能
May 08 Python
python实现批量文件重命名
Oct 31 Python
TensorFlow打印输出tensor的值
Apr 19 Python
Python GUI库Tkiner使用方法代码示例
Nov 27 Python
python实现自动清理文件夹旧文件
May 10 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处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
详解Python多线程
2016/11/14 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
Python 画出来六维图
2019/07/26 Python
django 单表操作实例详解
2019/07/30 Python
django中的数据库迁移的实现
2020/03/16 Python
Django如何使用redis作为缓存
2020/05/21 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
应届毕业生求职信范文分享
2013/12/26 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
2016银行求职自荐信
2016/01/28 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android