Deep learning 在pytorch中,如何使用F.cross_entropy()中的权重参数?

Deep learning 在pytorch中,如何使用F.cross_entropy()中的权重参数?,deep-learning,pytorch,cross-entropy,Deep Learning,Pytorch,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) 然而,交叉熵损失的输出总是1.4076无论w是什么。F.cross_熵()的权重

我正在尝试编写一些代码,如下所示:

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)
然而,交叉熵损失的输出总是1.4076无论w是什么。F.cross_熵()的权重参数后面是什么?如何正确使用它?

我正在使用pytorch 0.3

参数
weight
用于根据所有输入的目标类计算加权结果。如果您只有一个输入或同一目标类别的所有输入,
weight
不会影响损失

但是,请参见不同目标类别的2个输入的差异:

导入火炬
导入torch.nn.功能为F
从torch.autograd导入变量
x=变量(火炬张量([[1.0,2.0,3.0],[1.0,2.0,3.0]]))
y=变量(火炬长传感器([1,2]))
w=火炬张量([1.0,1.0,1.0])
res=F.交叉熵(x,y,w)
# 0.9076
w=火炬张量([1.0,10.0,1.0])
res=F.交叉熵(x,y,w)
# 1.3167

权重参数用于根据所有输入的目标类计算加权结果。如果您只有一个输入或同一目标类别的所有输入,
weight
不会影响损失

但是,请参见不同目标类别的2个输入的差异:

导入火炬
导入torch.nn.功能为F
从torch.autograd导入变量
x=变量(火炬张量([[1.0,2.0,3.0],[1.0,2.0,3.0]]))
y=变量(火炬长传感器([1,2]))
w=火炬张量([1.0,1.0,1.0])
res=F.交叉熵(x,y,w)
# 0.9076
w=火炬张量([1.0,10.0,1.0])
res=F.交叉熵(x,y,w)
# 1.3167

<代码> >我没有找到一个实际的表达式来显示权重是如何使用的,C++是很难破解的,任何线索我都能找到这些细节?@ Pixelou:你可以在 Trask.NN。我的缺点是,我读这个问题太快了,尽管它是关于二进制CE的。你仍然回答了我的问题;-):在您链接的python代码中,它显示后者在pytorch中使用点权重,而不是类权重。@pixelou:很高兴它能有所帮助!:)我没有找到一个实际的表达式来显示权重是如何使用的,C++是很难破解的,我能找到这些细节的线索吗?@ Pixelou:你可以在<代码> Trask.NN。我的缺点是,我读这个问题太快了,尽管它是关于二进制CE的。你仍然回答了我的问题;-):在您链接的python代码中,它显示后者在pytorch中使用点权重,而不是类权重。@pixelou:很高兴它能有所帮助!:)