PyTorch -- 最常见激活函数的选择

PyTorch和激活函数ReLU ( LeakyReLU) 阅读详情

PyTorch 常用非线性激活函数详解

  • 首先,简单复习下什么是梯度:梯度是偏微分的集合

    • 举例说明:对于 z = y 2 − x 2 : ∇ z = ( ∂ z ∂ x , ∂ z ∂ y ) = ( 2 x , 2 y ) z = y^2-x^2: \nabla z= (\frac{\partial z}{\partial x}, \frac{\partial z}{\partial y}) = (2x, 2y) z=y2−x2:∇z=(∂x∂z​,∂y∂z​)=(2x,2y)
  • 获取极小值 minima 的方法核心: θ t + 1 = θ t − α ∇ f ( θ t ) \theta_{t+1}=\theta_t-\alpha\nabla f(\theta_t) θt+1​=θt​−α∇f(θt​)

本文总结了深度学习中常见的几种激活函数,包括 Sigmoid, Tanh, ReLU, Softmax


1. Sigmoid

  • 【torch.sigmoid(x)】
    Sigmoid ( x ) = 1 1 + e − x \text{Sigmoid}(x)=\frac{1}{1+e^{-x}} Sigmoid(x)=1+e−x1​
    在这里插入图片描述

    • 优点:连续可导,常用作二分类输出层
    • 缺点:在 |x| 非常大时饱和 (函数会变得很平),对 x 的微小改变会变得不敏感;在反向传播时,梯度趋近 0 → 容易出现 梯度消失,从而无法完成深层网络训练
    • PyTorch 使用:对应类 torch.nn.Sigmoid
      import torch
      import torch.nn as nn
      
      # 1) 准备输入
      x = torch.linspace(-5, 5, 10)
      
      # 2.1) 使用方法一
      out1 = torch.sigmoid(x)        # 函数式
      
      # 2.2) 使用方法二
      layer = nn.Sigmoid()           # 模块式
      out2 = layer(x)
      

2. Tanh

  • 【torch.tanh(x)】 sigmoid 经过缩放平移获得
    Tanh ( x ) = e x − e − x e x + e − x \text{Tanh}(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}} Tanh(x)=ex+e−xex−e−x​
    在这里插入图片描述
    • 优点:同 sigmoid 且均值是0 (更有利于优化)
    • 缺点:仍存在饱和问题
    • PyTorch 使用:对应类 torch.nn.Tanh(layer = torch.nn.Tanh(), layer(x) )
      import torch
      import torch.nn as nn
      
      # 1) 准备输入
      x = torch.linspace(-5, 5, 10)
      
      # 2.1) 使用方法一
      out1 = torch.tanh(x)        # 函数式
      
      # 2.2) 使用方法二
      layer = nn.Tanh()           # 模块形式
      out2 = layer(x)
      

3. ReLU

  • 【torch.relu(x)】
    ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x)=\max(0,x) ReLU(x)=max(0,x)
    在这里插入图片描述

    • 优点:高效;在x>0区域上,不会出现梯度饱和、梯度消失
    • 缺点:Dead ReLU Problem (在x<0时,梯度为0:这个神经元及之后的神经元梯度永远为0,不再对任何数据有所响应,导致相应参数永远不会被更新)
    • PyTorch 使用:对应类 torch.nn.ReLU(layer = torch.nn.ReLU(), layer(x) )
      import torch
      import torch.nn as nn
      
      # 1) 准备输入
      x = torch.linspace(-5, 5, 10)
      
      # 2.1) 使用方法一
      out1 = torch.relu(x)         # 函数式
      
      # 2.2) 使用方法二
      layer = nn.ReLU()            # 模块形式
      out2 = layer(x)
      

