如何在 keras 中进行深度学习中的多标签分类?

Posted

技术标签:

【中文标题】如何在 keras 中进行深度学习中的多标签分类?【英文标题】:How to perform multilabel classification in deep learning in keras? 【发布时间】:2018-07-20 23:30:31 【问题描述】:

我想在 keras 中微调 vgg。我成功地完成了对水果图像进行分类的分类任务。假设我想要一个能够预测水果名称和水果颜色的模型。 我成功地训练了两种不同的模型来预测水果类型和颜色。但我想有一个可以同时执行的模型。我怎样才能做到这一点? 我可以使用这个解决方案吗:

How does Keras handle multilabel classification?

想到的另一个解决方案是使用 vgg 提取和存储特征,然后使用这些特征向量使用我比 keras 更熟悉的 sci-kit learn 执行多类多标签分类。但我主要对使用深度学习来执行整个事情感兴趣。 另一件事是并非所有图像都有所有标签,例如,某些图像可能没有水果颜色。我能做些什么呢?想到的一件事是从数据集中删除这些图像,但这也意味着我丢失了大约 2000 个训练数据。

【问题讨论】:

链接中提供的解决方案正是您正在寻找的。如果缺少数据 - 如果有 2 种情况 - 您可以尝试手动标记它。在排除的情况下 - 您的数据中有多少百分比没有完整的标签集? @MarcinMożejko 我大约 %5 的数据没有完整标签。感谢您的评论。 所以我不会打扰:) 不会影响预测结果吗?因为我使用 %20 的数据作为测试集,使用 %20 的训练集进行验证。 只有 5% - 所以你不能 100% 确定 - 但总的来说 - 这不应该是会影响训练过程的数据量。 【参考方案1】:

您必须对输出层使用 sigmoid 激活函数,并使用 binary_crossentropy 作为损失函数。

nn = Sequential()
nn.add(Dense(10, activation="relu", input_shape=(10,)))
nn.add(Dense(5, activation="sigmoid"))
nn.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

您可以在我前一阵子写的this article中找到更多详细信息。

【讨论】:

以上是关于如何在 keras 中进行深度学习中的多标签分类?的主要内容,如果未能解决你的问题,请参考以下文章

Keras中具有二进制分类的多标签

一个序列的多标签分类,怎么做?

深度学习进阶,Keras视频分类

使用深度学习处理文本分类中的嘈杂训练标签

Keras深度学习实战(10)——音频分类

Keras 中具有类权重的多标签分类