【发布时间】:2017-06-10 22:06:09
【问题描述】:
我在使用 python 的 h5py 包时遇到了一个小问题。我正在使用存储在 hdf5 文件中的非常大的数据集(约 250k 小图像片段)作为尺寸为(num_images x color_channels x width x height)的数组
此数据集被随机分为训练数据和验证数据。因此,我需要在训练分类器时读出这些数据的随机元素。
对我来说,我发现了一个奇怪的发现,即加载整个数据集(所有 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文件的原因?
【问题讨论】: