创建Numpy数组或可变长度数组

时间:2018-05-31 04:01:03

标签: python numpy keras

我想创建一个Numpy数组或数组,其中每个子数组的形状为[128,audio_length,1],因此我可以将这个np数组提供给Keras.fit。但是我似乎无法弄清楚如何做到这一点,因为np.array只是抛出无法播放错误

def prepare_data(df, config, data_dir, bands=128):
    log_specgrams_2048 = []
    for i, fname in enumerate(df.index):
        file_path = data_dir + fname
        data, _ = librosa.core.load(file_path, sr=config.sampling_rate, res_type="kaiser_fast")
        melspec = librosa.feature.melspectrogram(data, sr=config.sampling_rate, n_mels=bands)
        logspec = librosa.core.power_to_db(melspec)  # shape would be [128, your_audio_length]
        logspec = logspec[..., np.newaxis]  # shape will be [128, your_audio_length, 1]
        log_specgrams_2048.append(normalize_data(logspec))
    return log_specgrams_2048

1 个答案:

答案 0 :(得分:0)

您必须按长度对序列进行分组并多次调用Keras.fit。

你可以这样做:

  • 桶装
  • 补零
  • 1号批次