损失函数:衡量模型输出与真实标签的差异
class _Loss(Module):
def __init__(self, size_average=None, reduce=None,
reduction='mean'):
super(_Loss, self).__init__()
if size_average is not None or reduce is not None:
self.reduction = _Reduction.legacy_get_string(size_average, reduce)
else:
self.reduction = reduction
损失函数(Loss Function):Loss=f(y',y)
代价函数(Cost Function):
目标函数(Objective Function):Obj = Cost + Regularization
nn.CrossEntropyLoss(weight=None,size_average=None,ignore_index=-100,reduce=None,reduction=‘mean’‘)
主要参数:
• weight:各类别的loss设置权值
• ignore_index:忽略某个类别
• reduction :计算模式,可为none/sum/mean,none- 逐个元素计算,sum- 所有元素求和,返回标量,mean- 加权平均,返回标量
nn.NLLLoss(weight=None,size_average=None,ignore_index=-100,reduce=None,reduction='mean')
主要参数:
• weight:各类别的loss设置权值
• ignore_index:忽略某个类别
• reduction :计算模式,可为none/sum/mean,none- 逐个元素计算,sum- 所有元素求和,返回标量,mean- 加权平均,返回标量
nn.BCELoss(weight=None,size_average=None,reduce=None,reduction='mean’)
主要参数:
• weight:各类别的loss设置权值
• ignore_index:忽略某个类别
• reduction :计算模式,可为none/sum/mean,none- 逐个元素计算,sum- 所有元素求和,返回标量,mean- 加权平均,返回标量
nn.BCEWithLogitsLoss(weight=None,size_average=None,reduce=None, reduction='mean',
pos_weight=None)
主要参数:
• pos_weight :正样本的权值
• weight:各类别的loss设置权值
• ignore_index:忽略某个类别
• reduction :计算模式,可为none/sum/mean,none-逐个元素计算,sum-所有元素求和,返回标量,mean-加权平均,返回标量
注意:网络最后不加sigmoid函数
主要参数:
• reduction :计算模式,可为none/sum/mean,none- 逐个元素计算,sum- 所有元素求和,返回标量,mean- 加权平均,返回标量
主要参数:
• log_input :输入是否为对数形式,决定计算公式
• full :计算所有loss,默认为False
• eps :修正项,避免log(input)为nan
注意事项:需提前将输入计算 log-probabilities,如通过nn.logsoftmax()
主要参数:
• reduction :none/sum/mean/batchmean,none- 逐个元素计算
该方法计算两组数据之间的差异,返回一个n*n的 loss 矩阵。y = 1时, 希望x1比x2大,当x1>x2时,不产生loss;y = -1时,希望x2比x1大,当x2>x1时,不产生loss。
主要参数:
• margin :边界值,x1与x2之间的差异值
• reduction :计算模式,可为none/sum/mean
主要参数:
• reduction :计算模式,可为none/sum/mean
nn.MultiLabelSoftMarginLoss(weight=None,size_average=None, reduce=None, reduction='mean')
主要参数:
• weight:各类别的loss设置权值
• reduction :计算模式,可为none/sum/mean
nn.MultiMarginLoss(p=1, margin=1.0, weight=None,size_average=None, reduce=None,reduction='mean')
主要参数:
• p :可选1或2
• weight:各类别的loss设置权值
• margin :边界值
• reduction :计算模式,可为none/sum/mean
nn.TripletMarginLoss(margin=1.0, p=2.0, eps=1e-06,swap=False, size_average=None,reduce=None,reduction='mean')
主要参数:
• p :范数的阶,默认为2
• margin :边界值
• reduction :计算模式,可为none/sum/mean
nn.HingeEmbeddingLoss(margin=1.0, size_average=None,reduce=None, reduction='mean’)
主要参数:
• margin :边界值
• reduction :计算模式,可为none/sum/mean
特别注意:输入x应为两个输入之差的绝对值
nn.CosineEmbeddingLoss(margin=0.0, size_average=None,reduce=None, reduction='mean')
主要参数:
• margin :可取值[-1, 1] , 推荐为[0, 0.5]
• reduction :计算模式,可为none/sum/mean
torch.nn.CTCLoss( blank=0 , reduction='mean' , zero_infinity=False)
主要参数:
• blank :blank label
• zero_infinity :无穷大的值或梯度置0
• reduction :计算模式,可为none/sum/mean