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

ValueError:输入 0 与层 conv2d_1 不兼容:

ValueError:输入 0 与层 conv2d_1 不兼容:

Qyouu 2021-08-14 19:31:55
在询问了已经提出的关于这个问题的问题之后,我继续提出它。我试图将字母从 A 分类到 D。所有输入图像都是 64x64 和灰色。我的CNN的第一层是:model = Sequential()model.add(Conv2D(32, (3,  3), input_shape = input_shape, activation = 'relu'))而且input_shape它来自何处:# Define the number of classesnum_classes = 4labels_name={'A':0,'B':1,'C':2,'D':3}img_data_list=[]labels_list=[]for dataset in data_dir_list:    img_list=os.listdir(data_path+'/'+ dataset)    print ('Loading the images of dataset-'+'{}\n'.format(dataset))    label = labels_name[dataset]    for img in img_list:    input_img=cv2.imread(data_path + '/'+ dataset + '/'+ img )          input_img=cv2.cvtColor(input_img, cv2.COLOR_BGR2GRAY)          input_img_resize=cv2.resize(input_img,(128,128))          img_data_list.append(input_img_resize)          labels_list.append(label)img_data = np.array(img_data_list)img_data = img_data.astype('float32')img_data /= 255print (img_data.shape)labels = np.array(labels_list)print(np.unique(labels,return_counts=True))#convert class labels to on-hot encodingY = np_utils.to_categorical(labels, num_classes)#Shuffle the datasetx,y = shuffle(img_data,Y, random_state=2)# Split the datasetX_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=2)#Defining the modelinput_shape=img_data[0].shapeprint(input_shape)
查看完整描述

2 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

Conv2d 需要输入形状(batchsize、w、h、过滤器)。

您需要在 conv 层之前添加一个 reshape 以适应数据:

 model.add(Reshape((64, 64, 1)))

这会将您的模型尺寸设置为 [None, 64,64,1] 并且对于 Conv2d 应该没问题。


查看完整回答
反对 回复 2021-08-14
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

当使用多层(卷积层和池化)时,CNN 模型需要一个维度更大的数据集。为了避免负维度问题,增加图像维度或减少 CNN 层数。有用..


查看完整回答
反对 回复 2021-08-14
  • 2 回答
  • 0 关注
  • 249 浏览
慕课专栏
更多

添加回答

举报

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