常用激活函数(Sigmiod、Tanh、Softmax、ReLU、elu、LReLU、Softplus)函数表达式、特点、图像绘制(代码)---已解决

article/2025/9/21 17:18:06

楼主最近在研究激活函数,索性将常用的激活函数进行了简单的整理,方便以后翻看,也希望能帮到你。


1、sigmoid函数

函数表达式:f(x) = 1/(1+e^-x)
函数特点:
优点:1.输出[0,1]之间;2.连续函数,方便求导。
缺点:1.容易产生梯度消失;2.输出不是以零为中心;3.大量运算时相当耗时(由于是幂函数)。函数定义:
def sigmoid(x):y = 1/(1+np.exp(-x))return y

2、tanh函数

函数表达式:f(x) = (e^x-e^-x)/(e^x+e-x)
函数特点:
优点:1.输出[-1,1]之间;2.连续函数,方便求导;3.输出以零为中心。
缺点:1.容易产生梯度消失; 2.大量数据运算时相当耗时(由于是幂函数)。函数定义:
def tanh(x):y = (np.exp(x) - np.exp(-x))/(np.exp(x) + np.exp(-x))return y

3、ReLu函数

函数表达式: f(x)=  当x<0  f(x)=0; 当x>=0 f(x)=x
函数特点:
优点:1.解决了正区间梯度消失问题;2.易于计算; 3.收敛速度快
缺点:1.输出不是以零为中心;2.某些神经元不能被激活,导致参数永远不能更新。函数定义:
def ReLU(x):y = []for i in x:if i >= 0:y.append(i)else:y.append(0)return y

4、elu函数

函数表达式: f(x)=  当x>=0  f(x)=x;  当x<0  f(x) =a(e^x -1)
函数特点:
优点:1.解决了正区间梯度消失问题;2.易于计算;3.收敛速度快;4.解决了某些神经元不能被激活问题;5.输出的均值为0
缺点:输出不是以零为中心函数定义:
def elu(x, a):y = []for i in x:if i >= 0:y.append(i)else:y.append(a*(np.exp(i)-1))return y

5、leaky ReLU函数

函数表达式: f(x)=  当x>=0  f(x)=x; 当x<0  f(x) =0.01x
函数特点:
优点:1.解决了正区间梯度消失问题;2.易于计算;3.收敛速度快;4.解决了某些神经元不能被激活
缺点:输出不是以零为中心函数定义:
def LReLU(x):y = []for i in x:if i >= 0:y.append(i)else:y.append(0.01*i)return y

6、softplus函数

函数表达式: y = ln(1+e^x)
函数定义:
def softplus(x):y = np.log(1 + np.exp(x))return y

7、softmax函数

函数表达式:输入信号的指数函数除以所有输入信号的指数和
函数特点:一般用在分类的输出层作为激活函数
优点:1.输出在[0,1]之间,可以当初概率。
缺点: 在实际问题中,由于幂运算需要时间,而且softmax不会影响各元素的大小,因此输出层的softmax激活函数一般被省略。
函数定义:
def softmax(x):c = np.max(x)   # 解决溢出问题exe_x = np.exp(x)exe_s = np.sum(exe_x)y = exe_x/exe_sreturn y

绘制函数的代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:'ZhangML' 
# Time:2021/1/2  15:56from matplotlib import pyplot as plt
import numpy as np
import mathx = np.linspace(-6, 6, 200)
# 1.sigmoid函数的表达式:f(x) = 1/(1+e^-x)
# 函数特点:
# 优点:1.输出[0,1]之间;2.连续函数,方便求导。
# 缺点:1.容易产生梯度消失;2.输出不是以零为中心;3.大量运算时相当耗时(由于是幂函数)。def sigmoid(x):y = 1/(1+np.exp(-x))return y# 2.tanh的函数表达式: f(x) = (e^x-e^-x)/(e^x+e-x)
# 函数特点:
# 优点:1.输出[-1,1]之间;2.连续函数,方便求导;3.输出以零为中心。
# 缺点:1.容易产生梯度消失; 2.大量数据运算时相当耗时(由于是幂函数)。
def tanh(x):y = (np.exp(x) - np.exp(-x))/(np.exp(x) + np.exp(-x))return y# 3. ReLu 的函数表达式: f(x)=  当x<0  f(x)0   当x>=0 f(x) = x
# 函数特点:
# 优点:1.解决了正区间梯度消失问题;2.易于计算; 3.收敛速度快
# 缺点:1.输出不是以零为中心;2.某些神经元不能被激活,导致参数永远不能更新。
def ReLU(x):y = []for i in x:if i >= 0:y.append(i)else:y.append(0)return y# return np.maximum(x,[0]*100)   #可以利用np中的maximum方法表示,也可以用上述方法# 4.elu 的函数表达式  f(x)   x>=0  f(x)=x   x<0  f(x) =a(e^x -1)
# 函数特点:
# 优点:1.解决了正区间梯度消失问题;2.易于计算;3.收敛速度快;4.解决了某些神经元不能被激活问题;5.输出的均值为0
# 缺点:输出不是以零为中心
def elu(x, a):y = []for i in x:if i >= 0:y.append(i)else:y.append(a*(np.exp(i)-1))return y# 5.leaky ReLU 的函数表达式  x>=0  f(x)=x   x<0  f(x) =0.01x
# 函数特点:
# 优点:1.解决了正区间梯度消失问题;2.易于计算;3.收敛速度快;4.解决了某些神经元不能被激活
# 缺点:输出不是以零为中心
def LReLU(x):y = []for i in x:if i >= 0:y.append(i)else:y.append(0.01*i)return y# 6.softplus函数的表达式: y = ln(1+e^x)
def softplus(x):y = np.log(1 + np.exp(x))return y# softmax激活函数   softmax的表达式为:输入信号的指数函数除以所有输入信号的指数和
# 函数特点:一般用在分类的输出层作为激活函数
# 优点:1.输出在[0,1]之间,可以当初概率。
# 缺点: 在实际问题中,由于幂运算需要时间,而且softmax不会影响各元素的大小,因此输出层的softmax激活函数一般被省略。
def softmax(x):c = np.max(x)   # 解决溢出问题exe_x = np.exp(x)exe_s = np.sum(exe_x)y = exe_x/exe_sreturn yfont1 = {'family': 'Times New Roman', 'weight': 'normal', 'size': 15}# 绘制整张图
ax = plt.subplot(111)
plt.plot(x,sigmoid(x),c="lime",lw="2",label = "Sigmiod")      # 绘制sigmoid函数
plt.plot(x,tanh(x),c="deeppink",lw="2",label = "Tanh")        # 绘制tanh函数
plt.plot(x,softmax(x),c="green",lw="2",label = "Softmax")     # 绘制softmax函数
plt.plot(x,ReLU(x),c="blue",lw="2",label="ReLU")              # 绘制ReLU函数
plt.plot(x,elu(x,0.1),c="darkviolet",lw="2",label="elu")      # 绘制elu函数
plt.plot(x,LReLU(x),c="springgreen",lw="2",label="LReLU")     # 绘制LReLU函数
plt.plot(x,softplus(x),c="red",lw="2",label="Softplus")       # 绘制Softplus函数
plt.gca().spines["bottom"].set_position(("data",0))           # 将函数图像移动到x轴(0,0)
plt.gca().spines["left"].set_position(("data",0))             # 将函数图形移动到y轴(0,0)
plt.xticks(fontproperties='Times New Roman', fontsize=18, )
plt.yticks(fontproperties='Times New Roman', fontsize=18, )
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
plt.legend(loc="best", frameon=False, prop=font1)
plt.show()

运行效果如下图所示:
在这里插入图片描述
这里有直接使用keras库中的激活函数绘图的,大同小异,想了解的可以看看,送上传送门,希望可以帮到你。


http://chatgpt.dhexx.cn/article/nMyVNmK7.shtml

相关文章

Sigmoid,tanh,Relu,Leaky ReLu,ELU,GeLu 激活函数理解

目录 1 神经网络为什么需要非线性激活函数&#xff1f;2 Sigmoid2.1缺陷2.1.1 梯度消失2.2.2 Output非zero-centered 3 Tanh3.1 缺陷 4 ReLu4.1 缺陷 5 Leaky ReLu6 ELU7 GeLu7.1 基础知识回顾7.1.1 正态分布7.1.2 概率密度函数7.1.3 累积分布函数7.1.4 Φ(x)与erf(x)函数关系公…

Elu函数~小朋友

Elu激励函数的数学表达式如下&#xff1a; 图一&#xff1a;摘自 https://blog.csdn.net/zrh_CSDN/article/details/81266188 代码如下&#xff1a; #code:utf-8import numpy as np import matplotlib.pyplot as pltdef elu(x,a):y x.copy()for i in range(y.shape[0]):if y[…

【Python--torch(激活函数说明+代码讲解)】激活函数(sigmoid/softmax/ELU/ReLU/LeakyReLU/Tanh)

【Python–torch】激活函数(sigmoid/softmax/ELU/ReLU/LeakyReLU/Tanh) 文章目录 【Python--torch】激活函数(sigmoid/softmax/ELU/ReLU/LeakyReLU/Tanh)1. 介绍2. 常用激活函数说明2.1 Sigmoid2.1.1 公式2.1.2 图像2.1.3 代码解读 2.2 Softmax2.2.1 公式2.2.2 代码解读 2.3 EL…

A.深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等

【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍&#xff1a;【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化…

el-descriptions

<el-descriptions title"用户信息"><el-descriptions-item label"用户名">kooriookami</el-descriptions-item><el-descriptions-item label"手机号">18100000000</el-descriptions-item><el-descriptions-ite…

功能性模块:(8)一文理解常用激活函数(Sigmoid,ReLU,ELU,GELU...)

一文理解常用激活函数 1. Sigmoid 公式&#xff1a; Sigmoid ( x ) 1 1 exp ⁡ ( − x ) \text{Sigmoid}(x) \frac{1}{1 \exp(-x)} Sigmoid(x)1exp(−x)1​ Sigmoid的函数形状如下图所示: 对应的导数形式如下图所示&#xff1a; Sigmoid函数的优点&#xff1a; 便于求…

深入理解ReLU、Leaky ReLU、 PReLU、ELU、Softplus

文章目录 ReLULeaky ReLUPReLUELUSoftplus ReLU ReLU&#xff08;Rectified Linear Unit&#xff0c;修正线性单元&#xff09;&#xff0c;也叫Rectifier 函数&#xff0c;它的定义如下&#xff1a; Relu可以实现单侧抑制&#xff08;即把一部分神经元置0&#xff09;&#x…

搞懂激活函数(Sigmoid/ReLU/LeakyReLU/PReLU/ELU)

1. 简介 在深度学习中&#xff0c;输入值和矩阵的运算是线性的&#xff0c;而多个线性函数的组合仍然是线性函数&#xff0c;对于多个隐藏层的神经网络&#xff0c;如果每一层都是线性函数&#xff0c;那么这些层在做的就只是进行线性计算&#xff0c;最终效果和一个隐藏层相当…

YOLOv5改进系列(13)——更换激活函数之SiLU,ReLU,ELU,Hardswish,Mish,Softplus,AconC系列等

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

【PyTorch】教程:torch.nn.ELU

