機(jī)器學(xué)習(xí)中的19 種損失函數(shù),你使用過幾種?
作者:mingo_敏
https://blog.csdn.net/shanglianlm/article/details/85019768
來自:深度學(xué)習(xí)自然語言處理
tensorflow和pytorch很多都是相似的,這里以pytorch為例。
1. L1范數(shù)損失 L1Loss
torch.nn.L1Loss(reduction='mean')reduction-三個(gè)值,none: 不使用約簡;mean:返回loss和的平均值;sum:返回loss的和。默認(rèn):mean。
torch.nn.MSELoss(reduction='mean')reduction-三個(gè)值,none: 不使用約簡;mean:返回loss和的平均值;sum:返回loss的和。默認(rèn):mean。

torch.nn.CrossEntropyLoss(weight=None,ignore_index=-100, reduction='mean')weight (Tensor, optional) – 自定義的每個(gè)類別的權(quán)重. 必須是一個(gè)長度為 C 的 Tensor ignore_index (int, optional) – 設(shè)置一個(gè)目標(biāo)值, 該目標(biāo)值會(huì)被忽略, 從而不會(huì)影響到 輸入的梯度。 reduction-三個(gè)值,none: 不使用約簡;mean:返回loss和的平均值;sum:返回loss的和。默認(rèn):mean。
torch.nn.KLDivLoss(reduction='mean')reduction-三個(gè)值,none: 不使用約簡;mean:返回loss和的平均值;sum:返回loss的和。默認(rèn):mean。
torch.nn.BCELoss(weight=None, reduction='mean')weight (Tensor, optional) – 自定義的每個(gè) batch 元素的 loss 的權(quán)重. 必須是一個(gè)長度為 “nbatch” 的 的 Tensor
torch.nn.BCEWithLogitsLoss(weight=None, reduction='mean', pos_weight=None)weight (Tensor, optional) – 自定義的每個(gè) batch 元素的 loss 的權(quán)重. 必須是一個(gè)長度 為 “nbatch” 的 Tensor
7 MarginRankingLoss
torch.nn.MarginRankingLoss(margin=0.0,?reduction='mean')
參數(shù):
margin:默認(rèn)值0
8 HingeEmbeddingLoss
torch.nn.HingeEmbeddingLoss(margin=1.0, reduction='mean')
參數(shù):
margin:默認(rèn)值1
9 多標(biāo)簽分類損失 MultiLabelMarginLoss
torch.nn.MultiLabelMarginLoss(reduction='mean')
10 平滑版L1損失 SmoothL1Loss
torch.nn.SmoothL1Loss(reduction='mean')
其中

11 2分類的logistic損失 SoftMarginLoss
torch.nn.SoftMarginLoss(reduction='mean')
12 多標(biāo)簽 one-versus-all 損失 MultiLabelSoftMarginLoss
torch.nn.MultiLabelSoftMarginLoss(weight=None, reduction='mean')
13 cosine 損失 CosineEmbeddingLoss
torch.nn.CosineEmbeddingLoss(margin=0.0, reduction='mean')
參數(shù):
margin:默認(rèn)值0
14 多類別分類的hinge損失 MultiMarginLoss
torch.nn.MultiMarginLoss(p=1, margin=1.0, weight=None, reduction='mean')
參數(shù):
p=1或者2 默認(rèn)值:1
margin:默認(rèn)值1
15 三元組損失 TripletMarginLoss

torch.nn.TripletMarginLoss(margin=1.0, p=2.0, eps=1e-06, swap=False, reduction='mean')
其中:

torch.nn.CTCLoss(blank=0, reduction='mean')reduction-三個(gè)值,none: 不使用約簡;mean:返回loss和的平均值;sum:返回loss的和。默認(rèn):mean。
torch.nn.NLLLoss(weight=None, ignore_index=-100, reduction='mean')weight (Tensor, optional) – 自定義的每個(gè)類別的權(quán)重. 必須是一個(gè)長度為 C 的 Tensor ignore_index (int, optional) – 設(shè)置一個(gè)目標(biāo)值, 該目標(biāo)值會(huì)被忽略, 從而不會(huì)影響到 輸入的梯度.
torch.nn.NLLLoss2d(weight=None, ignore_index=-100, reduction='mean')weight (Tensor, optional) – 自定義的每個(gè)類別的權(quán)重. 必須是一個(gè)長度為 C 的 Tensor reduction-三個(gè)值,none: 不使用約簡;mean:返回loss和的平均值;sum:返回loss的和。默認(rèn):mean。
torch.nn.PoissonNLLLoss(log_input=True, full=False, eps=1e-08, reduction='mean')log_input (bool, optional) – 如果設(shè)置為 True , loss 將會(huì)按照公 式 exp(input) - target * input 來計(jì)算, 如果設(shè)置為 False , loss 將會(huì)按照 input - target * log(input+eps) 計(jì)算. full (bool, optional) – 是否計(jì)算全部的 loss, i. e. 加上 Stirling 近似項(xiàng) target * log(target) - target + 0.5 * log(2 * pi * target). eps (float, optional) – 默認(rèn)值: 1e-8
評(píng)論
圖片
表情
