神经网络与深度学习(二)

本文介绍了PyTorch深度学习库及其在实现LeNet-5卷积神经网络中的应用。LeNet-5是早期的卷积神经网络,主要用于手写数字识别,包含3个卷积层、2个下采样层和2个全连接层。文章讨论了卷积、池化、填充等概念,并解析了LeNet-5的网络结构和参数计算。
摘要由CSDN通过智能技术生成

0 Pytorch简介

PyTorch是一个Python的深度学习库。 它最初由Facebook人工智能研究小组开发, 而优步的Pyro软件则用于概率编程。PyTorch是一个Python的深度学习库。 它最初由Facebook人工智能研
究小组开发, 而优步的Pyro软件则用于概率编程。除了Facebook之外, Twitter、 GMU和Salesforce等机构都采用了PyTorch。到目前, 据统计已有80%的研究采用PyTorch, 包括Google。

张量:是一个物理量,对高维 (维数 ≥ 2) 的物理量进行“量纲分析” 的一种工具。简单的可以理解为:一维数组称为矢量,二维数组为二阶张量,三维数组为三阶张量。

计算图:用“结点”( nodes)和“线” (edges)的有向图来描述数学计算的图像。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入的起点/输出的终点,或者是读取/写入持久变量的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“ size可动态调整”的多维数据数组,即“张量”( tensor)使用 tensor 表示数据。使用 Dataset、 DataLoader 读取样本数据和标签。使用变量 (Variable) 存储神经网络权值等参数。使用计算图 (computational graph) 来表示计算任务。

1 卷积神经网络基础

全连接网络:链接权过多,难算难收敛,同时可能进入局部极小值,也容易产生过拟合问题
局部连接网络:顾名思义,只有一部分权值连接。部分输入和权值卷积。
填充(Padding),也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常用0或者复制边界像素来进行填充。
步长(Stride):如图步长为2

多通道卷积:如RGB

全连接神经网络连接权重过多,运算量大,网络难以收敛,同时可能进入局部极小值,容易产生过拟合问题。

卷积神经网络常用于图像处理和分类领域。卷积神经网络不同层之间的节点只有局部连接,这种结构将会减小网络的参数量,能够提高运算速度和预防过拟合的出现。

卷积神经网络利用卷积核通过卷积层来获得样本特征,卷积核是一个m×m大小的正方形,每一个元素代表权重。进行卷积操作时每一步卷积核会作用在输入图像m×m大小的区域,卷积核每一个元素与该区域对应元素进行内积(相乘再相加)得到输出。之后卷积核会在图片上滑动s个单位距离,进行下一步卷积操作,s称为步长。有时进行卷积操作前会进行填充操作,填充操作即在原始输入图像四周补零。若n代表输入图像尺寸,n’代表输出图像尺寸,p代表填充值,则n’与n、p、m、s的关系如下式。
 

 

(注意:严格来讲,直接将核与图像对应区域的元素进行内积叫相关操作,卷积操作是需要将核旋转180°后再进行内积,如果核是中心对称的,则相关操作和卷积操作是等价的)

2 LeNet-5网络

LeNet-5是由Yann LeCun提出的用于识别手写数字的卷积神经网络,是卷积神经网络的早期代表。

LeNet-5一共有7层,包括3个卷积层、2个下采样层和2个全连接层。卷积核的大小均为5×5,步长为1。

 

卷积层C1

C1层是卷积层,形成6个特征图。卷积核大小是5x5,每个特征图使用一个共同卷积核,卷积核有5x5个权重加上1个偏置共26个参数。由于步长为1,无填充,依据上面的公式计算特征层尺寸为(32-5)/1+1=28。

C1层共有26x6=156个训练参数,有(5x5+1)x28x28x6=122304个连接。

下采样层S2

S2层是一个池化层,C1层的6个28x28的特征图分别进行2x2下采样得到6个14x14的图,计算时将滤波器覆盖区域的4个值相加乘以权重w,再加上偏置b,该层有2×6=12个参数(w, b),共有5x14x14x6=5880个连接。

卷积层C3

C3层是一个卷积层,卷积核尺寸和步长与C1相同,C3有16个10x10的特征图,S2层与C3层的卷积核是部分连接,每个图与S2层的连接的方式如下表所示。

以第一列为例,表示C3层的0号卷积核与S2层的0、1、2号特征图相连。用3层卷积核分别与0、1、2号特征图进行卷积操作,卷积结果相加再加上偏置,再通过sigmoid函数获得结果,该层有(5x5x3+1)x6+(5x5x4+1)x9+(5x5x6+1)x1=1516个训练参数,这样做使得C3层的特征层有所差别,共有1516x10x10=151600个连接。

下采样层S4

结构与S2相似,生成16个5×5的特征图,共有32个参数,5×5×5×16=2000个连接。

卷积层C5(全连接)

对S4层进行5×5的卷积操作,生成120层1×1的特征层。有(5×5×16+1)×120=48120个参数,也有48120个连接。

全连接层F6

共有84个神经元与C5全连接,共有(120+1)×84=10164个参数和连接。

输出(全连接层)层OUTPUT

输出层也是全连接层,有10个节点,代表数字0-9。利用径向基函数,将F6层的84个单元的输出作为节点i(i=0-9)的输入xj(j=0-83),计算欧氏距离yi,yi越小意味着识别的样本越符合节点代表的字符,共有84×10=840个参数和连接。

LeNet-5与现代网络的差别:

  1. 不使用填充

  1. 池化选择平均池化而不是最大池化

  1. 选用sigmoid而非ReLU作为激活函数

  1. 层数较浅,参数量较小(约6万)

普遍规律

随着网络的深入,特征层宽高减小,通道数增加。

LeNet-5的代码实现

代码使用的是李沐的《动手学深度学习》。

注意,代码在第一层卷积加了一个padding=2,由于书中将输入图片尺寸设置为28×28,并不是32×32,第一层卷积后为了保证输出特征图尺寸也是28×28进行2填充。其余和上述LeNet-5网络结构完全相同。

相关模块的含义:

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值