Python 如何为Keras和x27准备这些标签;那是什么?ValueError:预期稠密_14有4个维度

Python 如何为Keras和x27准备这些标签;那是什么?ValueError:预期稠密_14有4个维度,python,keras,conv-neural-network,Python,Keras,Conv Neural Network,我有一个包含30个nii图像和30个标签的数据集,如下所示: 1 1 2 1 3 1 4 1 5 1 6 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 26 2 27 2 28 2 29 2 30 2 但是当我将图像和标签

我有一个包含30个nii图像和30个标签的数据集,如下所示:

1     1
2     1
3     1
4     1
5     1
6     1
8     1
9     1
10    1
11    1
12    1
13    1
14    1
17    1
18    1
19    1
20    1
21    1
22    1
23    1
24    1
26    2
27    2
28    2
29    2
30    2
但是当我将图像和标签提供给这个网络时:

model_conv2d = Sequential()
model_conv2d.add(Conv2D(32, batch_size=30, kernel_size=(8,6), input_shape=(61, 61, 61)))
model_conv2d.add(MaxPooling2D())
model_conv2d.add(Conv2D(64, kernel_size=(8,6)))
model_conv2d.add(Dropout(0.2))
model_conv2d.add(Dense(1, activation="sigmoid"))
我得到这个错误:

ValueError: Error when checking target: expected dense_14 to have 4 dimensions, but got array with shape (25, 2)
我该怎么办?以下是我如何准备标签:

X_rs=X.重塑(30,-1)

你能告诉我我做错了什么吗


谢谢。

我认为您的问题来自
密集层。应用
密集
之前没有
展平
层,因此其输出形状为(批次大小,20,23,1)

因此,当您通过带有形状(批次大小,数字标签)的
y\u序列
(或
y\u测试
)时,会弹出错误,因为网络的输出形状是(批次大小,20,23,1)

您应该尝试以下方法:

model_conv2d=Sequential()
模型conv2d.add(conv2d(32,批处理大小=30,内核大小=(8,6),输入形状=(61,61,61)))
模型_conv2d.add(MaxPoolig2D())
模型conv2d.add(conv2d(64,内核大小=(8,6)))
模型_conv2d.add(展平())
模型_conv2d.add(辍学(0.2))
模型conv2d.add(密集(1,activation=“sigmoid”))
scaler = StandardScaler()
binarizer = OneHotEncoder()
X_scaled = scaler.fit_transform(X_rs)
y_binned = binarizer.fit_transform(y.values.reshape(-1, 1))
X_train = X_scaled[:25, :].reshape(25, 61, 61, 61)
y_train = y_binned[:25]
X_test = X_scaled[25:, :]
y_test = y_binned[25:]