softmax和sigmoid的区别

news2024/10/6 11:24:00

sigmoid

公式: s i g m o i d ( x ) = 1 1 + e − x sigmoid(x) = \frac{1}{1 + e^{-x}} sigmoid(x)=1+ex1

函数曲线如下:

Panda

导数公式: f ( x ) ′ = e − x ( 1 + e − x ) 2 = f ( x ) ( 1 − f ( x ) ) f(x)\prime = \frac{ e^{-x}}{(1 + e^{-x})^2} = f(x)(1-f(x)) f(x)=(1+ex)2ex=f(x)(1f(x))

导数曲线如下:

Panda

sigmoid代码:

import torch
import torch.nn.functional as F
 
// sigmoid函数
x = torch.tensor([1.0, 2.0, 3.0])
// y = 1 / (1 + torch.exp(-x))	
y = torch.sigmoid(x)
print(f"sigmoid result: {y}")
print(f"sigmoid derivative: {y * (1 - y)}")

softmax

公式:
s o f t m a x ( z i ) = z i ∑ j = 1 n e z j softmax(z_i) = \frac{z_i}{\sum_{j=1}^n e^{z_j}} softmax(zi)=j=1nezjzi
指数函数曲线: y = e x y= e^{x} y=ex

Panda
  • 引入指数形式的优点:
    指数函数曲线呈现递增趋势,斜率逐渐增大,在 x 轴上一个很小的变化可以导致 y 轴上很大的变化。
  • 引入指数形式的缺点:
    当 z值非常大时,计算得到的数值会变得非常大,可能会溢出。通常针对数值溢出的方法,是将每一个输出值减去输出值中的最大值。

导数公式:

Panda

softmax代码:

import torch
import torch.nn.functional as F

def softmax(x):
    """Compute the softmax of vector x."""
    exps = np.exp(x)
    return exps / np.sum(exps) 

// softmax函数
x = torch.tensor([1.0, 2.0, 3.0])
y = F.softmax(x, dim=0)
print(f"softmax result: {y}")
print(f"softmax derivative: {torch.diag(y) - torch.outer(y, y)}")

softmax与cross entropy的联系

事实上,交叉熵与Softmax没有直接的关系。
交叉熵本质是衡量两个概率分布的距离的,而softmax能把一切转换成概率分布。
H ( L , P ) = − ∑ j = 1 n L j l o g ( P j ) H(L,P) = -\sum_{j=1}^nL_jlog(P_j) H(L,P)=j=1nLjlog(Pj)
其中P是预测概率分布,L是真实标签分布。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1494833.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day14:单元测试、Junit单元测试框架、反射、注解

