深度学习笔记(22) Padding
深度学习笔记(22) Padding
- 1. 卷积的缺陷
- 2. Padding
- 3. Valid卷积
- 4. Same卷积
- 5. 奇数的过滤器
1. 卷积的缺陷
为了构建深度神经网络,需要学会使用的一个基本的卷积操作就是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=4,因此得到了一个4×4的输出
上述的Padding有两个缺点:
- 每次做卷积操作,图像就会缩小
从6×6缩小到4×4,可能做了几次之后,就会变得很小了,可能1×1的大小 - 图像边缘的大部分信息都丢失
那些在角落或者边缘区域的像素点在输出中采用较少
2. Padding
为了解决这些问题,可以在卷积操作之前填充这幅图像
在这个案例中,可以沿着图像边缘再填充一层像素
那么6×6的图像就被填充成了一个8×8的图像
如果用3×3的图像对这个8×8的图像卷积,得到的输出是6×6的图像
就得到了一个尺寸和原始图像相同的图像
习惯上,可以用0去填充,如果p是填充的数量,在这个案例中,p=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,和输入的图像一样大
这样一来,丢失信息或者更准确来说角落或图像边缘的信息发挥的作用较小的这一缺点也被削弱了
3. Valid卷积
Valid卷积意味着不填充
一个n×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的输出
4. Same卷积
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
那么需要填充 p=(f−1)/2p=(f-1)/2p=(f−1)/2
所以当 fff 是一个奇数的时候,只要选择相应的填充尺寸
就能确保得到和输入相同尺寸的输出
这也是前面的例子,当过滤器是3×3时,使得输出尺寸等于输入尺寸
所需要的填充 (3−1)/2(3-1)/2(3−1)/2,也就是1个像素
另一个例子,当过滤器是5×5,如果 f=5f=5f=5,代入式子
就会发现需要2层填充使得输出和输入一样大
5. 奇数的过滤器
很少看到一个偶数的过滤器在计算机视觉里使用,可能有两个原因:
- 如果 fff 是一个偶数,那么只能使用一些不对称填充
- 当有一个奇数维过滤器,比如 3×3,就有一个中心点,会更方便指出过滤器的位置
也许这些都不是为什么 fff 通常是奇数的充分原因
但如果看了卷积的文献,经常会看到3×3的过滤器
也可能会看到一些5×5,7×7的过滤器,也有1×1的过滤器
习惯上,推荐只使用奇数的过滤器
参考:
《神经网络和深度学习》视频课程
相关推荐:
深度学习笔记(21) 边缘检测
深度学习笔记(20) 端到端学习
深度学习笔记(19) 多任务学习
深度学习笔记(18) 迁移学习
深度学习笔记(17) 误差分析(二)
谢谢!
深度学习笔记(22) Padding相关推荐
- 深度学习笔记(27) 经典卷积网络
深度学习笔记(27) 经典卷积网络 1. 前言 2. LeNet-5 3. AlexNet 4. VGGNet 1. 前言 讲了基本构建,比如卷积层.池化层以及全连接层这些组件 事实上,过去几年计算机 ...
- 深度学习笔记(26) 卷积神经网络
深度学习笔记(26) 卷积神经网络 1. CONV 2. POOL 3. Layer 4. FC 5. 卷积的优势 1. CONV 假设,有一张大小为32×32×3的输入图片,这是一张RGB模式的图片 ...
- 深度学习笔记(25) 池化层
深度学习笔记(25) 池化层 1. max pooling 2. mean pooling 3. pooling 超参 1. max pooling 除了卷积层,卷积网络也经常使用池化层来缩减模型的大 ...
- 深度学习笔记(24) 卷积层
深度学习笔记(24) 卷积层 1. 卷积层向前传播 2. 卷积层符号 3. 简单的卷积网络 1. 卷积层向前传播 一个典型的卷积神经网络的卷积层,而通常有三层: 卷积层 Conv 池化层 POOL 全 ...
- 深度学习笔记(23) 卷积维度
深度学习笔记(23) 卷积维度 1. 卷积步长 2. 卷积输出维度 3. 三维卷积 1. 卷积步长 在这个例子中,用3×3的矩阵卷积一个7×7的矩阵,得到一个3×3的输出 输入和输出的维度是由下面的公 ...
- 深度学习笔记其五:卷积神经网络和PYTORCH
深度学习笔记其五:卷积神经网络和PYTORCH 1. 从全连接层到卷积 1.1 不变性 1.2 多层感知机的限制 1.2.1 平移不变性 1.2.2 局部性 1.3 卷积 1.4 "沃尔多在 ...
- 吴恩达深度学习笔记(四)
吴恩达深度学习笔记(四) 卷积神经网络CNN-第二版 卷积神经网络 深度卷积网络:实例探究 目标检测 特殊应用:人脸识别和神经风格转换 卷积神经网络编程作业 卷积神经网络CNN-第二版 卷积神经网络 ...
- 吴恩达深度学习笔记——卷积神经网络(Convolutional Neural Networks)
深度学习笔记导航 前言 传送门 卷积神经网络(Convolutional Neural Networks) 卷积神经网络基础(Foundations of Convolutional Neural N ...
- CNN入门详解及TensorFlow源码实现--深度学习笔记
CNN入门详解及TensorFlow源码实现–深度学习笔记 ##一.卷积神经网络 ###1.简介 卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出 ...
最新文章
- python获取数据类型_python数据类型详解
- 已知旋转矩阵求角度_如何推导旋转矩阵
- 【Android】Android开发初学者实现拨打电话的功能,拨打电话app小demo实现
- 揭秘北京2022冬奥会背后的技术
- 课程 |《知识图谱》第一期
- 1499元!三星Galaxy A40s开启预约:5000mAh大容量电池加持
- mysql 产品表 myisam好还是innodb好_mysql两种表存储结构myisam和innodb的性能比较测试...
- web developer tips (47):脚本远程调试需关闭IE增强安全配置
- django migrate无效的解决方法
- 12.C# 接口和抽象类的区别
- 干货满满!!!盘点交互式甘特图控件VARCHART XGantt用户手册、视频教程!
- prometheus + cadvisor + grafana 监控容器和服务器
- java希腊字母表怎么打印_java 命令行窗口输出希腊字母表
- 根据hash值找到bt种子的磁力下载链
- 安装Centos8设置基础软件仓库时出错
- 路由器克隆电脑mac地址,破解电脑连接固定网线ip
- 紫乌鸦服务器维护后多久刷,魔兽世界boss刷新时间(世界boss刷新机制详解)
- 微软Azure给openAI提供了多少机器资源
- PADS过孔与安全间距的设置与使用
- Android 中自定义ViewGroup实现流式布局的效果