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

激活函数可视化对比:用Python和Matplotlib亲手绘制sigmoid、tanh、ReLU及其梯度图

激活函数可视化实战用Python绘制并解析神经网络核心组件在深度学习的世界里激活函数如同神经网络的灵魂它们决定了神经元是否应该被激活以及激活到什么程度。对于初学者来说理解这些函数的特性往往停留在数学公式层面而缺乏直观感受。本文将带你用Python和Matplotlib亲手绘制sigmoid、tanh、ReLU等常见激活函数及其梯度图通过可视化手段揭示它们的核心特性。1. 环境准备与基础设置在开始绘制之前我们需要配置好Python环境并导入必要的库。推荐使用Anaconda作为Python环境管理器它可以方便地处理各种依赖关系。import numpy as np import matplotlib.pyplot as plt plt.style.use(seaborn) # 使用更美观的绘图风格为了确保绘图的准确性我们需要定义一个统一的x值范围。大多数激活函数在-8到8的区间内已经能够展示其主要特征x np.linspace(-8, 8, 1000) # 生成-8到8之间的1000个均匀分布点提示使用linspace而不是arange可以确保在边界点也能正确采样避免绘图时出现不连续现象。2. Sigmoid函数经典的S型曲线2.1 函数定义与绘制Sigmoid函数是最早被广泛使用的激活函数之一它将任意实数输入映射到(0,1)区间非常适合作为二分类问题的输出层。def sigmoid(x): return 1 / (1 np.exp(-x)) plt.figure(figsize(10, 5)) plt.plot(x, sigmoid(x), labelSigmoid, linewidth3) plt.title(Sigmoid Function, fontsize15) plt.xlabel(x, fontsize12) plt.ylabel(sigmoid(x), fontsize12) plt.grid(True, alpha0.3) plt.legend(fontsize12) plt.show()关键观察点当x0时函数值为0.5当x趋近于正无穷时函数值趋近于1当x趋近于负无穷时函数值趋近于0函数在原点附近近似线性在两端呈现饱和状态2.2 梯度分析Sigmoid函数的导数有一个有趣的特点它可以用函数本身表示。这在计算上非常高效。def sigmoid_derivative(x): s sigmoid(x) return s * (1 - s) plt.figure(figsize(10, 5)) plt.plot(x, sigmoid_derivative(x), labelSigmoid Derivative, linewidth3, colororange) plt.title(Sigmoid Function Derivative, fontsize15) plt.xlabel(x, fontsize12) plt.ylabel(gradient, fontsize12) plt.grid(True, alpha0.3) plt.legend(fontsize12) plt.show()梯度图揭示了Sigmoid函数的一个主要缺点当输入值的绝对值较大时梯度会变得非常小称为梯度消失问题这使得深层网络难以训练。3. Tanh函数改进的S型激活3.1 函数特性与实现Tanh函数可以看作是Sigmoid函数的缩放和平移版本它将输入映射到(-1,1)区间具有零中心化的特性。def tanh(x): return np.tanh(x) # 也可以使用 (np.exp(x) - np.exp(-x)) / (np.exp(x) np.exp(-x)) plt.figure(figsize(10, 5)) plt.plot(x, tanh(x), labelTanh, linewidth3, colorgreen) plt.title(Tanh Function, fontsize15) plt.xlabel(x, fontsize12) plt.ylabel(tanh(x), fontsize12) plt.grid(True, alpha0.3) plt.legend(fontsize12) plt.show()与Sigmoid相比Tanh的优势在于输出以0为中心有利于下一层的处理梯度在原点附近更强有助于加快收敛速度3.2 梯度表现Tanh函数的导数同样可以用函数本身表示这使得计算非常高效。def tanh_derivative(x): return 1 - tanh(x)**2 plt.figure(figsize(10, 5)) plt.plot(x, tanh_derivative(x), labelTanh Derivative, linewidth3, colorred) plt.title(Tanh Function Derivative, fontsize15) plt.xlabel(x, fontsize12) plt.ylabel(gradient, fontsize12) plt.grid(True, alpha0.3) plt.legend(fontsize12) plt.show()虽然Tanh解决了Sigmoid的一些问题但它仍然存在梯度消失的问题特别是在深层网络中。4. ReLU函数简单而强大4.1 ReLU及其变体ReLU(Rectified Linear Unit)因其简单性和有效性成为现代深度学习中最常用的激活函数。def relu(x): return np.maximum(0, x) plt.figure(figsize(10, 5)) plt.plot(x, relu(x), labelReLU, linewidth3, colorpurple) plt.title(ReLU Function, fontsize15) plt.xlabel(x, fontsize12) plt.ylabel(ReLU(x), fontsize12) plt.grid(True, alpha0.3) plt.legend(fontsize12) plt.show()ReLU的主要优点计算非常简单只有比较和取最大值操作在正区间不会出现梯度消失问题能够产生稀疏激活有助于模型压缩4.2 梯度与死亡ReLU问题ReLU的梯度在正区间为1负区间为0def relu_derivative(x): return np.where(x 0, 1, 0) plt.figure(figsize(10, 5)) plt.plot(x, relu_derivative(x), labelReLU Derivative, linewidth3, colorbrown) plt.title(ReLU Function Derivative, fontsize15) plt.xlabel(x, fontsize12) plt.ylabel(gradient, fontsize12) plt.grid(True, alpha0.3) plt.legend(fontsize12) plt.show()死亡ReLU问题当输入始终为负时神经元将永远不激活对应的权重也不会更新。为了解决这个问题研究者提出了几种变体变体名称公式特点Leaky ReLUmax(αx, x) α0.01负区间有小的斜率Parametric ReLUmax(αx, x) α可学习负区间斜率可自适应ELUx if x0 else α(exp(x)-1)负区间平滑过渡均值接近05. 综合对比与应用建议5.1 函数对比可视化将三种主要激活函数放在同一坐标系中比较plt.figure(figsize(12, 6)) plt.plot(x, sigmoid(x), labelSigmoid, linewidth2) plt.plot(x, tanh(x), labelTanh, linewidth2) plt.plot(x, relu(x), labelReLU, linewidth2) plt.title(Activation Functions Comparison, fontsize15) plt.xlabel(x, fontsize12) plt.ylabel(Activation, fontsize12) plt.grid(True, alpha0.3) plt.legend(fontsize12) plt.show()5.2 梯度对比可视化plt.figure(figsize(12, 6)) plt.plot(x, sigmoid_derivative(x), labelSigmoid Derivative, linewidth2) plt.plot(x, tanh_derivative(x), labelTanh Derivative, linewidth2) plt.plot(x, relu_derivative(x), labelReLU Derivative, linewidth2) plt.title(Activation Function Derivatives Comparison, fontsize15) plt.xlabel(x, fontsize12) plt.ylabel(Gradient, fontsize12) plt.grid(True, alpha0.3) plt.legend(fontsize12) plt.show()5.3 实际应用选择指南根据不同的网络层和任务类型激活函数的选择也有所不同隐藏层首选ReLU及其变体特别是深层网络对于浅层网络可以尝试Tanh避免使用Sigmoid输出层二分类问题Sigmoid多分类问题Softmax回归问题线性激活无激活函数特殊架构LSTM/GRUTanh和Sigmoid组合生成对抗网络特定情况下可能使用Tanh注意激活函数的选择并非绝对实际效果需要通过实验验证。现代深度学习框架使得切换激活函数非常容易建议在开发过程中进行多种尝试。

