使用 HDF5 库和 h5py 模块的交替错误

Posted

技术标签:

【中文标题】使用 HDF5 库和 h5py 模块的交替错误【英文标题】:Alternating errors using HDF5 library and h5py module 【发布时间】:2020-07-10 01:11:30 【问题描述】:

我创建了一个 CNN 模型并尝试将其保存为 .h5 文件,然后再加载该模型。我在 Anaconda 的虚拟环境中工作。有趣的是,我可以在虚拟环境中的 Jupyter Notebook 中毫无问题地做任何事情。但是,当我尝试在终端中运行它(加载模型,然后评估它)时,它不起作用。我有一组交替出现的错误,这些错误在网络上有解决方案,但这些解决方案要么导致死胡同,要么导致其他错误。

第一个错误:

Traceback (most recent call last):
  File "MNIST.py", line 64, in <module>
    main()
  File "MNIST.py", line 62, in main
    evaluate_model()
  File "MNIST.py", line 54, in evaluate_model
    model = models.load_model('final_model.h5')
  File "C:\Users\Josh Cruz\Documents\.conda\envs\tensorflow\lib\site-packages\keras\engine\saving.py", line 492, in load_wrapper
    return load_function(*args, **kwargs)
  File "C:\Users\Josh Cruz\Documents\.conda\envs\tensorflow\lib\site-packages\keras\engine\saving.py", line 582, in load_model
    if H5Dict.is_supported_type(filepath):
  File "C:\Users\Josh Cruz\Documents\.conda\envs\tensorflow\lib\site-packages\keras\utils\io_utils.py", line 209, in is_supported_type
    isinstance(path, h5py.Group) or
AttributeError: module 'h5py' has no attribute 'Group'

我还没有找到修复Attribute Error: module 'h5py' has no attribute 'Group' 的特定修复程序,但我确实找到了similar issues online,其解决方案建议我应该使用conda install -c conda-forge h5py 将h5py 更新到2.10.0。这对我来说很有意义,因为组似乎是 2.10.0 h5py 文档的一部分。

安装后会出现:

The following packages will be downloaded:

package                    |            build
---------------------------|-----------------
h5py-2.9.0                 |nompi_py36h9dfa0df_1103         909 KB  conda-forge
------------------------------------------------------------
                                       Total:         909 KB

The following NEW packages will be INSTALLED:

  h5py               conda-forge/win-64::h5py-2.9.0-nompi_py36h9dfa0df_1103

The following packages will be SUPERSEDED by a higher-priority channel:

  certifi              pkgs/main::certifi-2019.11.28-py36_1 --> conda-forge::certifi-2019.11.28- 
py36h9f0ad1d_1

我很困惑,因为我以为我安装的是 2.10.0 版本。我还是安装了,尝试重新运行我的程序并得到一个全新的错误:

Headers are 1.10.4, library is 1.10.5
        SUMMARY OF THE HDF5 CONFIGURATION
        =================================

General Information:
-------------------
               HDF5 Version: 1.10.5
              Configured on: 2019-03-04
              Configured by: Visual Studio 14 2015 Win64
                Host system: Windows-10.0.17763
          Uname information: Windows
                   Byte sex: little-endian
         Installation point: C:/Program Files/HDF5

为了篇幅,我没有包含整个错误,但是整个错误可以在this question中找到。建议做pip install h5py --upgrade --no-dependencies --force,但这样做会导致同样的错误。另一个消息来源(我现在找不到)说可能存在同时安装 pip 和 conda 的问题,所以我运行 pip uninstall h5py,但错误仍然存​​在。然后,使用建议here,我运行conda install -c anaconda hdf5=1.10.4,以便库与标头匹配。我被困在这里,因为即使我再次运行我的程序,我仍然会得到同样的错误。我不明白为什么,图书馆现在不应该是1.10.4吗?

然后其他地方建议我卸载,然后重新安装。如果我卸载,我会收到我写下的第一个错误。当我重新安装时,循环再次开始。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您是否已经尝试过使用 hdf5=1.10.5 在此运行 conda install -c anaconda hdf5=1.10.5 而不是使用 hdf5=1.10.4

您在 conda 环境中安装了 1.10.4 hdf5 库,Tensorflow 的某些依赖项具有更新的 hdf5 1.10.5 头文件。

尝试将您的 conda hdf5 库更新到较新的 1.10.5 或使用以下命令:

set HDF5_DISABLE_VERSION_CHECK=2 

这应该禁用警告,但不提供正确执行的任何保证,因此最好将 hdf5 库更新到相同的版本 1.10.5。

如果这还不够,请尝试以下解决方法:

首先,尝试删除 h5py 2.10.0 版本的更新,将其还原为原始版本并

通过以下方式将 hdf5 升级到 1.10.5 版本:

conda install -c anaconda hdf5=1.10.5

然后卸载一个双重(如果你安装了双重 h5py)通过以下方式安装 h5py:

conda uninstall h5py pip uninstall h5py

如果你只有一个然后卸载它

最后通过

再次升级到hdf5 2.10.0版本

conda install -c conda-forge h5py

我希望这会有所帮助。

【讨论】:

原来也是通过pip安装的,不仅仅是pip3和conda。所以在 conda、pip 和 pip3 上卸载后,我在 conda 上安装了它,它可以工作了。

以上是关于使用 HDF5 库和 h5py 模块的交替错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 h5py 读取只有数据集(无组)的 HDF5 文件?

Python h5py

如何使用 h5py 通过 szip 压缩访问 HDF5 数据集

Pandas 无法读取使用 h5py 创建的 hdf5 文件

使用 h5py 删除 hdf5 数据集

h5py快速入门指南