У меня небольшая проблема с пакетом h5py от python. Я работаю с очень большими наборами данных (размером около 250 тыс. Фрагментов изображения), хранящимися в файле hdf5, в виде массива с размерами (num_images x color_channels x width x height)Увеличение скорости чтения для h5py
Этот набор данных случайным образом разделяется на обучение и проверку данные. Следовательно, мне нужно считывать случайные элементы этих данных при обучении моего классификатора.
Я сделал для меня странное открытие, что загрузка всего набора данных (все 250 тыс. Изображений) намного быстрее, чем чтение определенного подмножества этих данных. В частности, чтение всего массива как:
data = h5py.File("filename.h5", "r")["images"][:]
быстрее примерно на коэффициент 5, чем если бы я считанный только случайное, непоследовательное подмножество этих изображений (25k изображений):
indices = [3, 23, 31, 105, 106, 674, ...]
data = h5py.File("filename.h5", "r")["images"][indices, :, :, :]
Это по дизайну? Это связано с сжатием файла hdf5?