【发布时间】:2020-10-31 22:15:40
【问题描述】:
在更新我的环境或使用最新环境后加载使用 kerastensorflow 创建的 h5 模型时,我从 h5py 收到 OSerror(没有任何其他文本)。
我在旧版本中使用 keras 和 tf 以及 keras-tf v1.15 训练了一些模型,并使用model.save('filename.h5') 代码保存了它们。之后,我可以在keras.load_model 之前加载它们并进一步使用它们,现在tensorflow.keras.models.load_model 没有任何问题,但收到一些警告,即我的 tf 版本未编译为使用 avx2 指令等。
使用 pip install tensorflow-cpu 安装的版本是 tensorflow 1.15,它似乎运行良好,我安装的环境是从 Windows 上的 anaconda 二进制文件安装的 Anaconda3-2020.02-Windows-x86_64。
在尝试将软件包更改为 tensorflow-mkl 后,由于环境冲突(即使全新安装 anaconda 时也显示)需要更新我的环境,出现 h5py 引发的 OSerror。
使用 anaconda 二进制文件中的默认环境包和 tf-cpu 似乎可以正常工作,或者通过克隆环境。当使用 conda update --all 更新环境时,它会使用 tfc-cpu 或 tf-mkl 引发错误。
两种情况下h5py的版本都是:'2.10.0',报错如下:
Traceback (most recent call last):
File "C:\Users\Oscar\bwSyncAndShare\OPT_PV22WP_intern\pv2wp_control\SIM\Sim_future.py", line 88, in <module>
model = load_model(pathfile_model)
File "C:\Users\Oscar\anaconda3\envs\optimizer2\lib\site-packages\tensorflow_core\python\keras\saving\save.py", line 142, in load_model
isinstance(filepath, h5py.File) or h5py.is_hdf5(filepath))):
File "C:\Users\Oscar\anaconda3\envs\optimizer2\lib\site-packages\h5py\_hl\base.py", line 44, in is_hdf5
return h5f.is_hdf5(filename_encode(fname))
File "h5py\_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py\_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "h5py\h5f.pyx", line 156, in h5py.h5f.is_hdf5
OSError
有人遇到过这个问题吗?
- 我已尝试使用更新的环境训练模型并保存 它,加载时我得到同样的错误。
- 更新到 tf-cpu v2.3.1 与基础环境和加载也有效。
- 使用
conda create -n name python==3.7.x anaconda创建一个新环境 然后安装 tf,不起作用。
我认为其他一些图书馆正在制造问题,但我无法弄清楚问题是什么。
【问题讨论】:
-
好吧,我似乎找到了一个解决方案,它是将 hdf5 库从 v1.10.6 降级到版本 1.10.4,使用:conda install hdf5== 1.10.4,这降低了库并取代了另一个的 h5py 库。现在它似乎按预期加载了模型。
标签: python-3.x tensorflow keras anaconda h5py