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

本文介绍了深度学习平台PyTorch的基本概念,包括张量和计算图,并详细讲解了卷积神经网络的基础,如卷积、填充、步长和池化。特别地,文章深入剖析了经典的LeNet-5网络结构和误差反向传播算法,并提供了简单的PyTorch代码示例。
摘要由CSDN通过智能技术生成


目录

1.深度学习平台介绍

1.1 平台分类

1.2 PyTorch 简介

1.3 PyTorch基本概念

2.卷积神经网络基础

2.1 进化史

2.2 基本概念

2.2.1 常用基本概念

2.2.2 卷积神经网络构成

2.3 学习算法

3.卷积神经网络(LeNet-5网络)

3.1 网络结构

3.2 误差反向传播

3.2.1 经典BP算法

3.2.2 卷积NN的BP算法

 3.3 代码实现


1.深度学习平台介绍

1.1 平台分类

1.2 PyTorch 简介

         PyTorch是一个Python的深度学习库。 它最初由Facebook人工智能研究小组开发, 而优步的Pyro软件则用于概率编程。

1.3 PyTorch基本概念

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

计算图:用“结点”( nodes)和“线” (edges)的有向图来描述数学计算的图像。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入的起点/输出的终点,或者是读取/写入持久变量的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“ size可动态调整”的多维数据数组,即“张量”( tensor)。

2.卷积神经网络基础

2.1 进化史

 2.2 基本概念

        卷积神经网络是一种深度学习模型类似于神经网络的多层感知器,常用来分析视觉图像处理与图像识别相关的机器学习问题,比如图像分类,目标检测,图像分割等各种视觉任务。

2.2.1 常用基本概念

        全连接网络:链接权过多,也很难收敛,同时可能会进入局部极小值,容易产生过拟合问题

        局部连接网络:只有一部分权值连接,只有部分输入和权值卷积

        特征提取:

        填充(Padding):在矩阵边界填充一些值,用以增加矩阵的大小,通常用0或者复制边界像素进行填充。

        步长(Stride):卷积核在原图上每一步移动的距离,如图步长为2。

        池化(Pooling):使用局部统计特征,如均值或最大值,解决特征过多的问题。

 2.2.2 卷积神经网络构成

        构成:由多个卷积层和下采样层构成,后面可连接全连接网络

        卷积层:k个滤波器

        下采样层:采用mean或max

        后面:连着全连接网络

 2.3 学习算法

3.卷积神经网络(LeNet-5网络)

3.1 网络结构

 C1层:

  • 6个Feature map构成
  • 每个神经元对输入进行5*5卷积
  • 每个神经元对应 5*5+1 个参数,共6个feature map, 28*28 个神经元,因此共有 (5*5+1)*6*(28*28)=122,304 连接

 S2层:

 C3层:

 S4层:与S2层工作相同。

 C5层:

  • 120个神经元
  • 每个神经元同样对输入进行5*5卷积,与S4全连接
  • 总连接数(5*5*16+1)*120=48120

F6层:

  • 84个神经元
  • 与C5全连接
  • 总连接数(120+1)*84=10164

输出层:

  • 由欧式径向基函数单元构成
  • 每类一个单元
  • 输出RBF单元计算输入向量和参数向量之间的欧式距离

 网络结构:

网络特点:

网络的特点:

1.卷积时不进行填充

2.池化层选用平均池化而不是最大池化

3.选用sigmoid或者tanh函数作为非线性环节激活函数

4.层数较浅,不会造成处理大量参数的情况

3.2 误差反向传播

3.2.1 经典BP算法

 3.2.2 卷积NN的BP算法

下采样层:

 局部误差从卷积层传到下采样层:

 3.3 代码实现

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的个数,常常用于控制卷积前后图像的尺寸大小。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值