十九種損失函數(shù),你能認(rèn)識(shí)幾個(gè)?
點(diǎn)擊上方Python知識(shí)圈,設(shè)為星標(biāo)
回復(fù)1024獲取Python資料
閱讀文本大概需要 6 分鐘
作者:mingo_敏
zenRRan稍有有添加
鏈接:https://blog.csdn.net/shanglianlm/article/details/85019768
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
----------------------- 公眾號(hào):Python知識(shí)圈 博客:www.pyzhishiquan.com 知乎:Python知識(shí)圈 微信視頻號(hào):菜鳥程序員 (分享有趣的編程技巧、Python技巧) bilibili:菜鳥程序員的日常(目前原創(chuàng)視頻:22,累計(jì)播放量:85萬)
我的微信視頻號(hào)定時(shí)更新中,近期真人出鏡分析講解 Python 經(jīng)典習(xí)題,后續(xù)會(huì)分享更多的干貨,歡迎關(guān)注我的微信視頻號(hào)。
Python知識(shí)圈公眾號(hào)的交流群已經(jīng)建立,群里可以領(lǐng)取 Python 相關(guān)學(xué)習(xí)資料,大家可以一起學(xué)習(xí)交流,效率更高,如果是想發(fā)推文、廣告、砍價(jià)小程序的敬請繞道!一定記得備注「交流學(xué)習(xí)」,不然不會(huì)通過好友。
掃碼添加,備注:交流學(xué)習(xí)
往期推薦 01 02 03
我就知道你“在看” ![]()
評(píng)論
圖片
表情
