pytorch中交叉熵

关于pytorch中交叉熵的使用,pytorch的交叉熵是其loss function的一种且包含了softmax的过程。

pytorch中交叉熵函数是nn.CrossEntropyLoss()。其参数包括:weight,size_averaged,reduce

weight参数通常默认值是0,如果你的训练样本很不均衡的话,可以设置其值。

size_averaged参数是设置是否取均值,默认是对bach取均值,若设置为False就是对bach求和,这两种情况下损失函数输出的是一个标量

reduce是表示是否size_averaged起作用,默认为True,size_averaged起作用。设置为False,size_averaged不起作用,不求和也不求均值,输出一个向量。

 

 

此外要注意:input是二维的数据类型为FloatTensor,对应numpy的float32。而target是一维的,且为LongTensor,对应numpy的int64,也就是说target里面是

整数,代表各个类别。eg,input是shape是(2,3)那么target应该为[a1,a2],其中a1,a2范围是0-3(不包括3)的整数。

pytorch中交叉熵_第1张图片

计算原理:

我们举个栗子:input为[[1,2]],target是[1]。则:

loss=-input[1]+ln(e^input[0]+e^input[1])=-2+2.3133=0.3133

而当weight有值时计算公式是:

 

你可能感兴趣的:(pytorch,深度学习)