H5py: загрузка больших данных в HDF5 с использованием фрагментированного хранилищаPython

Программы на Python
Anonymous
H5py: загрузка больших данных в HDF5 с использованием фрагментированного хранилища

Сообщение Anonymous »


У меня есть 3072 матрицы размером 1024x1024, поэтому мой набор данных выглядит как 1024x1024x3072. Размер этих данных составляет 24 ГБ, что делает невозможным их загрузку в память, поэтому я собираюсь использовать метод хранения фрагментов HDF5, чтобы работать с фрагментами, загружаемыми в память (128x128x3072), чтобы я мог работать с ними. Дело в том, что мой код кажется крайне неэффективным, на создание HDF5-файла сегмента моих данных (1024х1024х300) уходит более 12 часов. Вот код, который я написал на данный момент

с h5py.File("FFT_Heights.h5", "w") как f: dset = f.create_dataset( "chunked", (1024, 1024, 300), chunks=(128, 128, 300), dtype='complex128' ) для ii в tqdm(диапазон(300)): dset[ii] = np.load(f'K поле {ii}.npy').astype('complex128') Как вы можете видеть в моем примере кода, я беру только 300 из 3072 матриц, потому что я пытаюсь убедиться, что код работает для меньшего набора данных, прежде чем запускать все данные. Кроме того, имейте в виду, что мои данные сложны, и воображаемая часть не должна быть нарушена при создании файла, поэтому я заранее устанавливаю dtype. Итак, суть в том, что проблема в скорости записи. Сгенерированный файл HDF5 построен правильно, я это проверил, но проблема в том, что мне нужно запустить этот код для 3072 изображений, и я хотел бы знать, есть ли способ сделать создание этого файла более эффективным (я также пробовал разные размеры фрагментов, но получил те же результаты в отношении скорости записи). Наконец, я работаю над Python. Заранее спасибо!

Вернуться в «Python»