Matplotlib 健卫商大字 上机练习题 题自2: 深度学习中常用的激活函数包括SigmoidReLU和Tanh 请使用Matplotlib绘制这三个激活函数的曲线,要求: 1.横轴范围为[-5.5],步长为0.1. 2计算并绘制以下函数: Sigmoid:f(x)= ReLU: f(x)=max(0.x) Tanh: f() = tanh(z) 3.使用不同颜色和线型绘制三条曲线,并添加图例。 4设置标题为"ComparisonofActivation Functions"。 使用python完成并给出完整代码

时间: 2025-03-15 17:18:15 浏览: 10

嗯,用户让我用Matplotlib绘制Sigmoid、ReLU和Tanh三个激活函数的曲线。首先,我需要确认题目的具体要求。横轴范围是[-5,5],步长0.1,所以需要生成一个从-5到5,间隔0.1的数组x。

接下来是三个函数的计算。Sigmoid函数是1/(1+exp(-x)),ReLU是max(0, x),Tanh是tanh(x)。这些函数在Python中可以用numpy来实现,比如用np.exp计算指数,np.maximum处理ReLU,np.tanh直接计算。

然后是关于绘图的部分。用户要求不同颜色和线型,以及图例。可能需要为每个函数指定不同的颜色和线条样式,比如Sigmoid用蓝色实线,ReLU用绿色虚线,Tanh用红色点划线。同时,添加图例的位置要合适,可能在右上角或者最佳位置。

标题需要设置为"Comparison of Activation Functions",可能要注意单词之间的空格,用户给的标题里没有空格,可能需要调整。还有坐标轴的标签,横轴是x,纵轴是f(x),可能需要添加网格线,让图表更清晰。

另外,检查用户给出的数据是否正确。比如,用户提到Tanh的函数是f()=tanh(z),这里可能有笔误,应该是f(x)=tanh(x)。需要确认是否正确处理了这个部分。

代码结构方面,先导入matplotlib和numpy,生成x的数据,计算三个函数的值,然后分别绘制三条曲线,设置样式,添加图例、标题、标签、网格,最后显示或保存图像。

可能需要注意的地方是ReLU函数的处理,是否在numpy中可以直接用np.maximum(0, x),这应该是可行的。另外,Sigmoid函数的计算是否会有溢出问题,不过范围在-5到5之间,应该没问题。

最后,检查代码是否存在语法错误,比如括号是否匹配,逗号是否正确,函数名是否正确。例如,plt.xlabel和plt.ylabel是否正确设置,标题是否有拼写错误,图例的label是否对应正确。

可能需要提醒用户如果无法显示图像的话,加上plt.show(),或者在Jupyter中使用%matplotlib inline。不过用户要求完整代码,应该已经包含这些部分。另外,是否调整了图像大小,比如figsize,让图表更清晰,但题目没有特别要求,可以自行决定。

总结步骤:导入库,生成x,计算三个函数,绘制曲线并设置样式,添加图表元素,显示图像。确保所有要求都被满足,包括横轴范围、颜色线型、图例、标题等。以下是用Python绘制激活函数对比图的完整代码及说明:

import numpy as np
import matplotlib.pyplot as plt

# 生成横轴数据
x = np.arange(-5, 5.1, 0.1)  # 从-5到5,步长0.1

# 计算三个激活函数
sigmoid = 1 / (1 + np.exp(-x))
relu = np.maximum(0, x)
tanh = np.tanh(x)

# 创建画布
plt.figure(figsize=(10, 6))

# 绘制Sigmoid(蓝色实线)
plt.plot(x, sigmoid,
         color='blue',
         linestyle='-',
         linewidth=2,
         label='Sigmoid')

# 绘制ReLU(绿色虚线)
plt.plot(x, relu,
         color='green',
         linestyle='--',
         linewidth=2,
         label='ReLU')

# 绘制Tanh(红色点划线)
plt.plot(x, tanh,
         color='red',
         linestyle='-.',
         linewidth=2,
         label='Tanh')

# 添加图表元素
plt.title("Comparison of Activation Functions", fontsize=14, pad=15)
plt.xlabel("x", fontsize=12)
plt.ylabel("f(x)", fontsize=12)
plt.legend(loc='upper left')  # 图例在左上角
plt.grid(True, linestyle=':', alpha=0.6)  # 点线网格

# 设置坐标轴
plt.xlim(-5, 5)  # 强制横轴范围
plt.ylim(-1.2, 1.2)  # 统一纵轴范围方便对比

