学习笔记——卷积神经网络概念
卷积神经网络:以卷积层为主的深度网络结构(卷积层、激活层、BN层、池化层、FC层、损失层)
卷积层:对图像和滤波矩阵进行内积运算(逐个元素相乘在求和)卷积后得到一个特征图
步长:?stride
下采样?减少?
上采样?:扩展?
padding:对边缘填充
dilation:空洞卷积,分割网络中会用,其他网络中不用,膨胀,不经过下采样,增加感受野
kernel一般用3*3
pytorch里函数nn.Conv2D
常见的卷积操作:
1、分组卷积(group参数)
2、空洞卷积(dilation参数)
3、反卷积:上采样
4、深度可分离卷积(分组卷积+1*1卷积)
5、可变形卷积等:卷积和的shape不固定
6、标准卷积
4和6用的比较多
感受野:
加深网络可以增加非线性表达能力,增加参数量
如何理解卷积层的参数量和计算量——参数量:参与计算参数的个数,占用内存空间,FLOPS:每秒浮点数计算的次数,衡量硬件性能;计算速度
Flops:计算量
如何压缩卷积层参数和计算量?
1、采用多个3*3卷积核代替大卷积核
2、采用深度可分离卷积
3、通过shuffle
4、pooling
5、stride=2
常见卷积层结构组合:堆叠(VGG);跳连(Resnet,加快模型收敛);并联(inception)
池化层:对输入的特征图进行压缩——1、使特征图变小,简化网络的计算复杂度;2、特征压缩,提取主要特征
最大池化;平均池化。非线性nn.Maxpool2d
上采样:方法一:Resize,双线性插值直接缩放,类似于图像缩放
方法二:反卷积
5.7激活层:
增加网络的非线性,进而提升网络的表达能力。Relu等,torch.nn.Relu(inplace=TRUE)
BatchNorm层
通过一定的规范化的手段,把每层的神经网络任意神经元这个输入值的分布强行拉回到均值为0,方差为1的标准正态分布,是归一化的一种手段,减少图像之间的绝对差异,加快训练速度。不适用问题:image-to-image以及对噪声敏感的任务
全连接层:线性模块
连接所有特征,将输出值送给分类器,对图像尺寸敏感。参数多,配合dropout,抑制一些特征,embeding,
1、对前一层的特征进行一个加权和(卷积层将数据输入映射到隐层的特征空间)将特征空间通过线性变换映射到样本标记空间
2、可以通过1*1卷积+globel average pooling 代替
3、可以通过全连接层参数冗余
4、全连接层参数和尺寸有关
Dropout层
1、在训练过程中随机扔掉一些神经元:减少参数,防止过拟合,使模型变得简单,结构最小化约束
2、测试过程中不适用随机激活,所有神经元都激活
3、防止或减轻过拟合使用的函数,一般用在全连接层
nn.dropout
损失层:
设置一个损失函数用来比较网络的输出和目标值,通过最小化损失来驱动网络的训练。
网络的损失通过向前操作计算,网络参数相对于损失函数的梯度则通过反向操作(导数)计算
分类问题:交叉熵
本文来自博客园,作者:编程coding小白,转载请注明原文链接:https://www.cnblogs.com/zhenhua1203/p/15099865.html