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
我们在这里放几个主要的包版本,方便后期分析问题.
# 在过程中我们尝试了以下方式
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版本过高导致的
直接几步走原理
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
这里使用了科大源 ,科大永远滴神
pip install h5py==2.10 -i https://pypi.mirrors.ustc.edu.cn/simple/
Installing collected packages: h5py
Successfully installed h5py-2.10.0
Total params: 963,255
Trainable params: 960,417
Non-trainable params: 2,838
_________________________________________________________________
加载模型成功!
其实没什么多大问题,就是在新环境中并不是很熟悉,不知道具体是什么出了问题。慢慢分析,抽丝剥茧,其实代码的问题都不难。加油好兄弟萌!