深度学习代码学习笔记(一)——阶跃函数与激活函数的python代码实现

article/2025/10/8 6:29:46

今天正式开始学习深度学习,看的书是《深度学习入门——基于python的理论与实现》。

感知机使用阶跃函数作为激活函数,而神经网络使用 sigmoid 函数作为激活函数。


下面分别来用代码实现并绘制阶跃函数和激活函数的图形。

一、阶跃函数

阶跃函数以阈值为界,一旦输入超过了阈值,就会切换输出。

以下的阶跃函数step_function以0为阈值——当输入超过0,则输出1,否则输出0。

import numpy as np
import matplotlib.pylab as pltdef step_function1(x=''):'''简单的阶跃函数——无法接收numpy数组参数'''if x >0:return 1else:return 0def step_function2(x):'''升级版的阶跃函数,这里的参数x为numpy数组'''y = x > 0  # numpy数组中的每个元素都与0比较大小,得到一个布尔型numpy数组return y.astype(np.int)   # astype()方法将numpy数组的布尔型转换为int型m = 1
print(step_function1(m))x = np.arange(-5.0,5.0,0.1)  # 生成一个numpy数组,范围是(-5.0,5.0),步长为0.1
y = step_function2(x)
plt.plot(x,y)
plt.ylim(-0.1,1.1)
plt.show()

运行结果:
在这里插入图片描述

【注】

(1)要明白深度学习当中,一定要善于利用 NumPy 数组:

对比这里的 step_function1 和 step_function2 —— step_function1 只能接收普通的数字,调用起来比较死板且麻烦;而 step_function2 可以接收numpy数组,如此,便可充分利用 numpy 的方法来处理许多问题,还可以一次性输入多个数据。

(2)本例涉及到的 numpy 用法如下:

​ (1)numpy.array([…]) ——>构造一个numpy数组。e.g. x=np.array([2.2, 3.2, 5.2, 4.0])

​ (2)对numpy数组做运算 ——>数组中的每个元素都做此运算。e.g. 本例中的x>0

​ (3)numpy数组名.astype(numpy.数据类型) ——>将数组中的元素统一转换为某数据类型。e.g. 本例中y.astype(np.int),将y中的True转换为1,False转换为0

​ (4)numpy.arange(a,b,l) ——>生成一个numpy数组,范围是(a,b),步长为l。e.g. 本例中x = np.arange(-5.0,5.0,0.1)

(3)其他:

	(1)不可以将本例中的两个函数命名为同名函数,python无法处理类似于Java的处理同名异参函数的功能,python只会默认执行最后一个函数,而忽略第一个。

​ (2)step_function2 还可以写为如下形式,效果完全相同:

def step_function3(x):return np.array(x>0,dtype=np.int)

二、sigmoid函数

sigmoid函数的表达式:h(x) = 1/(1+exp(-x))

【注】

sigmoid函数中 e 的 -x 次方,用NumPy提供的数学方法exp()方法来实现。

用法:numpy.exp(-x) ——>表示 e 的 -x 次方

参数既可以接收普通数字,也可以接收一个numpy数组(利用NumPy数组的广播功能)

import numpy as np
import matplotlib.pyplot as pltdef sigmoid(x):'''sigmoid函数,这里参数x既可以接收普通数字,也可以接收一个numpy数组'''return 1/(1+np.exp(-x))x = np.array([1.0,-1.0,2.0])
print(sigmoid(x))  # 简单调用做测试x = np.arange(-5.0,5.0,0.1)
y = sigmoid(x)
plt.plot(x,y)
plt.ylim(-0.1,1.1)  # 指定y轴范围
plt.show()

运行结果:
在这里插入图片描述

三、阶跃函数与sigmoid函数的对比

区别:

  1. ”平滑度“不同

    sigmoid函数的图形是一条平滑的曲线,输出随输入的变化而发生连续性的变化;

    而阶跃函数的图形在x=0附近发生急剧变化,x>0输出1,x<0输出0。

    【注】sigmoid函数的平滑性对于神经网络的学习具有重要意义。

  2. 返回值不同

    阶跃函数只能返回0或1,而阶跃函数可以返回0到1之间若干不同大小的实数。

    即,感知机中神经元之间流动的是0或1的二元信号,而神经网络中流动的是连续的实数值信号。

    sigmoid函数可以根据输入值的大小相应地调整输出值的大小,而不仅仅是输出是否传递信号(0或1)这一个动作。

