Pytorch中的损失函数Loss Function

由于Pytorch中使用mini-batch进行计算,因此其损失函数的计算结果会对mini-batch取平均

常见的Pytorch中内置的损失函数有:

nn.L1Loss

计算input与output的差的绝对值,input与output应该是同一维度,得到的loss也是相应维度

nn.L1Loss

nn.NLLLoss

Negative Log Likelihood

class torch.nn.NLLLoss(weight=None, size_average=None, ignore_index=-100, 
					   reduce=None, reduction='mean')

常用于多分类任务。在NLLLoss输入input之前,我们需要对input进行log_softmax处理(即将input转换成概率分布的形式,并且取对数,底数为e)

计算公式

loss(input, class) = -input[class]

NLLLoss中如果传递了weight参数,会对损失进行加权,公式就变成了

loss(input, class) = -weight[class] * input[class]

nn.MSELoss

Mean Square Error

计算input与ouput之间的均方差

nn.MSELoss

nn.CrossEntropyLoss

多分类用的交叉熵损失合函数,将LogSoftMaxnn.NLLLoss集成到一个类中,nn.CrossEntropyLoss可以自动对input进行logSoftMax操作,可以理解为CrossEntropyLoss()=log_softmax() + NLLLoss()

nn.CrossEntropyLoss_1

传入weight参数后

nn.CrossEntropyLoss_2

一般多分类的情况会使用这个损失函数

nn.BCELoss

Binary Cross Entropy

计算input与output之间的二进制交叉熵

nn.BCELoss_1

添加weight后

nn.BCELoss

用的时候需要在该层前面加上 Sigmoid 函数

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus