【问题标题】:Using Tensorflow for multi-label classification使用 TensorFlow 进行多标签分类
【发布时间】:2017-06-03 13:08:02
【问题描述】:

我有一个包含 5 个标签的多标签分类问题。如果我的输出层的形状为 [n_samples, n_labels=5] 并且损失函数为 tf.nn.sigmoid_cross_entropy_with_logits 是否正确?或者我应该有 [n_samples, n_labels=5, 2] 形状的输出层,其中 2 用于编码是否每个标签都分配给样本?

【问题讨论】:

  • 你打算如何使用多标签分类器?多标签分类器与多类分类器有很大不同。 Tensorflow 也有 sigmoid_cross_entropy 函数,它通常用于多标签分类,然后你要么学习某种阈值,要么使用恒定阈值来选择实例的标签。
  • 实际上我正在使用 tf.nn.sigmoid_cross_entropy_with_logits 因为这是适合多标签的一种,而 softmax 则适用于多类问题。我编辑了我的帖子。
  • 输出层的形状应该仍然是[n_samples, n_labels]
  • 那么,我应该使用阈值来决定是否分配标签吗?
  • 是的......你应该在分类器完成训练后进行阈值化

标签: tensorflow classification loss


【解决方案1】:

我认为输出层的形状应该是[n_samples, n_labels],并且当你使用tf.nn.softmax_cross_entropy_with_logits时,确保标签数组是one-hot的格式,另一个推荐的接口是tf.nn.sparse_softmax_cross_entropy_with_logits,哪些标签应该是n_labels的入口;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-14
    • 2019-09-24
    • 2016-05-09
    • 2016-01-18
    • 1970-01-01
    • 2021-10-04
    • 2020-12-12
    相关资源
    最近更新 更多