我想实现一个分类器,该分类器可以具有10个可能的类中的1个。我正在尝试使用MultiClass Softmax损失函数来做到这一点。浏览文档时,我不清楚该功能需要什么输入。
[文档说,它需要两个矩阵[N,C],其中一个是输入,另一个是目标。据我所知,输入矩阵将是我的神经网络要计算的那个矩阵,它具有神经网络给10个类别中每个类别的概率。目标是我从数据集中得到的目标。
文档说-“ Target(N,C)-用-1填充目标标签,确保与输入的形状相同。”这是什么意思?我是否在不正确的类中传递零,而在正确的类中传递-1?
如果有人能够详细说明并显示甚至可以作为目标矩阵传递的2d样本矩阵,那将是很好的。
[如果您知道每个示例中只有10个可能的类中的1个,则应使用CrossEntropyLoss
,将形状为CrossEntropyLoss
的网络预测和形状为[batch, n_classes]
的标签传递给[batch]
(每个元素标签的范围是0到n_classes-1
之间的整数。
您正在寻找的损失是针对每个示例可能属于多个类别(例如,一个人可以分为女性和老年人)的情况设计的。我认为正是这种“多重”使您感到困惑-它代表了多种可能的分类每个示例,而不仅仅是整个“宇宙”中的多个潜在标签。
在您似乎一直在思考的宇宙中,有两个或多个标签的意义,与CrossEntropyLoss
对应的是BCELoss
(BCE代表二进制交叉熵),这只是[ C0]对于两个标签。