共同点:

1. 输出信号的数值范围始终都在0~1之间

不管输入信号有多大或多小,阶跃函数与sigmoid函数的输出信号的数值范围始终都在0~1之间

2. 从宏观上看,二者的图形具有相似的形状

二者的结构都是:输入越小,输出越接近于0(或为0);输出越大,输出越接近于1(或为1)。

即,当输入信号为不重要的信息时,二者均输出较小的值;

​ 当输入信号为重要信息时,二者均输出较大的值。


http://chatgpt.dhexx.cn/article/FvrMb78Z.shtml

相关文章

TensorFlow2.0自动求导机制(tf.GradientTape的用法)

文章目录 1 使用tf.GradientTape()计算 y x 2 yx^2 yx2的导数2 当使用常量tf.constant时3 对多个数求导时4 使用求导机制进行线性回归的案例 在机器学习中&#xff0c;我们经常需要计算函数的导数&#xff0c;Tensorflow提供了自动求导机制来计算导数。 1 使用tf.GradientTape…

矩阵求导运算

基本公式&#xff1a;Y A * X --> DY/DX AY X * A --> DY/DX AY A * X * B --> DY/DX A * BY A * X * B --> DY/DX B * A 1. 矩阵Y对标量x求导&#xff1a; 相当于每个元素求导数后转置一下&#xff0c;注意MN矩阵求导后变成NM了 Y [y(ij)] --> dY/dx …

autograd-自动求导系统

torch.autograd 权值的更新需要求解梯度&#xff0c;pytorch提供了自动求导系统&#xff0c;我们只需要搭建前向传播计算图&#xff0c;由autograd的方法就可以得到所有张量的梯度。 其中最常用的方法是backward torch.autograd.backward() 功能&#xff1a;自动求取各个节点…

导数与微分 — 高等数学

文章目录 考点一&#xff1a;导数的定义函数在一点处的导数单侧导数&#xff08;1&#xff09;左导数&#xff08;2&#xff09;右导数 充要条件笔记 考点二&#xff1a;可导与连续的关系知识点笔记 考点三&#xff1a;导数的几何意义知识点切线方程、法线方程笔记 考点四&…

05 指数函数求导

2^x的求导 前面我们探索了一些常见函数的导数&#xff0c;但是指数函数是非常重要的一种类型。 1. 从几何上探索 设t为天数&#xff0c;P(t)为人口数量。离散的图 要想图像连续就得转成质量&#xff0c;所以P(t)换成M(t)。dM/dt就是质量的微小变化率和天数的微小变化量的比例…

23微分方程和exp(At)

预备知识 1.1 一阶线性齐次微分方程的解 d y d x P ( x ) y 0 (1) \frac{dy}{dx}P(x)y0\tag{1} dxdy​P(x)y0(1) 其齐次通解为&#xff1a; y C e − ∫ P ( x ) d x (2) yCe^{-\int P(x)dx}\tag{2} yCe−∫P(x)dx(2) 令 P ( x ) − λ P(x)-\lambda P(x)−λ&#xff0c…

人工智能数学基础:无理数e的由来以及对数、指数函数的求导

一、e的由来 函数&#xff08;11/x&#xff09;x在x一>∞时的极限 由于数列{xn}&#xff08;11/n&#xff09;n在n一>∞时存在极限。 证明如下&#xff1a; 当将上述极限推广到n为实数x时也成立&#xff0c;因为任意一个实数都能找到一个n和n1&#xff0c;使得x∈[n,n…

x的1/x次方的导数是多少?怎么算?

方法一&#xff1a; 原式化为e的[1/x•ln(x)]次幂&#xff0c;再根据复合函数求导法则求解。 方法二&#xff1a;

c语言x的n次方导数,a的x次方的导数

