简体   繁体   中英

ValueError: Input 0 is incompatible with layer conv2d_1: expected ndim=4, found ndim=3

After inquiring into the questions already asked about this problem, I keep presenting it. Im trying to classify letters from A to D. All input images are 64x64 and graycolor.

The first layer of my CNN is:

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

And input_shape it's coming from:

# 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)

Conv2d expects input of shape (batchsize, w, h, filters).

You need to add a reshape to fit the data before the conv layer:

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

This will set your model dimensions to [None, 64,64,1] and should be fine for Conv2d.

The CNN model needs a data set with dimensions greater when used multiple layer(Convolutional layers and pooling). To avoid the negative dimensional problems increase the image dimensions or reduce the CNN layers. It works..

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM