Как добавить данные в один конкретный набор данных в файле hdf5 с помощью h5py

Я ищу возможность добавить данные в существующий набор данных в файле .h5, используя Python (h5py).

Краткое введение в мой проект: я пытаюсь обучить Си-Эн-Эн, используя данные медицинских изображений. Из-за огромного объема данных и интенсивного использования памяти при преобразовании данных в массивы NumPy мне нужно было разделить «преобразование» на несколько фрагментов данных: загрузить и предварительно обработать первые 100 медицинских изображений и сохранить массивы NumPy в hdf5. файл, затем загрузите следующие 100 наборов данных и добавьте существующий файл .h5 и т. д.

Теперь я попытался сохранить первые 100 преобразованных массивов NumPy следующим образом:

import h5py
from LoadIPV import LoadIPV

X_train_data, Y_train_data, X_test_data, Y_test_data = LoadIPV()

with h5py.File('.\PreprocessedData.h5', 'w') as hf:
    hf.create_dataset("X_train", data=X_train_data, maxshape=(None, 512, 512, 9))
    hf.create_dataset("X_test", data=X_test_data, maxshape=(None, 512, 512, 9))
    hf.create_dataset("Y_train", data=Y_train_data, maxshape=(None, 512, 512, 1))
    hf.create_dataset("Y_test", data=Y_test_data, maxshape=(None, 512, 512, 1))

Как видно, преобразованные массивы NumPy разбиты на четыре разные «группы», которые хранятся в четырех hdf5 наборы данных [X_train, X_test, Y_train, Y_test]. Функция LoadIPV() выполняет предварительную обработку данных медицинского изображения.

Моя проблема в том, что я хотел бы сохранить следующие 100 массивов NumPy в том же файле .h5 в существующих наборах данных: это означает, что я хотел бы добавить, например, к существующему набору данных X_train формы [100, 512, 512, 9] со следующими 100 массивами NumPy, так что X_train приобретает форму [200, 512, 512, 9]. То же самое должно работать для других трех наборов данных X_test, Y_train и Y_test.

26
задан nbro 21 September 2019 в 19:55
поделиться