吴恩达-深度学习-卷积神经网络-Stride 笔记

卷积中的步幅是另外一个构建卷积神经网络的基本操做,让我向你展现一个例子。编程

若是你想用3×3的过滤器卷积这个7×7的图像,和以前不一样的是,咱们把步幅设置成了2。你还和以前同样取左上方的3×3区域的元素的乘积,再加起来,最后结果为91。网络

只是以前咱们移动蓝框的步长是1,如今移动的步长是2,咱们让过滤器跳过2个步长,注意一下左上角,这个点移动到其后两格的点,跳过了一个位置。而后你仍是将每一个元素相乘并求和,你将会获得的结果是100。机器学习

如今咱们继续,将蓝色框移动两个步长,你将会获得83的结果。当你移动到下一行的时候,你也是使用步长2而不是步长1,因此咱们将蓝色框移动到这里:学习

注意到咱们跳过了一个位置,获得69的结果,如今你继续移动两个步长,会获得91,127,最后一行分别是44,72,74。spa

因此在这个例子中,咱们用3×3的矩阵卷积一个7×7的矩阵,获得一个3×3的输出。输入和输出的维度是由下面的公式决定的。若是你用一个的过滤器卷积一个的图像,你的padding,步幅为,在这个例子中,你会获得一个输出,由于如今你不是一次移动一个步子,而是一次移动个步子,输出因而变为3d

在咱们的这个例子里,,即3×3的输出。orm

如今只剩下最后的一个细节了,若是商不是一个整数怎么办?在这种状况下,咱们向下取整。这是向下取整的符号,这也叫作对进行地板除(floor),这意味着向下取整到最近的整数。这个原则实现的方式是,你只在蓝框彻底包括在图像或填充完的图像内部时,才对它进行运算。若是有任意一个蓝框移动到了外面,那你就不要进行相乘操做,这是一个惯例。你的3×3的过滤器必须彻底处于图像中或者填充以后的图像区域内才输出相应结果,这就是惯例。所以正确计算输出维度的方法是向下取整,以避免不是整数。视频

总结一下维度状况,若是你有一个的矩阵或者的图像,与一个的矩阵卷积,或者说的过滤器。Padding,步幅为没输出尺寸就是这样:blog

能够选择全部的数使结果是整数是挺不错的,尽管一些时候,你没必要这样作,只要向下取整也就能够了。你也能够本身选择一些的值来验证这个输出尺寸的公式是对的。ci

在讲下一部分以前,这里有一个关于互相关和卷积的技术性建议,这不会影响到你构建卷积神经网络的方式,但取决于你读的是数学教材仍是信号处理教材,在不一样的教材里符号可能不一致(注:《数字图像处理》冈萨雷斯对相关与卷积有详细的介绍)。若是你看的是一本典型的数学教科书,那么卷积的定义是作元素乘积求和,实际上还有一个步骤是你首先要作的,也就是在把这个6×6的矩阵和3×3的过滤器卷积以前,首先你将3×3的过滤器沿水平和垂直轴翻转(旋转180°),因此变为,这至关于将3×3的过滤器作了个镜像,在水平和垂直轴上(此处应该是先顺时针旋转90获得,再水平翻转获得)。而后你再把这个翻转后的矩阵复制到这里(左边的图像矩阵),你要把这个翻转矩阵的元素相乘来计算输出的4×4矩阵左上角的元素,如图所示。而后取这9个数字,把它们平移一个位置,再平移一格,以此类推。

因此咱们在这些视频中定义卷积运算时,咱们跳过了这个镜像操做。从技术上讲,咱们实际上作的,咱们在前面视频中使用的操做,有时被称为互相关(cross-correlation)而不是卷积(convolution)。但在深度学习文献中,按照惯例,咱们将这(不进行翻转操做)叫作卷积操做。

总结来讲,按照机器学习的惯例,咱们一般不进行翻转操做。从技术上说,这个操做可能叫作互相关更好。但在大部分的深度学习文献中都把它叫作卷积运算,所以咱们将在这些视频中使用这个约定。若是你读了不少机器学习文献的话,你会发现许多人都把它叫作卷积运算,不须要用到这些翻转。

事实证实在信号处理中或某些数学分支中,在卷积的定义包含翻转,使得卷积运算符拥有这个性质,即,这在数学中被称为结合律。这对于一些信号处理应用来讲很好,但对于深度神经网络来讲它真的不重要,所以省略了这个双重镜像操做,就简化了代码,并使神经网络也能正常工做。

根据惯例,咱们大多数人都叫它卷积,尽管数学家们更喜欢称之为互相关,但这不会影响到你在编程练习中要实现的任何东西,也不会影响你阅读和理解深度学习文献。

如今你已经看到了如何进行卷积,以及如何使用填充,如何在卷积中选择步幅。但到目前为止,咱们所使用的是关于矩阵的卷积,例如6×6的矩阵。在下一集视频中,你将看到如何对立体进行卷积,这将会使你的卷积变得更增强大,让咱们继续下一个视频。