Мне нужно сохранить три массива: 40000x2x128x128x128, 40000x128x128x128 и 40000x128x128x128 в один файл hdf5.Я использовал приведенный ниже код, чтобы случайным образом присвоить значение каждому массиву и записать его в файл hdf5.Тем не менее, у меня есть две проблемы:
Массив слишком велик, тогда он будет иметь ошибку памяти.Я не могу запустить все итерации из-за ошибки памяти.Как мы можем это исправить?
Вывод hdf5 слишком большой, около 40 ГБ.Как мы можем загрузить его в оперативную память?Потому что каждый раз я просто случайно выбираю какую-то позицию в массиве для обработки
Это мой код
var_1_h5 = np.zeros((4000 *10, 2, 128,128,128),dtype=np.float32)
var_2_h5 = np.zeros((4000 *10, 128,128,128),dtype=np.float32)
var_3_h5 = np.zeros((4000 *10, 128,128,128),dtype=np.uint8)
for i in range (1, 10):
for j in range (4000):
var_1 = np.random.randn(2, 128,128,128)
var_2 = np.random.randn(128,128,128)
var_3 = np.random.randint(128,128,128)
var_1_h5[j]=var_1
var_2_h5[j]=var_2
var_3_h5[j]=var_3
with h5py.File('var.h5', 'w') as f:
f['var_1'] = var_1_h5
f['var_2'] = var_2_h5
f['var_3'] = var_3_h5