神经网络之卷积篇:详解Padding
详解Padding
为了构建深度神经网络,需要学会使用的一个基本的卷积操作就是padding,让来看看它是如何工作的。
如果用一个3×3的过滤器卷积一个6×6的图像,最后会得到一个4×4的输出,也就是一个4×4矩阵。那是因为3×3过滤器在6×6矩阵中,只可能有4×4种可能的位置。这背后的数学解释是,如果有一个\(n×n\)的图像,用\(f×f\)的过滤器做卷积,那么输出的维度就是\((n-f+1)×(n-f+1)\)。在这个例子里是\(6-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\)是填充的数量,在这个案例中,\(p=1\),因为在周围都填充了一个像素点,输出也就变成了\((n+2p-f+1)×(n+2p-f+1)\),所以就变成了\((6+2×1-3+1)×(6+2×1-3+1)=6×6\),和输入的图像一样大。这个涂绿的像素点(左边矩阵)影响了输出中的这些格子(右边矩阵)。这样一来,丢失信息或者更准确来说角落或图像边缘的信息发挥的作用较小的这一缺点就被削弱了。
刚才已经展示过用一个像素点来填充边缘,如果想的话,也可以填充两个像素点,也就是说在这里填充一层。实际上还可以填充更多像素。这里画的这种情况,填充后\(p=2\)。
至于选择填充多少像素,通常有两个选择,分别叫做Valid卷积和Same卷积。
Valid卷积意味着不填充,这样的话,如果有一个\(n×n\)的图像,用一个\(f×f\)的过滤器卷积,它将会给一个\((n-f+1)×(n-f+1)\)维的输出。这类似于在前面的例子,有一个6×6的图像,通过一个3×3的过滤器,得到一个4×4的输出。
另一个经常被用到的填充方法叫做Same卷积,那意味填充后,输出大小和输入大小是一样的。根据这个公式\(n-f+1\),当填充\(p\)个像素点,\(n\)就变成了\(n+2p\),最后公式变为\(n+2p-f+1\)。因此如果有一个\(n×n\)的图像,用\(p\)个像素填充边缘,输出的大小就是这样的\((n+2p-f+1)×(n+2p-f+1)\)。如果想让\(n+2p-f+1=n\)的话,使得输出和输入大小相等,如果用这个等式求解\(p\),那么\(p=(f-1)/2\)。所以当\(f\)是一个奇数的时候,只要选择相应的填充尺寸,就能确保得到和输入相同尺寸的输出。这也是为什么前面的例子,当过滤器是3×3时,使得输出尺寸等于输入尺寸,所需要的填充是(3-1)/2,也就是1个像素。另一个例子,当过滤器是5×5,如果\(f=5\),然后代入那个式子,就会发现需要2层填充使得输出和输入一样大,这是过滤器5×5的情况。
习惯上,计算机视觉中,\(f\)通常是奇数,甚至可能都是这样。很少看到一个偶数的过滤器在计算机视觉里使用,认为有两个原因。
其中一个可能是,如果\(f\)是一个偶数,那么只能使用一些不对称填充。只有\(f\)是奇数的情况下,Same卷积才会有自然的填充,可以以同样的数量填充四周,而不是左边填充多一点,右边填充少一点,这样不对称的填充。
第二个原因是当有一个奇数维过滤器,比如3×3或者5×5的,它就有一个中心点。有时在计算机视觉里,如果有一个中心像素点会更方便,便于指出过滤器的位置。
也许这些都不是为什么\(f\)通常是奇数的充分原因,但如果看了卷积的文献,经常会看到3×3的过滤器,也可能会看到一些5×5,7×7的过滤器。后面也会谈到1×1的过滤器,以及什么时候它是有意义的。但是习惯上,推荐只使用奇数的过滤器。想如果使用偶数f也可能会得到不错的表现,如果遵循计算机视觉的惯例,通常使用奇数值的\(f\)。
已经看到如何使用padding卷积,为了指定卷积操作中的padding,可以指定\(p\)的值。也可以使用Valid卷积,也就是\(p=0\)。也可使用Same卷积填充像素,使输出和输入大小相同。
神经网络之卷积篇:详解Padding的更多相关文章
- PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载 中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...
- 走向DBA[MSSQL篇] 详解游标
原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...
- 基于双向BiLstm神经网络的中文分词详解及源码
基于双向BiLstm神经网络的中文分词详解及源码 基于双向BiLstm神经网络的中文分词详解及源码 1 标注序列 2 训练网络 3 Viterbi算法求解最优路径 4 keras代码讲解 最后 源代码 ...
- Scala进阶之路-Scala函数篇详解
Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...
- 第十五节,卷积神经网络之AlexNet网络详解(五)
原文 ImageNet Classification with Deep ConvolutionalNeural Networks 下载地址:http://papers.nips.cc/paper/4 ...
- Deeplearning 两层cnn卷积网络详解
https://blog.csdn.net/u013203733/article/details/79074452 转载地址: https://www.cnblogs.com/sunshineatno ...
- 神经网络基础部件-BN层详解
一,数学基础 1.1,概率密度函数 1.2,正态分布 二,背景 2.1,如何理解 Internal Covariate Shift 2.2,Internal Covariate Shift 带来的问题 ...
- CentOS 7 下编译安装lnmp之PHP篇详解
一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.PHP下载 官网 http ...
- CentOS 7 下编译安装lnmp之MySQL篇详解
一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.MySQL下载 MySQL ...
- CentOS 7 下编译安装lnmp之nginx篇详解
一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:CentOS Linux release 7.5.1804 (Core),ip地址 192.168.1.168 ...
随机推荐
- 洛谷 P4343 自动刷题机
题目链接:自动刷题机 思路 二分典题,两个二分判断出可能的最大值和最小值.需要注意当删掉y行代码后,当前代码行数小于0时需要将代码行数重新赋值为0,然后需要注意二分的n最大值的边界,因为x[i]的最大 ...
- Spring之webMvc异常处理
异常处理可以前端处理,也可以后端处理. 从稳妥的角度出发,两边都应该进行处理. 本文专门阐述如何在服务端进行http请求异常处理. 一.常见的异常类型 当我们做http请求的时候,会有各种各样的可能错 ...
- Linux内核中的各种文件系统:proc、tmpfs、devfs、sysfs
Linux内核中的各种文件系统:proc.tmpfs.devfs.sysfs 背景 刚学完proc文件系统在内核驱动 中的使用,就看到另外的sysfs的有关接口.很好奇proc文件系统和sysfs文件 ...
- 嵌入式入门必看!调试工具安装——基于 AM64x核心板
本章节内容是为评估板串口安装USB转串口驱动程序.驱动适用于CH340.CH341等USB转串口芯片. USB转串口驱动安装 适用安装环境:Windows 7 64bit.Windows 10 64b ...
- Peaks:每周至少要进行一次用户访谈?
名字:Peaks 开发者 / 团队:Vogelhaus Apps GmbH 平台:iOS.watchOS 请简要介绍下这款产品 每个人生活的节奏都有一个内置的生理时钟,这就是所谓的昼夜节律.它不仅控制 ...
- Solo 开发者周刊 (第9期):Dawwin首位人工智能编程师或将改变未来?
这里会整合 Solo 社区每周推广内容.产品模块或活动投稿,每周五发布.在这期周刊中,我们将深入探讨开源软件产品的开发旅程,分享来自一线独立开发者的经验和见解.本杂志开源,欢迎投稿. 好文推荐 Daw ...
- oeasy教您玩转vim - 50 - # 命令行效率
命令行效率 回忆上节课内容 总结 我们上次研究的是范围命令执行方法 批量控制缩进 :20,40> 批量执行普通模式下的命令 :4,10normal A; 直接切换到全屏命令模式 ex-mod ...
- SUM-ACM,3月24-3-31周报
两场天梯赛和一场atcoder. 主要错误知识点在于字符串的处理和并查集的掌握不够,不懂灵活运用. 第一场pta天梯赛 7-5 6翻了 一道字符串的题,我只拿了14分.我不熟悉一个点,f(i,0,s. ...
- Windows下UI自动化工具Inspect
windows系统下的UI自动化工具Inspect是包含在WindowsSDK包里的,所以需要先下载SDK包,然后在SDK包路径下找到Inspect工具并打开使用就可以了. 官网下载链接:https: ...
- golang 学习笔记1
1.go的gin框架,没有预设目录,具体目录可以在网上参考.