【问题标题】:Use Torch-hdf5 to save Tensor to Hdf5使用 Torch-hdf5 将 Tensor 保存到 Hdf5
【发布时间】:2017-01-06 07:33:19
【问题描述】:

我正在尝试使用 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”是什么?它只是一个随机的单独路径吗?所以我只是放下“数据/”。然后我得到这个可怕的错误:

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 数据和指令文件是分开存储的吗?这就是我们通过两条路径的原因吗?

【问题讨论】:

标签: lua hdf5 torch


【解决方案1】:

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

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

第二个路径,即数据路径,是文件中键名的路径,它导致张量。 hdf5 将数据存储为字典的字典,因此 /path/to/data 表示一个名为“path”的全局字典键,它通向一个名为“to”的字典键,它通向最终的键“data”,然后导致张量。这可以作为 hdf5Data["path"]["to"]["data"] 访问,然后加载 hdf5 文件。

myFile:write('/path/to/data', torch.rand(5, 5))

希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-11-05
      • 2020-04-14
      • 2019-01-16
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 2018-07-18
      相关资源
      最近更新 更多