相关文章:

激活函数可视化对比:用Python和Matplotlib亲手绘制sigmoid、tanh、ReLU及其梯度图

激活函数可视化实战:用Python绘制并解析神经网络核心组件 在深度学习的世界里,激活函数如同神经网络的"灵魂",它们决定了神经元是否应该被激活以及激活到什么程度。对于初学者来说,理解这些函数的特性往往停留在数学公式…...

别再折腾Docker了!Windows本地用MSI安装Redis 5.0.14,5分钟搞定Spring Boot集成

Windows开发者福音:5分钟极速部署Redis 5.0.14与Spring Boot无缝对接 Redis作为高性能键值数据库,早已成为现代应用开发的标配组件。但对于Windows平台的开发者而言,环境配置往往成为拦路虎——Docker占用资源、虚拟机笨重复杂、源码编译又容…...

STC15W104单片机8脚4路2262 1527解码输出程序-带学习功能与掉电储存功能

STC15W104单片机8脚4路2262 1527解码输出程序,带学习功能,掉电储存。老铁们今天咱们搞点硬核的!最近在玩STC15W104这个8脚小钢炮,折腾出个支持1527/2262编码的万能遥控解码器。核心功能就三点:自动学习遥控器、掉电记忆…...

AndroidPdfViewer打印功能完整指南:3步实现PDF文档打印

AndroidPdfViewer打印功能完整指南:3步实现PDF文档打印 【免费下载链接】AndroidPdfViewer Android view for displaying PDFs rendered with PdfiumAndroid 项目地址: https://gitcode.com/gh_mirrors/an/AndroidPdfViewer 想要为你的Android应用添加PDF打印…...

Day05:大模型安全与合规科普笔记:守护AI时代的数据安全防线

文章目录大模型安全与合规科普笔记:守护 AI 时代的数据安全防线引言:AI 时代的安全挑战一、数据隐私:涉密数据的安全防护1.1 涉密及客户数据必须脱敏加密的原因1.2 严禁直接传入公共大模型的影响1.3 数据脱敏和加密的技术原理与实施方式二、内…...

