基于Pytorch搭建的神经网络资源汇总

前言:为了方便以后复习时进行查阅,特将一些学习过的资源进行汇总,也算巩固一下自己所学知识。

参考链接:B站up跟李沐学AI以及霹雳吧

跟李沐学AI的个人空间_哔哩哔哩_Bilibili
霹雳吧啦Wz的个人空间_哔哩哔哩_Bilibilic霹雳吧啦Wz,学习学习…;霹雳吧啦Wz的主页、动态、视频、专栏、频道、收藏、订阅等。哔哩哔哩Bilibili,你感兴趣的视频都在B站。https://space.bilibili.com/18161609/channel/seriesdetail?sid=244158

csdn博客链接:太阳花的小绿豆的博客_CSDN博客-深度学习,软件安装,Tensorflow领域博主 

一、Pytorch基础

1.1、基本数据类型Tensor

1.1.1 Tensor的创建torch.Tensor()

 参考链接:torch.Tensor和torch.tensor的区别_Sennna_的博客-CSDN博客  

1.1.2 tensor的维度查看,可以用使用Tensor.shape或者size(),前者是张量的属性,后者是tensor类里面的方法。

a=torch.Tensor(2,2)
a.shape,a.size()
(torch.Size([2, 2]), torch.Size([2, 2])) 有几个数字就是几维。

1.1.3 随机生成tensor

可以使用torch.rand和torch.randn,前者是从0-1的均匀分布中随机抽样,randn是从正太分布中抽样。

此外还要注意orch.arange(start,end)的结果不包括end,torch.range(start,end)的结果包括end不过torch.range要被废弃了。

参考链接:PyTorch 常用方法总结1:生成随机数Tensor的方法汇总(标准分布、正态分布……) – 知乎

1.1.4 squeeze()和unsqueeze()函数

前者用于除去size为1的维度,后者则是将指定的维度的size边为1.

1.2、 神经网络工具箱torch.nn模块

1.2.1 包含模型创建的nn.Module、forward()函数与反向传播,以及快速搭建模型的nn.Sequential()模块

1.2.2 损失函数

torch.nn和torch.nn.funcitional中都提供了各种损失函数,前者会自动学习参数,后者不学习,因为损失函数不含有可学习的参数,因此两者在功能上基本没有区别。

1.2.3 优化器nn.optim

常用的有SGD以及Adan方法。

1.2.4 数据处理

数据加载用torch.utils.data.Dataset和Dataloader两个类。

数据变化与增强:torchvision.transforms。

 二、网络骨架:Backbone

2.1 神经网络基本组成

2.1.1 卷积层

1*1卷积 不识别空间信息,可以融合通道,简单来说就是更改输出通道数。

总结:输出通道是卷积层的超参数,     

padding先上下,再左右   

2.1.2 激活函数层

        神经网络如果仅仅是由线性的卷积运算堆叠组成,则其无法形成复杂的表达空间,也就很难提取出高语义的信息,因此还需要加入非线性的映射,又称为激活函数,可以逼近任意的非线性函数,以提升整个神经网络的表达能力。在物体检测任务中,常用的激活函数有Sigmoid、ReLU 及Softmax函数。

2.1.3 池化层

        在卷积网络中,通常会在卷积层之间增加池化(Pooling)层,以降低特征图的参数量,提升计算速度,增加感受野,是一种降采样操作。池化是一种较强的先验,可以使模型更
关注全局特征而非局部出现的位置,这种降维的过程可以保留一些重要的特征信息,提升容错能力,并且还能在一定程度上起到防止过拟合的作用。
        在物体检测中,常用的池化有最大值池化(Max Pooling)与平均值池化(AveragePooling)。池化层有两个主要的输入参数,即核尺寸 kernel size与步长 stride。

2.1.4 Dropout层

  随机失活神经元,被广泛用到全连接层,一般保留概率为0.5,较为稀疏的卷积层则采用BN层。

        在深度学习中,当参数过多而训练样本又比较少时,模型容易产生过拟合现象。过拟合是很多深度学习乃至机器学习算法的通病,具体表现为在训练集上预测准确率高,而在测试集上准确率大幅下降。2012年,Hinton等人提出了Dropout算法,可以比较有效地缓解过拟合现象的发生,起到一定正则化的效果。
        Dropout 的基本思是在训练时,每个神经元以概率p保留,即以 1-p的概率停止工作,每次前向传播保留下来的神经元都不同,这样可以使得模型不太依赖于某些局部特征,泛化性能更强。在测试时,为了保证相同的输出期望值,每个参数还要乘以p。当然还有另外一种计算方式称为 Inverted Dropout,即在训练时将保留下的神经元乘以1/p,这样测试时就不需要再改变权重。

