大家好,我是讯享网,大家多多关注。
步长卷积卷积中的步长是构造卷积神经网络的另一个基本操作。让我给你看一个例子。
如果你想用一个3×3的滤波器对这个7×7的图像进行卷积,与之前不同,我们将步距设置为2。你也像以前一样取左上方3×3区域中元素的乘积,并将其相加。最终结果是91。
只是之前我们移动蓝框的步长是1,现在我们移动它的步长是2。让我们让过滤器跳过2个步骤。注意左上角。该点移动到下两个方格并跳过一个位置。然后你还是把每个元素相乘求和,你会得到的结果是100。
现在让我们把蓝盒子移动两步,你会得到83的结果。当您移动到下一行时,您也使用步骤2而不是步骤1,因此我们将蓝框移到这里:
注意,我们跳过了一个位置,得到的结果是69。现在继续移动两步,得到91,127,最后几行分别是44,72,74。
因此,在本例中,我们将一个7×7矩阵与一个3×3矩阵进行卷积,得到一个3×3输出。输入和输出的尺寸由以下公式确定。如果用f×f滤波器对n×n图像进行卷积,填充为P,步长为S。在本例中,s=2,您将得到一个输出,因为现在您不是一次移动一步,而是一次移动S步,输出变为((n+2p-f)/s+1 )× ((n+2p)
在我们的例子中,n=7,p=0,f=3,s=2,(7+0-3)/2+1=3,也就是3×3的输出。
现在只剩下最后一个细节了。如果商不是整数呢?在这种情况下,我们向下舍入(记住,这更重要)。这是向下取整的符号,也叫Z的地板除法,意思是Z向下取整到最接近的整数。
这个原理是这样实现的,只有当蓝框完全包含在图像或填充图像中时,才能计算蓝框。如果任何一个蓝盒子移动到外面,你就不应该乘法,这是一种常见的做法。在输出相应的结果之前,您的3×3滤镜必须完全位于图像中或填充的图像区域中。这是惯例。因此,计算输出维数的正确方法是向下取整,使(n+2p-f)/s不是整数。
总结一下维度的情况,如果你有一个n×n的矩阵,或者一个n×n的图像,用一个f×f的矩阵,或者一个f×f的滤波器进行卷积。Padding是p,stride是s,没有输出大小。就是这样:
选择所有的数字以便结果是一个整数是很好的,虽然有时,你不必这样做,只需向下舍入。也可以自己选择n,f,p,s的一些值来验证这个输出大小的公式是正确的。
在下一部分之前,这里有一个关于互相关和卷积的技术建议。不会影响你构造卷积神经网络的方式,但要看你读的是数学教材还是信号处理教材。不同教材中的符号可能不一致。如果你读的是典型的数学课本,那么卷积的定义就是元素的乘积求和。实际上,还有一个步骤需要首先完成,即在用3×3滤波器卷积这个6×6矩阵之前,首先沿水平和垂直轴翻转3×3滤波器,因此
这相当于在横轴和纵轴上做了一个3×3滤镜的镜像(主办方注:这里要先顺时针旋转90。
然后水平翻转得到。
然后你把这个逆矩阵复制到这里(左边的图像矩阵)。你要把这个逆矩阵的元素相乘,才能计算出输出4×4矩阵左上角的元素,如图。然后取这九个数,平移一个位置,平移一个格子,以此类推。
所以我们在这里定义卷积运算的时候,跳过这个镜像运算。从技术上来说,我们实际上所做的,我们在前面的视频中使用的操作,有时被称为互相关,而不是卷积。但是,在深度学习的文献中,按照惯例,我们把这个(没有翻转操作)叫做卷积运算。
综上所述,根据机器学习的实践,我们通常不会翻转。从技术上讲,这种操作可以称为互相关。但它在大多数深度学习文献中被称为卷积运算,所以我们将在这些视频中使用这个约定。如果你看了很多机器学习的文献,你会发现很多人称之为卷积运算,你不需要用这些翻转。
证明了在信号处理或数学的某些分支中,卷积的定义中含有反演,使得卷积算子具有这种性质,即(A*B)*C=A*(B*C),这在数学中称为结合律。这对一些信号处理应用来说是好的,但对深度神经网络来说真的不重要,所以省略这个双镜像操作简化了代码,使神经网络正常工作。
按照惯例,我们大多数人称之为卷积。虽然数学家更愿意称之为互相关,但它不会影响你在编程实践中想要达到的任何东西,也不会影响你对深度学习文献的阅读和理解。
现在你已经看到了如何做卷积,如何使用填充,以及如何在卷积中选择步幅。但到目前为止,我们用的都是矩阵的卷积,比如6×6矩阵。在下一个笔记中,你将看到如何卷积固体,这将使你的卷积更强大。让我们转到下一个音符。
本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://51itzy.com/39207.html