4. Softmax

  • 【torch.softmax(x)】softmax 可以用作输出层 (如多分类)
    Softmax ( x i ) = e x i ∑ j e x j \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}} Softmax(xi​)=∑j​exj​exi​​
    在这里插入图片描述

    • 优点:将向量转为概率分布(所有元素 ∈ (0,1),且和为 1),常用于 多分类输出层
    • 缺点:对极端值敏感;在某个输入过大时,分布可能过于“尖锐”
    • PyTorch 使用:
      import torch
      import torch.nn as nn
      
      # 1) 准备输入
      x = torch.randn(2, 5)  # 假设 batch=2, 类别=5
      
      # 2.1) 使用方法一
      out1 = torch.softmax(x, dim=1)   # 函数式
      
      # 2.2) 使用方法二
      layer = nn.Softmax(dim=1)        # 模块形式
      out2 = layer(x)
      

总结

  • Sigmoid:二分类常用,但易梯度消失
  • Tanh:输出均值为 0,比 Sigmoid 更优,但仍有饱和问题
  • ReLU:最常用,简单高效,但存在 Dead ReLU
  • Softmax:多分类输出层常用,结果可解释为概率分布
pytorch激活函数介绍 在 PyTorch 中,激活函数(Activation Functions)是神经网络中重要的非线性组件,用于引入非线性,使网络能够学习复杂的函数关系。 阅读详情

相关推荐

PyTorch激活函数详解

激活函数是神经网络中的关键组件之一,它引入了非线性性质,使神经网络能够学习复杂的函数关系。在PyTorch中,有多种常见的激活函数可供选择,每种都有不同的特点。接下来,让我们一起深入探讨这些激活函数。

DeepViewInsight的博客 1295

简单易懂的PyTorch激活函数大全详解

本文综合概述了PyTorch框架中一系列关键的激活函数,从经典的ReLU到前沿的GELU和Mish,探讨了它们的数学定义、特点及实际应用。通过各函数对输入数据的不同处理方式,文章揭示了如何通过激活函数为神经网络模型注入非线性动力,以及它们在深度学习中的核心作用。从Sigmoid的平滑概率转换到GLU的复杂数据门控,这些激活函数是构建高效、稳健机器学习模型的基石,同时它们的多样性和特定应用场景为深度学习的进步提供了广阔空间。

CDBmax的博客 4866

激活函数和全连接层——基于Pytorch

1、激活函数 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以

hhh_0221的博客 9186

pytorch学习(四)——激活函数

pytorch 中的激活函数介绍

ifhuke的博客 2574

激活函数Swish

激活函数Swish系列文章:   Swish函数先对来说是比较新的一些激活函数,算是由之前的激活函数复合而成出来的。也是由Google提出的,毕竟资力雄厚,承担的起搜索的任务。而且这个算法感觉曝光率还算比较高,就在这里整理一下,同时后面的文章也会再次提到这个函数。   对前面的激活函数有了一定的基础之后,理解Swish激活就容易很多了,Swish函数的表达式是f(x)=x⋅σ(x)f(x)=x·\sigma(x)f(x)=x⋅σ(x),σ(x)\sigma(x)σ(x)就是sigmoid函数。因为sigmo

August-us的博客 3万+

pytorch--常用激活函数使用方法(21个)

2)Sigmoid的输出不是0均值的这会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响。(1)容易出现梯度消失(gradientvanishing)的现象当激活函数接近饱和区时,变化太缓慢,导数接近0,根据后向传递的数学依据是微积分求导的链式法则,当前导数需要之前各层导数的乘积,几个比较小的数相乘,导数结果很接近0,从而无法完成深层网络的训练。ReLU有很多变种,RReLU是RandomReLU的意思,在RReLU中,负值的斜率在训练中是随机的,在之后的测试中就变成了固定的了。.........

9050

(四)pytorch中激活函数

2)relu单元在训练中将不可逆转的死亡,导致数据多样化的丢失。如果学习率设置的太高,可能会发现网络中40%的神经元都会死掉(在整个训练集中这些神经元都不会被激活)。在神经网络中,隐含层的激活函数,最好选择Relu。1)relu的导数在大于0时,梯度为常数,不会导致梯度弥散。在小于0时导数为0,当神经元激活值进入小于0,梯度为0,也就是说,这个神经元不会被训练,即稀疏性。Relu是将所有的负值都为零,相反,leakyRelu。绿色曲线为原函数,红色曲线为导函数。

qq_23123181的博客 589

PyTorch中常用的激活函数的方法示例

