卷积神经网络:填充、步幅
在卷积神经网络:二维卷积层中说到,如果输入 X X X的形状为 ( h x , w x ) (h_x,w_x) (hx,wx),卷积核 K K K的形状为 ( h k , w k ) (h_k,w_k) (hk,wk),那么输出 Y Y Y(特征图feature map)的形状为:
{ h y = h x − h k + 1 w y = w x − w k + 1 \begin{cases} h_y=h_x-h_k+1 \\ w_y=w_x-w_k+1 \end{cases} {hy=hx−hk+1wy=wx−wk+1
即卷积层的输出形状由输入形状、卷积核窗口形状决定。这篇文章将记录学习卷积层的两个超参数(即需要自己调整的参数):填充、步幅。它们可以对于给定形状的输入和卷积核改变输出形状。
一、填充(padding)
填充是指在输入的高、宽两侧填充元素(通常为0),如下图:
虚线框部分即为填充的0。增加了 p a d d i n g padding padding的输入,卷积层输出的形状也会相应的改变。假设在高的两侧共填充 h p h_p hp行,宽的两侧共填充 w p w_p wp列,那么相应的输出形状变为:
{ h y = h x + h p − h k + 1 w y = w x + w p − w k + 1 \begin{cases} h_y=h_x+h_p-h_k+1 \\ w_y=w_x+w_p-w_k+1 \end{cases} {hy=hx+hp−hk+1wy=wx+wp−wk+1
由这个公式,可以得出:
- 我们可以设置 p a d d i n g padding padding的形状为 ( h k − 1 , w k − 1 ) (h_k-1,w_k-1) (hk−1,wk−1),使得输出形状与输入性状相同。这也是经常的做法
- 在上述做法中,如果 h k h_k hk为奇数,则上下两端的 p a d d i n g padding padding高度相同;如果 h k h_k hk为偶数,则上下两端的 p a d d i n g padding padding高度不同。对于宽度也是如此。所以一般来说,卷积核的高宽均为奇数
二、步幅(stride)
卷积神经网络:二维卷积层中说到,卷积核窗口会在输入上滑动。每次滑动的行数、列数称之为步幅。下图中,高上步幅为3,宽上步幅为2。
加入了步幅之后,输出的形状又会变化。假设高上步幅为 h s h_s hs,宽上步幅为 w s w_s ws,则输出形状为:
{ h y = h x + h p − h k h s + 1 w y = w x + w p − w k w s + 1 \begin{cases} h_y=\frac {h_x+h_p-h_k}{h_s} + 1\\ w_y=\frac {w_x+w_p-w_k}{w_s} + 1 \end{cases} {hy=hshx+hp−hk+1wy=wswx+wp−wk+1
当 h p = h k − 1 , w p = w k − 1 h_p=h_k-1,w_p=w_k-1 hp=hk−1,wp=wk−1时(即输入和输出形状相同),我们再设置步幅 s t r i d e stride stride时,输出的形状会缩小 s t r i d e . s h a p e stride.shape stride.shape倍(高、宽均缩小)。
三、小结
- p a d d i n g padding padding可以增加输出的高、宽,通常用来使:输入和输出形状相同
- s t r i d e stride stride可以减小输出的高、宽
卷积神经网络:填充、步幅相关推荐
- 深度学习入门(二十四)卷积神经网络——填充和步幅
深度学习入门(二十四)卷积神经网络--填充和步幅 前言 卷积神经网络--填充和步幅 课件 填充 步幅 总结 课本 1 填充 2 步幅 3 小结 前言 核心内容来自博客链接1博客连接2希望大家多多支持作 ...
- 卷积神经网络 - 填充和步幅
文章目录 填充和步幅 1 - 填充 2 - 步幅 3 - 小结 填充和步幅 1 - 填充 import torch from torch import nn# 为了方便起见,我们定义了一个计算卷积层的 ...
- DL之CNN:卷积神经网络算法简介之原理简介(步幅/填充/特征图)、七大层级结构(动态图详解卷积/池化+方块法理解卷积运算)、CNN各层作用及其可视化等之详细攻略
DL之CNN:卷积神经网络算法简介之原理简介(步幅/填充/特征图).七大层级结构(动态图详解卷积/池化+方块法理解卷积运算).CNN各层作用及其可视化等之详细攻略 目录 CNN 的层级结构及相关概念 ...
- (pytorch-深度学习系列)卷积神经网络中的填充(padding)和步幅(stride)
卷积神经网络中的填充(padding)和步幅(stride) 之前写过一篇blog,描述CNN网络层的输入和输入尺寸的计算关系,但是并没有描述的很全面,这里全面描述了影响输出尺寸的两个超参数paddi ...
- 填充和步幅在卷积神经网络中的应用
填充和步幅在卷积神经网络中的应用 引言 填充 理论推导 计算步骤 例子 步幅 理论推导 计算步骤 例子 结构图 结论 参考文献 引言 在卷积神经网络中,填充和步幅是两个重要的概念.填充是指在输入数据周 ...
- 【从零开始学习深度学习】22. 卷积神经网络(CNN)中填充(padding)与步幅(stride)详解,填充、步幅、输入及输出之间的关系
目录 1 填充(padding) 2 步幅(stride) 总结 在上一篇文章中,我们使用高和宽为3的输入与高和宽为2的卷积核得到高和宽为2的输出.一般来说,假设输入形状是 n h × n w n_h ...
- 【卷积神经网络】填充和步幅(padding-and-strides)
[CNN]填充和步幅(padding-and-strides) 填充和步幅 填充 步幅 小结 填充和步幅 在上一节的例子里,我们使用高和宽为3的输入与高和宽为2的卷积核得到高和宽为2的输出.一般来说, ...
- (七)卷积层——填充和步幅
在高上使用步幅 s h s_h sh,在宽上使用步幅 s w s_w sw,那么输出大小将是 ⌊ ( n h − k h + p h + s h ) / s h ⌋ × ⌊ ( n w − k w ...
- 改进YOLOv8 | 即插即用篇 | 用于低分辨率图像和小物体的新 CNN 模块SPD-Conv | 《不再使用步幅卷积或池化:一种适用于低分辨率图像和小物体的新卷积神经网络构建模块》
论文地址:https://arxiv.org/pdf/2208.03641v1.pdf 代码地址:https://github.com/labsaint/spd-conv 卷积神经网络(CNN)在图像 ...
最新文章
- L - Subway POJ - 2502
- Java 的序列化和反序列化,你该知道得更多
- 网站文章不收录怎么办!
- [iOS翻译]《The Swift Programming Language》系列:Welcome to Swift-01
- python字符串操作_浅谈Python 字符串特有的操作方法
- javascript 一些小常用的技巧
- oracle 不认exp指令,更改oracle字符集导致exp命令出错(解决方法)
- nacos安装与基础配置
- Java内存模型探秘
- 云计算 | Centos7和Ubuntu1804制作本地安装源
- 三极管开关电路_简析三极管开关电路设计
- 【愚公系列】2022年11月 uniapp专题-优购电商-商品列表
- 令人讨厌的复杂验证码,竟然如此重要
- python-电脑调用手机摄像头
- R语言计算相关性和p-values
- java基础国庆作业_第四次作业 java程序设计国庆作业
- 基于C语言在8×8点阵实现9到0倒计时牌显示
- python股票数据分析实例_Python之简单股票数据分析
- HttpClient在多线程环境下踩坑总结
- 职业教育增长,正在“电商化”