Python-深度学习-学习笔记(10):对于读取h5py文件的路径问题解决

错误代码:
OSError: Unable to open file (unable to open file: name = ‘datasets/train_catvnoncat.h5’, errno = 2, error message = ‘No such file or directory’, flags = 0, o_flags = 0)

HDF5 简介

HDF(Hierarchical Data Format)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件。

h5py简介

h5py文件是存放两类对象的容器,数据集(dataset)和组(group),dataset类似数组类的数据集合,和numpy的数组差不多。group是像文件夹一样的容器,它好比python中的字典,有键(key)和值(value)。group中可以存放dataset或者其他的group。一个 HDF5 文件从一个命名为 “/” 的 group 开始,所有的 dataset 和其它 group 都包含在此 group 下,当操作 HDF5 文件时,如果没有显式指定 group 的 dataset 都是默认指 “/” 下的 dataset,另外类似相对文件路径的 group 名字都是相对于 “/” 的。

h5py是用来操作HDF5文件的。

在anaconda下安装h5py
pip install h5py

在安装过程中一定要清楚自己要将h5py的包安装到哪个虚拟环境中,如果安装错误发的话在执行过程中会出现调用失败。

话不多说下面提供h5py下打开文件失败的解决方法。

解决读取h5py文件路径失败问题

在吴恩达的deeplearning.ai课程的课后作业中,有一节是分析数据集,其中datasets和lr_utils.py都是需要自己从网上下载的,这里为大家提供下载地址:https://pan.baidu.com/s/1Uui641jlRL9JD9WS-z3yRA ,但我们将两个文件放到我们所安装的anaconda3下,会出现下述错误:

python如何读取h5权重文件 python h5文件读取_h5py


这个错误的意思就是无法读取,或者说找不到这样一个文件。解决方法:

我尝试自己创建了一个.h5结尾的文件,并查找它的位置,发现它保存在这里。

python如何读取h5权重文件 python h5文件读取_python_02


这是路径:C:\Users\405,我发现它没有保存到anaconda3下。

于是我将datasets(其中包含的.h5文件的文件夹)也保存到了这个根目录下,发现问题解决了。

结论:我的h5py读取文件的目录为C:\Users\405。这里只是给大家提供一个思路,大家可以通过创建一个.h5文件来获取你的保存路径,或者可以像我一样保存在admin根目录下试试。

#创建.h5文件代码
import h5py
import numpy as np
 
#HDF5的写入:
imgData = np.zeros((2,4))
f = h5py.File('HDF5_FILE.h5','w')   #创建一个h5文件,文件指针是f
f['data'] = imgData                 #将数据写入文件的主键data下面
f['labels'] = np.array([1,2,3,4,5])            #将数据写入文件的主键labels下面
f.close()                           #关闭文件
 
#HDF5的读取:
f = h5py.File('HDF5_FILE.h5','r')   #打开h5文件
#可以查看所有的主键
for key in f.keys():
    print(f[key].name)
    print(f[key].shape)
    print(f[key].value)
lr_utils.py文件

这是一个自己封装的文件,我的保存路径为C:\Users\405\Anaconda3\envs\python36

注:python36是我的虚拟环境

希望能够帮助到大家