J'ai un problème mineur avec le paquet h5py de python. Je travaille avec des jeux de données très volumineux (environ 250k fragments d'image) stockés dans un fichier hdf5 sous forme de tableau avec les dimensions (num_images x color_channels x largeur x hauteur)Augmenter la vitesse de lecture pour h5py
Cet ensemble de données est séparé de façon aléatoire en formation et validation Les données. Par conséquent, j'ai besoin de lire des éléments aléatoires de ces données lors de la formation de mon classificateur.
J'ai fait la découverte bizarre que le chargement de l'ensemble des données (toutes les 250 000 images) est BEAUCOUP plus rapide que la lecture d'un sous-ensemble spécifique de ces données. Plus précisément, la lecture de l'ensemble du réseau en tant que:
data = h5py.File("filename.h5", "r")["images"][:]
est plus rapide d'un facteur de 5 que si je vous ai lu seulement un sous-ensemble aléatoire, non-séquentielle de ces images (25K images):
indices = [3, 23, 31, 105, 106, 674, ...]
data = h5py.File("filename.h5", "r")["images"][indices, :, :, :]
Est-ce intentionnel? Est-ce dû à la compression du fichier hdf5?