python对常见的激活函数绘图操作(详细代码讲解)

写论文的时候需要做一些激活函数的图像,为此将常见的激活函数进行整理汇总了一下,方便后续的复习

激活函数的作用是为让模型处理非线性问题,故次激活函数都是非线性的
生活中,非线性问题占大多数,而模型的训练通常都是线性可分的函数,通过非线性激活函数可以使得模型刚好的处理非线性问题

一、导包

from matplotlib import pyplot as plt
import numpy as np
import mpl_toolkits.axisartist as axisartist

二、sigmoid

简而言之:通过sigmoid函数可以将函数值转换为0-1之间,从而变成了概率问题,实现不同类别的分类
详细的函数推到可参考博文:四、逻辑回归

大概讲解下代码:
函数 sigmoid(x) 为sigmoid的表达式
在这里插入图片描述

函数 plot_sigmoid() 根据函数表达式进行绘图

x = np.arange(-10, 10, 0.1)
X轴从 [-10,10) 中每隔0.1选取一个点,X轴最终为200个数据点

y = sigmoid(x)
把x这些点带入sigmoid函数中得到对应的y值

fig = plt.figure()
生成一个图框,这个图框目前还不能画图,需要在其子图(subplot)或者轴域(Axes)中作图

ax = fig.add_subplot(111)
第一个参数表示行数、第二个参数表示列数、第三个参数表示第几个子图
这里就是一行、一列、第一个子图

ax.spines['top'].set_color('none')
去掉顶部的边框线,这里的none表示啥也没,相当于去掉顶端边框
ax.spines['right'].set_color('none')
同样的道理,去掉右侧的边框
左侧:left、底部:bottom

ax.spines['left'].set_position(('data', 0))
这里的data表示通过 给定的值(这里是0) 来进行设置坐标轴的位置
这里的0可以理解为:平移y轴到x轴的什么位置,这里就是平移y轴到x轴的0刻度处
当然参数也可以设置为axes,表示按百分比进行偏移y轴,也就相当于按多少进行平分x轴;后一个参数为0.5,相当于平分x轴
ax.spines['left'].set_position(('axes', 0.5))ax.spines['left'].set_position(('data', 0))是等价的关系

ax.plot(x, y, 'k-')
根据之前得到的x和y值进行绘制,前提x和y的个数是一致的,得一一对应才行
参数k-,表示颜色为black,使用 - 进行连接
也可以设置其他的,例如:红色,通过 + 这个符号进行连接,最后一个参数可以设置为r+,多动手试试就知道了

plt.xlim([-10.05, 10.05])
x轴的取值范围为 [-10.05,10.05]
plt.ylim([-0.01, 1.01])
y轴的取值范围为 [-0.01,1.01]

plt.tight_layout()
有时,轴标签和标题等会出现重叠、超过正常范围而被截断等情况发生,通过调用该函数即可进行解决

plt.savefig("sigmoid.png")
保存生成的图片,参数为字符串,传入要保存的具体路径

plt.show()
展示生成的图片

def sigmoid(x):return 1. / (1 + np.exp(-x))def plot_sigmoid():x = np.arange(-10, 10, 0.1)y = sigmoid(x)fig = plt.figure()ax = fig.add_subplot(111)ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.spines['left'].set_position(('data', 0))ax.plot(x, y, 'k-')plt.xlim([-10.05, 10.05])plt.ylim([-0.01, 1.01])plt.tight_layout()# plt.savefig("sigmoid.png")plt.show()
if __name__ == "__main__":plot_sigmoid()

在这里插入图片描述

二、tanh

函数表达式:在这里插入图片描述
函数 tanh(x) 为tanh的表达式

函数 plot_tanh() 绘制tanh函数图像
函数操作都大差不差,根据上面sigmoid激活函数的实现进行类比即可
这里只讲解未出现的函数

ax.set_yticks([-1.0, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1.0])
设置y轴显示刻度的范围,说白了就是显示y轴的刻度线都有哪几个点
ax.set_xticks([-10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10])
设置x轴显示刻度的范围

def tanh(x):return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))def plot_tanh():x = np.arange(-10.0, 10.0, 0.1)y = tanh(x)fig = plt.figure()ax = fig.add_subplot(111)ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.spines['left'].set_position(('data', 0))ax.spines['bottom'].set_position(('data', 0))ax.plot(x, y, 'k-')plt.xlim([-10.05, 10.05])plt.ylim([-1.01, 1.01])ax.set_yticks([-1.0, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1.0])ax.set_xticks([-10.0, -8.0, -6.0, -4.0, -2.0, 0.0, 2.0, 4.0, 6.0, 8.0, 10.0])plt.tight_layout()# plt.savefig("tanh.png")plt.show()
if __name__ == "__main__":plot_tanh()

在这里插入图片描述

三、relu

函数表达式:在这里插入图片描述
函数操作都大差不差,根据上面sigmoid激活函数的实现进行类比即可

