有没有一种方法可以重塑光谱图特征以与模型一起运行?

问题描述 投票:0回答:1

我正在从wav文件中提取频谱图特征,这给了我(128,128)个尺寸。当我将这些传递到我的2DCNN网络时,它需要重塑。我使用的重塑方式对我不起作用

我在Keras中尝试了不同的python方法。

#Feature Extraction:
data = pd.DataFrame(columns=['feature'])
for i in tqdm(range(len(data2_df))):
    y, sr= librosa.load(data2_df.path[i], res_type='kaiser_fast',duration=input_duration,sr=22050*2,offset=0.5)
    mfccs = librosa.feature.melspectrogram(y=y, sr=sr)
    feature = mfccs
    data.loc[i] = [feature]

#Reshaping
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=12)
X_train = np.array([x.reshape( (128, 128, 1) ) for x in X_train])
X_test = np.array([x.reshape( (128, 128, 1) ) for x in X_test])
#I get error over here that it can not be reshaped

#Model
from keras.layers import Activation, Dense, Dropout, Conv2D, \
                         Flatten, MaxPooling2D, Conv1D, GlobalAveragePooling1D, MaxPooling1D
model = Sequential()
input_shape=(128, 128, 1)



model.add(Conv2D(24, (5, 5), strides=(1, 1), input_shape=input_shape))
model.add(MaxPooling2D((4, 2), strides=(4, 2)))
model.add(Activation('relu'))

model.add(Conv2D(48, (5, 5), padding="valid"))
model.add(MaxPooling2D((4, 2), strides=(4, 2)))
model.add(Activation('relu'))

model.add(Conv2D(48, (5, 5), padding="valid"))
model.add(Activation('relu'))

model.add(Flatten())
model.add(Dropout(rate=0.5))

model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(rate=0.5))

model.add(Dense(25))
model.add(Activation('softmax'))
opt = keras.optimizers.SGD(lr=0.0001, momentum=0.0, decay=0.0, nesterov=False)

python numpy audio
1个回答
0
投票

访问https://github.com/rezachu/emotion_recognition_cnn/blob/master/CNN_emotion_recognition.ipynb

  1. 我正在使用链接上的代码,并希望将频谱图特征提取为上面发布的代码的第一块。
  2. 我想将其重塑为(128,128,1)第二个代码块
  3. 我想在链接的代码中使用2DCNN(代码的第三个块)。
© www.soinside.com 2019 - 2024. All rights reserved.