首页 > 其他分享 >Softmax函数计算详解

Softmax函数计算详解

时间:2024-10-18 19:21:21浏览次数:3  
标签:... 函数 元素 详解 softmax e4 e2 Softmax

Softmax函数计算详解

Softmax 函数的组成部分:

σ ( z ⃗ ) i = e z i Σ j = 1 K e z j \sigma(\vec{z})_i = \frac{e^{z_{i}}}{\Sigma^{K}_{j=1}e^{z_{j}}} σ(z )i​=Σj=1K​ezj​ezi​​

输入

softmax 函数的输入是一个包含 K K K个元素的向量:
z ⃗ = [ z 0 , z 1 , ⋯   , z K ] \vec{z}=[z_{0},z_{1},\cdots,z_{K}] z =[z0​,z1​,⋯,zK​]


示例

假设我们有一个向量:
z ⃗ = [ 2 , 4 , 6 ] \vec{z}=[2,4,6] z =[2,4,6]

根据softmax函数的定义,计算softmax的步骤如下:

  1. 对于向量中的每一个元素 z i z_i zi​,计算 e z i e^{z_i} ezi​。
  2. 计算所有这些指数值的和,即 Σ j = 1 K e z j \Sigma^{K}_{j=1}e^{z_{j}} Σj=1K​ezj​,其中 K K K 是向量的长度。
  3. 对于向量中的每一个元素 z i z_i zi​,计算softmax值:
    σ ( [ 2 , 4 , 6 ] ) i = e z i Σ j = 1 K e z j \sigma([2,4,6])_i = \frac{e^{z_{i}}}{\Sigma^{K}_{j=1}e^{z_{j}}} σ([2,4,6])i​=Σj=1K​ezj​ezi​​

在这个例子中,向量 z ⃗ \vec{z} z 有3个元素,所以 K = 3 K = 3 K=3。我们需要对每一个元素进行计算:

  • 计算 ( e z 1 = e 2 e^{z_{1}} = e^2 ez1​=e2),( e z 2 = e 4 e^{z_{2}} = e^4 ez2​=e4),( e z 3 = e 6 e^{z_{3}} = e^6 ez3​=e6)
  • 计算指数和: Σ j = 1 3 e z j = e 2 + e 4 + e 6 \Sigma^{3}_{j=1}e^{z_{j}} = e^2 + e^4 + e^6 Σj=13​ezj​=e2+e4+e6
  • 计算每一个元素的softmax值:
    • 对于第一个元素( i = 1 i=1 i=1):
      σ ( [ 2 , 4 , 6 ] ) 1 = e 2 e 2 + e 4 + e 6 = 0.015876... \sigma([2,4,6])_1 = \frac{e^2}{e^2 + e^4 + e^6}=0.015876... σ([2,4,6])1​=e2+e4+e6e2​=0.015876...
    • 对于第二个元素( i = 2 i=2 i=2):
      σ ( [ 2 , 4 , 6 ] ) 2 = e 4 e 2 + e 4 + e 6 = 0.117310... \sigma([2,4,6])_2 = \frac{e^4}{e^2 + e^4 + e^6}=0.117310... σ([2,4,6])2​=e2+e4+e6e4​=0.117310...
    • 对于第三个元素( i = 3 i=3 i=3):
      σ ( [ 2 , 4 , 6 ] ) 3 = e 6 e 2 + e 4 + e 6 = 0.866813... \sigma([2,4,6])_3 = \frac{e^6}{e^2 + e^4 + e^6}=0.866813... σ([2,4,6])3​=e2+e4+e6e6​=0.866813...

输出概率分布

o u t p u t = [ 0.0158... , 0.1173... , 0.8668... ] output = [0.0158..., 0.1173..., 0.8668...] output=[0.0158...,0.1173...,0.8668...]

相加和为1,最小输入 2 具有最低概率,最大输入 6 具有最高概率。


如果觉得这篇文章有用,就给个

标签:...,函数,元素,详解,softmax,e4,e2,Softmax
From: https://blog.csdn.net/qq_35229591/article/details/142942022

相关文章

  • static 和 extern详解
    目录1.static与extern的简单介绍2static修饰局部变量:3.static修饰全局变量4.static修饰函数1.static与extern的简单介绍static和extern都是C语⾔中的关键字。static是静态的的意思,可以⽤来:•修饰局部变量•修饰全局变量•修饰函数extern是⽤来......
  • Java工程师必备的20条SQL最佳实践详解
    在Java开发中,SQL是处理数据库交互的核心技能。高效的SQL查询不仅能够提升应用程序的性能,还能减少资源消耗和提高用户体验。以下是Java工程师必备的20条SQL最佳实践,每条都附有代码示例和详细解释。1.使用索引索引可以显著提高查询速度。为经常用于查询条件、排序和连接的......
  • 复变函数,自集英社归来,唐唐复活!
    \[\newcommand{\Co}{\operatornameC}\newcommand{\Am}{\operatornameA}\newcommand{\Vo}{\operatornameV}\newcommand{\Me}{\operatornamem}\newcommand{\Se}{\operatornames}\newcommand{\Ne}{\operatornameN}\newcommand{\Fa}{\operatorn......
  • 轻松上手-MVVM模式_关系型数据库_云函数T云数据库
    作者:狼哥团队:坚果派团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁夏等地,目前已开发鸿蒙原......
  • Nuxt.js 应用中的 app:templates 事件钩子详解
    title:Nuxt.js应用中的app:templates事件钩子详解date:2024/10/18updated:2024/10/18author:cmdragonexcerpt:app:templates是Nuxt.js中一个强大的生命周期钩子,它在NuxtApp生成过程中调用。这一钩子允许开发者自定义、修改或添加新文件到构建目录,提供了极大的......
  • 数码管详解
    数码管详解摘要本文详细讲解了数码管的基本电路结构,包括单个和多个数码管的连接,以及如何通过锁存器解决电流问题。重点介绍了数码管显示数字时芯片引脚的状态变化,并展示了动态显示的实现方法,如逐个数字切换和多个数码管同步显示。数码管介绍数码管是一种常用的显示器件,由多个......
  • 解锁二叉树的魅力:链式实现详解
    前言二叉树的简介及顺序实现引言在数据结构的浩瀚星空中,二叉树如同一颗璀璨的明珠,其优雅的结构和强大的功能使其成为计算机科学中不可或缺的工具。从数据库索引到编译器的语法树,二叉树以其独特的方式支撑着许多核心算法与数据处理。本文将深入探讨如何使用C语言实现二叉树的......
  • 嵌入式Linux编程基础 | GCC 静、动态函数库的创建与链接方法
    一、静态库与动态库的区别库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:libhello.so表示一个命名为libhello的动态库,libhello.a则是一个命名为libhello的静态库。当使用静态库时,连接器找出程序所需的函数,并将其拷贝到可执行文件,一旦链接成功,静态程序库......
  • 支持向量机SVM原理详解
    SVM原理详解1、超平面2、SVM原理1.问题定义2.分类决策得到约束条件3.最大化间隔4.优化目标3、凸优化问题1.原始优化问题优化目标约束条件2.拉格朗日乘子法3.拉格朗日函数分析4.求解对w......
  • 超全!一文详解大型语言模型的11种微调方法
    导读:大型预训练模型是一种在大规模语料库上预先训练的深度学习模型,它们可以通过在大量无标注数据上进行训练来学习通用语言表示,并在各种下游任务中进行微调和迁移。随着模型参数规模的扩大,微调和推理阶段的资源消耗也在增加。针对这一挑战,可以通过优化模型结构和训练策略来......