首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用pytorch从Resnet获取概率?

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

Stack Overflow用户
提问于 2018-07-12 01:36:43
回答 1查看 7.1K关注 0票数 4

我正在对我的数据集进行微调,它有多个标签。

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

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

代码语言:javascript
复制
       P = net.forward(x)
       p = torch.nn.functional.softmax(P, dim=1)
       loss = torch.nn.functional.cross_entropy(P, y)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-12 04:14:52

所以,你是在pytorch中训练一个具有交叉熵的model,即resnet。您的损失计算将如下所示。

代码语言:javascript
复制
logit = model(x)
loss = torch.nn.functional.cross_entropy(logits=logit, target=y)

在这种情况下,您可以通过执行以下操作来计算所有类的概率:

代码语言:javascript
复制
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,由于数字原因,这是不好的。相反,使用log_softmaxcross_entropy,在这种情况下,您可能最终使用交叉熵和计算概率分别计算损失。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51291353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档