【发布时间】:2019-07-14 10:04:16
【问题描述】:
目前,我正在使用 Keras、sci-kit learn 等进行图像分类。
我会尽力解释所有问题。 就像我之前说的,这是一个多标签的图像分类。 我的数据框包含 4000 个微观油样,标签代表当前样本中的一些颗粒。下面我举一个例子。
好吧,数据框中的所有图像都已标记。想象一下,每张图片都包含一个包含 13 个值的数组,这些值已经是二进制的,当然,1 表示正,0 表示负。
例如
[0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0]
这意味着对于每张图像,可以有多个输出,在这种情况下,目标是给 CNN 一个油样,这可以返回图像中存在的粒子。
我不知道是否足够清楚,抱歉,现在我将解释我的真正问题。
在我的 CNN 中,我已经将输出层设置为 13(根据每个图像中的标签数量)。 我不知道为什么,但是当我训练模型时,预测的 Y 只返回一个值,例如:
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
我需要帮助来解决这个问题,因为我尝试了很长时间。如果有人知道这方面的策略,我将不胜感激。
提前致谢!
【问题讨论】:
-
能否提供模型摘要?
-
@Pusheen_the_dev 是的pastebin.com/raw/nJputnuE 抱歉,如果有点乱,我只是测试了一些 Convs 和 MaxPooling。但是即使进行了更改,我也没有得到预期的结果,我有点失落
-
谢谢。你用什么作为损失?你是如何做出预测的?
-
使用二元交叉熵...对于我使用“predict_classes”的预测,我也已经只使用了预测。
-
错误是使用了“predict_classes”,如果我没记错的话,它会返回出现最大值的索引。你应该使用“预测”。你应该把你的损失改成mae或mse
标签: python keras neural-network multilabel-classification