我正在尝试编写如下代码:
x = Variable(torch.Tensor([[1.0,2.0,3.0]]))
y = Variable(torch.LongTensor([1]))
w = torch.Tensor([1.0,1.0,1.0])
F.cross_entropy(x,y,w)
w = torch.Tensor([1.0,10.0,1.0])
F.cross_entropy(x,y,w)
但是,无论w是什么,交叉熵损失的输出始终为1.4076。F.cross_entropy(( 的权重参数背后是什么?如何正确使用它?
我正在使用 pytorch 0.3
weight
参数用于根据目标类计算所有输入的加权结果。如果只有一个输入或同一目标类的所有输入,则weight
不会影响损失。
但是,查看不同目标类的 2 个输入的区别:
import torch
import torch.nn.functional as F
from torch.autograd import Variable
x = Variable(torch.Tensor([[1.0,2.0,3.0], [1.0,2.0,3.0]]))
y = Variable(torch.LongTensor([1, 2]))
w = torch.Tensor([1.0,1.0,1.0])
res = F.cross_entropy(x,y,w)
# 0.9076
w = torch.Tensor([1.0,10.0,1.0])
res = F.cross_entropy(x,y,w)
# 1.3167