在tensorflow中处理multi-class multilabel classification时如何计算准确率?

How to calculate the accuracy when dealing with multi-class mutlilabel classification in tensorflow?

我正在使用来自 https://github.com/Microsoft/FERPlus 的 FER2013Plus 数据集,其中包含 fer2013new.csv 文件。该文件包含数据集中每个图像的标签。标签示例可以是:

(4, 0, 0, 2, 1, 0, 0, 3)

其中每个维度都是不同的情感。最后,在他们的论文 https://arxiv.org/pdf/1608.01041.pdf 中,他们将标签分布转换为概率 => 新标签将变为

(0.5, 0, 0, 0.25, 0.125, 0, 0, 0.375)

换句话说,图像中的人高兴的概率为0.5,悲伤的概率为0.25,依此类推......概率之和为1.

现在在训练时我使用 tf.nn.softmax_cross_entropy_with_logits_v2 来计算我的预测和标签之间的损失。现在如何计算准确率?

非常感谢任何帮助!!

这是论文的摘录:

"我们以多数情绪为单一 情绪标签,我们衡量预测准确性 大多数情绪。

他们正在使用离散分类任务。所以你只需要在你的 logits 上取 tf.argmax() 以获得最高概率,然后将其与标签的 tf.argmax() 进行比较。

例如,如果您的标签是 (0.5, 0, 0, 0.25, 0.125, 0, 0, 0.375),那么快乐是大多数情绪,那么您将检查您的 logits 是否也将快乐作为大多数情绪。