tensorflow-keras model.load_weights()函数报错 解决方法

  • Post author:
  • Post category:其他




tensorflow-keras model.load_weights()函数报错 解决方法



1)碰到的问题

try:
    model.load_weights(filepath)
    print("加载模型成功!")
except:
    print("加载模型失败!")

服务器用户换了一个,重新安装了环境,原先成功训练和读取的代码出了问题。

编译器一直提示加载模型失败,但其实我并没有修改路径和其他的东西!

一般这个时候需要求助pip list 看看具体的安装的包版本

Package             Version
------------------- ---------
h5py                3.1.0
importlib-metadata  3.10.1
Keras               2.2.0
Keras-Applications  1.0.2
Keras-Preprocessing 1.0.1
matplotlib          3.3.4
numpy               1.16.4
opencv-python       4.5.1.48
pip                 21.0.1
tensorboard         1.9.0
tensorflow-gpu      1.9.0
termcolor           1.1.0
tflearn             0.3.2

我们在这里放几个主要的包版本,方便后期分析问题.



2)尝试的解决方式

# 在过程中我们尝试了以下方式
1) 通过调用os,查看文件是否存在 [OS能检测到文件,但依旧读取报错]
2) 通过指定绝对路径 [仍旧报错]
3) 检查服务器同步地址,检查服务器py版本和环境 [仍然报错]
4) 通过单独运行model.load_weights(filepath) 找到了一丝端倪

load_weights_from_hdf5_group
    original_keras_version = f.attrs['keras_version'].decode('utf8')
AttributeError: 'str' object has no attribute 'decode'

根据以上问题定位问题,应该是在文字格式的问题上,百度相同的问题,确认是 h5py版本过高导致的



3)真实的解决方案

直接几步走原理



1) 卸载当前h5py

pip uninstall h5py
(tensorflow) xxx@ubuntu:~$ pip uninstall h5py 
Found existing installation: h5py 3.1.0
Uninstalling h5py-3.1.0:
  Would remove:
    /home/NewDisk/xxx/anaconda3/envs/tensorflow/lib/python3.6/site-packages/h5py-3.1.0.dist-info/*
    /home/NewDisk/xxx/anaconda3/envs/tensorflow/lib/python3.6/site-packages/h5py.libs/libaec-9c9e97eb.so.0.0.10
    /home/NewDisk/xxx/anaconda3/envs/tensorflow/lib/python3.6/site-packages/h5py.libs/libhdf5-00e8fae8.so.200.0.0
    /home/NewDisk/xxx/anaconda3/envs/tensorflow/lib/python3.6/site-packages/h5py.libs/libhdf5_hl-383c339f.so.200.0.0
    /home/NewDisk/xxx/anaconda3/envs/tensorflow/lib/python3.6/site-packages/h5py.libs/libsz-e7aa62f5.so.2.0.1
    /home/NewDisk/xxx/anaconda3/envs/tensorflow/lib/python3.6/site-packages/h5py.libs/libz-eb09ad1d.so.1.2.3
    /home/NewDisk/xxx/anaconda3/envs/tensorflow/lib/python3.6/site-packages/h5py/*
Proceed (y/n)? y
  Successfully uninstalled h5py-3.1.0



2) 安装低版本h5py

这里使用了科大源 ,科大永远滴神

pip install h5py==2.10 -i https://pypi.mirrors.ustc.edu.cn/simple/
Installing collected packages: h5py
Successfully installed h5py-2.10.0



3)重新运行代码

Total params: 963,255
Trainable params: 960,417
Non-trainable params: 2,838
_________________________________________________________________
加载模型成功!



4)总结

其实没什么多大问题,就是在新环境中并不是很熟悉,不知道具体是什么出了问题。慢慢分析,抽丝剥茧,其实代码的问题都不难。加油好兄弟萌!



版权声明:本文为qq_36142248原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。