←上一篇 ↓↑ 下一篇→
1.3 更多边缘检测内容 回到目录 1.5 卷积步长

Padding

为了构建深度神经网络,你需要学会使用的一个基本的卷积操作就是padding,让我们来看看它是如何工作的。


我们在之前视频中看到,如果你用一个3×3的过滤器卷积一个6×6的图像,你最后会得到一个4×4的输出,也就是一个4×4矩阵。那是因为你的3×3过滤器在6×6矩阵中,只可能有4×4种可能的位置。这背后的数学解释是,如果我们有一个 n∗nn*nn∗n 的图像,用 f∗ff*ff∗f 的过滤器做卷积,那么输出的维度就是 (n−f+1)∗(n−f+1)(n-f+1)*(n-f+1)(n−f+1)∗(n−f+1) 。在这个例子里是 6−3+1=46-3+1=46−3+1=4 ,因此得到了一个4×4的输出。

这样的话会有两个缺点,第一个缺点是每次做卷积操作,你的图像就会缩小,从6×6缩小到4×4,你可能做了几次之后,你的图像就会变得很小了,可能会缩小到只有1×1的大小。你可不想让你的图像在每次识别边缘或其他特征时都缩小,这就是第一个缺点。


第二个缺点时,如果你注意角落边缘的像素,这个像素点(绿色阴影标记)只被一个输出所触碰或者使用,因为它位于这个3×3的区域的一角。但如果是在中间的像素点,比如这个(红色方框标记),就会有许多3×3的区域与之重叠。所以那些在角落或者边缘区域的像素点在输出中采用较少,意味着你丢掉了图像边缘位置的许多信息。


为了解决这两个问题,一是输出缩小。当我们建立深度神经网络时,你就会知道你为什么不希望每进行一步操作图像都会缩小。比如当你有100层深层的网络,如果图像每经过一层都缩小的话,经过100层网络后,你就会得到一个很小的图像,所以这是个问题。另一个问题是图像边缘的大部分信息都丢失了。


为了解决这些问题,你可以在卷积操作之前填充这幅图像。在这个案例中,你可以沿着图像边缘再填充一层像素。如果你这样操作了,那么6×6的图像就被你填充成了一个8×8的图像。如果你用3×3的图像对这个8×8的图像卷积,你得到的输出就不是4×4的,而是6×6的图像,你就得到了一个尺寸和原始图像6×6的图像。习惯上,你可以用0去填充,如果是填充的数量,在这个案例中, p=1p=1p=1 ,因为我们在周围都填充了一个像素点,输出也就变成了 (n+2p−f+1)∗(n+2p−f+1)(n+2p-f+1)*(n+2p-f+1)(n+2p−f+1)∗(n+2p−f+1) ,所以就变成了 (6+2∗1−3+1)∗(6+2∗1−3+1)=6∗6(6+2*1-3+1)*(6+2*1-3+1)=6*6(6+2∗1−3+1)∗(6+2∗1−3+1)=6∗6 ,和输入的图像一样大。这个涂绿的像素点(左边矩阵)影响了输出中的这些格子(右边矩阵)。这样一来,丢失信息或者更准确来说角落或图像边缘的信息发挥的作用较小的这一缺点就被削弱了。

刚才我已经展示过用一个像素点来填充边缘,如果你想的话,也可以填充两个像素点,也就是说在这里填充一层。实际上你还可以填充更多像素。我这里画的这种情况,填充后 p=2p=2p=2 。


至于选择填充多少像素,通常有两个选择,分别叫做Valid卷积和Same卷积。

Valid卷积意味着不填充,这样的话,如果你有一个 n∗nn*nn∗n 的图像,用一个 f∗ff*ff∗f 的过滤器卷积,它将会给你一个 (n−f+1)∗(n−f+1)(n-f+1)*(n-f+1)(n−f+1)∗(n−f+1) 维的输出。这类似于我们在前面的视频中展示的例子,有一个6×6的图像,通过一个3×3的过滤器,得到一个4×4的输出。


另一个经常被用到的填充方法叫做Same卷积,那意味你填充后,你的输出大小和输入大小是一样的。根据这个公式 n−f+1n-f+1n−f+1 ,当你填充 ppp 个像素点, nnn 就变成了 n+2pn+2pn+2p ,最后公式变为 n+2p−f+1n+2p-f+1n+2p−f+1 。因此如果你有一个 n∗nn*nn∗n 的图像,用 ppp 个像素填充边缘,输出的大小就是这样的 (n+2p−f+1)∗(n+2p−f+1)(n+2p-f+1)*(n+2p-f+1)(n+2p−f+1)∗(n+2p−f+1) 。如果你想让 n+2p−f+1=nn+2p-f+1=nn+2p−f+1=n 的话,使得输出和输入大小相等,如果你用这个等式求解 ppp ,那么 p=(f−1)/2p=(f-1)/2p=(f−1)/2 。所以当 fff 是一个奇数的时候,只要选择相应的填充尺寸,你就能确保得到和输入相同尺寸的输出。这也是为什么前面的例子,当过滤器是3×3时,和上一张幻灯片的例子一样,使得输出尺寸等于输入尺寸,所需要的填充是(3-1)/2,也就是1个像素。另一个例子,当你的过滤器是5×5,如果 f=5f=5f=5 ,然后代入那个式子,你就会发现需要2层填充使得输出和输入一样大,这是过滤器5×5的情况。


