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

标签 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':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 需要输入形状(批大小、w、h、过滤器)。

需要在conv层前加一个reshape来拟合数据:

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

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

关于python - ValueError:输入 0 与层 conv2d_1 不兼容:预期 ndim=4,发现 ndim=3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53249386/

相关文章:

python - 为什么第一个卷积层权重在训练过程中不改变?

python - 来自 .meta .info .data 的 Tensorflow 卡住推理图和组合卡住推理图

python - 不可散列类型 : 'Dimension' in Keras LSTM

c# - 通过 C# 调用的 Python 在无限循环中不返回值

python - Django 注册表单中不区分大小写的用户名

tensorflow - 如何在 Tensorflow 中构建 Siamese 网络的输入管道?

python - 基于 Keras 中自定义指标的提前停止和学习率计划

python - 卷积神经网络中的 Keras 形状误差

python - Spark : Extracting summary for a ML logistic regression model from a pipeline model

Python:字典的分组和聚合列表[不带计数器]