神经网络与深度学习课程总结二

深度学习课程总结二

前言
本系列文章为神经网络深度学习课程的课程总结。

五、卷积神经网络基础

本周课程主要从以下方面进行讲解:

  • 为什么要“深度”学习?
  • 卷积神经网络基础
  • LeNet-5网络
  • 基本卷积神经网络

1.为什么要“深度”学习?

1.1全连接网络问题
e.g. 输入为1000 × 1000图像,隐含层有1M个节点,则输入->隐含层间有1 × 1012数量级参数。
全连接网络:链接权过多,算的慢,难收敛,同时可能进入局部极小值,也容易产生过拟合问题。
如何解决:
减少权值连接,每一个节点只连到上一层的少
数神经元,即局部连接网络。
权值过多极易产生过拟合。如何消除:
对其进行信息分层处理,每一层在上层提取特征的基础上获取进行再处理,得到更高级别的特征。
1.2深度学习平台介绍
在这里插入图片描述
1.3PyTorch 简介
➢ PyTorch是一个Python的深度学习库。它最初由Facebook人工智能研究小组开发,而优步的Pyro软件则用于概率编程。
➢ 最初,PyTorch由Hugh Perkins开发,作为基于Torch框架的LusJIT的Python包装器。PyTorch在Python中重新设计和实现Torch,同时为后端代码共享相同的核心C库。
➢ 除了Facebook之外,Twitter、GMU和Salesforce等机构都采用了PyTorch。
➢ 到目前,据统计已有80%的研究采用PyTorch,包括Google.
1.4 PyTorch基本使用——基本概念
➢ 张量(Tensor)
是一个物理量,对高维 (维数 ≥ 2) 的物理量进行“量纲分析” 的一种工具。简单的可以理解为:一维数组称为矢量,二维数组为二阶张量,三维数组为三阶张量。
➢ 计算图
用“结点”(nodes)和“线”(edges)的有向图来描述数学计算的图像。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入的起点/输出的终点,或者是读取/写入持久变量的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)。

➢ 使用 tensor 表示数据
➢ 使用 Dataset、DataLoader 读取样本数据和标签
➢ 使用变量 (Variable) 存储神经网络权值等参数
➢ 使用计算图 (computational graph) 来表示计算任务
➢ 在代码运行过程中同时执行计算图

2.卷积神经网络基础

2.1卷积神经网络的进化史
在这里插入图片描述
2.2 基本概念
特征提取
➢ 填充(Padding),也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常用0或者复制边界像素来进行填充。
➢ 步长(Stride),卷积核在你原图上每一步移动的距离。 步长小,提取的特征会更全面,不会遗漏太多信息。 但同时可能造成计算量增大,甚至过拟合等问题。 步长大,计算量会下降,但很有可能错失一些有用的特征。
➢ 多通道卷积:如RGB
池化(Pooling)
思想:使用局部统计特征,如均值或最大值。解决特征过多问题
构成:由多个卷积层和下采样层构成,后面可连接全连接网络
卷积层:𝑘个滤波器
下采样层:采用mean或max
后面:连着全连接网络

算法:
递推:向前传播定义为
在这里插入图片描述
如果第l层是卷积+池化层,则:
在这里插入图片描述
2.3误差反向传播
卷积NN的BP算法:
下采样层:
卷积层+卷积层:
在这里插入图片描述
在这里插入图片描述

3.LeNet-5网络

3.1 网络介绍
网络结构
在这里插入图片描述
3.2 结构详解
C1层
⚫ 6个Feature map构成
⚫ 每个神经元对输入进行5* 5卷积
⚫ 每个神经元对应5* 5+1个参数,共6个feature map,28* 28个神经元,因此共有
(5* 5+1)* 6*(28* 28)=122,304连接
S2层——Pooling层
C3层——卷积层
S4层——与S2层工作相同
C5层
⚫ 120个神经元
⚫ 每个神经元同样对输入进行5* 5卷积,与S4全连接
⚫ 总连接数(5* 5*16+1) * 120=48120
F6层
⚫ 84个神经元
⚫ 与C5全连接
⚫ 总连接数(120+1)*84=10164
输出层
⚫ 由欧式径向基函数单元构成
⚫ 每类一个单元
⚫ 输出RBF单元计算输入向量和参数向量之间的欧式距离
3.3 网络结构可视化
3.4 LeNet5代码实现

import torch
from torch import nn
from d2l import torch as d2l
class Reshape(torch.nn.Module):
def forward(self, x):
return x.view(-1, 1, 28, 28)
net = torch.nn.Sequential(
Reshape(),
nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.Sigmoid(),
nn.AvgPool2d(kernel_size=2, stride=2),
nn.Conv2d(6, 16, kernel_size=5), nn.Sigmoid(),
nn.AvgPool2d(kernel_size=2, stride=2),
nn.Flatten(),
nn.Linear(16 * 5 * 5, 120), nn.Sigmoid(),
nn.Linear(120, 84), nn.Sigmoid(),
nn.Linear(84, 10))
  • nn. Sequential() 该函数可以将不同的模块组合成一个新的模块,将各模块按顺序输入即可
  • nn.AvgPool2d(kernel_size, stride)或MaxPool2d
    平均池化或最大池化层,输入参数分别为池化窗口大小和步长。二参数同时可以为整数,否则为元组类似的还有平均池化nn.AvgPool2d(kernel_size,
    stride)
  • nn. Sigmoid() 该函数为上一层的输出添加sigmoid激活函数类似的还有nn.ReLU(),nn.Tanh()等
  • nn.Conv2d(in_channels,out_channels,kernel_size)
    卷积层,其三个参数按顺序代表输入通道数、输出通道数、卷积核大小
    若卷积核形状为正方形,则卷积核大小可以为int
    否则,卷积核大小必须为元组(tuple)
    如:nn.Conv2d(1, 6, (5, 4))即代表卷积核大小为5×4
    除此之外,还有:
    stride参数:可以规定卷积的步长,与卷积核大小类似,若各方向步长相同则可以为整数,否则应为元组
    padding参数:在图像的周围补充0的个数,常常用于控制卷积前后图像的尺寸大小

4.基本卷积神经网络

4.1 AlexNet
网络说明
➢ 网络一共有8层可学习层——5层卷积层和3层全连接层
➢ 改进
-池化层均采用最大池化
-选用ReLU作为非线性环节激活函数
-网络规模扩大,参数数量接近6000万
-出现“多个卷积层+一个池化层”的结构
➢ 普遍规律
-随网络深入,宽、高衰减,通道数增加
4.2 VGG-16
网络说明
➢ 改进
-网络规模进一步增大,参数数量约为1.38亿
-由于各卷积层、池化层的超参数基本相同,整体结构呈现出规整的特点。
➢ 普遍规律
-随网络深入,高和宽衰减,通道数增多。

总结

➢ 经典网络:以“一个或多个卷积层+一个池化层“作为一个基本
单元进行堆叠,在网络尾部使用全连接层,最后以Softmax为分
类器,输出结果。
➢ 残差网络:在普通网络的基础上,将浅层的激活项通过支路直接
传向深层,克服深层神经网络中梯度消失的问题,为训练极深的
神经网络提供便利。
➢ 数据集:常见的数据集包括VOC和COCO;ImageNet较大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值