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

各种激活函数的计算公式、图像以及实现代码

         激活函数已经成为神经网络中非常重要的一部分,随着各种类型的神经网络模型被人们开发出来,各种激活函数也应运而生,在不同的场景中,取得良好的效果。本文跟据著名的YOLO系列目标检测模型的源码 AlexeyAB Darknet,整理出目前神经网络模型中应用最广泛的20种激活函数,对它们的计算公式、图像特点进行介绍,并使用python代码实现这些激活函数的计算。

1、stair激活函数

        如图1所示,stair激活函数的图像就像阶梯一样。它的计算公式如下:

stair(x)=\left\{\begin{matrix} \left \lfloor x/2 \right \rfloor& (mod(\left \lfloor x \right \rfloor,2)=0)\\ (x+\left \lfloor x \right \rfloor)+\left \lfloor x/2 \right \rfloor&(mod(\left \lfloor x \right \rfloor,2)\neq 0) \end{matrix}\right.

式子中,\left \lfloor x \right \rfloor表示不大于x的整数,mod\left ( \left \lfloor x \right \rfloor,2 \right )表示对2取余数。 

图1 stair激活函数

 代码实现如下:


def stair(x):n=math.floor(x)if n%2==0:return math.floor(x/2.0)else:return (x-n)+math.floor(x/2.0)

2、hardtan激活函数

        如图2所示,hardtan激活函数是通过以直代曲近似实现tan函数,其计算公式如下:

hardtan(x)=\left\{\begin{matrix} -1.0 &(x<-1.0) \\ 1.0 &(x>1.0) \\ x & (other)\end{matrix}\right.

图2 hardtan激活函数

代码实现如下:

def hardtan(x):if x<-1.0:return -1.0elif x>1.0:return 1.0else:return x

3、linear激活函数

        linear激活函数是线性激活函数,输入x输出也是x,其函数图像如图3所示。

图3 线性激活函数

 代码实现:

def linear(x):return x

4、logistic激活函数

        logistic激活函数又叫sigmoid激活函数,如图4所示,logistic函数可以结果映射到0到1之间。其计算公式如下:

logistic(x)=\frac{1.0}{1.0+e^{-x}}

图4 logistic激活函数

 代码实现如下:

def logistic(x):return 1.0/(1.0+math.exp(-x))

5、loggy激活函数

        如图5所示,loggy的函数图像跟logistic有点相似,也是把输出映射到0到1之间。其计算公式如下:

loggy(x)=\frac{2.0}{1+e^{-x}}-1

图5 loggy激活函数

 代码实现:

def loggy(x):return 2.0/(1.0+math.exp(-x))-1.0

6、relu激活函数

        relu激活函数为线性整流函数,目的是把小于0的数截取掉,其函数图像如图6所示,其计算公式如下:

relu(x)=\left\{\begin{matrix} 0 & (x<0)\\ x & (x\geqslant 0) \end{matrix}\right.

图6 relu激活函数

 代码实现如下:

def relu(x):return x*(x>0)

7、relu6激活函数

        relu6和relu一样,也是线性整流函数,不同的是他对大于6的数进行了截断,其函数图像如图7所示,其计算公式如下:

relu6(x)=\left\{\begin{matrix} 0.0 & (x<0)\\ 6.0& (x>6)\\ x& (0\leq x\leq 6) \end{matrix}\right.

图7 relu6激活函数

 代码实现如下:

def relu6(x):if x<0:return 0.0elif x>6:return 6.0else:return x

8、elu激活函数

        elu激活函数的图像如图8所示,其计算公式如下:

elu(x)=\left\{\begin{matrix} x & (x\geq 0)\\ e^{x}& (x<0) \end{matrix}\right.

图8 elu激活函数

 代码实现:

def elu(x):return (x>=0)*x+(x<0)*(math.exp(x)-1.0)

9、selu激活函数

        selu激活函数如图9所示,其计算公式如下:

selu(x)=\left\{\begin{matrix} 1.0507*x& (x\geq 0)\\ 1.0507* 1.6732* (e^{x}-1.0)& (x<0) \end{matrix}\right.

图9 selu激活函数

 代码实现:                                                                                                                                        

def selu(x):return (x>=0)*1.0507*x+(x<0)*1.0507*1.6732*(math.exp(x)-1.0)

10、relie激活函数

                相比于relu激活函数,relie激活函数对于小于零的数据并不会直接截取为0,二是乘以一个小的系数,这个系数为0.01。其函数图像如图10所示,其计算公式如下:

relie(x)=\left\{\begin{matrix} 0.01*x & (x<0)\\ x& (x\geq 0) \end{matrix}\right.

图10 relie激活函数

 代码实现:

def relie(x):if x>0:return xelse:return 0.01*x

11、ramp激活函数

        如图11所示为ramp激活函数,其计算公式如下:

ramp(x)=\left\{\begin{matrix} x+0.1* x & (x>0)\\ 0.1*x& (x\leq 0) \end{matrix}\right.

图11 ramp激活函数

代码实现:

def ramp(x):return x*(x>0)+0.1*x

12、leaky激活函数

        如图12所示为leaky激活函数的图像,它与relie函数有点像,它的斜率系数要比relie激活函数要大,其计算公式如下:

leaky(x)=\left\{\begin{matrix} x & (x\geq 0)\\ 0.1* x& (x<0) \end{matrix}\right.

图12 leaky激活函数

 代码实现如下:

def leaky(x):if x<0:return 0.1*xelse:return x

13、tanh激活函数

        tanh激活函数的图像如图13所示,它的取值范围是[-1,1],其计算公式如下:

tanh(x)=\frac{2.0}{1.0+e^{-2* x}}-1

图13 tanh激活函数

 代码实现:

def tanh(x):return 2.0/(1.0+math.exp(-2.0*x))-1.0

14、gelu激活函数

        gelu激活函数的图像如图14所示,其计算公式如下:

gelu(x)=0.5* x(1.0+tanh(0.797885*x+0.035677*x^{3.0}))

式中,tanh为上文提到过的激活函数。

图14 gelu激活函数

代码实现如下:

def gelu(x):return 0.5*x*(1.0+math.tanh(0.797885*x+0.035677*math.pow(x,3.0)))

15、softplus激活函数

        softplus激活函数的图像如图15所示,其计算公式如下:

softplus(x,threshold)=\left\{\begin{matrix} x& (x>threshold)\\ e^{x}& (x<-threshold) \end{matrix}\right.

图15 softplus激活函数

 代码实现:

def softplus(x,threshold):if x>threshold:return xelif x<-threshold:return math.exp(x)else:return math.log(math.exp(x)+1.0)

 16、plse激活函数

        图16位plse激活函数的图像,其计算公式如下:

plse(x)=\left\{\begin{matrix} 0.01*(x+4.0) &(x<-4) \\ 0.01*(x-4.0)+1.0&(x>4) \\ 0.125*x+0.5& (-4\leq x\leq 4) \end{matrix}\right.

图16 plse激活函数

 代码实现:

def plse(x):if x<-4:return 0.01*(x+4.0)elif x>4:return 0.01*(x-4.0)+1.0else:return 0.125*x+0.5

17、lhtan激活函数

        图17是lhtan激活函数的图像,其计算公式为:

lhtan(x)=\left\{\begin{matrix} 0.001*x & (x<0)\\ 0.001*(x-1.0)+1.0&(x>1) \\ x& (0\leq x\leq 1) \end{matrix}\right.

图17 lhtan激活函数

 

代码实现:

def lhtan(x):if x<0:return 0.001*xelif x>1:return 0.001*(x-1.0)+1.0else:return x

18、swish激活函数

        图18是swish激活函数的图像,其计算公式如下:

swish(x)=x*logistic(x)

式中,logistic为上文所提到的激活函数,也叫sigmoid激活函数。

图18 swish激活函数

 代码实现:

def logistic(x):return 1.0/(1.0+math.exp(-x))def swish(x):return x*logistic(x)

19、mish激活函数

        mish激活函数的图像如图19所示,其计算公式如下:

mish(x)=x*tanh(softplus(x,20.0))

式中tanh,softplus均为上文描述过的激活函数。

图19 mish激活函数

 代码实现如下:

def softplus(x,threshold):if x>threshold:return xelif x<-threshold:return math.exp(x)else:return math.log(math.exp(x)+1.0)def tanh(x):return 2.0/(1.0+math.exp(-2.0*x))-1.0def mish(x):return x*tanh(softplus(x,20.0))

20、hardmish激活函数

        hardmish激活函数为mish激活函数的近似形式,它的图像如图20所示,其计算公式如下:

hardmish(x)=\left\{\begin{matrix} x & (x>0)\\ x*x*0.5+x&(-2< x\leq 0) \\ 0& (x\leq -2) \end{matrix}\right.

图20 hardmish激活函数

 代码实现:

def hardmish(x):if x>0:return xelif x>-2:return x*x*0.5+xelse:return 0

相关文章:

各种激活函数的计算公式、图像以及实现代码

激活函数已经成为神经网络中非常重要的一部分&#xff0c;随着各种类型的神经网络模型被人们开发出来&#xff0c;各种激活函数也应运而生&#xff0c;在不同的场景中&#xff0c;取得良好的效果。本文跟据著名的YOLO系列目标检测模型的源码 AlexeyAB Darknet&#xff0c;整理出…...

ArangoDB

介绍 ArangoDB 是一个原生的多模型开源数据库&#xff0c;具有灵活的文档、图形和键值数据模型。使用方便的类似 SQL 的查询语言或 JavaScript 扩展构建高性能应用程序。主要特点 在集群上安装 ArangoDB —— 安装简单灵活的数据建模&#xff1a;数据建模为键值对、文档或图表的…...

MySQL8.0Linux安装及主从的搭建

MySQL8.0Linux安装教程 下载并安装 需要说明的一点是我使用的是SSH secure shell Client连接linux系统的&#xff0c;它的用法和命令窗口差不多。界面如图&#xff1a;一样的使用Linux命令操作。 话不多说 第一步&#xff1a; 1&#xff09;、切换到 /usr/local下 cd /usr/…...

苹果新专利实现无线技术传输睡眠数据,蓝牙在智能家居中的应用

苹果于 2017 年 5 月收购了芬兰科技公司 Beddit&#xff0c;只是在过去 6 年时间里并没有太大的动作。根据美国商标和专利局本周公示的清单&#xff0c;苹果获得了一项 Beddit 相关的技术专利。 根据专利描述&#xff0c;苹果使用一根或者多根天线&#xff0c;利用电磁辐射的…...

银行数字化转型导师坚鹏:数字化转型为什么需要致良知与知行合一

在银行数字化转型过程中&#xff0c;特别需要致良知与知行合一哲学思想的指导。 知中有行&#xff0c;行中有知&#xff1b;行极而知&#xff0c;知极而行&#xff1b;知行无端&#xff0c;知行无始。知与行是一件事&#xff0c;做事与培养本体&#xff08;修心&#xff09;也是…...

Web前端学习:章三 -- JavaScript预热(二)

六五&#xff1a;作用域与function function&#xff1a;函数&#xff0c;不是数学上的函数&#xff0c;与写代码有关 JS中的函数&#xff1a;运用它&#xff0c;起个名字&#xff0c;然后对函数进行调用&#xff0c;即可将函数中的内容执行一遍 1、function 最基本的作用域…...

Excel绘制数据对比表格-表格可视化

Word中生成的表格一般比较单调&#xff0c;若一组数据存在对比的情况时&#xff0c;读者/审稿人难以直接通过详细对比数据来分析&#xff0c;此时若可以将该组数据可视化来对比则为好&#xff0c;Excel则可实现该功能。 关于有些期刊需要提供表格中的数据便于复制等情况时&…...

究竟是谁负了谁,来自底层测试的2022年终总结

前言 说实话坐在椅子前&#xff0c;都想好了&#xff0c;该怎么去写&#xff0c;甚至感觉有好多要写的&#xff0c;但是当我坐在椅子上时&#xff0c;却不知道该怎么开头了&#xff0c;不知道是不是紧张&#xff1f;还是不舍&#xff1f;难道还没有跟过去挥手告别的勇气吗&…...

C++——IO流

目录 C语言的输入与输出 流是什么 CIO流 C标准IO流 C文件IO流 二进制读写 文本读写 stringstream的简单介绍 C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键 盘)读取数据&#xff0c;并将值存放在变量中。…...

网络 | UDP与TCP协议讲解 | TCP可靠性是怎样实现的?

文章目录前置知识查看网络状态的工具查看进程idUDP协议协议格式UDP只有接收缓冲区基于UDP的应用层协议TCP协议流的理解协议格式确认应答机制缓冲区序号的作用流量控制超时重传机制6位标志位紧急数据的处理三次握手listen的第二个参数全连接和半连接队列都维护了什么信息&#x…...

JavaEE——简单介绍Thread类以及线程的基本操作

文章目录一、Thread 类中的常见构造方法二、Thread 的一些常见属性三、线程的启动——start()isAlive() 方法的解释四、线程中断五、线程等待-join()了解六、简单解释线程休眠一、Thread 类中的常见构造方法 我们已知&#xff0c;Thread 类是Java中多线程中的一个关键类&#…...

Java的数据库编程:JDBC

Content &#x1f389;1什么是API &#x1f389;2.什么是JDBC &#x1f389;3.数据库驱动包的安装 &#x1f389;4.数据库安装包在idea的使用 &#x1f389;5.JDBC的增删改查的简单实现 今天为大家带来JAVA的数据库编程,也就是用Java实现数据库 数据库的最基本的操作就是…...

蓝桥冲刺31天之第六天

今天是摆子的一天&#xff0c;明天我要肝一整天的第四题&#xff01;&#xff01;&#xff01; PS&#xff1a;一个普通的排序罢了 import java.io.*; import java.util.Arrays; import java.util.Scanner;/*** ClassName 考勤刷卡* Description TODO* Author 小怂很怂* Date 2…...

Streamlit 工具记录

Streamlit 是基于 Python 的 Web 应用程序框架&#xff0c;可视化数据&#xff0c;分析结果。 Streamlit 是一个开源库&#xff0c;可在短时间内开发机器学习可视化仪表板。只需几行代码就可以构部署强大的数据应用程序。Streamlit 可将仪表板的开发时间从几天缩短至几小时。 …...

GreenPlum小结

什么是GreenPlum&#xff1f;GreenPlum是业界最快最高性价比的关系型分布式数据库,它在开源的PostgreSQL的基础上采用MPP架构&#xff08;Massive Parallel Processing&#xff0c;海量并行处理&#xff09;,具有强大的大规模数据分析任务处理能力。GreenPlum作为大数据融合存储…...

C语言中数组和指针

文章目录前言一、指针的概念二、指针的大小三、指针的用法1.指针指向变量2.指针指向数组3.指针指向函数总结前言 本文将给大家带来C语言中非常重要的两个知识点&#xff0c;指针和数组。 一、指针的概念 指针&#xff0c;是C语言中的一个重要概念及其特点&#xff0c;也是掌…...

Leetcode.剑指 Offer II 022 链表中环的入口节点

题目链接 Leetcode.剑指 Offer II 022 链表中环的入口节点 mid 题目描述 给定一个链表&#xff0c;返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next指针进入环的第一个节点为环的入口节点。如果链表无环&#xff0c;则返回 null。 为了表示给定链表中的环&#…...

4种不同编程语言的打印方式

意义 打印方式是编程中不可或缺的一部分&#xff0c;它可以帮助开发人员有效地调试和测试代码&#xff0c;并提供有用的信息来监视程序的运行状态和性能。 编程语言中的打印方式是指将程序输出到终端或控制台上进行显示。这个功能在编程中非常重要&#xff0c;因为它可以帮助开…...

websocket介绍

我们聊聊轮询技术,什么是轮询?轮询就是在特定的时间间隔,由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。 轮询分为两种: 短轮询:通过不断的向服务端发送数据,客户端发送Request,服务端直接返回Response(不管服务端数据有没有改变)。长轮…...

Educational Codeforces Round 144 (Rated for Div. 2),C,D

C. Maximum Set 思路&#xff1a; 我们求最大数组&#xff0c;显然是L一直乘2,直到再乘2就越过区间位置。我们说过&#xff0c;再乘一个2就不行&#xff0c;那么我们除一个2&#xff0c;换句话说&#xff0c;就是再乘一个4就不行了。发现&#xff0c;我们可能有机会乘一个3&a…...

【redis学习篇】Redis三种持久化方式详解

官方文档 一、Redis持久性 Redis如何将数据写入磁盘 持久性是指将数据写入持久存储&#xff0c;如固态磁盘&#xff08;SSD&#xff09;。Redis提供了一系列持久性选项。其中包括&#xff1a; RDB&#xff08;快照&#xff09;&#xff1a;RDB持久性以指定的时间间隔执行数据…...

垃圾回收中的分代年龄

为什么CMS里的分代年龄是6而不是15 CMS (Concurrent Mark Sweep) 是一种基于分代的垃圾收集器&#xff0c;其中分代年龄指的是一个对象在年轻代中经历了多少次垃圾收集。在 CMS 中&#xff0c;当一个对象的分代年龄达到阈值时&#xff0c;就会被晋升到老年代中。 在 CMS 中&a…...

蓝桥杯-左移右移(2022国赛)

蓝桥杯-左移右移1、问题描述2、解题思路与代码实现2.1 方法一&#xff1a;使用LinkedList双向链表实现(50%)2.2 方法二&#xff1a;使用HashMap左右临界值实现(100%)1、问题描述 小蓝有一个长度为 N 的数组, 初始时从左到右依次是 1,2,3,…N 。 之后小蓝对这个数组进行了 M 次操…...

你还在手撸SQL?ChatGPT笑晕在厕所

文章目录你还在手撸SQL&#xff1f;ChatGPT笑晕在厕所一、背景二、面向Chat编程1. 数据库设计2. 建表语句3. 加中文注释4. 数据模拟5. 查询成绩6. 修改课程任课老师7. 删除课程8. 删除一个有关联数据的课程总结你还在手撸SQL&#xff1f;ChatGPT笑晕在厕所 一、背景 经典3表设…...

【Redis】Redis慢查询

文章目录慢查询记录慢查询两个配置参数修改配置参数慢查询日志慢查询记录 我们都知道像mysql等持久化数据库会有慢查询日志&#xff0c;其实Redis中也有慢查询日志的功能。慢查询就是系统在执行命令的前后计算每条命令的执行时间&#xff0c;如果超过我们预设的时间&#xff0c…...

【Kubernetes】第二十一篇 - k8s 项目部署流程和操作梳理

一&#xff0c;前言 上一篇&#xff0c;介绍了 k8s 污点和容忍度&#xff1b; 在了解前面 k8s 介绍之后&#xff0c;设计并完成一个前后端项目的部署和持续集成&#xff1b; 本篇&#xff0c;介绍基于 k8s 项目部署流程设计&#xff1b; 二&#xff0c;项目部署流程设计 本…...

推荐系统[九]项目技术细节讲解z2:搜索Query理解[Term Weight、Query 改写、同义词扩写]和语义召回技术

搜索Query理解和语义召回技术 随着用户规模和产品的发展, 搜索面临着越来越大的 query 长尾化挑战,query 理解是提升搜索召回质量的关键。本次将介绍搜索在 query term weighting,同义词扩展,query 改写,以及语义召回等方向上的实践方法和落地情况。 1.面临问题:长尾 qu…...

【项目精选】基于SSH的医院在线挂号系统(视频+论文+源码)

点击下载源码 医院挂号系统主要用于实现医院的挂号&#xff0c;前台基本功能包括&#xff1a;用户注册、用户登录、医院查询、挂号、取消挂号、修改个人信息、退出等。 后台基本功能包括&#xff1a;系统管理员登录、医院管理、科室管理、公告管理、退出系统等。 本系统结构如…...

Pandas库:从入门到应用(一)

一、Pandas简介 pandas是 Python 的核⼼数据分析⽀持库&#xff0c;提供了快速、灵活、明确的数据结构&#xff0c;旨在简单、直观地处理关系型、标记型数据。pandas是Python进⾏数据分析的必备⾼级⼯具。 pandas的主要数据结构是 **Series(**⼀维数据)与 DataFrame (⼆维数据…...

MySQL中concat()、concat_ws()、group_concat()函数使用

在平时工作中&#xff0c;经常记不清或者记混他们的用法&#xff0c;正好有时间就记录一下&#xff5e;concat()函数语法&#xff1a;concat(str1, str2, int1...)例如执行sql:SELECT CONCAT(id,USERNAME,USER_PHONE) FROM tb_user输出查询结果为&#xff1a; 1test15216756754…...