Almacenamiento de matriz de longitud variable multidimensional con h5py
Estoy tratando de almacenar una lista de matrices de longitud variable en un archivo HDF con el siguiente procedimiento:
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)
Sin embargo, parece que mis tipos de datos no funcionan: en lugar de que cada elemento del conjunto de datos mfccs_out contenga una matriz multidimensional, contiene solo una matriz 1D. p.ej. si el primerophn_mfcc
Añado originalmente tiene dimensión(59,13,1)
, mfccs_out['phn_mfccs'][0]
tiene dimensión(59,)
. Sospecho que es porque solo estoy usando un tipo de datos float64 y necesito algo más para una matriz de matrices. Si no especifico el conjunto de datos o intento usardtype='O'
, sin embargo, escupe un error como "Tipo de objeto 'O' no tiene equivalente HDF nativo".
Idealmente, lo que me gustaría es paramfccs_out['phn_mfccs'][i]
para contener el ithphn_mfcc
que agregué a la listaphn_mfccs
.