我正在微调具有多个标签的数据集上的resnet。
我想将分类层的“分数”转换为概率,并使用这些概率来计算训练时的损失。
您能为此提供示例代码吗? 我可以这样使用吗:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.windows.create({
height: 400,
width:400,
url: chrome.runtime.getURL("../popup.html"),
type: "popup"
});
});
我不清楚这是否是正确的方法,因为我正在传递概率作为交叉熵损失的输入。
答案 0 :(得分:3)
因此,您正在训练model
,即在pytorch中具有交叉熵的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
,这由于数字原因是不好的。而是使用log_softmax
或cross_entropy
,在这种情况下,您可能最终会使用交叉熵和计算概率来计算损失。