单元测试 针对最小的功能单元(方法)进行正确性测试编写正规的单元测试框架传统的无法执行自动化测试,且无法得到测试报告 Junit单元测试框架 Junit的作用: 具体步骤 测试类取名:原类名Test(大驼峰&#…

30m二级分类土地利用数据Arcgis预处理及获取

本篇以武汉市为例,主要介绍将土地利用数据转换成武汉市内各区土地利用详情的过程以及分区统计每个区内各地类面积情况,后面还有制作过程中遇到的面积制表后数据过小的解决方法以及一些相关的知识点: 示例数据下载链接:数据下载链…

Javaweb之SpringBootWeb案例之自动配置案例的自定义starter测试的详细解析

3.2.4.3 自定义starter测试 阿里云OSS的starter我们刚才已经定义好了,接下来我们就来做一个测试。 今天的课程资料当中,提供了一个自定义starter的测试工程。我们直接打开文件夹,里面有一个测试工程。测试工程就是springboot-autoconfigurat…

数据结构之顺序表及其实现!

目录 ​编辑 1. 顺序表的概念及结构 2. 接口的实现 2.1 顺序表的初始化 2.2 检查顺序表容量是否已满 2.3 顺序表的尾插 ​编辑 2.4 顺序表的尾删 2.5 顺序表的头插 2.6 顺序表的头删 2.7 顺序表在pos位置插入 2.8 顺序表在pos位置删除 2.9 顺序表的查找 2.10 顺…

Long-term Correlation Tracking LCT目标跟踪算法原理详解(个人学习笔记)

目录 1. 算法总览2. 算法详解2.1. 基础相关滤波跟踪2.2. 各模块详解2.2.1. 相关跟踪2.2.2. 在线检测器 3. 算法实现3.1. 算法步骤3.2. 实现细节 4. 相关讨论&总结 1. 算法总览 LCT的总体流程如上图所示,其思想为:将长时跟踪(long-term tr…

AI发展历程和常用框架

AI发展历程 近几年的人工智能发展历程可以大致划分为以下几个阶段: 数据驱动的突破(2012-2015年):这一时期,随着大数据的兴起和计算能力的提升,深度学习技术开始取得突破。以AlexNet在2012年ImageNet图像…

基于Nandflash的Bootloader的设计与实现

摘要:Bootloader是系统上电或复位后首先运行的一段代码,是连接操作系统和硬件的桥梁,负责初始化硬件和引导操作系统等。目前已有很多通用的Bootloader,但是如何根据特定的嵌入式平台,移植自己的引导程序是一个重点和难…

Java电梯模拟升级版

Java电梯模拟升级版 文章目录 Java电梯模拟升级版前言一、UML类图二、代码三、测试 前言 在上一版的基础上进行升级,楼层采用享元模式进行升级,并对楼层对象进一步抽象 一、UML类图 二、代码 电梯调度器抽象类 package cn.xx.evevator;import java.ut…

如何选择适合本产线的数据采集平台?

工业数据采集是指从工业现场的传感器、仪器仪表、设备等数据源中采集数据,并将其传输到计算机系统或云端进行处理、分析和存储的过程。数据采集平台可以将生产过程中的各种数据进行分析和处理,从而实现智能化生产,提高生产效率和产品质量。 …

Jmeter之Ramp-up Period(in seconds)

1、Ramp-up Period概念 (in seconds)–并发用户启动周期,告知JMeter 要在多长时间内启动全部Vuser用户。 2、为什么需要有“ramp-up period”,立即启动所有的并发用户数不是更好? 对于绝大多数的网址或应用&#xf…

18.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据分析工具数据与消息配置的实现

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 上一个内容:17.数据分析工具配置功能的实现 码云地址(master 分支):https://gitee.com/dye_your_fingers/titan…

数据库搭建11.2

数据库之搭建 1、rpm -qa|grep 服务名称 案例:rpm -qa|grep mysql 2、将所有msyql的包删除干净 删除方法: (1)yum remove mysql * 删除linux中的数据库 (2)yum erase 包名 &#xff0…

微前端之什么是微前端

什么是微前端 微前端分类 基于路由的微前端:组件化微前端:iframe嵌入式微前端: 优点缺点 动态加载/懒加载微前端:微应用容器化方案: 微前端解决方案 single-spa阿里巴巴 Cloud Alfaiframe 方案Web ComponentsModule Fe…

蓝桥杯-Set

目录 HashSet类常用方法 1 add(Object obj)方法 2 size() 方法 3 remove(Object obj)方法 4 contains()方法 5 clear() 方法 例题实战 set 一个不允许出现重复的元素,并且无序的集合,主要有HashSet实现类。 在判断重复元素的时候,Set集…

springcloud:3.5测试慢调用熔断降级

服务提供者【test-provider8001】 Openfeign远程调用服务提供者搭建 文章地址http://t.csdnimg.cn/06iz8 相关接口 测试远程调用:http://localhost:8001/payment/index 服务消费者【test-consumer-resilience4j8004】 Openfeign远程调用消费者搭建 文章地址http://t…

java 中 string常用方法及相关的例子

我将为您详细讲解 Java 中 String 类的常用方法及其相关例子。String 类是 Java 中最常用的类之一,它代表字符串,提供了许多用于操作字符串的方法。 1. 字符串比较 - equals(Object obj): 比较字符串的内容是否相等。 - equalsIgnoreCase(String str): 比…

【官宣】2024广州国际酒店工程家具及商业空间展览会

2024广州国际酒店工程家具及商业空间展览会 Guangzhou International Hotel Engineering Furniture and commercial space exhibition 2024 时间:2024年12月19-21日 地点:中国进出口商品交易会展馆 承办单位:广州佛兴英耀展览服务有…

9.12零钱兑换(LC518-M)(开始完全背包,与01背包的不同仅在于遍历顺序)

算法: 这是一道典型的背包问题,一看到钱币数量不限,就知道这是一个完全背包。 但本题和纯完全背包不一样,纯完全背包是凑成背包最大价值是多少,而本题是要求凑成总金额的物品组合个数! 动规五步曲&#…

[Redis]——数据一致性,先操作数据库,还是先更新缓存?

目录 一、操作缓存和数据库时有三个问题需要考虑: 1.删除缓存还是更新缓存? 2.如何保证缓存与数据库的操作同时成功或失效 3.先操作缓存还是先操作数据库(多线程并发问题) 二、 缓存更新的最佳策略 一、操作缓存和数据库时有…

网络学习:Vlan间路由

目录 一、vlan间路由实现的方法 二、精确匹配转发(交换机)流程 三、最长匹配转发(路由器) 四、交换机最长匹配转发 五、总结 一、vlan间路由实现的方法 方法1:使用路由器的物理接口 特点:在路由器上…