1.5 卷积步长-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
←上一篇 | ↓↑ | 下一篇→ |
---|---|---|
1.4 Padding | 回到目录 | 1.6 三维卷积 |
卷积步长 (Strided Convolutions)
卷积中的步幅是另一个构建卷积神经网络的基本操作,让我向你展示一个例子。
如果你想用3×3的过滤器卷积这个7×7的图像,和之前不同的是,我们把步幅设置成了2。你还和之前一样取左上方的3×3区域的元素的乘积,再加起来,最后结果为91。
只是之前我们移动蓝框的步长是1,现在移动的步长是2,我们让过滤器跳过2个步长,注意一下左上角,这个点移动到其后两格的点,跳过了一个位置。然后你还是将每个元素相乘并求和,你将会得到的结果是100。
现在我们继续,将蓝色框移动两个步长,你将会得到83的结果。当你移动到下一行的时候,你也是使用步长2而不是步长1,所以我们将蓝色框移动到这里:
注意到我们跳过了一个位置,得到69的结果,现在你继续移动两个步长,会得到91,127,最后一行分别是44,72,74。
所以在这个例子中,我们用3×3的矩阵卷积一个7×7的矩阵,得到一个3×3的输出。输入和输出的维度是由下面的公式决定的。如果你用一个 f∗ff*ff∗f 的过滤器卷积一个 n∗nn*nn∗n 的图像,你的padding为 ppp ,步幅为 sss ,在这个例子中 s=2s=2s=2 ,你会得到一个输出,因为现在你不是一次移动一个步子,而是一次移动 sss 个步子,输出于是变为 n+2p−fs+1∗n+2p−fs+1\frac{n+2p-f}{s}+1*\frac{n+2p-f}{s}+1sn+2p−f+1∗sn+2p−f+1
在我们的这个例子里, n=7,p=0,f=3,s=2,7+0−32+1=3n=7,p=0,f=3,s=2,\frac{7+0-3}{2}+1=3n=7,p=0,f=3,s=2,27+0−3+1=3 ,即3×3的输出。
现在只剩下最后的一个细节了,如果商不是一个整数怎么办?在这种情况下,我们向下取整。 ⌊⌋\lfloor\rfloor⌊⌋ 这是向下取整的符号,这也叫做对 zzz 进行地板除(floor),这意味着 zzz 向下取整到最近的整数。这个原则实现的方式是,你只在蓝框完全包括在图像或填充完的图像内部时,才对它进行运算。如果有任意一个蓝框移动到了外面,那你就不要进行相乘操作,这是一个惯例。你的3×3的过滤器必须完全处于图像中或者填充之后的图像区域内才输出相应结果,这就是惯例。因此正确计算输出维度的方法是向下取整,以免 n+2p−fs\frac{n+2p-f}{s}sn+2p−f 不是整数。
总结一下维度情况,如果你有一个 n∗nn*nn∗n 的矩阵或者 n∗nn*nn∗n 的图像,与一个 f∗ff*ff∗f 的矩阵卷积,或者说 f∗ff*ff∗f 的过滤器。Padding是 ppp ,步幅为 sss 没输出尺寸就是这样:
可以选择所有的数使结果是整数是挺不错的,尽管一些时候,你不必这样做,只要向下取整也就可以了。你也可以自己选择一些 nnn , fff ,ppp 和 sss 的值来验证这个输出尺寸的公式是对的。
在讲下一部分之前,这里有一个关于互相关和卷积的技术性建议,这不会影响到你构建卷积神经网络的方式,但取决于你读的是数学教材还是信号处理教材,在不同的教材里符号可能不一致。如果你看的是一本典型的数学教科书,那么卷积的定义是做元素乘积求和,实际上还有一个步骤是你首先要做的,也就是在把这个6×6的矩阵和3×3的过滤器卷积之前,首先你将3×3的过滤器沿水平和垂直轴翻转,所以 [345102−197]\left[\begin{matrix} 3&4&5\\ 1&0&2\\ -1&9&7\\ \end{matrix}\right]⎣⎡31−1409527⎦⎤ 变为 [725904−113]\left[\begin{matrix} 7&2&5\\ 9&0&4\\ -1&1&3\\ \end{matrix}\right]⎣⎡79−1201543⎦⎤ ,这相当于将3×3的过滤器做了个镜像,在水平和垂直轴上(整理者注:此处应该是先顺时针旋转90得到 [−113904725]\left[\begin{matrix} -1&1&3\\ 9&0&4\\ 7&2&5\\ \end{matrix}\right]⎣⎡−197102345⎦⎤ ,再水平翻转得到 [725904−113]\left[\begin{matrix} 7&2&5\\ 9&0&4\\ -1&1&3\\ \end{matrix}\right]⎣⎡79−1201543⎦⎤ )。然后你再把这个翻转后的矩阵复制到这里(左边的图像矩阵),你要把这个翻转矩阵的元素相乘来计算输出的4×4矩阵左上角的元素,如图所示。然后取这9个数字,把它们平移一个位置,再平移一格,以此类推。
所以我们在这些视频中定义卷积运算时,我们跳过了这个镜像操作。从技术上讲,我们实际上做的,我们在前面视频中使用的操作,有时被称为互相关(cross-correlation)而不是卷积(convolution)。但在深度学习文献中,按照惯例,我们将这(不进行翻转操作)叫做卷积操作。
总结来说,按照机器学习的惯例,我们通常不进行翻转操作。从技术上说,这个操作可能叫做互相关更好。但在大部分的深度学习文献中都把它叫做卷积运算,因此我们将在这些视频中使用这个约定。如果你读了很多机器学习文献的话,你会发现许多人都把它叫做卷积运算,不需要用到这些翻转。
事实证明在信号处理中或某些数学分支中,在卷积的定义包含翻转,使得卷积运算符拥有这个性质,即 (A∗B)∗C=A∗(B∗C)(A*B)*C=A*(B*C)(A∗B)∗C=A∗(B∗C) ,这在数学中被称为结合律。这对于一些信号处理应用来说很好,但对于深度神经网络来说它真的不重要,因此省略了这个双重镜像操作,就简化了代码,并使神经网络也能正常工作。
根据惯例,我们大多数人都叫它卷积,尽管数学家们更喜欢称之为互相关,但这不会影响到你在编程练习中要实现的任何东西,也不会影响你阅读和理解深度学习文献。
现在你已经看到了如何进行卷积,以及如何使用填充,如何在卷积中选择步幅。但到目前为止,我们所使用的是关于矩阵的卷积,例如6×6的矩阵。在下一集视频中,你将看到如何对立体进行卷积,这将会使你的卷积变得更加强大,让我们继续下一个视频。
课程板书
←上一篇 | ↓↑ | 下一篇→ |
---|---|---|
1.4 Padding | 回到目录 | 1.6 三维卷积 |
1.5 卷积步长-深度学习第四课《卷积神经网络》-Stanford吴恩达教授相关推荐
- 2.19 总结-深度学习-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...
- 1.6 三维卷积-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 1.5 卷积步长 回到目录 1.7 单层卷积网络 三维卷积 (Convolutions Over Volumes) 你已经知道如何对二维图像做卷积了,现在看看如何执行卷积不仅 ...
- 深度学习教程(6) | 神经网络优化算法(吴恩达·完整版)
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/35 本文地址:https://www.showmeai.tech/article-d ...
- 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 无 回到目录 1.2 什么是神经网络 欢迎 第一个视频主要讲了什么是深度学习,深度学习能做些什么事情.以下是吴恩达老师的原话: 深度学习改变了传统互联网业务,例如如网络搜索和 ...
- 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你
机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...
- 3.12 总结-深度学习-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...
- 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...
- 0.0 目录-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...
- 深度学习第四课——卷积神经网络(week 1)
目录 一.前言 1.1 卷积 1.2 其他滤波器 1.3 Padding 1.3.1 解释 1.3.2 填充多少像素的选择 1.4 卷积步长 1.5 三维卷积 1.6 单层卷积网络 1.7 深度卷积神 ...
最新文章
- html 表格过滤功能,简单的带排序和过滤功能的jQuery表格插件
- python软件代码示例-用Python写一个模拟qq聊天小程序的代码实例
- Java键盘交互设计输入法,输入法中暖心的交互细节
- python中locals函数_Python神奇的内置函数locals的实例讲解
- pcb设计等长线误差_“背锅”盲区,光时域反射仪延长线实际使用测评
- python lxml解析html,当使用lxml.html解析html时,等同于InnerHTML
- 天国近了(一) -- 揭穿OOP神话
- hibernate的HQL查询部分属性
- java做节奏大师,《节奏大师》高手必修之路 亲测攻略_iOS游戏频道_97973手游网
- usb转4路rs485、4路rs232原理图
- 计算机管理中看不到iis,Win10系统找不到internet信息服务(IIS)管理器怎么办
- UVa 10141 - Request for Proposal
- Mac PS 之 简单去除背景并设置背景透明,变更图片宽高。。。
- Shader山下(六)镜面高光
- 一套靠谱的外贸型服装鞋业系统长啥样?
- 如何快速插入大量/批量随机数据到数据库(oracle/sqlserver/mysql/postgresql)
- python乘法函数_乘积(python乘法函数)
- commons-codec使用简介
- [天方夜谭]上帝夜访点点
- “工作三年,跳槽要求涨薪50%”,合理吗?