Ошибка значения: Ввод 0 слоя sequential_2 несовместим со слоем: : ожидаемый min_ndim=4, найденный ndim=2. Полная форма получена: [Нет, 40]

#python #conv-neural-network #multilabel-classification

Вопрос:

Я построил модель многоуровневой классификации CNN для проекта классификации аудио. Когда я тестирую модель на звуковом образце, я получаю сообщение об ошибке, как вы можете видеть в нижней части кода. Формы X_train, X_test, y_train и y_test также представлены ниже:

 X_train.shape
(115, 40, 1)

X_test.shape
(78, 40, 1)

y_train.shape
(115, 10)

y_test.shape
(78, 10)

input_shape = np.array((X_train.shape[1], X_train.shape[2], 1))
print(input_shape.shape)    

model.add(Conv2D(16, (3, 3), activation='relu', strides=(1, 1), 
             padding='same', input_shape=input_shape))
model.add(Conv2D(32, (3, 3), activation='relu', strides=(1, 1), padding='same'))
model.add(MaxPooling2D((2,2), strides=(2,2), padding='same'))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5)) 
model.add(Dense(10, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['acc'])

filename = audio_files[1] 
audio, sample_rate = librosa.load(filename, res_type='kaiser_fast') 
mfccs_features = librosa.feature.mfcc(y=audio, sr=sample_rate, n_mfcc=40)
mfccs_scaled_features = np.mean(mfccs_features.T,axis=0)
print(mfccs_scaled_features)
mfccs_scaled_features=mfccs_scaled_features.reshape(1,-1)
print(mfccs_scaled_features)
print(mfccs_scaled_features.shape)
predicted_label=model.predict_classes(mfccs_scaled_features)
print(predicted_label)
prediction_class = labelencoder.inverse_transform(predicted_label) 
prediction_class

---> 10 predicted_label=model.predict_classes(mfccs_scaled_features)
ValueError: Input 0 of layer sequential_2 is incompatible with the layer: : expected 
min_ndim=4, found ndim=2. Full shape received: [None, 40]
 

Как я могу это исправить?