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


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库中的激活函数绘图的,大同小异,想了解的可以看看,送上传送门,希望可以帮到你。

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

  1. 1、常用激活函数:Sigmoid、Tanh、ReLU、LReLU、RReLU、ELU

    目录 常用激活函数介绍 1. Sigmoid函数 2.Tanh / 双曲正切激活函数 3.ReLU(rectified linear unit)修正线性单元函数 4.LReLU(Leaky ReLU) ...

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

    一文理解常用激活函数 1. Sigmoid 公式: Sigmoid(x)=11+exp⁡(−x)\text{Sigmoid}(x) = \frac{1}{1 + \exp(-x)}Sigmoid(x) ...

  3. 激活函数-Sigmoid, Tanh及ReLU

    什么是激活函数 在神经网络中,我们会对所有的输入进行加权求和,之后我们会在对结果施加一个函数,这个函数就是我们所说的激活函数.如下图所示. 为什么使用激活函数 我们使用激活函数并不是真的激活什么,这只 ...

  4. 激活函数σ、tanh、relu、Leakyrelu、LR_BP反向传播推导

    激活函数 1- SIgmoid 1-1 sigmoid导数 2- tanh 2-1 tanh函数导数 3- ReLU 4- LeakyReLu 5- LR 公式推导 Sigmoid.tanh.ReLU ...

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

    激活函数 一.Sigmoid 1.介绍 2.实例 二.Softmax 1.介绍 2.实例 三.ELU:指数线性单元函数 1.介绍 2.实例 四.ReLU:整流线性单元函数 1.介绍 2.实例 五.Re ...

  6. 常用激活函数activation function(Softmax、Sigmoid、Tanh、ReLU和Leaky ReLU) 附激活函数图像绘制python代码

    激活函数是确定神经网络输出的数学方程式. 激活函数的作用:给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数. 1.附加到网络中的每个神经元,并根据每个神经元的输入来确定是否应激活. 2 ...

  7. 深度学习激活函数总结(sigmoid,tanh,ReLU,Leaky ReLU,EReLU,PReLU,Softmax,Swish,Maxout,Softplus)

    摘要 本文总结了深度学习领域最常见的10中激活函数(sigmoid.Tanh.ReLU.Leaky ReLU.ELU.PReLU.Softmax.Swith.Maxout.Softplus)及其优缺点 ...

  8. 【深度学习】——神经网络中常用的激活函数:sigmoid、Relu、Tanh函数

    激活函数   实际中的很多事情并不能简单的用线性关系的组合来描述.在神经网络中,如果没有激活函数,那么就相当于很多线性分类器的组合,当我们要求解的关系中存在非线性关系时,无论多么复杂的网络都会产生欠拟 ...

  9. ReLU,Sigmoid,Tanh,softmax,pipeline【基础知识总结】

    一.ReLU(Rectified Linear Activation Function) 1.优点 2.缺点 3.补充 1.Leaky ReLUs 2.参数化修正线性单元(PReLU) 3.随机纠正线 ...

  10. 常用激活函数--小白角度 TensorFlow 机器学习 神经网络 选取

    常用激活函数--小白角度TensorFlow 机器学习 神经网络 选取 先简单介绍一下激活函数 常用激活函数review 1.阶跃函数 2.Sigmoid函数(logistic函数) 3.Hyperb ...

最新文章

  1. 查看linux中的TCP连接数
  2. 《算法导论》读书笔记--第三章 函数的增长
  3. vue中的v-on事件监听机制
  4. Android网络优化之HttpClient
  5. 口语学习Day1:天气
  6. ABAP-AVL-OO方法中的ALV的如何自己添加按钮及其响应
  7. 贝叶斯学习及共轭先验
  8. Quorum 和唱票那回事
  9. mysql dp.cal 显示汉子_计算1到N中各个数字出现的次数 --数位DP
  10. 《大话设计模式》第29章-OOTV杯超级模式大赛—模式总结(五)
  11. linux系统给串口权限,让ubuntu串口和USB设备不用root权限访问
  12. linux安装 web2py,TurnkeyLinux上用于Web2Py到MySQL的DAL连接字符串
  13. Visual Studio使用技巧---(1-10)
  14. 绿油损耗大于大多数高速板材,对于高度板材而言,绿油带来的损耗会更明显
  15. 返利网是如何做到订单跟踪的?
  16. selenium 获取最新页面源代码_Selenium获取网页源码
  17. VBA和Excel学习记录
  18. Word2016中文字间距突然变大了是怎么回事?
  19. App开发者不再遵循苹果iOS设计惯例
  20. 《计算机网络参考模型》

热门文章

  1. Java计算机IT编程文档常见单词翻译
  2. (附源码)ssm+mysql+基于SSM框架的图片分享及评价网站设计与实现 毕业设计201524
  3. 关于程序可移植性的问题
  4. 《Android移动应用基础教程》(Android Studio)(第二版)黑马程序员 课后习题答案
  5. MySQL 统计上一个自然周 周一到周日的数据 为空则补0实现
  6. codeblocks使用教程(codeblocks使用教程调试)
  7. 心田花开小学拼音复韵母ao、ou、iu读法教程
  8. 弘辽科技:淘宝商品降权的影响是什么?为什么被降权?
  9. C#入门教程(一)visual studio与winform
  10. threejs(webgl)-shader入门教程(1)