习惯上,计算机视觉中, fff 通常是奇数,甚至可能都是这样。你很少看到一个偶数的过滤器在计算机视觉里使用,我认为有两个原因。

其中一个可能是,如果 fff 是一个偶数,那么你只能使用一些不对称填充。只有 fff 是奇数的情况下,Same卷积才会有自然的填充,我们可以以同样的数量填充四周,而不是左边填充多一点,右边填充少一点,这样不对称的填充。

第二个原因是当你有一个奇数维过滤器,比如3×3或者5×5的,它就有一个中心点。有时在计算机视觉里,如果有一个中心像素点会更方便,便于指出过滤器的位置。

也许这些都不是为什么通常 fff 是奇数的充分原因,但如果你看了卷积的文献,你经常会看到3×3的过滤器,你也可能会看到一些5×5,7×7的过滤器。后面我们也会谈到1×1的过滤器,以及什么时候它是有意义的。但是习惯上,我推荐你只使用奇数的过滤器。我想如果你使用偶数f也可能会得到不错的表现,如果遵循计算机视觉的惯例,我通常使用奇数值的 fff 。

你已经看到如何使用padding卷积,为了指定卷积操作中的padding,你可以指定 ppp 的值。也可以使用Valid卷积,也就是 p=0p=0p=0 。也可使用Same卷积填充像素,使你的输出和输入大小相同。以上就是padding,在接下来的视频中我们讨论如何在卷积中设置步长。

课程板书




←上一篇 ↓↑ 下一篇→
1.3 更多边缘检测内容 回到目录 1.5 卷积步长

1.4 Padding-深度学习第四课《卷积神经网络》-Stanford吴恩达教授相关推荐

  1. 深度学习第四课——卷积神经网络(week 1)

    目录 一.前言 1.1 卷积 1.2 其他滤波器 1.3 Padding 1.3.1 解释 1.3.2 填充多少像素的选择 1.4 卷积步长 1.5 三维卷积 1.6 单层卷积网络 1.7 深度卷积神 ...

  2. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  3. 1.8 简单卷积网络示例-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 单层卷积网络 回到目录 1.9 池化层 简单卷积网络示例 (A Simple Convolution Network Example) 上节课,我们讲了如何为卷积网络 ...

  4. 4.11 一维到三维推广-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 4.10 风格代价函数 回到目录 4.12 总结 一维到三维推广 (1D and 3D Generalizations of Models) 你已经学习了许多关于卷积神经网络 ...

  5. 4.1 什么是人脸识别-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 总结 回到目录 4.2 One-Shot 学习 什么是人脸识别 (What is face recognition?) 欢迎来到第四周,即这门课卷积神经网络课程的最 ...

  6. 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 无 回到目录 1.2 什么是神经网络 欢迎 第一个视频主要讲了什么是深度学习,深度学习能做些什么事情.以下是吴恩达老师的原话: 深度学习改变了传统互联网业务,例如如网络搜索和 ...

  7. 1.8 其他正则化方法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 理解 Dropout 回到目录 1.9 归一化输入 其他正则化方法 (Other Regularization Methods) 除了 L2L2L2 正则化和随机失活 ...

  8. 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你

    机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...

  9. 3.12 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...

  10. 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...

最新文章

  1. 原子层沉积(ALD)和化学气相沉积(CVD)微电子制造铜金属化的研究进展
  2. python字符串去头尾_悉尼大学某蒟蒻的Python学习笔记
  3. 雷人!09年0分最具文采的高考作文
  4. mac在命令行里获取root权限
  5. Python编程基础11:字典
  6. 【英语学习】【Level 07】U07 Stories of my Life L4 Not my best moment
  7. final finally finalize 区别
  8. 从生产线到生产岛:理解敏捷开发中的设计与测试活动
  9. 【华为编程大赛】洞穴逃生
  10. 如何打开.hdx文件
  11. InfoGAN 生成时序序列
  12. mysql数据库 timeout_MYSQL数据库SQL查询超时的设置方法(关于timeout的处理)
  13. kettle Dummy介绍
  14. 串的模式匹配算法 ← BF算法
  15. C++ Learn from菜鸟教程
  16. android 华为mate 获取定位权限,【严重安全问题】开启了定位权限,但是软件还是没权限...
  17. LTO助推磁带大容量存储技术超越磁盘HDD
  18. 【0】开始学习安卓了
  19. 用go实现linux命令行
  20. Windows Defender 打开后一片空白,安全中心不显示

热门文章

  1. ceph部署出现错误及解决
  2. 「网络流24题」 12. 软件补丁问题
  3. PythonTip(2)
  4. 洛谷 P3157 [CQOI2011]动态逆序对 | CDQ分治
  5. 嵌套SQL语句訪问DB2中SQLCA的调用技巧
  6. SPSS单一样本的T检验
  7. 初次树莓派遇到的一些小问题
  8. UA PHYS515 电磁理论II 静电场问题3 边值问题及其解的唯一性
  9. Windows下首次安装TensorFlow失败
  10. 图解Dev C++ 创建Win32 项目模板