目录
一、PyTorch的基本使用
PyTorch官方教程中文版 (pytorch123.com)
1.使用tensor张量表示数据:tensor是一个物理量,对高维 (维数 ≥ 2) 的物理量进行“量纲分析” 的一种工具。简单的可以理解为:一维数组称为矢量,二维数组为二阶张量,三维数组为三阶张量
2.利用Dataset,Dataloader读取数据;
3. 使用变量 (Variable) 存储神经网络权值等参数
4.使用计算图 (computational graph) 来表示计算任务
深度之眼Pytorch打卡(五):Pytorch计算图(动态图与静态图)与自动求导tensor.backgrad()-CSDN博客
5.在代码运行过程中同时执行计算图
二、卷积神经网络
1.基本概念
传统的全连接网络收敛较慢,计算量大(每一层的神经元之间都是全连接的,连接数数目=参数个数),通过卷积的局部链接,权值共享可以实现参数的减少,大大提高了特征提取的效率。卷积操作本质是一个固定大小的模板对选中区域的数据进行加权求和后的结果,是一种信号的滤波。此外,卷积网络感视野同人眼睛对于局部信息捕捉的特点相符合。在卷积神经网络中,卷积层的神经元只与前一层的部分神经元节点相连,即它的神经元间的连接是非全连接的,且同一层中某些神经元之间的连接的权重和偏移是相同的,这样大量地减少了需要训练参数的数量。卷积操作如图所示:卷积神经网络一开始兴起于图像处理领域,左图的各个小块可以看作是像素点,其上的右下角的红色数值为卷积视野上的卷积核权重,右侧图第一个子块为左图中橙色区域各子块的加权求和即:1+0+1+0+1+0+0+0+1=4,将卷积核依次从左向右从上大小平移得到结果为特征图原图5x5卷积操作后→3x3,存在边缘效应。
因此如果要实现尺度的不变需要对原图进行边缘填充,即padding,填充后的输出可以实现原输入的尺寸,如下图:
2.CNN的结构
1)输入层:用于数据的输入;(CNN的输入层的输入格式保留了图片本身的结构。)
2)卷积层:使用卷积核进行特征提取和特征映射;
隐藏层中的神经元的感受视野比较小,隐藏层中的神经元具有一个固定大小的感受视野去感受上一层的部分特征,只能看到上一次的部分特征上一层的其他特征可以通过平移感受视野来得到同一层的其他神经元。
一个感受视野带有一个卷积核,我们将感受视野中的权重w矩阵称为卷积核(权值共享),将感受视野对输入的扫描间隔称为步长(stride);当步长比较大时(stride>1),为了扫描到边缘的一些特征,感受视野可能会“出界”,这时需要对边界扩充(pad),边界扩充可以设为0或其他值。卷积核、步长和边界扩充值的大小由用户来定义。感受视野扫描时可以计算出下一层神经元的值为:
一个带有卷积核的感受视野扫描生成的下一层神经元矩阵称为 一个feature map (特征映射图)一个feature map对应一个卷积核,若我们使用3个不同的卷积核,可以输出3个feature map。即一个卷积核可提取一个关键特征,为了不遗漏关键特征可以采用多个卷积核。假如感受视野为5×5步长为1,则在卷积层需要训练的参数为5×5×1×3=75个。对于有深度的二维输入数据,感受视野增加一个深度的参数。
3)激励层:由于卷积也是一种线性运算,因此需要增加非线性映射;
激励层主要对卷积层的输出进行一个非线性映射,因为卷积层的计算还是一种线性计算。使用的激励函数一般为ReLu函数:
f(x)=max(x,0)