如何使用 PyTorch 在计算机视觉中使用软标签?

How to use soft labels in computer vision with PyTorch?

我有一个带有软标签的图像数据集(即图像不属于单个 class,而是我有一个概率分布表明这张图像有 66% 的机会属于一个 class 并且它有 33% 的几率属于其他 class).

我正在努力弄清楚如何设置我的 PyTorch 代码以允许它由模型表示并正确输出。概率保存在 csv 文件中。我查看了 PyTorch 文档和其他提到交叉熵损失函数的资源,但我仍然不清楚如何成功导入数据并使用软标签。

您要解决的是一项多标签分类任务, 个实例一次可以用多个标签进行分类。您不能使用 torch.CrossEntropyLoss 因为它只允许单标签目标。所以你有两个选择:

  • 要么用软版的nn.CrossEntropyLoss function, this can be done by implementing the loss by hand allowing for soft targets. You can find such implementation on Soft Cross Entropy in PyTorch.

  • 或者考虑任务是多个“独立”的二元分类任务,在这种情况下,你会使用nn.BCEWithLogitsLoss(这一层包含一个sigmoid 函数)。