首页 > 解决方案 > 如何有效地从 h5py 数据集中随机选择数据子集

问题描述

我在 h5py 中有一个非常大的数据集,当完全加载和后续处理时,这会导致内存问题。我需要随机选择一个子集并使用它。这是在机器学习的上下文中“提升”。

dataset = h5py.File(h5_file, 'r')

train_set_x_all = dataset['train_set_x'][:]
train_set_y_all = dataset['train_set_y'][:]

dataset.close()

p = np.random.permutation(len(train_set_x_all))[:2000]   # rand select 2000
train_set_x = train_set_x_all[p]   
train_set_y = train_set_y_all[p]

我仍然需要以某种方式获取完整集并使用索引数组 p 对其进行切片。这对我有用,因为随后的训练只适用于较小的集合。但我想知道是否还有更好的方法让我做到这一点,甚至根本不需要将完整的数据集保存在内存中。

标签: pythonnumpyh5py

解决方案


推荐阅读