深度学习stride_Deeplearning.ai卷积神经网络( 1.5 卷积步长Stride相关概念)

0、前言

打算对吴恩达老师的Deeplearning课程做一个笔记回顾,大体整理思路为吴老师课堂内容和个人理解,非常基础无难点,重在备忘分享,大神勿喷!

一、Stride概念和使用原因

卷积过程中,有时需要通过填充来避免信息损失,有时也要在卷积时通过设置的步长(Stride)来压缩一部分信息。因此卷积中的步幅是另一个构建卷积神经网络的基本操作。

Stride表示filter在原图片中水平方向和垂直方向每次的步进长度。之前我们默认stride=1。若stride=2,则表示filter每次步进长度为2,即隔一点移动一次。

二、例子

下面通过课程中的一个例子来说明stride的操作:

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

之前我们移动蓝框的步长是1,现在移动的步长是2,我们让过滤器跳过2个步长,注意一下左上角,这个点移动到其后两格的点,跳过了一个位置。还是将每个元素相乘并求和,我们将会得到的结果是100。

继续往右边移动,将蓝色框移动两个步长,你将会得到83的结果:

此时需要注意的是,当我们移动到下一行的时候,我们还是是使用步长2而不是步长1,所以我们将蓝色框移动到这里:计算得到69的结果:

重复以上步骤,我们就能得到使用stride=2卷积后结果:

在这个例子中,我们用3×3的矩阵卷积一个7×7的矩阵,得到一个3×3的输出。输入和输出的维度是由下面的公式决定的。

如果你用一个f×f的过滤器卷积一个n×n的图像,padding为p,步幅为s,在这个例子中s=2,输出维度如下:

我们的这个例子里,n=7,p=0,f=3,s=2,输出维度为(7 + 0 - 3)/2 + 1 =3,即3×3的输出。

但是这里有一个问题就是,当 (n2p-f)/s+ 1计算不为整数怎么办?

在这种情况下,我们向下取整。⌊ ⌋这是向下取整的符号,向下取整到最近的整数。

这个原则实现的直觉是,你只在蓝框完全包括在图像或填充完的图像内部时,才对它进行运算。如果有任意一个蓝框移动到了外面,那你就不要进行相乘操作,这是一个惯例。

因此我们可以总结,如果你有一个n×n的矩阵或者n×n的图像,与一个f×f的矩阵卷积,或者说f×f的过滤器。Padding是p,步幅为s时输出尺寸就是这样:

下回见!

参考:黄海广博士团队总结:

你可能感兴趣的:(深度学习stride)