STM32F407ZGT6高级定时器驱动二自由度舵机云台:从PWM原理到安装校准全解析

1. PWM信号与舵机控制原理 舵机的核心控制原理其实就像我们平时用遥控器调电视机音量一样简单。想象一下,当你按下音量键时,遥控器会发送一串特定长度的脉冲信号,电视芯片根据这个脉冲宽度来决定音量大小。舵机的工作原理也类似,只…...

大疆无人机开源项目实战:用Eclipse Paho库搞定MQTT双通道通信(TCP vs WebSocket)

大疆无人机开源项目实战:用Eclipse Paho库搞定MQTT双通道通信(TCP vs WebSocket) 当开发者基于大疆无人机开源项目进行二次开发时,通信协议的选择往往成为影响系统性能的关键因素。MQTT作为轻量级物联网协议,其传输层的…...

从麦克风阵列到声源坐标:手把手实现Python版SRP-PHAT定位(含代码)

从麦克风阵列到声源坐标:手把手实现Python版SRP-PHAT定位(含代码) 在智能音箱、会议系统甚至机器人听觉领域,声源定位技术正悄然改变人机交互的方式。想象一下,当你说出"打开客厅灯"时,设备不仅能…...

RocketMQ控制台查不到生产组?别慌,这可能是Producer的‘隐身术’

RocketMQ生产组"隐身"现象全解析:从生命周期到持久化配置 第一次使用RocketMQ控制台时,很多开发者都会遇到这样的困惑:明明用示例代码成功发送了消息,却在控制台的"生产者"列表里找不到对应的生产组信息。这就…...

Vite中如何配置自定义ESLint规则?(2026 Vite全新配置教程 全程避坑,亲测有效)

在 Vite 项目中配置自定义 ESLint 规则,主要分为 安装依赖、创建配置文件 和 (可选)集成到开发服务器 三个核心步骤。以下是详细指南: 第一步:安装必要的 ESLint 依赖 首先,你需要安装 ESLint 核心包以及针…...

Java项目Loom化实战:3步完成Spring WebFlux与虚拟线程深度整合(含生产级架构图)

第一章:Java项目Loom响应式编程转型指南Project Loom 为 Java 带来了轻量级虚拟线程(Virtual Threads)和结构化并发模型,与响应式编程范式(如 Project Reactor 或 R2DBC)并非互斥,而是可协同演进…...

特征值与特征向量:从数学原理到机器学习实践

1. 特征值与特征向量入门:从几何直观到机器学习应用当我第一次接触特征值和特征向量时,那些抽象的数学公式让我头疼不已。直到有一天,我在处理图像压缩问题时突然意识到:原来这些概念就藏在我们日常的机器学习任务中!今…...

构建智能聊天机器人的核心技术架构与实践

1. 构建终极AI聊天机器人的核心思路 在当今人机交互领域,AI聊天机器人已经从简单的问答工具进化为具备复杂对话能力的智能体。一个真正优秀的聊天机器人需要融合自然语言处理、上下文理解、个性化响应和持续学习四大核心能力。我在过去三年里主导过7个不同行业的对话…...

Gerbv终极指南:从新手到专家的PCB设计验证全流程实战

Gerbv终极指南:从新手到专家的PCB设计验证全流程实战 【免费下载链接】gerbv Maintained fork of gerbv, carrying mostly bugfixes 项目地址: https://gitcode.com/gh_mirrors/ge/gerbv 你是否曾因Gerber文件显示异常而耽误PCB生产进度?是否在多…...

Switch模拟器:Ryujin模拟器教程

下载配置模拟器前需要先安装游戏运行库,显卡驱动正常 龙神模拟器官网:https://ryujinx.org/ switch模拟器的区别 Ryujinx【龙神模拟器】兼容性更好,刚出来的游戏也能运行,但由于它以前只支持OpenGL,所以帧率较低&am…...

告别PWM和ADC:手把手教你用Arduino解析汽车传感器SENT协议(附代码)

告别PWM和ADC:手把手教你用Arduino解析汽车传感器SENT协议(附代码) 在汽车电子领域,传感器数据的可靠传输一直是工程师们面临的挑战。传统的PWM和ADC方式虽然简单,但存在分辨率低、抗干扰能力弱等局限。而SENT协议作为…...

Quartus安装路径踩坑实录:为什么你的软件一打开就闪退?

Quartus安装路径避坑指南:从闪退根源到系统级解决方案 第一次双击Quartus图标时,那种期待与兴奋很快被闪退的黑色窗口浇灭——这几乎是每位FPGA初学者的必经之路。我至今记得实验室里那位研究生对着不断消失的启动界面摔鼠标的场景,而问题的根…...

集成学习方法解析:Bagging与Boosting原理与实践

