Tensorflow 检查目标时出错:预期密集_2具有形状(7),但获得具有形状(4)的数组

Tensorflow 检查目标时出错:预期密集_2具有形状(7),但获得具有形状(4)的数组,tensorflow,neural-network,keras,convolutional-neural-network,Tensorflow,Neural Network,Keras,Convolutional Neural Network,我做了一个7节课的CNN分类器。我在这里训练一个序列模型 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*numPCAcomp

我做了一个7节课的CNN分类器。我在这里训练一个序列模型

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

为什么会出现此错误?如何解决此错误?我检查了很多次,但都找不到故障。

X_测试的形状是什么?似乎不正确。@matias X_测试的形状为1380X25X5X5,训练集的形状为107731X25X5X5。测试集中有四个类的成员。我想问题出在这里。你的测试呢?如果你训练了一个有7节课的模型,你不能只测试4节课,但我需要。那我该怎么办?即使是我的测试图像也只能有一个类@Matiasy你做不了多少,七班和四班到底是什么?它们是相关的,还是完全不同的?请添加更多详细信息。