# 显示图表
plt.show()

代码解析:

  1. 数据生成

    • 使用np.arange(-5, 5.1, 0.1)精确生成[-5,5]区间数据
    • 通过向量化运算同时处理整个数组
  2. 函数计算

    • Sigmoid1 / (1 + np.exp(-x))
    • ReLUnp.maximum(0, x)实现逐元素取最大值
    • Tanh:直接调用np.tanh()函数
  3. 可视化设计

    • 颜色方案:Sigmoid(蓝)/ReLU(绿)/Tanh(红)
    • 线型区分:实线/虚线/点划线
    • 设置统一纵轴范围(-1.2,1.2)便于对比

典型输出特征:

  1. Sigmoid

    • 输出范围(0,1)
    • S型曲线
    • 中心点在(0,0.5)
  2. ReLU

    • 负数区恒为0
    • 正数区45度直线
    • 在原点处转折
  3. Tanh

    • 输出范围(-1,1)
    • S型曲线
    • 中心点在(0,0)

扩展建议:

  1. 添加子图对比:plt.subplots(1,3)
  2. 标注函数公式:使用plt.text()
  3. 可视化梯度变化:绘制导数曲线
  4. 添加交互功能:使用mplcursors库实现数据点提示

该可视化可帮助理解不同激活函数的非线性特性,为选择激活函数提供直观参考。

向AI提问 loading 发送消息图标

相关推荐

大家在看

recommend-type

GL3510.zip

内涵GL3510的芯片资料以及对应原理图,本人已经验证并正常使用
recommend-type

基于时空图卷积(ST-GCN)的骨骼动作识别(python源码+项目说明)高分项目

