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下,会出现下述错误:
这个错误的意思就是无法读取,或者说找不到这样一个文件。解决方法:
我尝试自己创建了一个.h5结尾的文件,并查找它的位置,发现它保存在这里。
这是路径: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是我的虚拟环境
希望能够帮助到大家