我尝试使用 keras 构建人脸识别模型。我有带有主题名称和特征的图像(深度学习用的不多,我知道,但我很快就会得到更多)但是当我尝试拟合我的数据时,我收到了这个错误:ValueError:检查目标时出错:预期dense_2有2维,但得到的数组形状为(3, 243, 320, 3)我试图将损失函数从 更改sparse_categorical_crossentropy为categorical_crossentropy。使用 keras 的“to_categorical”功能进行单热编码标签但它不会工作这是我如何用图像和标签填充我的列表###### fill with imagesfor i in range(0,num_classes):k=0for j in range(len(features)): k+=1 if(i < 10): sub = "subject0"+str(i)+"."+features[j]+".png" else: sub = "subject"+str(i)+"."+features[j]+".png" imgfile = Image.open(sub) img = np.array(imgfile) #print(img.shape) #print(type(img)) if(k != 3): train.append(img) train_labels.append(i) else : test.append(img) test_labels.append(i)########## train train = np.asarray(train)train_labels = np.asarray(train_labels)########## test test = np.asarray(test)test_labels = np.asarray(test_labels)我的班级现在是3个!(1个班是一个科目)以下是如何重塑和规范化图像。# Reshape 243x320 pixels, 1 channel (B/W)train = train.reshape(train.shape[0], img_rows, img_cols, 1)# Reshape 243x320 pixels, 1 channel (B/W)test = test.reshape(test.shape[0], img_rows, img_cols, 1)# Normalize pixel values: [0-255] --> [0.0-1.0]train, test = train / 255.0, test / 255.0# One-hot encode labelstest = to_categorical(test, num_classes)test_labels = to_categorical(test_labels, num_classes)我建立了一个简单的 CNN 模型######### build cnn modelsmodel = Sequential()model.add(Conv2D(32, kernel_size=(5, 5), padding='same', activation='relu', input_shape=(img_rows,img_cols,1)))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Conv2D(32, (3, 3), padding='same', activation='relu'))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Flatten())model.add(Dense(128, activation='relu'))model.add(Dense(num_classes, activation='softmax'))model.compile( optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])我认为问题是我的模型中的一个层的输出。我试图移动flatten,但没有奏效。谢谢你的帮助 !
1 回答
慕森王
TA贡献1777条经验 获得超3个赞
这test = to_categorical(test, num_classes)
应该是,train_labels = ...
而您的model.fit(...)
电话应该是model.fit(train, train_labels)
。
这些是我能找到的最显着的错误。
添加回答
举报
0/150
提交
取消