【问题标题】:Adding More information than a image to an image classifier in keras向 keras 中的图像分类器添加比图像更多的信息
【发布时间】:2021-07-19 23:18:55
【问题描述】:

我正在尝试使用 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

\所有数组对应于相同的情况,例如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()

【问题讨论】:

  • 我会转换成平面数组[pixel1, pixel2, ..., last_pixel, age, density]

标签: python tensorflow keras artificial-intelligence image-classification


【解决方案1】:

Fit 不采用这样的参数。如果你看function definition第一个参数是输入,第二个是目标预测,第三个是batch size。

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

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

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

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

【讨论】:

  • 感谢您的帮助,图像是 RGB,我试过这个:Xz = np.concatenate((X,z[np.newaxis,np.newaxis,np.newaxis]),axis= -1)但出现此错误:连接轴的所有输入数组维度必须完全匹配,但沿维度 0,索引 0 处的数组大小为 1000,索引 1 处的数组大小为 1
猜你喜欢
  • 2021-10-03
  • 2017-06-08
  • 2020-10-12
  • 1970-01-01
  • 2021-11-18
  • 2022-01-03
  • 2020-08-04
  • 2018-11-27
  • 1970-01-01
相关资源
最近更新 更多