目录标题
一、卷积运算
卷积层对数据进行卷积运算,卷积运算相当于图像处理中得滤波器运算

对于输入数据,卷积运算以一定间隔滑动卷积核的窗口并应用。将各个位置上卷积核的元素和输入的对应元素相乘,然后再求和(也称为乘积累加运算、矩阵的内积)。

CNN中,卷积核得参数对应之前得权重。并且CNN中也存在偏置

二、填充
在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0),这称为填充(padding)。例如,对形状为 4×4 的数据进行幅度为 1 的填充,即用幅度为 1、值为 0 的数据填充周围:

可以看到,4×4 的数据进行幅度为 1 的填充后形状变为 6×6,再经过卷积后数据的形状为 4×4。使用填充主要目的是为了调整输出数据的形状大小,避免多次卷积后数据形状大小过小导致无法继续进行卷积运算。运用填充可以令数据形状在经过卷积运算后保持不变。
三、步幅
应用卷积核的位置间隔称之为步幅(stride)。没有强调方向,所有横向和纵向是一样的,如果步幅是2,那横纵移动都是2
之前的例子中步幅都为 1,下面我们进行步幅为 3 的卷积运算:



可移动格子(长度): w+2p-fw 但是有步幅s,所以可移动次数就是 w + 2p - fw / s 本身未移动之前就是一次计算
可以看到填充和步幅都会影响输出数据的形状大小。增大填充,输出数据形状大小会变大;增大步幅,输出数据形状大小会变小。让我们分析一下给定填充和步幅如何计算输出数据的形状大小。
假设输入数据形状为 ( H , W ) (H, W) (H,W),卷积核大小为 ( F H , F W ) (FH, FW) (FH,FW),填充为 P P P,步幅为 S S S,输出数据形状为 ( O H , O W ) (OH, OW) (OH,OW),可得:
O H = H + 2 P − F H S + 1 OH = \frac{H + 2P - FH}{S} + 1 OH=SH+2P−FH+1
O W = W + 2 P − F W S + 1 OW = \frac{W + 2P - FW}{S} + 1 OW=SW+2P−FW+1
例如,对于形状为 ( 4 , 4 ) (4,4) (4,4) 的输入数据应用幅度为 1 1 1 的填充,并应用步幅为 3 3 3,卷积核大小为 ( 3 , 3 ) (3,3) (3,3) 的卷积运算:
O H = O W = 4 + 2 − 3 3 + 1 = 2 OH = OW = \frac{4 + 2 - 3}{3} + 1 = 2 OH=OW=34+2−3+1=2
得到形状为 ( 2 , 2 ) (2,2) (2,2) 的输出数据。
当输出大小无法除尽时,PyTorch 卷积层会自动向下取整,输出整数尺寸,舍弃无法覆盖完整卷积核的输入部分。