Armazenando uma matriz multidimensional de comprimento variável com o h5py
Estou tentando armazenar uma lista de matrizes de comprimento variável em um arquivo HDF com o seguinte procedimento:
phn_mfccs = []
# Import wav files
for waveform in files:
phn_mfcc = mfcc(waveform) # produces a variable length multidim array of the shape (x, 13, 1)
# Add MFCC and label to dataset
# phn_mfccs has dimension (len(files),)
# phn_mfccs[i] has variable dimension ([# of frames in ith segment] (variable), 13, 1)
phn_mfccs.append(phn_mfcc)
dt = h5py.special_dtype(vlen=np.dtype('float64'))
mfccs_out.create_dataset('phn_mfccs', data=phn_mfccs, dtype=dt)
Parece que meus tipos de dados não estão funcionando bem - em vez de cada elemento do conjunto de dados mfccs_out que contém uma matriz multidimensional, ele contém apenas uma matriz 1D. por exemplo. se o primeirophn_mfcc
Anexo originalmente tem dimensão(59,13,1)
, mfccs_out['phn_mfccs'][0]
tem dimensão(59,)
. Eu suspeito que é porque eu estou apenas usando um tipo de dados float64 e preciso de outra coisa para uma matriz de matrizes? Se eu não especificar o conjunto de dados ou tentar usardtype='O'
, porém, gera um erro como "O objeto dtype 'O' não possui equivalente HDF nativo".
Idealmente, o que eu gostaria émfccs_out['phn_mfccs'][i]
para conter o i-ésimophn_mfcc
que eu anexei à listaphn_mfccs
.