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()计算的损失为: