【发布时间】:2019-08-29 05:10:19
【问题描述】:
我需要读取 SVHN 数据集并尝试读取第一张图像的文件名。
我很难理解 HDF5 的结构,尤其是在理解 SVHN 数据集的层次结构/结构方面
这两种读取图片名称的方法有什么区别?
我在getName()函数的定义中遇到了这个脚本中的方法1:https://github.com/bdiesel/tensorflow-svhn/blob/master/digit_struct.py
我玩弄了 hdf5 格式的文件并想出了方法 2,同时尝试了显示相同结果的不同事物。
# Both these methods read the first character of the name of the 1st
# image in svhn dataset
f = h5py.File(path_to_svhn_dataset,'r')
# method 1
f[f['digitStruct']['name'][0][0]].value
# method 2
f[f['digitStruct']['name'].value[0].item()].value[0][0]
第一张图片是文件名为“1.png”的文件。上述两种获取文件名第一个字符的方法都会为我们提供 int 等价于 ascii '1'-> 49
【问题讨论】:
-
我知道您的 HDF5 文件中有 SVHN 图像数据,但我不清楚文件中的模式和数据集格式。可以分享详细信息吗?那也许我可以帮忙。此外,您始终可以使用 HDFViewer 打开 HDF5 文件以“查看”其中的内容(组和数据集层次结构以及数据)。
-
我自己很难理解架构并且无法将其可视化。我尝试了 HDFViewer,但没有奏效。该文件很大,但如果有帮助,可以在此处访问:ufldl.stanford.edu/housenumbers 有一个 kaggle 内核以及数据集所在的位置:kaggle.com/stanfordu/street-view-house-numbers 很抱歉无法在此处提供更多内容。
-
我昨天查看了这两个位置,但没有找到任何 HDF5 (.h5) 文件。第一个链接有 tar.gz 和 .mat 文件。 tar.gz 文件有 png 文件和 digitStruct.mat - 没有 HDF5。在 kaggle 网站上也是如此。您是否从其他程序创建了 h5 文件?
-
@kcw78 感谢您的检查。 digitStruct.mat 实际上是以 HDF5 格式编码的。我使用 h5py 读取 digitStruct.mat 文件。我提供的代码 sn-p 中的“path_to_svhn_dataset”是 digitStruct.mat 文件的路径。为混乱道歉。
-
帕洛,我取得了进步。我放弃了standford.edu 上的文件。我从 kaggle.com 下载了文件并且能够打开
test_digitStruct.mat;h5py.File()工作正常。现在我可以看到架构和数据,我明白为什么会有这么多关于 SVHN 数据的问题。这不是一个简单的数据模型。/digitStruct/name数据集包含指向/#ref#/组中的数据集的对象引用,并且这些数据集具有对其他数据集的对象引用。解开很复杂。我会写一个完整的答案来说明这些是如何工作的,然后再发布。