1. 集成学习方法概述:为什么需要模型组合?在机器学习实践中,我们常常面临一个关键矛盾:单一模型往往难以同时满足高准确性和强泛化能力的需求。这就好比医疗诊断中,单个专家的意见可能受限于其专业背景,而多…...

Polars vs Pandas:高性能数据处理实战指南

1. 为什么需要Polars:Pandas的性能瓶颈与替代方案在数据科学领域,Pandas长期以来都是Python数据处理的事实标准。但随着数据量增长,Pandas在单机环境下的性能瓶颈日益明显。我曾在一个包含2000万行的数据集上测试,简单的groupby操…...

CSS 背景图片无法加载的常见原因与正确写法详解

本文系统讲解 html 中 css 背景图片(如 background-image: url(...))不显示的典型原因,包括路径错误、语法混用、属性书写不规范等问题,并提供可直接复用的标准写法与调试建议。 本文系统讲解 html 中 css 背景图片&#xff…...

自动驾驶/无人机避障背后的‘预言家’:深入浅出图解卡尔曼滤波在目标跟踪里的Q、R矩阵调参

自动驾驶与无人机避障中的卡尔曼滤波:Q、R矩阵调参的艺术 想象一下,你正驾驶一辆汽车在浓雾中行驶,GPS信号时断时续,仪表盘上的速度表偶尔会卡顿。这时你需要依靠什么来判断车辆的真实位置和速度?这就是卡尔曼滤波要解…...

python crossplane

## 从配置解析的泥潭里爬出来:聊聊 Python Crossplane 这个实用工具 做后端开发或者运维的朋友,大概都跟 Nginx 打过交道。Nginx 的配置文件,写起来灵活,功能也强大,但有时候想用程序去读取、修改它,就有点…...

Python Tkinter如何实现组件拖拽交换位置_计算鼠标坐标重排布局

event.x 和 event.y 是相对于触发事件控件左上角的相对坐标,非窗口绝对坐标;应通过 winfo_rootx()event.x 等转换为屏幕坐标,或统一转至父容器坐标系比较。拖拽时鼠标坐标不准,event.x 和 event.y 为什么不是窗口内绝对位置&#…...

从面试题到实战:用Python+OpenCV手把手教你实现一个简易的机器视觉检测系统

从面试题到实战:用PythonOpenCV构建工业零件检测系统 在工业自动化领域,机器视觉系统正逐渐取代传统人工检测。想象一下这样的场景:一条高速运转的生产线上,摄像头以每秒5帧的速度捕捉传送带上的金属零件,系统实时判断…...

python terraform-cdk

# 当Python遇见基础设施:聊聊Terraform CDK for Python 最近在云原生和基础设施即代码的圈子里,有个工具逐渐引起了Python开发者的注意——Terraform CDK for Python。如果你熟悉Terraform,但总觉得HCL语言写起来不够顺手,或者你…...

借助爱毕业(aibiye),数学建模论文的复现和智能排版优化一键完成

AI工具在数学建模论文复现与排版中能大幅提升效率。通过评测10款热门AI论文助手发现,部分工具可自动生成LaTeX代码、优化公式排版,甚至能基于草图快速复现复杂模型。智能改写功能可避免查重问题,而文献管理模块能自动整理参考文献格式。针对时…...

毕业论文的“隐藏时间成本”,你计算过吗?

你有没有算过一笔账:一篇毕业论文从选题到定稿,真正花在“写”上面的时间是多少?我把这个问题抛给近一百名大学生,得到的回答出奇一致——大部分时间根本不是花在“写”,而是花在“不知道该写什么”和“写着写着就卡住…...

不花一分冤枉米!MedPeer科研工具最优解

打开会员页面十几款套餐摆面前,不知道哪款匹配自己的需求,怕买错了浪费钱,买便宜了又不够用?作为一直在用MedPeer的老科研人,我整理了这篇全套餐梳理,帮不同需求、不同领域的科研人快速选到最划算的那一款&…...

2026英文降AIGC率实操:别再盲目同义词替换了!5种降AI高效方法实测(附工具测评)

姐妹们,同为苦哈哈熬夜肝初稿的打工人,这几个星期我可是被英文降ai率折磨得一点脾气都没有。眼看交稿ddl步步紧逼,初稿写完自己读都觉得AI味太重,导师看了也直摇头。 为了降低ai率,我连轴转测试了一大堆工具&#xff…...

华为交换机STP配置的5个实战优化技巧:从根保护到BPDU防护,让你的网络更稳

华为交换机STP实战优化指南:从根桥加固到边缘端口防护 在企业网络架构中,生成树协议(STP)如同交通信号灯,默默指挥着数据包的流向。但很多工程师在完成基础配置后便止步不前,殊不知未经优化的STP网络就像没…...