pytorch中常用的損失函數(shù)用法說明
1. pytorch中常用的損失函數(shù)列舉
pytorch中的nn模塊提供了很多可以直接使用的loss函數(shù), 比如MSELoss(), CrossEntropyLoss(), NLLLoss() 等
官方鏈接: https://pytorch.org/docs/stable/_modules/torch/nn/modules/loss.html
損失函數(shù) | 名稱 | 適用場(chǎng)景 |
---|---|---|
torch.nn.MSELoss() | 均方誤差損失 | 回歸 |
torch.nn.L1Loss() | 平均絕對(duì)值誤差損失 | 回歸 |
torch.nn.CrossEntropyLoss() | 交叉熵?fù)p失 | 多分類 |
torch.nn.NLLLoss() | 負(fù)對(duì)數(shù)似然函數(shù)損失 | 多分類 |
torch.nn.NLLLoss2d() | 圖片負(fù)對(duì)數(shù)似然函數(shù)損失 | 圖像分割 |
torch.nn.KLDivLoss() | KL散度損失 | 回歸 |
torch.nn.BCELoss() | 二分類交叉熵?fù)p失 | 二分類 |
torch.nn.MarginRankingLoss() | 評(píng)價(jià)相似度的損失 | |
torch.nn.MultiLabelMarginLoss() | 多標(biāo)簽分類的損失 | 多標(biāo)簽分類 |
torch.nn.SmoothL1Loss() | 平滑的L1損失 | 回歸 |
torch.nn.SoftMarginLoss() | 多標(biāo)簽二分類問題的損失 |
多標(biāo)簽二分類 |
2. 比較CrossEntropyLoss() 和NLLLoss()
(1). CrossEntropyLoss():
torch.nn.CrossEntropyLoss(weight=None, # 1D張量,含n個(gè)元素,分別代表n類的權(quán)重,樣本不均衡時(shí)常用 size_average=None, ignore_index=-100, reduce=None, reduction='mean' )
參數(shù):
weight: 1D張量,含n個(gè)元素,分別代表n類的權(quán)重,樣本不均衡時(shí)常用, 默認(rèn)為None.
計(jì)算公式:
weight = None時(shí):
weight ≠ None時(shí):
輸入:
output: 網(wǎng)絡(luò)未加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: 網(wǎng)絡(luò)在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). 二者總結(jié)比較:
總之, CrossEntropyLoss() = softmax + log + NLLLoss() = log_softmax + NLLLoss(), 具體等價(jià)應(yīng)用如下:
####################---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)
補(bǔ)充:常用損失函數(shù)用法小結(jié)之Pytorch框架
在用深度學(xué)習(xí)做圖像處理的時(shí)候,常用到的損失函數(shù)無非有四五種,為了方便Pytorch使用者,所以簡(jiǎn)要做以下總結(jié)
1)L1損失函數(shù)
預(yù)測(cè)值與標(biāo)簽值進(jìn)行相差,然后取絕對(duì)值,根據(jù)實(shí)際應(yīng)用場(chǎng)所,可以設(shè)置是否求和,求平均,公式可見下,Pytorch調(diào)用函數(shù):nn.L1Loss
2)L2損失函數(shù)
預(yù)測(cè)值與標(biāo)簽值進(jìn)行相差,然后取平方,根據(jù)實(shí)際應(yīng)用場(chǎng)所,可以設(shè)置是否求和,求平均,公式可見下,Pytorch調(diào)用函數(shù):nn.MSELoss
3)Huber Loss損失函數(shù)
簡(jiǎn)單來說就是L1和L2損失函數(shù)的綜合版本,結(jié)合了兩者的優(yōu)點(diǎn),公式可見下,Pytorch調(diào)用函數(shù):nn.SmoothL1Loss
4)二分類交叉熵?fù)p失函數(shù)
簡(jiǎn)單來說,就是度量?jī)蓚€(gè)概率分布間的差異性信息,在某一程度上也可以防止梯度學(xué)習(xí)過慢,公式可見下,Pytorch調(diào)用函數(shù)有兩個(gè),一個(gè)是nn.BCELoss函數(shù),用的時(shí)候要結(jié)合Sigmoid函數(shù),另外一個(gè)是nn.BCEWithLogitsLoss()
5)多分類交叉熵?fù)p失函數(shù)
也是度量?jī)蓚€(gè)概率分布間的差異性信息,Pytorch調(diào)用函數(shù)也有兩個(gè),一個(gè)是nn.NLLLoss,用的時(shí)候要結(jié)合log softmax處理,另外一個(gè)是nn.CrossEntropyLoss
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)提取PDF簡(jiǎn)歷信息并存入Excel
作為人力資源部的小伙伴,常常需要把他人投遞的PDF簡(jiǎn)歷資料里的關(guān)鍵信息數(shù)據(jù),提取到excel表中匯總,這個(gè)時(shí)候用Python實(shí)現(xiàn)最合適, 快來學(xué)習(xí)一下如何實(shí)現(xiàn)吧2022-04-04python基礎(chǔ)之面對(duì)對(duì)象基礎(chǔ)類和對(duì)象的概念
這篇文章主要介紹了python面對(duì)對(duì)象基礎(chǔ)類和對(duì)象的概念,實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下2021-10-10關(guān)于pip的安裝,更新,卸載模塊以及使用方法(詳解)
下面小編就為大家?guī)硪黄P(guān)于pip的安裝,更新,卸載模塊以及使用方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05Python TCP通信客戶端服務(wù)端代碼實(shí)例
這篇文章主要介紹了Python TCP通信客戶端服務(wù)端代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11基于Pyinstaller打包Python程序并壓縮文件大小
這篇文章主要介紹了基于Pyinstaller打包Python程序并壓縮文件大小,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05