校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > pytorch中常用的損失函數用法說明

pytorch中常用的損失函數用法說明

熱門標簽:公司電話機器人 唐山智能外呼系統一般多少錢 海南400電話如何申請 騰訊外呼線路 哈爾濱ai外呼系統定制 陜西金融外呼系統 廣告地圖標注app 激戰2地圖標注 白銀外呼系統

1. pytorch中常用的損失函數列舉

pytorch中的nn模塊提供了很多可以直接使用的loss函數, 比如MSELoss(), CrossEntropyLoss(), NLLLoss() 等

官方鏈接: https://pytorch.org/docs/stable/_modules/torch/nn/modules/loss.html

pytorch中常用的損失函數
損失函數 名稱 適用場景
torch.nn.MSELoss() 均方誤差損失 回歸
torch.nn.L1Loss() 平均絕對值誤差損失 回歸
torch.nn.CrossEntropyLoss() 交叉熵損失 多分類
torch.nn.NLLLoss() 負對數似然函數損失 多分類
torch.nn.NLLLoss2d() 圖片負對數似然函數損失 圖像分割
torch.nn.KLDivLoss() KL散度損失 回歸
torch.nn.BCELoss() 二分類交叉熵損失 二分類
torch.nn.MarginRankingLoss() 評價相似度的損失
torch.nn.MultiLabelMarginLoss() 多標簽分類的損失 多標簽分類
torch.nn.SmoothL1Loss() 平滑的L1損失 回歸
torch.nn.SoftMarginLoss() 多標簽二分類問題的損失

多標簽二分類

2. 比較CrossEntropyLoss() 和NLLLoss()

(1). CrossEntropyLoss():

torch.nn.CrossEntropyLoss(weight=None,   # 1D張量,含n個元素,分別代表n類的權重,樣本不均衡時常用
                          size_average=None, 
                          ignore_index=-100, 
                          reduce=None, 
                          reduction='mean' )

參數:

weight: 1D張量,含n個元素,分別代表n類的權重,樣本不均衡時常用, 默認為None.

計算公式:

weight = None時:

weight ≠ None時:

輸入:

output: 網絡未加softmax的輸出

target: label值(0,1,2 不是one-hot)

代碼:

loss_func = CrossEntropyLoss(weight=torch.from_numpy(np.array([0.03,0.05,0.19,0.26,0.47])).float().to(device) ,size_average=True)
loss = loss_func(output, target)

(2). NLLLoss():

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

輸入:

output: 網絡在logsoftmax后的輸出

target: label值(0,1,2 不是one-hot)

代碼:

loss_func = NLLLoss(weight=torch.from_numpy(np.array([0.03,0.05,0.19,0.26,0.47])).float().to(device) ,size_average=True)
loss = loss_func(output, target)


(3). 二者總結比較:

總之, CrossEntropyLoss() = softmax + log + NLLLoss() = log_softmax + NLLLoss(), 具體等價應用如下:

####################---CrossEntropyLoss()---#######################
 
loss_func = CrossEntropyLoss()
loss = loss_func(output, target)
 
####################---Softmax+log+NLLLoss()---####################
 
self.softmax = nn.Softmax(dim = -1)
 
x = self.softmax(x)
output = torch.log(x)
 
loss_func = NLLLoss()
loss = loss_func(output, target)
 
####################---LogSoftmax+NLLLoss()---######################
 
self.log_softmax = nn.LogSoftmax(dim = -1)
 
output = self.log_softmax(x)
 
loss_func = NLLLoss()
loss = loss_func(output, target)

補充:常用損失函數用法小結之Pytorch框架

在用深度學習做圖像處理的時候,常用到的損失函數無非有四五種,為了方便Pytorch使用者,所以簡要做以下總結

1)L1損失函數

預測值與標簽值進行相差,然后取絕對值,根據實際應用場所,可以設置是否求和,求平均,公式可見下,Pytorch調用函數:nn.L1Loss

2)L2損失函數

預測值與標簽值進行相差,然后取平方,根據實際應用場所,可以設置是否求和,求平均,公式可見下,Pytorch調用函數:nn.MSELoss

3)Huber Loss損失函數

簡單來說就是L1和L2損失函數的綜合版本,結合了兩者的優點,公式可見下,Pytorch調用函數:nn.SmoothL1Loss

4)二分類交叉熵損失函數

簡單來說,就是度量兩個概率分布間的差異性信息,在某一程度上也可以防止梯度學習過慢,公式可見下,Pytorch調用函數有兩個,一個是nn.BCELoss函數,用的時候要結合Sigmoid函數,另外一個是nn.BCEWithLogitsLoss()

5)多分類交叉熵損失函數

也是度量兩個概率分布間的差異性信息,Pytorch調用函數也有兩個,一個是nn.NLLLoss,用的時候要結合log softmax處理,另外一個是nn.CrossEntropyLoss

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PyTorch的SoftMax交叉熵損失和梯度用法
  • Pytorch十九種損失函數的使用詳解
  • pytorch交叉熵損失函數的weight參數的使用
  • pytorch中交叉熵損失(nn.CrossEntropyLoss())的計算過程詳解
  • Python機器學習pytorch交叉熵損失函數的深刻理解

標簽:四川 上海 惠州 常德 鷹潭 黔西 黑龍江 益陽

巨人網絡通訊聲明:本文標題《pytorch中常用的損失函數用法說明》,本文關鍵詞  pytorch,中常,用的,損失,函數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch中常用的損失函數用法說明》相關的同類信息!
  • 本頁收集關于pytorch中常用的損失函數用法說明的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 中卫市| 苍梧县| 台东县| 兴化市| 栖霞市| 彭山县| 杭州市| 开封县| 漯河市| 平潭县| 平湖市| 开原市| 固镇县| 太仆寺旗| 全南县| 武乡县| 岳普湖县| 津市市| 安丘市| 乡城县| 梁山县| 嘉峪关市| 乐业县| 土默特左旗| 闽清县| 元江| 阳新县| 千阳县| 砀山县| 玉山县| 巴塘县| 文登市| 虞城县| 鹤壁市| 南平市| 沂南县| 吐鲁番市| 信阳市| 无极县| 桦川县| 波密县|