【问题标题】:What loss function and metric should I use for multi-label classification in keras?我应该在 keras 中使用什么损失函数和度量来进行多标签分类?
【发布时间】:2020-11-22 08:08:34
【问题描述】:

模型的最终激活是 softmax。(在我的例子中,输出意味着重要性。) 我想选择前3名,然后我用 损失函数的分类交叉熵/度量的准确度。

例如: 预测:[0.44, 0.03, 0.01, 0.02, 0.30, 0.20] 真:[1, 0, 0, 0, 1, 1]

使用它们对吗?

【问题讨论】:

  • 很大程度上取决于您正在处理的数据以及您可以处理的准确度。一些数据给出了超过 80% 的良好准确度,而在一些数据中,您必须采用最好的数据。如果这是您的最佳选择,那么是的。
  • 是的,这是正确的
  • 哦,我觉得我应该将我的最终激活更改为 sigmoid。

标签: python tensorflow keras


【解决方案1】:

多标签分类使用什么损失函数和指标?

对于多标签分类问题,使用sigmoid不是softmax)。

对于损失函数,请使用tf.keras.losses.binary_crossentropy

例如,假设您有图片,XY 如果图片具有以下项目之一,则为 5 个布尔值:房子、人、气球,自行车,狗。如果一张图片可以有房子和狗,那么这确实是一个多标签分类,合适的输出应该是sigmoid

为了您的准确性,只需像这样使用“准确性”

model.compile(loss=tf.keras.losses.binary_crossentropy,
    optimizer='sgd',  # any optimizer you like
    metrics=['accuracy'] # <-- like so
    )

我不确定你想用前 3 名解决什么问题,但这可能对损失函数或准确性没有帮助。如果您尝试显示前三个预测标签,则可以使用来自 numpy 的 argmax 之类的内容进行帖子预测。

【讨论】:

    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 2020-09-04
    • 2018-10-27
    • 2019-04-05
    • 2020-03-14
    • 2021-01-06
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多