关于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)的整数。
计算原理:
我们举个栗子:input为[[1,2]],target是[1]。则:
loss=-input[1]+ln(e^input[0]+e^input[1])=-2+2.3133=0.3133
而当weight有值时计算公式是: