使用 Torch-hdf5 将张量保存到 Hdf5

我正在尝试使用 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:HDF5(1.8.13)线程0中检测到错误:
  #000:H5G.c第287行H5Gcreate2()中无名称
    主要的:例程无效的参数
    次要的:坏值
HDF5-DIAG:HDF5(1.8.13)线程0中检测到错误:
  #000:H5I.c第2245行H5Iget_name()中无法检索对象位置
    主要的:对象原子
    次要的:无法获得值
  #001:H5Gloc.c第253行H5G_loc()中无效的对象标识符
    主要的:例程无效的参数
    次要的:坏值

HDF5 是否分别存储数据和指令文件?这就是我们传递两个路径的原因吗?

点赞
用户1235026
用户1235026

第一个路径是磁盘上实际文件的路径,这是所有东西存储的地方。

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))

希望这有所帮助。

2017-03-22 22:34:50
用户3161
用户3161

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

2017-10-18 20:06:44