torch.nn.ELU CLASS torch.nn.ELU(alpha1.0, inplaceFalse) paper: Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs). 参数 alpha ([float]) – α \alpha α 默认为1.0inplace ([bool] ) – 内部做, 默认为 False ELU 定义 ELU ( x ) { x , …

【YOLOv7/YOLOv5系列算法改进NO.54】改进激活函数为ReLU、RReLU、Hardtanh、ReLU6、Sigmoid、Tanh、Mish、Hardswish、ELU、CELU等

文章目录 前言一、解决问题二、基本原理三、​添加方法四、总结 前言 作为当前先进的深度学习目标检测算法YOLOv7&#xff0c;已经集合了大量的trick&#xff0c;但是还是有提高和改进的空间&#xff0c;针对具体应用场景下的检测难点&#xff0c;可以不同的改进方法。此后的系…

常用激活函数:Sigmoid、Tanh、Relu、Leaky Relu、ELU优缺点总结

1、激活函数的作用 什么是激活函数&#xff1f; 在神经网络中&#xff0c;输入经过权值加权计算并求和之后&#xff0c;需要经过一个函数的作用&#xff0c;这个函数就是激活函数&#xff08;Activation Function&#xff09;。 激活函数的作用&#xff1f; 首先我们需要知道…

深度学习—激活函数详解(Sigmoid、tanh、ReLU、ReLU6及变体P-R-Leaky、ELU、SELU、Swish、Mish、Maxout、hard-sigmoid、hard-swish)

非线性激活函数详解 饱和激活函数Sigmoid函数tanh函数hard-Sigmoid函数 非饱和激活函数Relu&#xff08;修正线性单元&#xff09;&#xff1a;Relu6&#xff08;抑制其最大值&#xff09;&#xff1a;ELU&#xff08;指数线性单元&#xff09;SELULeaky-Relu / R-ReluP-Relu&a…

激活函数详解(ReLU/Leaky ReLU/ELU/SELU/Swish/Maxout/Sigmoid/tanh)

神经网络中使用激活函数来加入非线性因素&#xff0c;提高模型的表达能力。 ReLU(Rectified Linear Unit,修正线性单元) 形式如下: ReLU公式近似推导:: 下面解释上述公式中的softplus,Noisy ReLU. softplus函数与ReLU函数接近,但比较平滑, 同ReLU一样是单边抑制,有宽广的接受…

【卷积神经网络】12、激活函数 | Tanh / Sigmoid / ReLU / Leaky ReLU / ELU / SiLU / Mish

文章目录 一、Tanh二、Sigmoid三、ReLU四、Leaky ReLU五、ELU六、SiLU七、Mish 本文主要介绍卷积神经网络中常用的激活函数及其各自的优缺点 最简单的激活函数被称为线性激活&#xff0c;其中没有应用任何转换。 一个仅由线性激活函数组成的网络很容易训练&#xff0c;但不能学…

神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout)

神经网络激活函数汇总&#xff08;Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout&#xff09; 常规 sigmoid 和 tanh sigmoid 特点&#xff1a;可以解释&#xff0c;比如将0-1之间的取值解释成一个神经元的激活率&#xff08;firing rate&#xff09; 缺陷&#xff1…

神经网络激活函数优缺点和比较(sigmod,tanh,relu,softmax,leaky relu,ELU,SELU)

文章目录 前言一、sigmoid函数二、tanh函数三&#xff0c;ReLU函数四&#xff0c; Leaky ReLU五&#xff0c;ELU指数线性单元函数&SELU函数六&#xff0c;softmax函数 前言 理想的激活函数应该有的性质 非线性&#xff1a;这个条件是多层神经网络形成的基础&#xff0c;保…

常用激活函数:Sigmoid/Softmax/ELU/ReLU/LeakyReLU/Tanh...(Pytorch)

激活函数 一、Sigmoid1.介绍2.实例 二、Softmax1.介绍2.实例 三、ELU&#xff1a;指数线性单元函数1.介绍2.实例 四、ReLU&#xff1a;整流线性单元函数1.介绍2.实例 五、ReLU61.介绍2.实例 六、LeakyReLU1.介绍2.实例 七、Tanh&#xff1a;双曲正切函数1.介绍2.实例 一、Sigmo…

【深度学习】论文导读:ELU激活函数的提出(FAST AND ACCURATE DEEP NETWORK LEARNING BY EXPONENTIAL LINEAR UNITS (ELUS))

论文下载&#xff1a; FAST AND ACCURATE DEEP NETWORK LEARNING BY EXPONENTIAL LINEAR UNITS (ELUS)&#xff08;2016&#xff0c;Djork-Arne Clevert, Thomas Unterthiner & Sepp Hochreiter&#xff09; 一、简介 ELU的表达式&#xff1a; 四种激活函数&#xff0…

ReLU、LReLU、PReLU、CReLU、ELU、SELU

ReLULReLUPReLUCReLUELUSELUReLU tensorflow中:tf.nn.relu(features, name=None) LReLU (Leaky-ReLU) 其中 ai 是固定的。 i 表示不同的通道对应不同的