gpt4 book ai didi

python - h5py:切片数据集而不加载到内存中

转载 作者:太空狗 更新时间:2023-10-30 01:14:58 28 4
gpt4 key购买 nike

是否可以将 h5py 数据集分成两个子集而不实际将它们加载到内存中?例如:

dset = h5py.File("/2tbhd/tst.h5py","r")

X_train = dset['X'][:N/2]
X_test = dset['X'][N/2:-1]

最佳答案

没有。

您需要实现自己的类来充当数据集的 View 。 An old thread在 h5py 邮件列表上表明这样的 DatasetView 类在理论上可以使用 HDF5 数据空间来实现,但对于许多用例来说可能不值得。与普通的 numpy 数组相比,逐元素访问会非常慢(假设您可以将数据放入内存)。

编辑:如果您想避免弄乱 HDF5 数据空间(无论那意味着什么),您可能会选择一种更简单的方法。尝试 this gist我刚写的。像这样使用它:

dset = h5py.File("/2tbhd/tst.h5py","r")

from simpleview import SimpleView
X_view = SimpleView(dset['X'])

# Stores slices, but doesn't load into memory
X_train = X_view[:N/2]
X_test = X_view[N/2:-1]

# These statements will load the data into memory.
print numpy.sum(X_train)
print numpy.array(X_test)[0]

请注意,这个简单示例中的切片支持有些受限。如果您想要完全切片和按元素访问,则必须将其复制到一个真正的数组中:

X_train_copy = numpy.array(X_train)

关于python - h5py:切片数据集而不加载到内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25766460/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com