来源:Coursera吴恩达深度学习课程
卷积中的步长(strided convolutions)是另一个构建卷积神经网络的基本操作,具体看下面一个例子。
如果你想用3×3的过滤器卷积这个7×7的图像,和之前不同的是,我们把步幅设置成了2。第一次计算你还和之前一样取左上方的3×3区域的元素的乘积,再加起来,最后结果为2×3 + 6×1 + 3×(-1) + 3×4 + 6×0 + 4×0 + 7×4 + 9×2 + 8×3 = 91。第二次计算注意一下左上角(蓝色圆圈),这个点移动到其后两格的点,跳过了一个位置。接着还是将每个元素相乘并求和,将会得到的结果是100。第三次计算继续,将蓝色框移动两个步长,你将会得到83的结果。第四次计算蓝色圆圈从第一行移动到第三行,得到69的结果。依次类推,得到最终结果。这里有一个常用公式,如果你使用一个f x f 的过滤器卷积一个n x n 的图像,padding为p,步幅为s,这样输出的大小变为:
在这个例子中,n = 7,p = 0, f = 3,s = 2,(7 + 0 - 3)/2 + 1 = 3,即3×3的输出。
注意一个细节,如果商(fraction)不是一个整数(integer),则向下取整。这个原则实现的方式是,你只在蓝框完全包括在图像或填充完的图像内部时,才对它进行运算。如果有任意一个蓝框移动到了外面,那就不要进行相乘操作,这是一个惯例(convention)。3×3的过滤器必须完全处于图像中或者填充之后的图像区域内才输出相应结果。
总结一下维度情况,一个n x n的图像或者矩阵,与一个f x f的过滤器卷积,padding为p,步幅为s,这样输出的大小如上图。
(这一部分可选择了解)如上图,这里有一个关于互相关(cross-correlation)和卷积(convolution)的技术性建议(technical comment)。这不会影响到你构建卷积神经网络的方式,但取决于你读的是数学教材(math textbook)还是信号处理教材(signal processing textbook)。在数学教材中,卷积首先将3 x 3的过滤器沿水平和垂直轴翻转,然后再用这个翻转的矩阵进行元素乘积求和,而我们在视频中定义卷积运算时,跳过了这个镜像操作(mirroring operation)。从技术上讲,我们在前面视频中使用的操作,有时被称为互相关(cross-correlation)而不是卷积(convolution)。但在深度学习文献中,按照惯例,我们将(不进行翻转操作)叫做卷积操作。因此我们将在这些视频中使用这个约定。如果你读了很多机器学习文献的话,你会发现许多人都把它叫做卷积运算,不需要用到这些翻转。
事实证明在信号处理中或某些数学分支中,在卷积的定义包含翻转,使得卷积运算符拥有这个性质(enjoy this property),即结合律(associativity):
这一性质对深度神经网络来说并不重要,因此省略了这个双重镜像操作(omitting this double mirroring operation),既简化了代码,又使神经网络也能正常工作。
说明:记录学习笔记,如果错误欢迎指正!转载请联系我。