Machine learning 实现卷积神经网络时Keras输入阵列的问题

Machine learning 实现卷积神经网络时Keras输入阵列的问题,machine-learning,deep-learning,keras,image-segmentation,keras-layer,Machine Learning,Deep Learning,Keras,Image Segmentation,Keras Layer,我试图在Keras中实现一个卷积神经网络,使用TF后端对111幅大小为141 x 166的图像进行图像分割。当我运行下面的代码时,会收到错误消息: 检查目标时出错:预期密集_36有2维,但得到了形状为(88、141、166、1)的数组 我的X_列变量是形状(88、141、166、1)和y_列变量。我的X_测试变量是形状(23、141、166、1)和y_测试变量,由sklearn的函数train_test_split分割 我不确定根据dense\u 36显示的错误消息的含义。在拟合模型之前,我尝试

我试图在Keras中实现一个卷积神经网络,使用TF后端对111幅大小为141 x 166的图像进行图像分割。当我运行下面的代码时,会收到错误消息:

检查目标时出错:预期密集_36有2维,但得到了形状为(88、141、166、1)的数组

我的X_列变量是形状(88、141、166、1)和y_列变量。我的X_测试变量是形状(23、141、166、1)和y_测试变量,由sklearn的函数train_test_split分割

我不确定根据dense\u 36显示的错误消息的含义。在拟合模型之前,我尝试过使用flatte()函数,但它说我的ndim=2,无法展平

# set input
batch_size = 111
num_epochs = 50
img_rows = 141
img_cols = 166
input_shape = (img_rows, img_cols, 1)
num_classes = img_rows*img_cols

# split training and test data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 4)
X_train = X_train.astype('float32')
X_test = X_train.astype('float32')

# CNN itself
model = Sequential()
model.add(Conv2D(32, kernel_size=(3,3), activation='relu', 
input_shape=input_shape))
model.add(Conv2D(64, (3,3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))

# compile CNN
model.compile(loss=keras.losses.categorical_crossentropy, 
optimizer=keras.optimizers.Adadelta(), metrics=['accuracy'])

# fit CNN
model.fit(X_train, y_train, batch_size=batch_size, epochs=num_epochs, 
verbose=1, validation_data=(X_test, y_test))
我的模型摘要是:

Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_35 (Conv2D)           (None, 139, 164, 32)      320       
_________________________________________________________________
conv2d_36 (Conv2D)           (None, 137, 162, 64)      18496     
_________________________________________________________________
max_pooling2d_18 (MaxPooling (None, 68, 81, 64)        0         
_________________________________________________________________
dropout_35 (Dropout)         (None, 68, 81, 64)        0         
_________________________________________________________________
flatten_28 (Flatten)         (None, 352512)            0         
_________________________________________________________________
dense_33 (Dense)             (None, 128)               45121664  
_________________________________________________________________
dropout_36 (Dropout)         (None, 128)               0         
_________________________________________________________________
dense_34 (Dense)             (None, 2)                 258       
_________________________________________________________________
Total params: 45,140,738
Trainable params: 45,140,738
Non-trainable params: 0
_________________________________________________________________
None

大家好,欢迎来到Stack Overflow,请花一点时间浏览“了解您在这里的道路”(以及赢得您的第一个徽章),阅读如何创建一个并进行检查,以增加获得反馈和有用答案的机会。您能为我们打印X_train的形状吗?代码和摘要并不完全一致。在代码中,您给出了最后一个致密层
img_rows*img_cols
,但在总结中,它是2?您好,欢迎来到Stack Overflow,请花点时间浏览一下,了解您在这里的道路(以及您的第一个徽章),阅读如何创建和检查,以增加获得反馈和有用答案的机会。能否为我们打印X_train的形状?代码和摘要并不完全一致。在代码中,您给出了最后一个密集层
img_rows*img_cols
,但在摘要中它是2?