2.1.5 BN层

 作用在激活函数前,是一种线性变换。

批量归一化

尽管BN层取得了巨大的成功,但仍有一定的弊端,主要体现在以下两点:
1、由于是在batch的维度进行归一化,BN层要求较大的batch才能有效地工作,而物体检测等任务由于占用内存较高,限制了batch的大小,这会限制BN层有效地发挥归一化功能。
2、数据的batch大小在训练与测试时往往不一样。在训练时一般采用滑动来计算平均值与方差,在测试时直接拿训练集的平均值与方差来使用。这种方式会导致测试集依赖于训练集,然而有时训练集与测试集的数据分布并不一致。
        因此,我们能不能避开batch来进行归一化呢?答案是可以的,最新的工作GN(GroupNormalization)从通道方向计算均值与方差,使用更为灵活有效,避开了batch大小对归一化的影响。
        具体来讲,GN先将特征图的通道分为很多个组,对每一个组内的参数做归一化,而不是 batch。GN之所以能够工作的原因,笔者认为是在特征图中,不同的通道代表了不同的意义,例如形状、边缘和纹理等,这些不同的通道并不是完全独立地分布,而是可以放到一起进行归一化分析。

2.1.6 全连接层

        在物体检测算法中,卷积网络的主要作用是从局部到整体地提取图像的特征,而全连接层则用来将卷积抽象出的特征图进一步映射到特定维度的标签空间,以求去损失或者输出预测结果。

但是缺点就是参数太多。

2.2 AlexNet网络结构

2.3 VggNet网络结构 

        VGG网络是在2014年由牛津大学著名研究组VGG (Visual Geometry Group) 提出,斩获该年ImageNet竞赛中 Localization Task (定位任务) 第一名 和 Classification Task (分类任务) 第二名。原论文名称是《Very Deep Convolutional Networks For Large-Scale Image Recognition》,在原论文中给出了一系列VGG模型的配置,下面这幅图是VGG16模型的结构简图。


 

2.4 GoogLeNet

        GoogLeNet在2014年由Google团队提出(与VGG网络同年,注意GoogLeNet中的L大写是为了致敬LeNet),斩获当年ImageNet竞赛中Classification Task (分类任务) 第一名。原论文名称是《Going deeper with convolutions》,下面是该网络的缩略图

左图呢,是论文中提出的inception原始结构,右图是inception加上降维功能的结构。

先看左图,inception结构一共有4个分支,也就是说我们的输入的特征矩阵并行的通过这四个分支得到四个输出,然后在在将这四个输出在深度维度(channel维度)进行拼接得到我们的最终输出(注意,为了让四个分支的输出能够在深度方向进行拼接,必须保证四个分支输出的特征矩阵高度和宽度都相同)。

分支1是卷积核大小为1×1的卷积层,stride=1,

分支2是卷积核大小为3×3的卷积层,stride=1,padding=1(保证输出特征矩阵的高和宽和输入特征矩阵相等),

分支3是卷积核大小为5×5的卷积层,stride=1,padding=2(保证输出特征矩阵的高和宽和输入特征矩阵相等),

分支4是池化核大小为3×3的最大池化下采样,stride=1,padding=1(保证输出特征矩阵的高和宽和输入特征矩阵相等)。

再看右图,对比左图,就是在分支2,3,4上加入了卷积核大小为1×1的卷积层,目的是为了降维,减少模型训练参数,减少计算量,下面我们看看1×1的卷积核是如何减少训练模型参数的。同样是对一个深度为512的特征矩阵使用64个大小为5×5的卷积核进行卷积,不使用1×1卷积核进行降维话一共需要819200个参数,如果使用1×1卷积核进行降维一共需要50688个参数,明显少了很多。

2.5 RestNet

ResNet网络是在2015年由微软实验室提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。

 

 

 

 结论:

这几个模型有几个共同特征:1、全连接层很占内存 2、卷积核越大越占内存 3、层数越多越占内存 4、模型越占内存越难训练

得出一个结论:多用1*1、3*3 卷积、 GAP替代全连接 既可以加快速度,又可以达到与全连接、大卷积核一样的效果。还有一个规律,就是图像尺寸减半,同时通道数指数增长,可以很好地保留特征。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年5月19日
下一篇 2022年5月19日

相关推荐