婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 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中常用的損失函數用法說明的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 乌苏市| 临清市| 沧源| 沂南县| 辛集市| 志丹县| 渭源县| 彭山县| 皮山县| 晋城| 平乡县| 达州市| 安乡县| 武汉市| 阿图什市| 西乡县| 林口县| 罗江县| 伊金霍洛旗| 临江市| 民丰县| 斗六市| 南涧| 和政县| 航空| 卢湾区| 平舆县| 江达县| 乃东县| 德化县| 永兴县| 新河县| 郸城县| 津市市| 阿拉尔市| 昌乐县| 昭平县| 满城县| 长沙县| 乡城县| 历史|