【发布时间】:2018-01-16 12:40:32
【问题描述】:
我是深度学习的初学者,正在尝试通过对数据集执行音频分析来练习在 Python 中实现神经网络。我一直在关注Urban Sound Challenge 教程并完成了训练模型的代码,但是在尝试在测试集上运行模型时一直遇到错误。
这是我创建模型和训练的代码:
import numpy as np
from sklearn.preprocessing import LabelEncoder
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
num_labels = y.shape[1]
filter_size = 2
model = Sequential()
model.add(Dense(256, input_shape = (40,)))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_labels))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', metrics=['accuracy'], optimizer='adam')
model.fit(X, y, batch_size=32, epochs=40, validation_data=(val_X, val_Y))
在拟合模型之前运行 model.summary() 给了我:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_3 (Dense) (None, 256) 10496
_________________________________________________________________
activation_3 (Activation) (None, 256) 0
_________________________________________________________________
dropout_2 (Dropout) (None, 256) 0
_________________________________________________________________
dense_4 (Dense) (None, 10) 2570
_________________________________________________________________
activation_4 (Activation) (None, 10) 0
=================================================================
Total params: 13,066
Trainable params: 13,066
Non-trainable params: 0
_________________________________________________________________
拟合模型后,我尝试在一个文件上运行它,以便它可以对声音进行分类。
file_name = ".../UrbanSoundClassifier/test/Test/5.wav"
test_X, sample_rate = librosa.load(file_name,res_type='kaiser_fast')
mfccs = np.mean(librosa.feature.mfcc(y=test_X, sr=sample_rate, n_mfcc=40).T,axis=0)
test_X = np.array(mfccs)
print(model.predict(test_X))
但是,我明白了
ValueError: Error when checking : expected dense_3_input to have shape
(None, 40) 但得到了形状为 (40, 1) 的数组
是否有人愿意指出我应该如何测试模型的正确方向?我不知道model.predict() 的输入应该是什么。
完整代码可以在here找到。
【问题讨论】:
-
您检查过训练和测试音频文件的形状吗?包括
sample_rate。它们必须相同,否则您需要将 test 转换为与 train 相同。 -
您的
test_X必须与您用于训练的X的类型(包括形状)完全相同 -
在您的 X 和 val_X 中,您有一个额外的“batch_size”列,您的 test_X 中缺少该列。使用 Marcin stackoverflow.com/a/48239160/4132383 或 np.expand_dims(test_X, axis=0) 的解决方案
标签: python audio machine-learning neural-network keras