我正在处理音频数据。我正在使用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
答案 0 :(得分:0)
AFAIK pad_sequences
的目标是生成(num_samples, num_timesteps)
形状的2D Numpy数组,其中num_timesteps
是maxlen参数(如果提供),否则是最长序列的长度
那么为什么你需要填充一个已经是2D数组(填充)的数组?