Python 如何为Keras和x27准备这些标签;那是什么?ValueError:预期稠密_14有4个维度
我有一个包含30个nii图像和30个标签的数据集,如下所示: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 但是当我将图像和标签
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:]