常用的激活函数python代码-简洁版-想画好看的激活函数图的第一步

激活函数python代码

最近在写毕业论文,其中需要介绍一些基础的激活函数,然后如果直接用matplot绘图其绘图结果不是矢量图,而且不能像Origin一样修改线条,坐标轴之类的,但是如果像用Origin画就需要生成横纵坐标的数据然后放到Origin中,其实这个过程还是有点麻烦,接下来我文中的图,就是用python生成数据之后然后复制到Origin中得到的绘图结果。要是用框架中的代码还需要转换成Tensor的张量格式,因此手动用基础库编写,且不会给所有代码堆到一起要一个一个分开看。

文章目录

  • 激活函数python代码
    • 函数代码部分
      • 1.sigmoid
      • 2.tanh
      • 3.ReLU
      • 4.LeaklyReLU
      • 5.ReLU6
      • 6.Swish
      • 7.Hard-Swish
      • 8.Hard-Sigmoid
  • 生成绘图数据部分
  • 总结

首先介绍激活含糊代码和函数图像,然后介绍如何生成绘图数据

函数代码部分

1.sigmoid

sigmoid函数将数据映射到 ( 0 , 1 ) (0,1) (0,1)之间,公式如下
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1
python代码如下

sigmoid = lambda x: 1/(1+np.exp(-x))

在这里插入图片描述

2.tanh

tanh激活函数将数据映射到 ( − 1 , 1 ) (-1,1) (1,1)之间

tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} tanh(x)=ex+exexex
python代码为

tanh = lambda x: (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))

在这里插入图片描述

3.ReLU

ReLU激活函数大于0原样输出,小于0被截至

R e L U ( x ) = m a x ( 0 , x ) ReLU(x)=max(0,x) ReLU(x)=max(0,x)

import numpy as np

def relu(x):
    y = x.copy()
    y[np.where(x<0)] = 0
    return y

在这里插入图片描述

4.LeaklyReLU

