【问题标题】:How to perform multilabel classification in deep learning in keras?如何在 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% 确定 - 但总的来说 - 这不应该是会影响训练过程的数据量。

标签: machine-learning scikit-learn deep-learning keras


【解决方案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中找到更多详细信息。

【讨论】:

    猜你喜欢
    • 2018-10-19
    • 2017-05-20
    • 2019-06-30
    • 2019-09-13
    • 2019-04-13
    • 1970-01-01
    • 2018-10-25
    • 2015-07-08
    • 2017-06-11
    相关资源
    最近更新 更多