用户登录
用户注册

分享至

简单介绍pytorch中log_softmax的实现

  • 作者: 风轻云淡288
  • 来源: 51数据库
  • 2022-09-20
导读 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))
执行结果:

二者是相同的。所以以后想用的话,可以直接使用??log_softmax()??函数即可,就不用再分开搞了。

软件
前端设计
程序设计
Java相关