У меня есть гигантский тренировочный набор данных, который не помещается в ОЗУ.Я попытался загрузить случайную партию изображений в стек без загрузки всего .h5.Мой подход состоял в том, чтобы создать список индексов и перетасовать их, а не перетасовывать весь файл .h5.Допустим:
a = np.arange(2000*2000*2000).reshape(2000, 2000, 2000)
idx = np.random.randint(2000, size = 800) #so that I only need to shuffle this idx at the end of epoch
# create this huge data 32GBs > my RAM
with h5py.File('./tmp.h5', 'w') as f:
tmp = f.create_dataset('a', (2000, 2000, 2000))
tmp[:] = a
# read it
with h5py.File('./tmp.h5', 'r') as f:
tensor = f['a'][:][idx] #if I don't do [:] there will be error if I do so it will load whole file which I don't want
У кого-нибудь есть решение?