主要介绍了PyTorch中常用的激活函数的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Pytorch的22个激活函数

转自:https://www.pianshen.com/article/33331174884/ 1.22.Linear常用激活函数 1.22.1.ReLU torch.nn.ReLU() 1.22.2.RReLU torch.nn.RReLU() 1.22.3.LeakyReLU torch.nn.LeakyReLU() 1.22.4.PReLU torch.nn.PReLU() 1.22.5.Sofplus torch.nn.Softplus() 1.22.6.ELU torch.nn.ELU() 1

weixin_36670529的博客 1万+

Reality Capture控制点修复/合并模型

通过增加控制点/修改对齐设置参数来修复模型被分为两个部分的解决方法

草履虫建模的博客 5241

Modbus CRC和LRC算法研究及代码实现

一、CRC(循环冗余校验) 1 CRC16实现流程 XOR = 异或 N = 字节的信息位 POLY = CRC16 多项式计算 = 1010 0000 0000 0001 (生成多项式 = 1 + x2 + x15 + x16) 在CRC16中,发送的第一个字节位低字节 2 CRC16实例推导 3 CRC16代码实现 unsigned short CRC16(unsigned char *a...

Hi, Boy 2891

Pytorch激活函数最全汇总

为了更清晰地学习Pytorch中的激活函数,并对比它们之间的不同,这里对最新版本的Pytorch中的激活函数进行了汇总,主要介绍激活函数的公式、图像以及使用方法,具体细节可查看官方文档。

ting_qifengl的博客 1万+

【硬核指南/MI50 32G/Ubuntu】从零部署大模型:MI50显卡Ubuntu系统驱动安装与避坑全记录

本文详细记录了在Ubuntu系统上为AMD MI50显卡安装驱动并部署大模型的完整流程,包括硬件兼容性检查、BIOS关键设置、系统安装优化、ROCm驱动安装及常见问题解决方案。特别针对MI50显卡在X99平台上的特殊配置需求提供了实用技巧,帮助用户避免常见陷阱,提升大模型训练效率。

weixin_42520909的博客 806

【PyTorch】PyTorch中torch.nn模块的激活函数

本文总结了PyTorch中torch.nn模块常用的激活函数。激活函数为神经网络引入非线性因素,使其能够处理复杂问题。

goldfisheye的博客 1341

浅谈声发射振动复合传感器

浅谈声发射振动复合传感器 随着全球经济和自动化工业的迅速发展,人们对设备故障特别是轴承类的故障诊断也日益重视起来了。 为满足客户对旋转仪器轴承异常的精准诊断,单一的依靠振动信号或声信号分析,是很难兼顾轴承的多种异常情况的。 为此,市面上开始着手研发出了可同时分析机械设备的振动信号和声信号的复合型传感器。 初期的复合型传感器主要有 2 种类型,下面以 A、B 来举例说明。 A 型是在被测物表面不同的 2 个位置分别放置声发射(AE)传感器和加速度(ACC)传感器,它虽能一定程度...

pxtech的博客 1151

笔记汇总 | 斯坦福 CS229 机器学习

本文为斯坦福大学 2014 秋季 CS229 机器学习课程学习笔记本文主体部分转载自黄海广博士,文末已给出,大家有兴趣可以直接访问笔记首页,下载对应课程资料及作业代码。

ReturnTmp的博客 2463

14,PyTorch 激活函数的选择与应用

激活函数在神经网络中起着至关重要的作用,合理选择和使用激活函数可以显著提升模型的性能。在实际应用中,可以根据任务类型和模型结构选择合适的激活函数。例如,在隐藏层中优先使用 ReLU 或其变体,在输出层根据任务类型选择 Sigmoid、Softmax 或线性激活函数。希望本节内容对您有所帮助。更多技术文章见公众号: 大城市小农民更多技术文章见公众号: 大城市小农民。

IT老农民的博客 1345

UE5高斯泼溅落地全链路:从PLY导入到实时渲染的工程实践

3D高斯泼溅(3D Gaussian Splatting)正从NeRF后处理技术演进为新一代隐式几何渲染范式,其核心在于以可微椭球体替代传统三角面片,通过协方差矩阵与球谐系数实现高质量体素化渲染。该技术突破点云精度瓶颈,但与UE5现有资产管线存在根本性不兼容——静态网格导入器无法解析scale/rot/sh系数等非标顶点语义,标准光栅化管线亦无法执行高斯核采样计算。XV3DGS-UEPlugin通过自定义资产类型、StructuredBuffer GPU数据流与专用材质节点,将高斯泼溅重构为可编辑、可LOD

weixin_33692177的博客 357

Pytorch 激活函数

激活函数(activation functions)的目标是,将神经网络非线性化。激活函数是连续的(continuous),且可导的(differential)。 连续的:当输入值发生较小的改变时,输出值也发生较小的改变; 可导的:在定义域中,每一处都是存在导数; 神经网络中比较常用的激活函数有sigmoid、tanh、ReLU,Leaky ReLU、Maxout: 在PyTorch的老...

洪流之源 4939

FPGA实现DDR接口

verilog// DDR2控制器状态机// 初始化序列// 发出初始化命令endendendend// 自动预充电end// 其他状态...endcaseendend。

whm128的博客 998

Axure RP9.0 教程:左侧菜单列表导航 ( 点击父级菜单,子菜单自动收缩或展开)【响应式的菜单导航】

1. 设置目标原件时,选择切换,这样就可以实现,当原件展示时,点击自动隐藏,隐藏时自动显示; 2. 展开/收起原件(推动/拉动原件)设置为方向**向下**

专注于计算机研发知识和资讯分享 1380

PyTorch自定义激活函数和为激活函数添加可学习的参数

在深度学习框架PyTorch中已经内置了很多激活函数,如ReLU等,但是有时根据个人需要,需要自定义激活函数,甚至需要为激活函数添加可学习的参数,如PReLU,具体参见PyTorch官方激活函数源码实现。 对于不需要可学习参数的激活函数的实现,比较简单,具体见PyTorch官方教程的一个例子(所用PyTorch版本为1.2): # Inherit from Function class Li...

鹊踏枝-码农的专栏 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

PyTorch常用激活函数

两个或多个线性网络层叠加,并不能学习一个新的东西,简单的堆叠网络层,而不经过非线性激活函数激活,学到的仍然是线性关系。 通过激活函数的加入可以学到非线性的关系,这对于特征提取具有更强的能力...

Steven的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

PyTorch教程(5)激活函数

问题 激活函数是什么?它们在实际项目中是如何工作的?如何使用PyTorch实现激活函数? 解答 激活函数是一个数学公式,它根据数学转换函数的类型将二进制、浮点或整数格式的向量转换为另一种格式。神经元存在于不同的层——输入层、隐藏层和输出层,它们通过一个称为激活函数的数学函数相互连接。激活函数有不同的变体,下面将对此进行解释。理解激活函数有助于准确地实现神经网络模型。 作用原理 神经网络模型中所有的激活函数可以大致分为线性函数和非线性函数。PyTorch的torch.nn模块创建任何类型的神经网络模型。让我们

weixin_43229348的博客 4139

Pytorch深度学习教程_6_激活函数

Sigmoid、Tanh、ReLU等激活函数的原理与实践

tRNA的博客 1065

PyTorch 激活函数

激活函数是神经网络中至关重要的组成部分,它们为网络引入了非线性特性,使得神经网络能够学习复杂模式。PyTorch 提供了多种常用的激活函数实现。数学表达式:PyTorch实现: 特点:计算简单高效解决梯度消失问题(正区间)可能导致"神经元死亡"(负区间梯度为0),ReLU 在输入为负时输出恒为 0,导致反向传播中梯度消失,相关权重无法更新‌14。若神经元长期处于负输入状态,则会永久“死亡”,失去学习能力‌。示例: 2. LeakyReLU 数学表达式:PyTorch实现: 特点:解决了ReLU

深之JohnChen的专栏 917
上一篇: TORCH.WHERE 快速上手
下一篇: PyTorch -- 最常见损失函数 LOSS 的选择
CODE_RabbitV
博客等级 码龄7年 2931粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值