Я сделал классификатор CNN из 7 классов.Я тренирую последовательную модель, здесь
model = Sequential()
model.add(Conv2D(C1, (3, 3), activation='relu', input_shape=input_shape))
model.add(Conv2D(3*C1, (3, 3), activation='relu'))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(6*numPCAcomponents, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(7, activation='softmax'))
Затем я собираю модель:
sgd = SGD(lr=0.0001, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
Затем оцениваю тестовый набор, используя эту модель.Проблема здесь.Когда я запускаю функцию mode.evaluate, появляется эта ошибка:
Error when checking target: expected dense_2 to have shape (7,) but got array with shape (4,)
Способ оценки здесь:
Y_pred = model.predict(X_test)
y_pred = np.argmax(Y_pred, axis=1)
target_names = ['A','B','C','D','E','F','G']
classification = classification_report(np.argmax(y_test, axis=1), y_pred, target_names=target_names)
confusion = confusion_matrix(np.argmax(y_test, axis=1), y_pred)
score = model.evaluate(X_test, y_test, batch_size=32)
Test_Loss = score[0]*100
Test_accuracy = score[1]*100
Почему возникает эта ошибка и как ее устранить? Я много раз проверял, но не могу найти ошибку.