这一回我们来看看卷积层的解法。我们将采用两种方法求解:
- 一种是实力派解法
- 一种是软件库中常用的套路——“整容”后的偶像派解法。
这里需要一个小例子,我们假定一个1*5*5的输入,卷积层的维度是1*1*3*3,同时stride=1,padding=0。最终的输出是1*3*3。
这里先画个详细的图,图像中对其中的变量做了定义:
其中:
X表示输入的矩阵,我们用一维的0-24表示下标。
K表示卷积核的矩阵,我们用一维的0-8表示下标。
Z表示卷积的结果,我们用一维的0-8表示下标。
由于前面我们提到操作中stride=1,padding=0,所以我们可以给出简单版和复杂版的输出维度计算公式:
首先是简单版:
然后是复杂版:
很显然,当stride=1,padding=0时,两个公式是等价的。
实力派解法
所谓的实力派解法就是用卷积定义(这里就用相关操作)去做前向计算,然后利用前向的算法去求反向。
接下来这张图上详细介绍了输出的每一个数值是利用哪一部分的信息计算出来的:
上面这张图上详细地讲述了每一个像素的前向计算公式,同时在计算的过程中,我们将每一个输出结果对应的输入和kernel的信息作了标记。实际上这和上一回我们说的算法是一样的。