在 pytorch 文档中,它说交叉熵损失:
输入必须是大小为 (minibatch, C) 的张量
这是否意味着对于二进制 (0,1) 预测,必须将输入转换为第二维等于 (1-p) 的 (N,2) 张量?
因此,例如,如果我预测目标为 1(真)的类的值为 0.75,我是否必须将两个值(0.75;0.25)堆叠在一起作为输入?
在 pytorch 文档中,它说交叉熵损失:
输入必须是大小为 (minibatch, C) 的张量
这是否意味着对于二进制 (0,1) 预测,必须将输入转换为第二维等于 (1-p) 的 (N,2) 张量?
因此,例如,如果我预测目标为 1(真)的类的值为 0.75,我是否必须将两个值(0.75;0.25)堆叠在一起作为输入?
在 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 中的二元预测,理想的损失函数将是二元交叉熵损失,它与 nn 子模块中的所有其他误差函数一起可用,可以如下调用
nn.BCELoss()
它具有参数缩减(均值和总和)和权重(预先确定的权重)。它的文档可以在这里找到
确保预测变量和目标变量的形状不同,并且它们都是浮点类型。