Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:输入0与层conv2d_1不兼容:预期ndim=4,发现ndim=3_Python_Tensorflow_Keras_Conv Neural Network_Valueerror - Fatal编程技术网

Python ValueError:输入0与层conv2d_1不兼容:预期ndim=4,发现ndim=3

Python ValueError:输入0与层conv2d_1不兼容:预期ndim=4,发现ndim=3,python,tensorflow,keras,conv-neural-network,valueerror,Python,Tensorflow,Keras,Conv Neural Network,Valueerror,在调查了关于这个问题已经提出的问题之后,我继续提出它。我正在尝试从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到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)

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

您需要在conv层之前添加重塑以适应数据:

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

这会将您的模型尺寸设置为[None,64,64,1],对于Conv2d应该可以。

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

输入形状的值是多少?
input形状=img形状数据[0]。形状和img形状数据来自
input形状=img形状数据[0]。形状