在确定检测任务和模型构建完成后,随之需要对训练的准则Criterion进行实现,可称之为损失函数或代价函数,简明而言,训练过程中真实值和计算值的误差。
分割常见的损失函数如下
cross entropy loss:交叉熵,通用于不同类样本量在一个量级的任务;focal loss:交叉熵的改进版本,增加两个权重,聚焦不平衡样本任务;dice loss:样本极不平衡可用,反向梯度值太大,训练不稳定;iou loss:较多见于目标检测任务的回归任务;cross entropy loss
小拓展: md写公式需要单元:,
;
方法一,直接调用函数
seg_loss = torch.nn.CrossEntropyLoss()方法二,根据公式实现
class SimpleCrossEntropyLoss(nn.Module): # H(p,p)=p*log(q) def __init__(self): super().__init__() self.logsoftmax_func = nn.LogSoftmax(dim=1) # torch.log(torch.nn.Softmax(dims=1)(inputs)) self.nllloss_func = nn.NLLLoss() pass def forward(self, inputs, target): x = self.logsoftmax_func(inputs) loss = self.nllloss_func(x, target) return loss pass seg_loss = SimpleCrossEntropyLoss()pytorch实现流程
nn.NLLLoss()实现举例
令 ,一维二维计算示例如下。
一维nllloss计算过程
二维nllloss计算过程