为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 CNN Keras 中修复密集层的输入大小?

如何在 CNN Keras 中修复密集层的输入大小?

BIG阳 2021-12-26 14:35:26
我尝试使用 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)

这些是我能找到的最显着的错误。


查看完整回答
反对 回复 2021-12-26
  • 1 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信