我有一个带有软标签的图像数据集(即图像不属于单个类别,但我有一个概率分布,表明该图像有 66% 的机会属于一个类别,33% 的机会属于其他类别)班级)。
我正在努力弄清楚如何设置我的 PyTorch 代码以使其能够由模型表示并正确输出。概率保存在 csv 文件中。我查看了 PyTorch 文档和其他资源,其中提到了交叉熵损失函数,但我仍然不清楚如何成功导入数据并使用软标签。
你想要解决的是多标签分类任务,i.e.一次可以使用多个标签对实例进行分类。你不能使用torch.CrossEntropyLoss https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html因为它只允许单标签目标。所以你有两个选择:
-
要么使用软版本nn.CrossEntropyLoss https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html?highlight=cross%20entropy#torch.nn.CrossEntropyLoss函数,这可以通过手动实现损失来实现,允许软目标。您可以在以下位置找到这样的实现PyTorch 中的软交叉熵 https://stackoverflow.com/questions/68907809/soft-cross-entropy-in-pytorch/68914806#68914806.
-
或者将该任务视为多个“独立”二元分类任务,在这种情况下,您将使用nn.BCEWithLogitsLoss https://pytorch.org/docs/stable/generated/torch.nn.BCEWithLogitsLoss.html?highlight=bce#torch.nn.BCEWithLogitsLoss(该层包含一个sigmoid功能)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)