def relu(x):return np.where(x <= 0, 0, x)def plot_relu():x = np.arange(-10, 10, 0.1)y = relu(x)fig = plt.figure()ax = fig.add_subplot(111)ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.spines['left'].set_position(('data', 0))ax.plot(x, y, 'k-')plt.xlim([-10.05, 10.05])plt.ylim([0, 10.01])ax.set_yticks([2, 4, 6, 8, 10])plt.tight_layout()# plt.savefig("relu.png")plt.show()if __name__ == "__main__":plot_relu()

在这里插入图片描述

四、elu

函数表达式:在这里插入图片描述
这里α取值为1,当然具体情况具体分析

函数操作都大差不差,根据上面sigmoid激活函数的实现进行类比即可

def elu(x):return np.where(x < 0, 1*(np.exp(x)-1), x)def plot_elu():x = np.arange(-10, 10, 0.1)y = elu(x)fig = plt.figure()ax = fig.add_subplot(111)ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.spines['left'].set_position(('data', 0))ax.spines['bottom'].set_position(('data', 0))ax.plot(x, y, 'k-')#plt.xticks([])ax.set_yticks([-2, 0, 2, 4, 6, 8, 10])plt.tight_layout()# plt.savefig("prelu.png")plt.show()if __name__ == "__main__":plot_elu()

在这里插入图片描述

五、prelu

函数表达式:在这里插入图片描述
这里的ai取值为0.5,当然具体情况具体分析

函数操作都大差不差,根据上面sigmoid激活函数的实现进行类比即可

def prelu(x):return np.where(x <= 0, 0.5 * x, x)def plot_prelu():x = np.arange(-10, 10, 0.1)y = prelu(x)fig = plt.figure()ax = fig.add_subplot(111)ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.spines['left'].set_position(('data', 0))ax.spines['bottom'].set_position(('data', 0))ax.plot(x, y, 'k-')#plt.xticks([])ax.set_yticks([-6, -4, -2, 0, 2, 4, 6, 8, 10])plt.tight_layout()# plt.savefig("prelu.png")plt.show()if __name__ == "__main__":plot_prelu()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哈希表-散列表数据结构

1、什么是哈希表&#xff1f; 哈希表也叫散列表&#xff0c;哈希表是根据关键码值(key value)来直接访问的一种数据结构&#xff0c;也就是将关键码值(key value)通过一种映射关系映射到表中的一个位置来加快查找的速度&#xff0c;这种映射关系称之为哈希函数或者散列函数&…

Rollup-plugin-bundle-analyzer VS Rollup-plugin-visualizer

分析和可视化Rollup打包后的文件的插件 Rollup-plugin-bundle-analyzerRollup-plugin-visualizer Rollup-plugin-bundle-analyzer和Rollup-plugin-visualizer都是用于分析和可视化Rollup打包后的文件的插件&#xff0c;但它们在功能和使用方式上存在一些差异。 Rollup-plugi…

PostGIS教程学习十九:基于索引的聚簇

PostGIS教程学习十九&#xff1a;基于索引的聚簇 数据库只能以从磁盘获取信息的速度检索信息。小型数据库将完全位于于RAM缓存&#xff08;内存&#xff09;&#xff0c;并摆脱物理磁盘访问速度慢的限制。但是对于大型数据库&#xff0c;对物理磁盘的访问将限制数据库的信息检…

FFmpeg获取音视频流信息

文章目录 前言一、需求二、源码三、运行结果 前言 本文记录用 FFmpeg 获取视频流音频流的信息&#xff08;编码格式、分辨率、帧率、播放时长…&#xff09;&#xff0c;所用的工程基于上个博客编译成功的工程&#xff1a;使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c 一、需求…

透明OLED拼接屏:重塑大屏显示的新篇章

随着科技的快速发展&#xff0c;大屏显示技术已经逐渐渗透到我们生活的方方面面。作为显示技术领域的一大革新&#xff0c;透明OLED拼接屏以其独特的透明显示特性&#xff0c;正逐渐成为大屏显示市场的新宠。尼伽小编将深入探讨透明OLED拼接屏的技术特点、应用场景以及市场前景…

中国葡萄酒消费者的口味偏好

有一段时间&#xff0c;“中国口味”的问题是全世界葡萄酒销售者的热门话题&#xff0c;因为他们积极探索每一个线索&#xff0c;以发现让他们在市场上领先的秘密。为此进行了大量研究&#xff0c;多年前葡萄酒销售商或多或少形成了一个共识&#xff1a;尽管中国人的口味差异很…

系列十四、while do...while switch模板代码

