Мой ответ обновлен 2020-08-03, чтобы отразить код, который вы добавили в свой вопрос. Как отметил @Tober, у вас заканчивается память. Чтение набора данных формы (20670, 224, 224, 3) станет списком сущностей 3.1G. Если вы прочитаете 3 набора изображений, потребуется еще больше оперативной памяти. Я предполагаю, что это данные изображения (возможно, 20670 изображений формы (224, 224, 3))? Если это так, вы можете читать данные в срезах как с h5py
, так и tables
(Pytables). Это вернет данные в виде массива NumPy, который вы можете использовать напрямую (нет необходимости манипулировать с другой структурой данных).
Basi c процесс будет выглядеть так:
with h5py.File(os.getcwd() + "/Results/Training_Dataset.hdf5",'r') as db:
training_db = db['data']
# loop to get images 1 by 1
for icnt in range(20670) :
image_arr = training_db [icnt,:,:,:}
# then do something with the image
Вы также можете прочитать несколько изображений, установив первый индекс в диапазон (скажем, icnt:icnt+100
), а затем соответствующим образом обработать цикл.