Keras 中具有二进制分类的多标签
Multilabel with binary classification in Keras
此时此刻,我正在使用 Keras、sci-kit learn 等进行图像分类
我会尽力解释所有的问题。
就像我之前说的,这是一个多标签的图像分类。
我的数据框包含 4000 个微观油样,标签代表当前样本中的一些颗粒。下面我举一个例子。
好吧,dataframe 中的所有图像都被标记了。想象一下,每个图像包含一个数组,其中包含 13 个值,已经是二进制的,当然,1 表示正值,0 表示负值。
例如
[0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0]
这意味着对于每个图像,可能有多个输出,在这种情况下,objective 是给 CNN 一个油样,可以 return 存在哪些颗粒在图像中。
不知道说的够不够清楚,不好意思,现在我来解释一下我真正的问题。
在我的 CNN 中,我已经将输出层设置为 13(根据每个图像中的标签数)。
我不知道为什么,但是当我训练模型时,预测的 Y return 只有一个值,例如:
Y predicted (sample 14): 3
Y predicted (sample 65): 11
我需要获得多输出的预测,例如:
Y predicted (sample 14): 3, 7, 9, 12
Y predicted (sample 65): 5, 8, 9, 11
我需要帮助来解决这个问题,因为我尝试了很长时间。如果有人知道这方面的策略,我将不胜感激。
提前致谢!
您的问题称为多标签class化。这意味着一次可以在模型的输出中出现多个 class,而不仅仅是一个。
给定一个预测向量,您可以通过应用阈值获得单个 classes:
thresh = 0.5
p = model.predict(some_input)
classes = []
for prob, idx in enumerate(p):
if prob > thresh:
classes.append(idx)
print(classes)
执行此操作后,您将获得具有不同 classes 的可变大小向量,如模型所预测的那样。阈值 (thresh) 是一个参数,您必须使用应用于每个 class 的二进制 classification 的性能指标来调整。您还可以为每个 class.
设置不同的阈值
您必须调整阈值。现在你将得到一个 0 和 1 的向量,其中 0 在
此时此刻,我正在使用 Keras、sci-kit learn 等进行图像分类
我会尽力解释所有的问题。 就像我之前说的,这是一个多标签的图像分类。 我的数据框包含 4000 个微观油样,标签代表当前样本中的一些颗粒。下面我举一个例子。
好吧,dataframe 中的所有图像都被标记了。想象一下,每个图像包含一个数组,其中包含 13 个值,已经是二进制的,当然,1 表示正值,0 表示负值。
例如
[0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0]
这意味着对于每个图像,可能有多个输出,在这种情况下,objective 是给 CNN 一个油样,可以 return 存在哪些颗粒在图像中。
不知道说的够不够清楚,不好意思,现在我来解释一下我真正的问题。
在我的 CNN 中,我已经将输出层设置为 13(根据每个图像中的标签数)。 我不知道为什么,但是当我训练模型时,预测的 Y return 只有一个值,例如:
Y predicted (sample 14): 3
Y predicted (sample 65): 11
我需要获得多输出的预测,例如:
Y predicted (sample 14): 3, 7, 9, 12
Y predicted (sample 65): 5, 8, 9, 11
我需要帮助来解决这个问题,因为我尝试了很长时间。如果有人知道这方面的策略,我将不胜感激。
提前致谢!
您的问题称为多标签class化。这意味着一次可以在模型的输出中出现多个 class,而不仅仅是一个。
给定一个预测向量,您可以通过应用阈值获得单个 classes:
thresh = 0.5
p = model.predict(some_input)
classes = []
for prob, idx in enumerate(p):
if prob > thresh:
classes.append(idx)
print(classes)
执行此操作后,您将获得具有不同 classes 的可变大小向量,如模型所预测的那样。阈值 (thresh) 是一个参数,您必须使用应用于每个 class 的二进制 classification 的性能指标来调整。您还可以为每个 class.
设置不同的阈值您必须调整阈值。现在你将得到一个 0 和 1 的向量,其中 0 在