基于时空图卷积(ST-GCN)的骨骼动作识别(python源码+项目说明)高分项目,含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。 基于时空图卷积(ST-GCN)的骨骼动作识别(python源码+项目说明)高分项目 基于时空图卷积(ST-GCN)的骨骼动作识别(python源码+项目说明)高分项目 基于时空图卷积(ST-GCN)的骨骼动作识别(python源码+项目说明)高分项目 基于时空图卷积(ST-GCN)的骨骼动作识别(python源码+项目说明)高分项目 基于时空图卷积(ST-GCN)的骨骼动作识别(python源码+项目说明)高分项目基于时空图卷积(ST-GCN)的骨骼动作识别(python源码+项目说明)高分项目基于时空图卷积(ST-GCN)的骨骼动作识别(python源码+项目说明)高分项目基于时空图卷积(ST-GCN)的骨骼动作识别(python源码+项目说明)高分项目基于时空图卷积(ST-GCN)的骨骼动作识别(python源码+项目说明)高分项目基于时空图卷积(ST
recommend-type

Standard Verification Rule Format_201404

This document is for information and instruction purposes. Mentor Graphics reserves the right to make changes in specifications and other information contained in this publication without prior notice, and the reader should, in all cases, consult Mentor Graphics to determine whether any changes have been made. The terms and conditions governing the sale and licensing of Mentor Graphics products are set forth in written agreements between Mentor Graphics and its customers. No representation or other affirmation of fact contained in this publication shall be deemed to be a warranty or give rise to any liability of Mentor Graphics whatsoever.
recommend-type

ktxToPng.rar

Ktx转Png工具-一键转,批量转的。。windows下使用。。
recommend-type

XenCenter7.6中文版

XenCenter7.6中文版,本人一直在用的版本,很好用。Citrix Xenserver

最新推荐

recommend-type

[小白系列]sigmoid和tanh激活函数的绘制(分开画,合起来画,总有一款适合你),逐行代码详解

本篇文章将详细讲解两种常见的激活函数——Sigmoid和Tanh,并通过Python代码演示如何分别绘制它们的图形以及如何将它们合在一起画在同一张图上。 Sigmoid函数,也称为Logistic函数,表达式为: \[ f(x) = \frac{1}{...
recommend-type

python使用Matplotlib绘制分段函数

本篇将详细探讨如何使用Matplotlib来绘制分段函数,这对于理解和展示复杂的数据模式非常有帮助。分段函数是一种定义在不同区间上具有不同表达形式的函数,通过将这些区间合并,可以形成一个整体的函数图像。 首先,...
recommend-type

Python使用matplotlib绘制多个图形单独显示的方法示例

在Python的可视化领域,`matplotlib`库是广泛使用的工具,它允许我们绘制各种类型的图形,包括线图、散点图、直方图等。当需要在同一份代码中绘制多个图形时,`matplotlib`提供了灵活的方式来单独展示每个图形,避免...
recommend-type

Python使用matplotlib的pie函数绘制饼状图功能示例

在Python的可视化库matplotlib中,`pie()`函数是用来绘制饼状图的重要工具。饼状图是一种数据表示方式,常用于展示各个部分占总体的比例。在本篇内容中,我们将深入探讨如何使用`matplotlib.pyplot.pie()`函数来创建...
recommend-type

Python实现在tkinter中使用matplotlib绘制图形的方法示例

本篇内容将详细讲解如何在`tkinter`环境中利用`matplotlib`来绘制图形,特别以绘制正弦曲线为例。 首先,确保已经安装了`tkinter`和`matplotlib`库。如果未安装,可以通过以下命令进行安装: ```bash pip install ...
recommend-type

Flash AS3整合XML/ASP/JSON全站源码解析

从给定的文件信息中,我们可以提取出多个IT相关的知识点进行详细说明,包括Flash AS3、XML、ASP和JSON技术及其在整站开发中的应用。 首先,Flash AS3(ActionScript 3.0)是一种编程语言,主要用于Adobe Flash Player和Adobe AIR平台。Flash AS3支持面向对象的编程,允许开发复杂的应用程序。AS3是Flash平台上的主要编程语言,它与Flash的组件、框架和其他媒体类型如图形、音频、视频等紧密集成。在描述中提及的“falsh as3”多次重复,这表明源码中使用了Flash AS3来开发某些功能。 接着,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据。它不是用来显示数据的语言,而是用来描述数据的语言。XML的语法允许定义自己的标签,用于构建具有清晰结构的数据。在整站开发中,XML可以用于存储配置信息、状态数据、业务逻辑数据等。 ASP(Active Server Pages)是一种服务器端脚本环境,可以用来创建和运行动态网页或web应用。ASP代码在服务器上执行,然后向客户端浏览器发送标准的HTML页面。ASP技术允许开发者使用VBScript或JavaScript等脚本语言来编写服务器端的脚本。ASP通常与ADO(ActiveX Data Objects)结合,用于数据库操作。描述中提到的“asp”,指的应该是这种服务器端脚本技术。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON基于JavaScript的一个子集,但JSON是完全独立于语言的文本格式,它与JSON.com相关,语言无关。在Web服务和API中,JSON经常作为数据格式用于前后端的数据交换。描述中提到的“json”说明源码可能涉及将数据以JSON格式进行传输和处理。 在提及的文件名“哈尔滨鸭宝宝羽绒服饰有限公司”中,虽然它看起来像是一个公司名称,并非技术术语,但可以推测,这个名称可能是源码中包含的某个项目的名称或者是源码文件夹名称。 从以上信息中可以看出,所提及的整站源码可能是一个使用Flash AS3作为前端交互设计,结合ASP作为后端服务逻辑,以及XML和JSON作为数据交换格式来构建的企业级网站。这样的架构允许网站具有动态的内容展示和数据处理能力,同时能够与数据库进行交互,并通过JSON格式与外部应用程序进行通信。 总结来看,这份整站源码涉及的技术点较多,包括但不限于: - **Flash AS3的应用**:用于设计和实现复杂的交互式前端界面,实现动画、游戏、商业应用程序等。 - **XML的作用**:在项目中可能用作配置文件存储,或者是后端服务与前端交互过程中传输的结构化数据格式。 - **ASP的运用**:作为动态网站的后端解决方案,处理服务器端逻辑,如用户认证、数据库交互等。 - **JSON的使用**:作为前后端通信的数据交换格式,便于前端页面和后端服务之间进行数据的发送和接收。 - **整站开发的综合应用**:涉及前端设计与后端逻辑的整合,以及跨语言的数据处理能力。 以上就是对给定文件信息中提到的知识点的详细解读。
recommend-type

大唐电话交换机的架构解析:揭秘工作原理及优化技巧

# 摘要 本论文对大唐电话交换机进行了全面的概述,详细解析了其工作原理、硬件架构和软件架构。首先介绍了交换机的基本概念和电路交换技术以及包交换技术的工作原理。接着,分析了交换机核心组件,包括处理器单元和存储单元,以及接口与线路板的功能和设计。文中还探讨了交换机的硬件架构,如硬件冗余机制和容错技术。在软件方面,阐述了软件架构、性能监控与管理以及故障诊断与恢复策略。此外,论文还通过案例分析了大唐交
recommend-type

用c语言写一个头插法进链表的函数带指针

### C语言头插法插入链表的函数实现 以下是基于提供的引用内容以及专业知识设计的一个完整的头插法插入链表的函数实现: #### 函数说明 该函数通过指针操作实现了头插法创建单链表的功能。每次插入的新节点会成为链表的第一个节点。 ```c #include <stdio.h> #include <stdlib.h> // 定义链表节点结构体 typedef struct LinkList { int data; // 数据域 struct LinkList *next; // 指针域 } LinkList; // 头插法插入链表的函数 vo
recommend-type

安卓平台上仿制苹果风格的开关按钮设计

在Android开发中,仿制其他平台如iPhone的UI控件是一种常见的需求,特别是在需要保持应用风格一致性时。标题中提到的“android开发仿iphone开关按钮”所指的知识点主要涉及两个方面:一是Android的开关按钮控件(Switch),二是如何使其外观和行为模仿iOS平台上的类似控件。 首先,让我们从Android原生的Switch控件开始。Switch是Android提供的一种UI控件,用于提供一种简单的二态选择,通常用于表示开/关状态。它由一个滑块和两个不同颜色的轨道组成,滑块的左右两侧分别代表不同的状态。Switch在Android开发中一般用于设置选项的开启与关闭。 接着,要使Android的Switch控件外观和行为模仿iOS平台的开关按钮,需要关注以下几点: 1. 外观设计:iOS的开关按钮外观简洁,通常具有圆角矩形的滑块和轨道,并且滑块的高光效果、尺寸和颜色风格与原生Android Switch有所不同。在Android上,可以通过自定义布局来模仿这些视觉细节,例如使用图片作为滑块,以及调整轨道的颜色和形状等。 2. 动画效果:iOS开关按钮在切换状态时具有平滑的动画效果,这些动画在Android平台上需要通过编程实现。开发者可以使用Android的属性动画(Property Animation)API来创建类似的动画效果,或者使用第三方库来简化开发过程。 3. 反馈机制:iOS的交互设计中通常会包含触觉反馈(Haptic Feedback),比如当用户操作开关时,设备会通过震动给予反馈。在Android设备上,虽然不是所有设备都支持触觉反馈,但开发者可以通过振动API(Vibrator API)添加类似的功能,增强用户体验。 4. 用户体验:iOS的交互元素通常在视觉和交互上都有较高的质量和一致性。在Android上仿制时,应该注重用户的交互体验,比如滑动的流畅性、按钮的响应速度以及是否支持快速连续切换等。 现在,来看一下如何在Android中实际实现这样的仿制控件。这里将会使用到自定义View的概念。开发者需要创建一个继承自View或其子类的自定义控件,并重写相应的测量和绘制方法(比如`onDraw`方法)来自定义外观。还可以通过状态监听来模拟iOS的交互效果,比如监听触摸事件(`onTouch`)来处理滑块的移动,并通过回调函数(`setOnCheckedChangeListener`)来响应状态变化。 在实际开发过程中,一个有效的办法是使用图形编辑软件设计好开关按钮的各个状态下的图片资源,然后在自定义View的`onDraw`方法中根据控件的状态来绘制不同的图片。同时,通过监听触摸事件来实现滑块的拖动效果。 总结起来,创建一个在Android平台上外观和行为都与iOS相似的开关按钮,需要开发者具备以下知识点: - Android自定义View的使用和原理 - Android UI布局和绘图方法,包括使用`Canvas`类 - 触摸事件处理和状态监听 - 图片资源的使用和优化 - 动画效果的创建和实现 - 可选的,对设备震动反馈功能的支持 - 对目标平台交互设计的理解和模仿 通过上述知识点的学习和应用,开发者便能创建出既符合Android风格又具有iOS特色的开关按钮控件。这种控件既满足了跨平台的UI一致性,同时也为Android用户提供熟悉的交互体验。
recommend-type

【Oracle 11g SQL进阶】:24小时内打造高效SQL语句的终极实践指南

# 摘要 本文旨在深入探讨Oracle 11g SQL的高级应用和性能优化技术。首先回顾SQL基础,并对执行计划进行详细解析,强调执行计划的重要性及获取和解读方法。接着探讨SQL语句性能调优技术,包括性能分析工具的应用、索引优化、查询优化技巧等。文章进一步介绍了高级SQL函数的运用,数据加密与安全最佳