使用 Torch-hdf5 将 Tensor 存储到 Hdf5

4
我正在尝试使用Torch-hdf5将一些张量保存到hdf5中!
我想仔细遵循这份文档: https://github.com/deepmind/torch-hdf5/blob/master/doc/usage.md 然而,在写入hdf5部分,它的示例为:
require 'hdf5'
local myFile = hdf5.open('/path/to/write.h5', 'w')
myFile:write('/path/to/data', torch.rand(5, 5))
myFile:close()

我理解"/path/to/write.h5"是指最终文件,但是"/path/to/data"是什么意思呢?它只是一个随机的不同路径吗?所以我只需输入"data/"。然后我得到了这个看起来很可怕的错误:
HDF5-DIAG: Error detected in HDF5 (1.8.13) thread 0:
  #000: H5G.c line 287 in H5Gcreate2(): no name
    major: Invalid arguments to routine
    minor: Bad value
HDF5-DIAG: Error detected in HDF5 (1.8.13) thread 0:
  #000: H5I.c line 2245 in H5Iget_name(): can't retrieve object location
    major: Object atom
    minor: Can't get value
  #001: H5Gloc.c line 253 in H5G_loc(): invalid object ID
    major: Invalid arguments to routine
    minor: Bad value
hdf5是否将数据和指令文件分开存储?这就是为什么我们要传入两个路径的原因吗?

当我将hdf 1.8.16升级到807187e2f200e63的开发分支时,我得到了相同的结果。 - Kurt Schwehr
https://github.com/deepmind/torch-hdf5/issues/102 - Kurt Schwehr
2个回答

0

第一条路径是磁盘上实际文件的路径。这是存储所有内容的地方。

local myFile = hdf5.open('/path/to/write.h5', 'w')

第二个路径,即数据路径,是指在文件中指向张量的关键名称的路径。Hdf5将数据存储为字典的字典,因此“/path/to/data”表示全局字典键名为“path”,它指向一个名为“to”的字典键,该键又指向最终的键“data”,然后指向张量。当加载hdf5文件时,可以通过hdf5Data [“path”] [“to”] [“data”]访问它。
myFile:write('/path/to/data', torch.rand(5, 5))

希望这能有所帮助。

0

我是一个HDF5开发者,不是Torch开发者,所以我不知道Torch的工作原理,但我可以指出HDF5允许用户在HDF5文件中创建分层的“组”(因此是HDF5中的H)。这些组以与POSIX系统上的文件路径相同的方式表示。在/path/to/data中,“path”和“to”将是HDF5组,“data”将是一个HDF5数据集或可能是一个HDF5组,在其中Tensor将使用标准名称存储一个或多个数据集(快速浏览Torch使其看起来像前者)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接