在keras中向图像分类器添加比图像更多的信息

2024-06-16 11:32:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用keras做一个图像分类器来预测乳腺癌的病例,在这之前我遇到了一些麻烦,因为它不是一个“简单”的分类器,我不能用keras的传统方法来做这件事。因此,我试图添加更多的信息,而不仅仅是一个图像,比如一个数组[图像,年龄,密度]。我在这方面是新手,所以我不知道是否有可能或者如何寻找正确的方法来做到这一点,我正在尝试这样做:

X = np.array(X) \\ the image

y = np.array(y) \\ an array with 1 or 0 (cancer or not)

z = np.array(z) \\ the density of the breast

\al数组对应于相同的病例,如X[0]是图像y[0],如果该病例是否为癌症,以及z[0]该病例的密度

model = Sequential()

model.add(Conv2D(64,(3,3), activation = 'relu'))
model.add(MaxPooling2D((2,2)))

model.add(Conv2D(64,(3,3), activation = 'relu'))
model.add(MaxPooling2D((2,2)))

model.add(Flatten())

model.add(Dense(128, input_shape = X.shape[1:],activation = 'relu'))
model.add(Dense(2,activation = 'softmax')) 
model.compile(optimizer = 'adam', loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])


model.fit(X,z,y, epochs = 20) // i actually don't know how to give the information to the model

这就是错误:

包含多个元素的数组的真值不明确。使用a.any()a.all()


Tags: orthe方法图像addmodel分类器np
1条回答
网友
1楼 · 发布于 2024-06-16 11:32:19

Fit不接受这样的参数。如果查看function definition,第一个参数是输入的,第二个是目标预测,第三个是批量大小

您应该做的是连接X和z(以及任何其他信息),因为它们都是输入数据。e、 g

Xz = np.concatenate((X, z[..., np.newaxis]), axis=-1)

注意:z[..., np.newaxis]获取一个大小为[H, W]的数组,并将其设置为[H, W, 1],以便您可以将其与X连接起来,我假设X是一个具有[H,W,3]形状的RGB图像。如果它是灰度的,就忽略它,简单地使用z

实际上,您需要的是具有维度[H、W、C]的输入,其中C是所有数据的维度,例如[红色、绿色、蓝色、年龄、密度等]。在网络设计中,将非图像信息(如年龄)注入网络的最后一层(例如,注入密集(128))可能更有意义

相关问题 更多 >