深度学习入门基于Python的理论与实现的学习

第1章,python入门

1.1、使用工具
使用python语言
需要安装:Python、pycharm
1.2、导入外部库
(1)点击File | Settings
在这里插入图片描述
(2)点击Project: file | Project Interpreter,然后点击右边加号

在这里插入图片描述
(3)输入需要导入的外部库
在这里插入图片描述
1.3 生成numpy数组及numpy的算术运算

在这里插入图片描述
1.4 广播
矩阵A和形状不同的矩阵之间进行乘法运算。在这个过程中,不同形状的矩阵被扩展成了与A相同的形状,然后再与矩阵A进行乘法运算。这个功能称为广播
在这里插入图片描述

1.5 Matplotlib
Matplotlib是用于绘制图形的库,使用Matplotlib可以轻松地绘制图形和实现数据的可视化。但在实际操作中遇到了问题,Pycharm中sin图像的实现出现折线如:
在这里插入图片描述
通过修改代码:x=np.array([0,6,0.1])为x=np.linspace(0,15,100)
在这里插入图片描述
最终结果:
在这里插入图片描述
以上是因为代码错误导致的:
在这里插入图片描述

第2章 感知机

2.1 感知机的定义
感知机是一种算法,感知机接收多个输入信号,像电流流过导线,向前方输送电子一样,感知机的信号也会形成流,向前方输送信息。但是,和实际的电流不同的是,感知机的信号只有“流/不流”(1/0)两种取值。由输入信号、输出信号、权重、神经元(节点)组成。被送往神经元时,会被分别乘以固定的权重。神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1。这也称为“神经元被激活”。
在这里插入图片描述
感知机的运行原理用数学式来表示:
在这里插入图片描述

2.2 简单逻辑电路
与门:同1则1,否则为0
与非门:和与门相反,同1则0,否则为1
或门:有1则1,否则为0

与门真值表:
在这里插入图片描述

代码实现:在这里插入图片描述
2.3 感知机的局限性
异或门:同为0,异为1
异或门真值表:
在这里插入图片描述
感知机是无法实现这个异或门的。原因是其他门都可用一线直线来划分开两个区域,如或门:当权重参数(b, w1, w2) = (−0.5, 1.0, 1.0),感知机可用下式表示:
在这里插入图片描述
上式表示的感知机会生成由直线−0.5 + x1 + x2 = 0分割开的两个空
间。其中一个空间输出1,另一个空间输出0,如下图所示:
在这里插入图片描述
因此,或门在(x1, x2) = (0, 0)时输出0,在(x1, x2)为(0, 1)、(1, 0)、(1, 1)时输出1。
在这里插入图片描述

想要用一条直线将上中的○和△分开,无论如何都做不到。如果直线这个限制,用曲线也可以,异或门也就可以表示出来了。
2.4,多层感知机
可以组合与门、与非门、或门得到异或门。
与门、与非门、或门的表示符号:
在这里插入图片描述
在这里插入图片描述
例如:
在这里插入图片描述

第3章 神经网络

3.1 感知机的例子

关于感知机,即便对于复杂的函数,感知机也隐含着能够表示它的可能性。即便是计算机进行的复杂处理,感知机(理论上)也可以将其表示出来。但是,设定权重的工作,即确定合适的、能符合预期的输入与输出的权重,现在还是由人工进行的。神经网络的重要性质是它可以自动地从数据中学习到合适的权重参数。那么这就解决了感知机的缺陷。用图来表示神经网络的话,如图下所示。我们把最左边的一列称为输入层,最右边的一列称为输出层,中间的一列称为中间层。中间层有时也称为隐藏层。
在这里插入图片描述
3.1 激活函数
感知机接收x1和x2两个输入信号,输出y。用数学式来
表示的感知机:
在这里插入图片描述
b是被称为偏置的参数,用于控制神经元被激活的容易程度;而w1和w2是表示各个信号的权重的参数,用于控制各个信号的重要性。
现在将上式改写成更加简洁的形式。我们用一个函数来表示这种分情况的动作(超过0则输出1,否则输出0)。引入新函数h(x),将上式改成:
在这里插入图片描述
在这里插入图片描述
输入信号的总和会被函数h(x)转换,转换后的值就是输出的y,感知机的激活函数以阈值为界,一旦输入超过阈值,就切换输出。这样的函数称为“阶跃函数”。因此,可以说感知机中使用了阶跃函数作为激活函数。也就是说,在激活函数的众多候选函数中,感知机使用了阶跃函数。如果将激活函数从阶跃函数换成其他函数,就可以进入神经网络的世界了。
1、阶跃函数的实现
在这里插入图片描述
结果如下:
在这里插入图片描述
2、sigmoid函数的实现
函数公式:
在这里插入图片描述
代码实现:
在这里插入图片描述
最终结果:
在这里插入图片描述
两者之间的对比:
在这里插入图片描述
首先注意到的是“平滑性”的不同。sigmoid函数是一条平滑的曲线,输出随着输入发生连续性的变化。而阶跃函数以0为界,输出发生急剧性的变化。另一个不同点是,相对于阶跃函数只能返回0或1,sigmoid函数可以返回0.731 …、0.880 …等实数。也就是说,感知机中神经元之间流动的是0或1的二元信号,而神经网络中流动的是连续的实数值信号。两者的共同性质:结构均是输入小时,输出接近0,随着输入增大,输出向1靠近甚至变成1。也就是说,当输入信号为重要信息时,阶跃函数和sigmoid函数都会输出较大的值;当输入信号为不重要的信息时,两者都输出较小的值。还有一个共同点是,不管输入信号有多小,或者有多大,输出信号的值都在0到1之间。
神经网络的激活函数必须使用非线性函数。
3.2 多维数组的运算
在这里插入图片描述
数组的维数可以通过np.dim()函数获得。此外,数组的形状可以通过实例变量shape获得。在上面的例子中,A是一维数组,由4个元素
构成。注意,这里的A.shape的结果是个元组(tuple)。这是因为一维数组的情况下也要返回和多维数组的情况下一致的结果。例如,二维数组时返回的是元组(4,3),三维数组时返回的是元组(4,3,2),因此一维数组时也同样以元组的形式返回结果。

