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

深度学习:激活函数曲线总结

深度学习:激活函数曲线总结

在深度学习中有很多时候需要利用激活函数进行非线性处理,在搭建网路的时候也是非常重要的,为了更好的理解不同的激活函数的区别和差异,在这里做一个简单的总结,在pytorch中常用的激活函数的数学表达形式,同时为了更直观的感受,给出不同激活函数的曲线形式,方便查询。

import torch
import torch.nn as nn
x = torch.linspace(-4, 4, 400) # 在-4和4之间画400个点。

1. nn.leakyReLU()

给负值一个斜率,不全为零。

  • 数学公式:
    LeakyReLU ( x ) = { x ,  if  x ≥ 0 negative_slope × x ,  otherwise  \text{LeakyReLU}(x) = \begin{cases} x, & \text{ if } x \geq 0 \\ \text{negative\_slope} \times x, & \text{ otherwise } \end{cases} LeakyReLU(x)={x,negative_slope×x, if x0 otherwise 
leakyrelu = nn.LeakyReLU(negative_slope=0.01)

negative_slope 是一个小于1的值,通常设置为0.01,用于控制在输入小于0时的输出斜率。这意味着在nn.LeakyReLU中,负数输入会乘以negative_slope,而正数输入保持不变。

  • 对应曲线:

leakyrelu

2. nn.Relu()

ReLU是一个常用的激活函数,它将负数值设为0,保持正数值不变。

  • 数学公式:
    ReLU ( x ) = ( x ) + = max ⁡ ( 0 , x ) \text{ReLU}(x) = (x)^+ = \max(0, x) ReLU(x)=(x)+=max(0,x)
relu = nn.ReLU()
  • 函数曲线:
    Relu

3. nn.Tanh()

Tanh函数将输入映射到-1和1之间

  • 数学公式
    Tanh ( x ) = tanh ⁡ ( x ) = exp ⁡ ( x ) − exp ⁡ ( − x ) exp ⁡ ( x ) + exp ⁡ ( − x ) \text{Tanh}(x) = \tanh(x) = \frac{\exp(x) - \exp(-x)} {\exp(x) + \exp(-x)} Tanh(x)=tanh(x)=exp(x)+exp(x)exp(x)exp(x)
Tanh = nn.Tanh()
  • 函数曲线
    Tanh

4. nn.PReLU()

PReLU是具有可学习参数的激活函数,用于克服ReLU的一些问题

  • 数学公式
    RReLU ( x ) = { x if  x ≥ 0 a x  otherwise  \text{RReLU}(x) = \begin{cases} x & \text{if } x \geq 0 \\ ax & \text{ otherwise } \end{cases} RReLU(x)={xaxif x0 otherwise 
PReLU = nn.PReLU(num_parameters=1)
  • 函数曲线

PRelu

5. nn.ELU()

所有点上都是连续的和可微的,训练快

  • 数学公式:
    ELU ( x ) = { x ,  if  x > 0 α ∗ ( exp ⁡ ( x ) − 1 ) ,  if  x ≤ 0 \text{ELU}(x) = \begin{cases} x, & \text{ if } x > 0\\ \alpha * (\exp(x) - 1), & \text{ if } x \leq 0 \end{cases} ELU(x)={x,α(exp(x)1), if x>0 if x0
ELU = nn.ELU()
  • 函数曲线
    ELU

6. nn.SELU()

  • 数学公式:
    SELU ( x ) = scale ∗ ( max ⁡ ( 0 , x ) + min ⁡ ( 0 , α ∗ ( exp ⁡ ( x ) − 1 ) ) ) \text{SELU}(x) = \text{scale} * (\max(0,x) + \min(0, \alpha * (\exp(x) - 1))) SELU(x)=scale(max(0,x)+min(0,α(exp(x)1)))
SELU = nn.SELU()
  • 函数曲线:
    SELU

7. nn.GELU()

  • 数学公式:
    GELU ( x ) = x ∗ Φ ( x ) \text{GELU}(x) = x * \Phi(x) GELU(x)=xΦ(x)
GELU = nn.GELU()
  • 函数曲线:
    GELU

8. nn.Mish()

  • 数学公式:
    Mish ( x ) = x ∗ Tanh ( Softplus ( x ) ) \text{Mish}(x) = x * \text{Tanh}(\text{Softplus}(x)) Mish(x)=xTanh(Softplus(x))
Mish = nn.Mish()
  • 函数曲线:
    Mish

9 . nn.Softmax()

  • 数学公式:
    Softmax ( x i ) = exp ⁡ ( x i ) ∑ j exp ⁡ ( x j ) \text{Softmax}(x_{i}) = \frac{\exp(x_i)}{\sum_j \exp(x_j)} Softmax(xi)=jexp(xj)exp(xi)
Softmax = nn.Softmax()
y = Softmax(x)
  • 函数曲线:
    softmax

总结

感觉还是看曲线的形状,把大体的形状记住更直观些。

相关文章:

  • 关于多个elementui的cascader级联组件页面滚动渲染样式导致卡顿问题
  • 【机器学习可解释性】2.特征重要性排列
  • Node.js中的单线程服务器
  • nodejs+vue购物网站设计系统-计算机毕业设计
  • SolidWorks2020安装教程(超详细图文教程)
  • Python数据挖掘:入门、进阶与实用案例分析——基于非侵入式负荷检测与分解的电力数据挖掘
  • 【ARM 嵌入式 C 入门及渐进 10 -- 冒泡排序 选择排序 插入排序 快速排序 归并排序 堆排序 比较介绍】
  • 【设计模式】第5节:创建型模式之“简单工厂、工厂方法和抽象工厂模式”
  • vue重修之Vuex【下部】
  • P-MOS管开关机控制电路(手动按键控制和自动采样信号触发控制)
  • 蓝桥杯每日一题2023.10.22
  • Python基础学习004——for循环与字符串
  • 【在英伟达nvidia的jetson-orin-nx和PC电脑ubuntu20.04上-装配ESP32开发调试环境-基础测试】
  • Java 通过反射修改字符串 String 类型变量的取值而不改变字符串变量的指向
  • 【方法】如何给PDF文件添加“打开密码”?
  • 最近面试遇到的高频面试题
  • [数据分析与可视化] 基于Python绘制简单动图
  • C语言--程序环境和预处理(宏)
  • 做过哪些外设驱动?
  • 【网络安全 --- xss-labs靶场通关(11-20关)】详细的xss-labs靶场通关思路及技巧讲解,让你对xss漏洞的理解更深刻
  • 外交部:欢迎外国朋友“五一”来中国
  • 暴涨96%!一季度“中国游中国购”持续升温,还有更多利好
  • 民调显示特朗普执政百日支持率为80年来美历任总统最低
  • 伊朗港口爆炸已致40人死亡
  • 加拿大温哥华发生驾车冲撞人群事件,加拿大总理发声
  • 中公教育:去年全面扭亏,经营性现金流增长169.6%