Deep learning 如何使用pytorch从Resnet获取概率?

Deep learning 如何使用pytorch从Resnet获取概率?,deep-learning,conv-neural-network,pytorch,Deep Learning,Conv Neural Network,Pytorch,我正在对具有多个标签的数据集上的resnet进行微调 我想将分类层的“分数”转换为概率,并使用这些概率计算训练中的损失 你能给出一个例子代码吗? 我可以这样使用: P = net.forward(x) p = torch.nn.functional.softmax(P, dim=1) loss = torch.nn.functional.cross_entropy(P, y) 我不清楚这是否是正确的方法,因为我正在传递概率作为交叉熵损失的输入。因此,您

我正在对具有多个标签的数据集上的resnet进行微调

我想将分类层的“分数”转换为概率,并使用这些概率计算训练中的损失

你能给出一个例子代码吗? 我可以这样使用:

       P = net.forward(x)
       p = torch.nn.functional.softmax(P, dim=1)
       loss = torch.nn.functional.cross_entropy(P, y)

我不清楚这是否是正确的方法,因为我正在传递概率作为交叉熵损失的输入。

因此,您正在训练一个
模型,即在Pytork中使用交叉熵的resnet。您的损失计算如下所示

logit = model(x)
loss = torch.nn.functional.cross_entropy(logits=logit, target=y)
在这种情况下,您可以通过执行

logit = model(x)
p = torch.nn.functional.softmax(logit, dim=1)
# to calculate loss using probabilities you can do below 
loss = torch.nn.functional.nll_loss(torch.log(p), y)

请注意,如果使用概率,则必须手动获取
日志
,由于数字原因,这是不好的。相反,可以使用
log_softmax
交叉熵
,在这种情况下,您可能会分别使用交叉熵和计算概率来计算损失

我想把我的“分数”转换成概率,并用这些概率来计算训练中的损失。谢谢你的回答。我已经更新了问题。请看一看。