nn.CrossEntropyLoss()函数计算交叉熵损失

用法:

# output是网络的输出,size=[batch_size, class]
#如网络的batch size为128,数据分为10类,则size=[128, 10]

# target是数据的真实标签,是标量,size=[batch_size]
#如网络的batch size为128,则size=[128]

crossentropyloss=nn.CrossEntropyLoss()
crossentropyloss_output=crossentropyloss(output,target)

注意,使用nn.CrossEntropyLoss()时,不需要现将输出经过softmax层,否则计算的损失会有误,即直接将网络输出用来计算损失即可

nn.CrossEntropyLoss()的计算公式为:
图片说明

其中x是网络的输出向量,class是真实标签

举个例子,一个三分类网络对某个输入样本的输出为[-0.7715, -0.6205,-0.2562],该样本的真实标签为0,则用nn.CrossEntropyLoss()计算的损失为:
图片说明