PyTorch中的MultiLabel软保证金损失

问题描述 投票:0回答:1

我想实现一个分类器,该分类器可以具有10个可能的类中的1个。我正在尝试使用MultiClass Softmax损失函数来做到这一点。浏览文档时,我不清楚该功能需要什么输入。

[文档说,它需要两个矩阵[N,C],其中一个是输入,另一个是目标。据我所知,输入矩阵将是我的神经网络要计算的那个矩阵,它具有神经网络给10个类别中每个类别的概率。目标是我从数据集中得到的目标。

文档说-“ Target(N,C)-用-1填充目标标签,确保与输入的形状相同。”这是什么意思?我是否在不正确的类中传递零,而在正确的类中传递-1?

如果有人能够详细说明并显示甚至可以作为目标矩阵传递的2d样本矩阵,那将是很好的。

python pytorch loss-function softmax
1个回答
0
投票

[如果您知道每个示例中只有10个可能的类中的1个,则应使用CrossEntropyLoss,将形状为CrossEntropyLoss的网络预测和形状为[batch, n_classes]的标签传递给[batch](每个元素标签的范围是0到n_classes-1之间的整数。

您正在寻找的损失是针对每个示例可能属于多个类别(例如,一个人可以分为女性和老年人)的情况设计的。我认为正是这种“多重”使您感到困惑-它代表了多种可能的分类每个示例,而不仅仅是整个“宇宙”中的多个潜在标签。

在您似乎一直在思考的宇宙中,有两个或多个标签的意义,与CrossEntropyLoss对应的是BCELoss(BCE代表二进制交叉熵),这只是[ C0]对于两个标签。

© www.soinside.com 2019 - 2024. All rights reserved.