我在使用Python的h5py包时遇到了一些小问题。我正在处理非常大的数据集(约250k个小图像片段),这些数据存储为一个数组,具有以下维度(num_images x color_channels x width x height)。
在将此数据随机分为训练和验证数据后,我需要在训练分类器时读取此数据的随机元素。
令我感到奇怪的是,加载整个数据集(所有250k个图像)比读取特定子集的数据要快得多。具体来说,将整个数组读取为:
这是设计上的问题吗?还是由于hdf5文件的压缩导致的?
在将此数据随机分为训练和验证数据后,我需要在训练分类器时读取此数据的随机元素。
令我感到奇怪的是,加载整个数据集(所有250k个图像)比读取特定子集的数据要快得多。具体来说,将整个数组读取为:
data = h5py.File("filename.h5", "r")["images"][:]
相对于我仅阅读25k个随机的非连续子集图片,阅读全部图片的速度大约快了5倍:
indices = [3, 23, 31, 105, 106, 674, ...]
data = h5py.File("filename.h5", "r")["images"][indices, :, :, :]
这是设计上的问题吗?还是由于hdf5文件的压缩导致的?