3.3 3层神经网络的实现
在这里插入图片描述
3.4、输出层的设计
恒等函数是将输入按原样输出,对于输入的信息,不加以任何改动地直接输出,恒等函数进行的转换处理可以用一根箭头来表示。softmax函数的输出通过箭头与所有的输入信号相连,输出层的各个神经元都受到所有输入信号的影响。softmax函数:
在这里插入图片描述

函数的代码实现:
在这里插入图片描述
实现 softmax函数时的注意事项:
softmax函数的实现中要进行指数函数的运算,但是此时指数函数的值很容易变得非常大。如果在这些超大值之间进行除法运算,结果会出现“不确定”的情况,计算机处理“数”时,可以表示的数值范围是有限的。因此,会出现超大值无法表示的问题。就出现了一个缺陷即溢出问题。比如:
在这里插入图片描述

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

第4章 神经网络的学习

4.1 从数据中学习
神经网络的特征就是可以从数据中学习。所谓“从数据中学习”,是指
可以由数据自动决定权重参数的值。对于线性可分问题,感知机是可以利用数据自动学习的。通过有限次数的学习,线性可分问题是可解的。但是,非线性可分问题则无法通过(自动)学习来解决。
4.2 损失函数
神经网络的学习通过某个指标表示现在的状态。然后,以这个指标为基准,寻找最优权重参数。神经网络的学习中所用的指标称为损失函数。这个损失函数可以使用任意函数,但一般用均方误差和交叉熵误差等。
1、均方差误差:
在这里插入图片描述
yk是表示神经网络的输出,tk表示监督数据,k表示数据的维数。
2、交叉熵误差
在这里插入图片描述
yk是神经网络的输出,tk是正确解标签。并且,tk中只有正确解标签的索引为1,其他均0(one-hot表示)。因此,上式实际上只计算对应正确解标签的输出的自然对数。比如,假设正确解标签的索引是“2”,与之对应的神经网络的输出是0.6,则交叉熵误差是−log 0.6 = 0.51;若“2”对应的输出是0.1,则交叉熵误差为−log 0.1 = 2.30。也就是说,交叉熵误差的值是由正确解标签所对应的输出结果决定的。

mini-batch学习:
从全部数据中选出一部分,作为全部数据的“近似”。神经网络的学习也是从训练数据中选出一批数据,然后对每个mini-batch进行学习。比如,从60000个训练数据中随机选择100笔,再用这100笔数据进行学习。这种学习方式称为mini-batch学习。

第5章 高效计算权重参数的梯度的方法——误差反向传播法

5.1 用计算图求解——正向传播:
在这里插入图片描述
5.2基于链式法则——反向传播:
在这里插入图片描述
5.3、激活函数的实现
如Sigmoid层:
正向传播:
在这里插入图片描述
反向传播:
在这里插入图片描述
5.4、Affine层的计算图
在这里插入图片描述

第7章 卷积神经网络

7.1、卷积层
卷积层的计算:
在这里插入图片描述
填充:是为了调整输出的大小
步幅:应用滤波器的位置间隔称为步幅
输出大小的公式:
在这里插入图片描述
7.2、池化层:
池化是缩小高、长方向上的空间的运算
在这里插入图片描述
池化层的特征:
1、没有要学习的参数
2、通道数不发生变化

7.3 基于 im2col的展开:
使用im2col的实现存在比普通的实现消耗更多内存的缺点。但是,汇总成一个大的矩阵进行计算,归结到矩阵计算上,可以有效地利用线性代数库。对计算机的计算颇有益处。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值