如何在pytorch中使用交叉熵损失进行二进制预测?

数据挖掘 火炬
2021-09-24 06:52:49

在 pytorch 文档中,它说交叉熵损失:

输入必须是大小为 (minibatch, C) 的张量

这是否意味着对于二进制 (0,1) 预测,必须将输入转换为第二维等于 (1-p) 的 (N,2) 张量?

因此,例如,如果我预测目标为 1(真)的类的值为 0.75,我是否必须将两个值(0.75;0.25)堆叠在一起作为输入?

3个回答

在 Pytorch 中,您可以将交叉熵损失用于二元分类任务。您需要确保模型的最后一层有两个神经元。确保不添加 softmax 函数。

使用以下资源:

https://discuss.pytorch.org/t/do-i-need-to-use-softmax-before-nn-crossentropyloss/16739

https://discuss.pytorch.org/t/why-does-crossentropyloss-include-the-softmax-function/4420

对于您的情况,pytorch 有一个特定的损失:

  • 只需使用二元交叉熵损失

请参阅此处此处的文档

因此,对于 Pytorch 中的二元预测,理想的损失函数将是二元交叉熵损失,它与 nn 子模块中的所有其他误差函数一起可用,可以如下调用

nn.BCELoss()

它具有参数缩减(均值和总和)和权重(预先确定的权重)。它的文档可以在这里找到

确保预测变量和目标变量的形状不同,并且它们都是浮点类型。