当前位置: 首页 > news >正文

torch.nn.functional.log_softmax 函数解析

该函数将输出向量转化为概率分布,作用和softmax一致。

相比softmax,对较小的概率分布处理能力更好。

一、定义

softmax 计算公式:

\text{softmax}(x_i) = \frac{e^{x_i}}{\sum_{j=1}^n e^{x_j}}

log_softmax 计算公式:

\text{log\_softmax}(x_i) = \log\left(\frac{e^{x_i}}{\sum_{j=1}^n e^{x_j}}\right) = x_i - \log\left(\sum_{j=1}^n e^{x_j}\right)

可见仅仅是将 softmax 最外层套上 log 函数。

二、使用场景

log_softmax 相比 softmax,对较小的概率分布处理能力更好。

例如向量 \mathbf{x}=\left ( -999,1,2,5,6 \right ),使用softmax处理后,得到的概率分布如下:

\left ( 0.0000, 0.0048, 0.0131, 0.2641, 0.7179 \right )

使用 log_softmax 之后得到的概率分布如下:

\left ( -1.0053e+03, -5.3314e+00, -4.3314e+00, -1.3314e+00, -3.3141e-01 \right )

可见使用 softmax ,第一个数直接变0,当经过一次迭代 \mathbf{x}=\left ( -990,1.5,2.1,5.6,6.8 \right )之后,使用 softmax 得到的概率分布第一个元素仍为0,因此求得梯度为0,这个数据就不能用于更新参数,而使用 log_softmax  可解决此问题。

因此,log_softmax与softmax的区别在于输出的形式不同,softmax输出的是概率分布,而log_softmax输出的是对数概率分布。

在实际应用中,log_softmax通常用于计算损失函数,而softmax则用于预测[1]。

参考资料:

[1] log_softmax与softmax的区别_编程设计_ITGUEST

 

http://www.lryc.cn/news/234136.html

相关文章:

  • jQuery、vue、小程序、uni-app中的本地存储数据和接受数据是什么?
  • 黑马React18: 基础Part 1
  • windows Oracle Database 19c 卸载教程
  • 动态规划解决leetcode上的两道回文问题(针对思路)
  • 使用人工智能自动测试 Flutter 应用程序
  • 四、程序员指南:数据平面开发套件
  • Go 之 captcha 生成图像验证码
  • 【Java从入门到大牛】多线程
  • UE5 C++报错:is not currently enabled for Live Coding
  • mysql服务器数据同步
  • Docker Golang 开发环境搭建指南
  • MFC保存窗口客户区为图片
  • JAVA安全之Shrio550-721漏洞原理及复现
  • 有Mac或无Mac电脑通用的获取安卓公钥的方案
  • 电池故障估计:Realistic fault detection of li-ion battery via dynamical deep learning
  • 微服务和Spring Cloud Alibaba介绍
  • 【js】 lodash命名转换和封装
  • RK3568驱动指南|第七篇 设备树-第67章 of操作函数实验:获取属性
  • vue3安装vue-router
  • 〖大前端 - 基础入门三大核心之JS篇㊱〗- JavaScript 的DOM节点操作
  • 【计算机基础】优雅的PPT就应该这样设计
  • Vatee万腾的科技征程:Vatee数字化创新的前沿探讨
  • 【PB续命05】WinHttp.WinHttpRequest的介绍与使用
  • 【Linux】进程间是这样通信的--管道篇
  • Python基础入门例程60-NP60 跳过列表的某个元素(循环语句)
  • 三十二、W5100S/W5500+RP2040树莓派Pico<UPnP示例>
  • 2023.11.18 Hadoop之 YARN
  • ceph 常用命令
  • 6.8完全二叉树的节点个数(LC222-E)
  • 基于协作mimo系统的RM编译码误码率matlab仿真,对比硬判决译码和软判决译码