a的x次方的导数2019-12-07 13:56:28文/董月 指数函数的求导公式&#xff1a;(a^x)(lna)(a^x)&#xff0c;实质上&#xff0c;求导就是一个求极限的过程&#xff0c;导数的四则运算法则也来源于极限的四则运算法则。反之&#xff0c;已知导函数也可以倒过来求原来的函数&#xf…

软件流程图及功能节点图

需求分析 根据产品原型图&#xff0c;为了弄清楚产品的业务流程以及确定项目中存在的功能点及其具体规则和要求&#xff0c;绘制出软件流程图以及功能节点图&#xff0c;本文以赞赞羊项目为例。 1.软件流程图&#xff1a;作用是弄清楚项目的业务流程。 流程图符号说明&#xff…

软件工程 -- 程序流程图

1.程序流程图&#xff1a;表示了程序的操作顺序&#xff0c;用于对控制流程的描述 1.1 符号 1.2 三种基本控制结构 1.2.1 顺序结构 1.2.2 分支结构 多分支结构 1.2.3 循环结构

QT案例 使用QGraphicsView和命令模式设计完成流程图功能软件,参考QT官方流程图案例【diagramscene】

之前总结资料时候&#xff0c;看到一个Qt实现流程的专栏&#xff0c;后面就想着参考这个项目和官方的【diagramscene】项目&#xff0c;自己再写一个流程图软件来总结学习下&#xff0c;于是就想到使用QGraphicsView来完成相关功能&#xff0c;再使用命令模式来优化使用过程&am…

软件工程-系统流程图

在软件工程可行性研究中需要建立新系统的高层逻辑模型&#xff0c;这个就需要系统流程图了。 作用 系统流程图时描述物理系统的工具 物理系统 所谓物理系统&#xff0c;就是一个具体实现的系统。 与程序流程图的区别 在系统流程图中某些符号与程序流程图中符号形式相同&#…

软件工程 可行性研究、系统流程图、数据流图。

第二章&#xff1a;可行性研究 1.1研究方案的可行性 &#xff08;1&#xff09;技术可行性 &#xff08;2&#xff09;操作可行性 &#xff08;3&#xff09;经济可行性 1.2系统流程图 系统流程图表达的是系统各部件间的流动情况&#xff0c;不是对信息进行加工处理的控制…

ipadpro画流程图_流程图制作软件,这款软件让你5分钟就能搞定流程图

流程图制作软件&#xff0c;这款软件让你5分钟就能搞定流程图 2019-08-05 16:34:24 3点赞 16收藏 0评论 流程图是用来表示算法、工作流的一种框图图示&#xff0c;其广泛应用于分析、设计和记录等领域。市面上绘制流程图的工具并不多&#xff0c;找到一款适合自己的软件变得尤其…

系统流程图

系统流程图 在进行可行性研究时需要理解和分析现有系统&#xff0c;并以概括的形式表达对现有系统的认识&#xff1b;进入设计阶段后应该把设想的新系统的逻辑模型变成物理模型&#xff0c;因此就需要描绘未来的物理系统的概貌。 系统流程图是概括地描绘物理系统的传统工具&…

软件工程系统流程图

对现行系统进行初步分析是可行性研究当中重要的一步&#xff0c;新系统的一些信息主要来源于现行系统同时要根据实际需求完成现行系统的部分功能&#xff0c;并在此基础上对现行系统中存在的问题进行改善和修复&#xff0c;分析现行系统的主要方法就是分析系统的各个部分功能模…

流程图培训

工具 wps 目前咱们在新建里面&#xff0c;可以新建流程图 构成流程图的图形符号及其作用 常用的流程图介绍 flowchart 和 BPMN 两种 flowchart: 最开始的全名是”Process Flow Charts”&#xff0c;即处理流程图表。 BPMN&#xff1a; 定义了业务流程图&#xff0c;其基…

SD软件流程图

SD软件流程图 SD软件流程图 Host configure ClockSD bus power controlchanging bus widthTimeout setting on data lineCard initialization and identificationTransaction Control Transaction Control without DataTransaction Control with DataAbort TransactionChange …