在pytorch中,如何使用F.cross_entropy()中的weight参数?

In pytorch, how to use the weight parameter in F.cross_entropy()?

我正在尝试编写如下代码:

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 参数用于根据目标 class 计算所有输入的加权结果。如果您只有一个输入或同一目标的所有输入 class,weight 不会影响损失。

然而,使用不同目标的 2 个输入可以看出差异 classes:

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