卷积
互相关运算:
卷积核的每一位与待卷积矩阵对应位相乘后求和
0 x 0+1 x 1+3 x 2+4 x 3=19,其他类似
卷积核向右移动一位后,0 * 1 + 2 * 1 + 4 * 2 + 5 * 3 = 25
卷积核到下一行:0 * 3 + 1 * 4 + 6 * 2 + 7 * 3 = 37
再向右移动一位:0 * 4 + 1 * 5 + 7 * 2 + 8 * 3 = 43
卷积层
卷积层对输入和卷积核权重进行互相关运算,并在添加标量偏置之后产生输出。所以卷积层中的两个被训练的参数是卷积核权重和标量偏置
机初始化卷积核权重。
手搓实现
1 | class Conv2D(nn.Module): |
导包实现
1 | from torch import nn |
一般首先关心的就是输入的通道数,输出的通道数,卷积核大小,初始化权重什么的不用操心
特征映射和感受野
上图输出的卷积层有时被称为特征映射(feature map),因为它可以被视为一个输入映射到下一层的空间维度的转换器,
卷积神经网络中,对于某一层的任意元素x,其感受野(receptive field)是指在前向传播期间可能影响x计算的所有元素(来自所有先前层)。如上图,给定2×2卷积核,阴影输出元素值19的感受野是输入阴影部分的四个元素
感受野可能大于输入的实际大小。(这个很好理解,因为来自前面所有层,二输入仅仅指的是输出的前一层)
卷积中的填充:
减少边缘像素的丢失
卷积中的步幅
多输入多输出
多输入
输入包含多个通道时,需要构造一个与输入数据具有相同输入通道数的卷积核,以便与输入数据进行互相关运算
先是各自通道上卷积核与各自通道进行互相关运算,然后将得到的两个输入求和成一个数作为对应位置的输出
多输出
随着神经网络层数的加深,我们常会增加输出通道的维数,通过减少空间分辨率以获得更大的通道深度。
汇聚
处理图像时,我们希望逐渐降低隐藏表示的空间分辨率、聚集信息,这样随着我们在神经网络中层叠的上升,每个神经元对其敏感的感受野(输入)就越大。
通过逐渐聚合信息,生成越来越粗糙的映射,最终实现学习全局表示的目标,同时将卷积图层的所有优势保留在中间层。
目的
降低卷积层对位置的敏感性
同时降低对空间降采样表示的敏感性。
种类
最大汇聚层
每次取核里面最大的作为对应位置的输出
平均汇聚层
每次对核里面的求和取平均作为对应位置的输出
多个通道
汇聚层在每个输入通道上单独运算,而不是像卷积层一样在通道上对输入进行汇总。 这意味着汇聚层的输出通道数与输入通道数相同。
调整大小计算宽和高
参数计算主要是在从最后的卷积层或者池化层后,进行映射的全连接层的第一层前,需要展平成一维张量,这时就要通过参数计算来确定目前输出通道数,全部相乘的结果作为全连接层的第一层的输入通道数
1 | 卷积后宽和高常用计算公式: |
不成文规定
池化参数一般就是(2, 2)
中间的channel数量都是自己设定的,二的次方就行
kernelsize一般3或者5之类的