ReLU的改进版小于0时不截至,乘以一个系数 α \alpha α公式如下。
L e a k y R e L U ( x ) = { x , if  x > 0 α x , if  x ≤ 0 LeakyReLU(x) = \begin{cases} x, & \text{if } x > 0 \\ \alpha x, & \text{if } x \leq 0 \end{cases} LeakyReLU(x)={x,αx,if x>0if x0

import numpy as np

def leaklyrelu(x,alpha=0.01):
    y = x.copy()
    y[np.where(x<0)] = y[np.where(x<0)]*alpha
    return y

在这里插入图片描述

5.ReLU6

ReLU的另一种变体,将输出值限制在 ( 0 , 6 ) (0,6) (0,6)之间
R e L U 6 ( x ) = m i n ( m a x ( 0 , x ) , 6 ) ReLU6(x)=min(max(0,x),6) ReLU6(x)=min(max(0,x),6)

import numpy as np

def relu6(x):    
    y = x.copy()
    y[np.where(x<0)] = 0
    y[np.where(x>6)] = 6
    return y

在这里插入图片描述

6.Swish

一种谷歌团队提出的用于替代ReLU的激活函数,函数图像是联系可导的,就是给Sigmoid函数乘以了一个x
S w i s h ( x ) = x ⋅ σ ( x ) Swish(x)=x\cdot \sigma(x) Swish(x)=xσ(x)

swish = lambda x: x/(1+np.exp(-x))

在这里插入图片描述

7.Hard-Swish

ReLU6的变体,对 x ∈ [ − 3 , 3 ] x\in[-3,3] x[3,3]提供非线性激活
H a r d S w i s h ( x ) = x ⋅ R e L U 6 ( x + 3 ) 6 HardSwish(x)=x\cdot \frac{ReLU6(x+3)}{6} HardSwish(x)=x6ReLU6(x+3)

import numpy as np

def relu6(x):    
    y = x.copy()
    y[np.where(x<0)] = 0
    y[np.where(x>6)] = 6
    return y

hard_swish = lambda x: x*(relu6(x+3)/6)

在这里插入图片描述

8.Hard-Sigmoid

用一种分段函数替代Sigmoid函数,类似于一种简化版的Sigmoid
H a r d S i g m o i d ( x ) = m a x ( 0 , m i n ( 1 , x + 1 2 ) ) HardSigmoid(x)=max(0,min(1,\frac{x+1}{2})) HardSigmoid(x)=max(0,min(1,2x+1))

在这里插入图片描述

import python

def hardsigmoid(x):
    y = x.copy()
    y = (x+1)/2
    y[np.where(y>1)] = 1
    y[np.where(y<0)] = 0
    return y

生成绘图数据部分

上面的图我是使用Origin实现的绘图,其中要获得两列的数据一列是 x x x一列是激活函数的输出值 f ( x ) f(x) f(x)
以sigmoid为例,x为输入,y为输出

import numpy as np

sigmoid = lambda x: 1 / (1 + np.exp(-x))
x = np.linspace(-5, 5, 100)
y = sigmoid(x)

接下来需要Spyder和Origin
打开Origin默认初始化一个Sheet,我屏幕27寸截图确实显得自小,但是我觉得还是截的完全比较好
在这里插入图片描述
然后在Spyder中随便建一个临时文件,然后F5运行,或者点上面的绿色小三角运行,在右侧的变量菜单里找到存储的x,y两个变量,点击一个变量y
在这里插入图片描述
弹出以下窗口,然后点击第0列的编号也就是箭头所指向的位置
在这里插入图片描述
变成蓝色就是选中了,然后按住Crtl+C复制,这里右键是没有显示的
在这里插入图片描述
然后打开Origin粘到Sheet里,由于我们先复制了函数值y所以粘到了第二列
在这里插入图片描述
然后x同理复制过来,之后点击菜单栏的绘图
在这里插入图片描述
然后在2D基础绘图中选择折线图
在这里插入图片描述
然后在图标绘制中选择折线图的X,Y数据
在这里插入图片描述
然后点确认就得到了一个基础的Sigmoid图
在这里插入图片描述
然后根据自己的需要改坐标轴位置,加网络,换线段的颜色就可以了,我这里主要是开个网格,然后移动了坐标轴,还有加粗了线段和改了颜色,就不详细展开了,不然我这标题就起的不对了(笑),等下一篇再介绍具体步骤。
在这里插入图片描述

总结

输入数据需要是arrray数组,然后除了ReLU6选[-5,10]其他映射区间都选[-5,5]就好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/395443.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构day1

定义一个学生结构体&#xff0c;包含结构体成员&#xff1a;身高&#xff0c;姓名&#xff0c;成绩&#xff1b;定义一个结构体数组有7个成员&#xff0c;要求终端输入结构体成员的值&#xff0c;根据学生成绩&#xff0c;进行冒泡排序。 #include <stdio.h> #include &l…

贪心算法之合并区间

“任世界多宽广&#xff0c;停泊在这港口~” 区间问题&#xff0c;涉及到最多的就是 取交集 和 并集的概念。我们使用C排序算法后&#xff0c;其默认规则就是按照 “左排序”进行的。因而&#xff0c;我们实质上注意的是每一个区间的 右端点&#xff0c;根据题目要求&#xff…

基于AI的RAG需要真正面对商业化场景和落地的几大致命陷井

背景 人人在谈AI&#xff0c;可是AI落地在哪&#xff1f;AI到底可以给我们带来什么&#xff1f; 随着流量红利模式的衰退、AI犹如一针强心剂一样打给了整个IT领域。 AI作图-漂亮、惊艳、快&#xff1b;AI视频-人人可以成为短视频专家&#xff1b;AI辅助编程-1人顶7人&#x…

安全基础~通用漏洞6

文章目录 知识补充XXE文件包含CTFshow闯关 知识补充 XML格式&#xff08;一种数据传输格式&#xff0c;现在被JSON取代&#xff09;&#xff1a;https://xz.aliyun.com/t/6887 XML文档结构包括XML声明、DTD文档类型定义&#xff08;可选&#xff09;、文档元素 DTD 定义合法的…

C++与C的区别

1、C不允许出现多个同名的全局变量 2、C中const修饰的变量可以通过指针修改 3、C语言&#xff1a;NULL&#xff0c;C中&#xff1a;nullptr C语言中NULL通常是0值&#xff0c;只报警告 C中nullptr的左值一定得是指针类型 4、C新增“引用” 引用&#xff1a;取别名 数据…

java常用应用程序编程接口(API)——Object类概述及常用方法

前言&#xff1a; Object是一个非常重要的语句&#xff0c;整理下心得。打好基础&#xff0c;daydayup! Object类 什么是Object类&#xff1f; Object类是java中所有类的最终类。每一个类都默认继承Object类&#xff0c;因此java中的所有类中的对象都可以直接使用Object类中提…

产品经理学习-产品运营《流程管理》

如何进行流程管理 信息可视化 甘特图-流程管理思维导图-方案讨论原型图-活动文档 明确责任制 分工明确&#xff0c;关键环境有主负责人通过时间倒推督促管理 沟通技巧 明确共同利益以结果激励做好信息同步 如何进行监控活动效果 监控活动的效果是要监控数据 活动每个环境的…

详解4大C语言内存函数【超详细建议点赞收藏】

目录 1. memcpy----内存拷贝1.1 函数介绍1.2 函数使用1.3 模拟实现 2. memmove----重叠内存的数据拷贝2.1 函数介绍2.2 函数使用2.3 模拟实现 3. memcmp----内存比较3.1 函数介绍3.2 函数使用 4.memset----内存设置4.1 函数介绍4.2 函数使用 注意&#xff1a;以下4个内存函数在…

Rocky Linux网卡静态配置

一、开源系统 Rocky Linux 下载安装 1、安装教程 Rocky Linux 下载安装 二、远程工具 MobaXterm下载安装 1、安装教程 MobaXterm 下载安装 三、Rocky Linux 网卡配置 1、使用ip addr确认网卡名称&#xff08;此处可得知网卡为ens160&#xff09; [rootlocalhost ~]# ip a 1:…

蓝桥杯每日一题----单调栈和单调队列

单调栈和单调队列 单调栈 单调栈即栈内的元素是单调递减或者单调递增的&#xff0c;我们通过一个题目来理解。 单调栈模板题 题目描述 给出项数为 n 的整数数列 a 1 … a n a_1…a_n a1​…an​。 定义函数 f ( i ) f(i) f(i)代表数列中第 i 个元素之后第一个大于 a i …

13.Qt 文件的读和写,样式表文件的读用

目录 前言&#xff1a; 技能&#xff1a; 内容&#xff1a; 1. 界面 2.信号槽 ①浏览按键 ②保存按键 ③加载样式按键 参考&#xff1a; 前言&#xff1a; 上一篇文章说明了如何弹窗选取文件并在Qlabel中显示文件内容 12.QT文件对话框 文件的弹窗选择-QFileDialog 这篇…

HTML 入门指南

简述 参考&#xff1a;HTML 教程- (HTML5 标准) HTML 语言的介绍、特点 HTML&#xff1a;超级文本标记语言&#xff08;HyperText Markup Language&#xff09; “超文本” 就是指页面内可以包含图片、链接等非文字内容。“标记” 就是使用标签的方法将需要的内容包括起来。…

星纪魅族宣布 All in AI;欧盟将首次对苹果处以罚款丨 RTE 开发者日报 Vol.146

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

世界顶级名校计算机专业,都在用哪些书当教材?(文末送书)

目录 01《深入理解计算机系统》02《算法导论》03《计算机程序的构造和解释》04《数据库系统概念》05《计算机组成与设计&#xff1a;硬件/软件接口》06《离散数学及其应用》07《组合数学》08《斯坦福算法博弈论二十讲》参与规则 清华、北大、MIT、CMU、斯坦福的学霸们在新学期里…

洛谷 P6546 [COCI2010-2011#2] PUŽ

讲解&#xff1a; 首先还是正常输入&#xff1a; int a,b,v; cin>>a>>b>>v; 然后经入一个函数num&#xff1a; cout<<num(1.0*(v-a),(a-b))1<<endl; 之所以要乘以1.0是因为要向上取整&#xff01;而这个num函数的两个参数则是“蜗牛白天爬了多…

python统计分析——一元线性回归分析

参考资料&#xff1a;用python动手学统计学 1、导入库 # 导入库 # 用于数值计算的库 import numpy as np import pandas as pd import scipy as sp from scipy import stats # 用于绘图的库 import matplotlib.pyplot as plt import seaborn as sns sns.set() # 用于估计统计…

多线程系列(一) -线程技术入门知识讲解

一、简介 在很多场景下&#xff0c;我们经常听到采用多线程编程&#xff0c;能显著的提升程序的执行效率。例如执行大批量数据的插入操作&#xff0c;采用单线程编程进行插入可能需要 30 分钟&#xff0c;采用多线程编程进行插入可能只需要 5 分钟就够了。 既然多线程编程技术…

GpuMall智算云平台:计费说明

1. 充值​ 当前GpuMall支持在线充值或者对公汇款。 选择在线充值时&#xff0c;填写或选择要充值的金额&#xff0c;推荐充值300元&#xff0c;可直接成为会员享受95折优惠。 点击下一步 在线体验入口&#xff1a;GpuMall智算云 | 省钱、好用、弹性。租GPU就上GpuMall 手机…

如何在三维地球上加载obj、fbx、ifc、dae、3ds、gltf/glb模型?

通过以下方法可以在三维地球上加载obj、fbx、ifc、dae、3ds、gltf/glb模型。 方法/步骤 下载三维地图浏览器 http://www.geosaas.com/download/map3dbrowser.exe&#xff0c;安装完成后桌面上出现”三维地图浏览器“图标。 2、双击桌面图标打开”三维地图浏览器“ 3、点击“…

全网最详细的从0到1的turbo pnpm monorepo的前端工程化项目[vitePress篇]

全网最详细的从0到1的turbo pnpm monorepo的前端工程化项目[vitePress篇] 前言选型为什么选择VitePress安装VitePress运行优化默认UI使用自定义UI编辑自定义布局编写home页面组件编写page页面组件 结语 前言 一个好的工程化项目&#xff0c;必然有一个好的文档管理&#xff0c;…