Ошибка при проверке цели: ожидается, что плотность_2 будет иметь форму (7,), но получен массив с формой (4,) - PullRequest
0 голосов
/ 13 июня 2018

Я сделал классификатор 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

Почему возникает эта ошибка и как ее устранить? Я много раз проверял, но не могу найти ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...