Como anexar dados a um conjunto de dados específico em um arquivo hdf5 com o h5py

Estou procurando uma possibilidade de acrescentar dados a um conjunto de dados existente dentro de um arquivo h5 usando python (h5py).

Uma breve introdução ao meu projeto: tento treinar uma CNN usando dados de imagens médicas. Devido à enorme quantidade de dados e ao uso intenso da memória durante a transformação dos dados em nparrays, eu precisava dividir a "transformação" em alguns blocos de dados -> Carregar e pré-processar as primeiras 100 imagens médicas e salvar os nparrays em hdf5 arquivo -> Carregue os próximos 100 conjuntos de dados e acrescente o arquivo h5 existente.

Agora, tentei armazenar os 100 primeiros nparrays transformados da seguinte maneira:

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))

Como pode ser visto, os nparrays transformados são divididos em quatro "grupos" diferentes que são armazenados nos quatro conjuntos de dados hdf5 [X_train, X_test, Y_train, Y_test]. A função LoadIPV () realiza o pré-processamento dos dados da imagem médica.

Meu problema é que eu gostaria de armazenar os próximos 100 nparrays no mesmo arquivo h5 nos conjuntos de dados existentes: Isso significa que eu gostaria de acrescentar, por exemplo, o conjunto de dados X_train existente [100,512,512,9] com os próximos 100 nparrays de modo que X_train se torne [200.512.512,9]. O mesmo deve funcionar para os outros três conjuntos de dados X_test, Y_train, Y_test.

Muito obrigado pela sua ajuda!

questionAnswers(1)

yourAnswerToTheQuestion