我应该在numpy数组上运行keras pad_sequence

时间:2018-06-19 09:19:34

标签: numpy keras

我正在处理音频数据。我正在使用soundfile包来加载音频,该包返回numpy.ndarray

我需要将样本填充到固定长度,以便我的神经网络可以处理它。我知道pad_sequences预处理步骤,但它接受列表列表,而不是ndarray

我可以通过执行

来运行该功能
keras.preprocessing.sequence.pad_sequences([sample.tolist() for sample in dataset])

但是这会将numpy数组转换为列表并返回。有没有更有效的方法来zeropad我的数据集?

import os                                                                      
import keras                                                                   
import soundfile as sf                                                         

train_dir = '../input/songs/songs'                                             
paths = [os.path.join(train_dir, x) for x in os.listdir(train_dir)]            
dataset = []                                                                   
for p in paths:                                                          
    audio, _ = sf.read(p)                                                      
    dataset.append(audio)                                                      

dataset = keras.preprocessing.sequence.pad_sequences([p.tolist() for p in dataset])
dataset.shape  

基准https://www.kaggle.com/morenoh149/pad-sequences-soundfile

1 个答案:

答案 0 :(得分:0)

AFAIK pad_sequences的目标是生成(num_samples, num_timesteps)形状的2D Numpy数组,其中num_timesteps是maxlen参数(如果提供),否则是最长序列的长度

那么为什么你需要填充一个已经是2D数组(填充)的数组?