一、while & do...while & switch模板代码 1.1、while /*** 需求&#xff1a;使用while循环打印5遍Hello World!*/ Test public void print5() {int i 1;while (i < 5) {System.out.println("Hello World! " LocalDateTime.now());// 线程休眠&#x…

Spring MVC学习之——了解MVC设计模式

MVC设计模式 MVC介绍 MVC 模式代表 Model-View-Controller&#xff08;模型-视图-控制器&#xff09; 模式。这种模式用于应用程序的分层开发。 Model&#xff08;模型&#xff09; - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑&#xff0c;在数据变化时更新…

Java项目:112SSM在线电影订票系统

博主主页&#xff1a;Java旅途 简介&#xff1a;分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 在线电影订票系统基于SpringSpringMVCMybatis开发&#xff0c;系统分为前台和后台&#xff0c;前台主要用来用户浏览电影信息&#xff0c;订票&#xff0c…

人工智能任务2-读懂Transformer模型的十个灵魂拷问问题,深度理解Transformer模型架构

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能任务2-读懂Transformer模型的十个灵魂拷问问题&#xff0c;深度理解Transformer模型架构。Transformer模型是一种基于自注意力机制的神经网络架构&#xff0c;被广泛用于自然语言处理任务中&#xff0c;如机…

系分笔记数据库技术之数据库安全措施

文章目录 1、概要2、数据库的保护措施3、数据库的故障4、备份和日志5、总结 1、概要 数据库设计是考试重点&#xff0c;常考和必考内容&#xff0c;本篇主要记录了知识点&#xff1a;数据库故障及解决、数据库安全保护措施和数据库备份及恢复。 2、数据库的保护措施 数据库安全…

云卷云舒:【实战篇】云主机/虚拟机迁移

1. 简介 用户原有业务通过不同版本型号、不同操作系统的主机承载&#xff0c;形式上包括物理服务器、虚拟机、公有云主机等。随着业务不断扩张&#xff0c;需要将其业务云化转型&#xff0c;必须保证上云过程数据完整&#xff0c;业务平滑过度。 如果将所有业务系统都重新部署…

以太坊开发者会议回顾:坎昆升级、硬分叉与布拉格

作者&#xff1a;Christine Kim Galaxy研究副总裁 编译&#xff1a;秦晋 碳链价值 2024年1月4日&#xff0c;以太坊开发人员齐聚Zoom for All Core Developers Execution (ACDE) Call #178 上。ACDE电话会议通常由以太坊基金会协议负责人Tim Beiko主持&#xff0c;是一个开发人…

Orchestrator源码解读2-故障失败发现

目录 目录 前言 核心流程函数调用路径 GetReplicationAnalysis 故障类型和对应的处理函数 拓扑结构警告类型 与MHA相比 前言 Orchestrator另外一个重要的功能是监控集群&#xff0c;发现故障。根据从复制拓扑本身获得的信息&#xff0c;它可以识别各种故障场景。Orchest…

Apollo基础 - Frenet坐标系

Frenet与笛卡尔坐标系的转换详细推导见&#xff1a;b站老王 自动驾驶决策规划学习记录&#xff08;四&#xff09; Apollo相关代码&#xff1a; modules/common/math/cartesian_frenet_conversion.h #pragma once #include <array> #include "modules/common/mat…

怎么一边讲PPT一边录视频 如何一边录制PPT一边录制人像 录屏软件免费录屏 PPT录制怎么录制

随着新媒体技术的发展&#xff0c;短视频和直播越来越火。越来越多的小伙伴加入了视频制作的大军&#xff0c;那么你想知道怎么一边讲PPT一边录视频&#xff0c;如何一边录制PPT一边录制人像吗&#xff1f; 一、怎么一边讲PPT一边录视频 我们可以借助PPT本身自带的屏幕录制功能…

Linux的发展历程:从诞生到全球应用

一、前言 Linux作为一个开源操作系统&#xff0c;经历了令人瞩目的发展历程。从最初的创意到如今在全球范围内得到广泛应用&#xff0c;Linux不仅是技术的杰出代表&#xff0c;更是开源精神的典范。本文将追溯Linux的发展历程&#xff0c;深入了解它是如何从一个个人项目演变为…

【docker笔记】Docker容器数据卷

Docker容器数据卷 卷就是目录或者文件&#xff0c;存在于一个或多个容器中&#xff0c;由docker挂载到容器&#xff0c;但不属于联合文件系统&#xff0c;因此能够绕过Union File System提供一些用于持续存储或共享数据的特性 卷的设计目的就是数据的持久化&#xff0c;完全独…

VMware Workstation安装以及配置模板机

文章目录 一、VMware Workstation软件下载安装1、下载2、安装 二、CentOS7模板机安装1、创建虚拟机2、安装系统 三、网络配置 一、VMware Workstation软件下载安装 1、下载 下载地址&#xff1a;https://download3.vmware.com/software/wkst/file/VMware-workstation-full-15…

css中的变量和辅助函数

变量 --name 两个破折号加变量名称&#xff08;可以在当前的选择器内定义&#xff09;var(--*) 命名规则 body {--深蓝: #369;background-color: var(--深蓝); } 变量值只能做用属性值&#xff0c;不能用做属性名。变量命名不能包含 $,[,^,(,% 等字符 普通字符局限在只要是数…