簡單介紹pytorch中log_softmax的實現

大雄45發表於2022-12-08
導讀 log_softmax 是計算損失的時候常用的一個函式,那麼這個函式的內部到底是怎麼做到的呢?這裡詳細的解釋一下。

寫程式碼前,回憶一下log_softmax的公式 − l o g e x p ( p j ) ∑ i e x p ( p i ) -log\frac{exp(p_j)}{\sum_{i}exp(p_i)} −log∑iexp(pi)exp(pj)

程式碼
'''自己實現log_softmax 函式
(1)使用torch.exp()函式計算各個logit的e次冪
(2)使用torch.sum()函式計算求和
(3)使用torch.log對比例求對數
可以發現,二者最終的結果是相同的
'''
import torch as t
import torch.nn.functional as F
logit = t.tensor([0.1,0.1,0.1,0.7])
a = t.exp(logit)
print("a=",a)
b = t.sum(a,dim=0,keepdim=True)
print("b=",b)
c=t.log(a/b)
print(c)
print(F.log_softmax(logit))
執行結果:

簡單介紹pytorch中log_softmax的實現簡單介紹pytorch中log_softmax的實現

二者是相同的。所以以後想用的話,可以直接使用log_softmax()函式即可,就不用再分開搞了。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2851360/,如需轉載,請註明出處,否則將追究法律責任。

相關文章