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

在询问了已经提出的关于这个问题的问题之后,我继续提出它。我试图将字母从 A 分类到 D。所有输入图像都是 64x64 和灰色。


我的CNN的第一层是:


model = Sequential()

model.add(Conv2D(32, (3,  3), input_shape = input_shape, activation = 'relu'))

而且input_shape它来自何处:


# Define the number of classes

num_classes = 4

labels_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 /= 255

print (img_data.shape)


labels = np.array(labels_list)

print(np.unique(labels,return_counts=True))


#convert class labels to on-hot encoding

Y = np_utils.to_categorical(labels, num_classes)


#Shuffle the dataset

x,y = shuffle(img_data,Y, random_state=2)


# Split the dataset

X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=2)


#Defining the model

input_shape=img_data[0].shape

print(input_shape)


Qyouu
浏览 250回答 2
2回答

繁华开满天机

Conv2d 需要输入形状(batchsize、w、h、过滤器)。您需要在 conv 层之前添加一个 reshape 以适应数据: model.add(Reshape((64, 64, 1)))这会将您的模型尺寸设置为 [None, 64,64,1] 并且对于 Conv2d 应该没问题。

蝴蝶刀刀

当使用多层(卷积层和池化)时,CNN 模型需要一个维度更大的数据集。为了避免负维度问题,增加图像维度或减少 CNN 层数。有用..
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python