use*_*593 4 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)
Run Code Online (Sandbox Code Playgroud)
我不清楚这是否是正确的方法,因为我将概率作为交叉熵损失的输入。
Uma*_*pta 11
因此,您正在modelpytorch中训练具有交叉熵的 ie resnet。您的损失计算将如下所示。
logit = model(x)
loss = torch.nn.functional.cross_entropy(logits=logit, target=y)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以通过执行以下操作来计算所有类的概率,
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)
Run Code Online (Sandbox Code Playgroud)
请注意,如果您使用概率,则必须手动取 a log,这对于数字原因是不利的。取而代之的是,既可以使用log_softmax或cross_entropy在这种情况下,你可能最终计算使用交叉熵,并分别计算概率的损失。
| 归档时间: |
|
| 查看次数: |
6214 次 |
| 最近记录: |