日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pytorch中CrossEntropyLoss和NLLLoss的区别与联系

發(fā)布時間:2025/3/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pytorch中CrossEntropyLoss和NLLLoss的区别与联系 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

pytorch中CrossEntropyLoss和NLLLoss的區(qū)別與聯(lián)系

CrossEntropyLoss和NLLLoss主要是用在多分類問題的損失函數(shù),他們兩個既有不同,也有不淺的聯(lián)系。先分別看一下:

CrossEntropyLoss

稱為交叉熵損失函數(shù),主要的計算公式為:
loss(x,class)=?log(eclass∑j(ex[j]))loss(x,class)=-log(\frac{e^{class}}{\sum_j(e^{x[j]})})loss(x,class)=?log(j?(ex[j])eclass?)
其中eclasse^{class}eclass表示某個輸出的指數(shù),∑j(ex[j])\sum_j(e^{x[j]})j?(ex[j])表示所有輸出的指數(shù)的累加,指數(shù)的使用保證操作后的值大于0,除以累加和保證了所有值加起來和為1
具體的官方文檔:

NLLLoss

這個損失函數(shù)的全稱為負對數(shù)似然損失(The negative log likelihood loss),具體的公式如下:
l(x,y)=L={l1,l2,...,lN}T,ln=?WynXn,yn,Wc=weight[c]?1l(x,y)=L=\{l_1,l_2,...,l_N\}^T,l_n = -W_{y_n}X_{n,y_n},W_c = weight[c]*1l(x,y)=L={l1?,l2?,...,lN?}T,ln?=?Wyn??Xn,yn??,Wc?=weight[c]?1
其中X為輸入,W為權重,上述公式為reduction=none時的損失函數(shù)計算。WynW_{y_n}Wyn??就表示對應于yny_nyn?類的權重,X也是同樣的道理,N為batch size的大小。
f(n)={∑n=1N1∑n=1NWyn,if?reduction=?mean∑n=1Nln,if?reduction=?sumf(n)= \begin{cases} \sum_{n=1}^N\frac{1}{\sum_{n=1}^NW_{y_n}}, & \text {if $reduction$ = mean} \\ \sum_{n=1}^Nl_n, & \text{if $reduction$ = sum} \end{cases}f(n)={n=1N?n=1N?Wyn??1?,n=1N?ln?,?if?reduction?=?meanif?reduction?=?sum?
官方的文檔為:

區(qū)別

對于CrossEntropyLoss來說網(wǎng)絡的最后一層線性層的輸出可以直接作為該損失函數(shù)的輸入。
對于NLLLoss來說網(wǎng)絡的最后一層線性層的輸入不能直接使用,需要額外加一層.LogSoftmax來對線性的輸出做如下操作:
log(11+e(?X))log(\frac{{1}}{1+e^{(-X)}})log(1+e(?X)1?)
經(jīng)過LogSoftmax后的輸出作為NLLLoss的輸入。

聯(lián)系

從功能實現(xiàn)來說:
CrossEntropyLoss=LogSoftmax層+NLLLossCrossEntropyLoss = LogSoftmax層 + NLLLossCrossEntropyLoss=LogSoftmax+NLLLoss

在代碼編寫使用中的區(qū)別

總結

以上是生活随笔為你收集整理的pytorch中CrossEntropyLoss和NLLLoss的区别与联系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。