在卷积神经网络:二维卷积层中说到,如果输入 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​=hs​hx​+hp​−hk​​+1wy​=ws​wx​+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倍(高、宽均缩小)。

三、小结

  1. p a d d i n g padding padding可以增加输出的高、宽,通常用来使:输入和输出形状相同
  2. s t r i d e stride stride可以减小输出的高、宽

卷积神经网络:填充、步幅相关推荐

  1. 深度学习入门(二十四)卷积神经网络——填充和步幅

    深度学习入门(二十四)卷积神经网络--填充和步幅 前言 卷积神经网络--填充和步幅 课件 填充 步幅 总结 课本 1 填充 2 步幅 3 小结 前言 核心内容来自博客链接1博客连接2希望大家多多支持作 ...

  2. 卷积神经网络 - 填充和步幅

    文章目录 填充和步幅 1 - 填充 2 - 步幅 3 - 小结 填充和步幅 1 - 填充 import torch from torch import nn# 为了方便起见,我们定义了一个计算卷积层的 ...

  3. DL之CNN:卷积神经网络算法简介之原理简介(步幅/填充/特征图)、七大层级结构(动态图详解卷积/池化+方块法理解卷积运算)、CNN各层作用及其可视化等之详细攻略

    DL之CNN:卷积神经网络算法简介之原理简介(步幅/填充/特征图).七大层级结构(动态图详解卷积/池化+方块法理解卷积运算).CNN各层作用及其可视化等之详细攻略 目录 CNN 的层级结构及相关概念 ...

  4. (pytorch-深度学习系列)卷积神经网络中的填充(padding)和步幅(stride)

    卷积神经网络中的填充(padding)和步幅(stride) 之前写过一篇blog,描述CNN网络层的输入和输入尺寸的计算关系,但是并没有描述的很全面,这里全面描述了影响输出尺寸的两个超参数paddi ...

  5. 填充和步幅在卷积神经网络中的应用

    填充和步幅在卷积神经网络中的应用 引言 填充 理论推导 计算步骤 例子 步幅 理论推导 计算步骤 例子 结构图 结论 参考文献 引言 在卷积神经网络中,填充和步幅是两个重要的概念.填充是指在输入数据周 ...

  6. 【从零开始学习深度学习】22. 卷积神经网络(CNN)中填充(padding)与步幅(stride)详解,填充、步幅、输入及输出之间的关系

    目录 1 填充(padding) 2 步幅(stride) 总结 在上一篇文章中,我们使用高和宽为3的输入与高和宽为2的卷积核得到高和宽为2的输出.一般来说,假设输入形状是 n h × n w n_h ...

  7. 【卷积神经网络】填充和步幅(padding-and-strides)

    [CNN]填充和步幅(padding-and-strides) 填充和步幅 填充 步幅 小结 填充和步幅 在上一节的例子里,我们使用高和宽为3的输入与高和宽为2的卷积核得到高和宽为2的输出.一般来说, ...

  8. (七)卷积层——填充和步幅

    在高上使用步幅 s h s_h sh​,在宽上使用步幅 s w s_w sw​,那么输出大小将是 ⌊ ( n h − k h + p h + s h ) / s h ⌋ × ⌊ ( n w − k w ...

  9. 改进YOLOv8 | 即插即用篇 | 用于低分辨率图像和小物体的新 CNN 模块SPD-Conv | 《不再使用步幅卷积或池化:一种适用于低分辨率图像和小物体的新卷积神经网络构建模块》

    论文地址:https://arxiv.org/pdf/2208.03641v1.pdf 代码地址:https://github.com/labsaint/spd-conv 卷积神经网络(CNN)在图像 ...

最新文章

  1. L - Subway POJ - 2502
  2. Java 的序列化和反序列化,你该知道得更多
  3. 网站文章不收录怎么办!
  4. [iOS翻译]《The Swift Programming Language》系列:Welcome to Swift-01
  5. python字符串操作_浅谈Python 字符串特有的操作方法
  6. javascript 一些小常用的技巧
  7. oracle 不认exp指令,更改oracle字符集导致exp命令出错(解决方法)
  8. nacos安装与基础配置
  9. Java内存模型探秘
  10. 云计算 | Centos7和Ubuntu1804制作本地安装源
  11. 三极管开关电路_简析三极管开关电路设计
  12. 【愚公系列】2022年11月 uniapp专题-优购电商-商品列表
  13. 令人讨厌的复杂验证码,竟然如此重要
  14. python-电脑调用手机摄像头
  15. R语言计算相关性和p-values
  16. java基础国庆作业_第四次作业 java程序设计国庆作业
  17. 基于C语言在8×8点阵实现9到0倒计时牌显示
  18. python股票数据分析实例_Python之简单股票数据分析
  19. HttpClient在多线程环境下踩坑总结
  20. 职业教育增长,正在“电商化”

热门文章

  1. 计算机第一章学什么,第一章计算机基础知识学习课件.ppt
  2. pline加点lisp_[下载][原创]非常好用的AutoLisp工具集合(New)
  3. Cass调整陡坎等大小
  4. 深交所:允许采用电子签章办理业务
  5. 千锋web前端工程师头脑风暴:程序员逻辑思维养成记
  6. QQ气泡聊天核心代码与QQ列表问题
  7. 2021.10.4 比赛题整理
  8. UiPath手把手教程
  9. 刨根问底U3D---从Profile中窥探Unity的内存管理
  10. 使用CST 软件如何选配最佳的计算机硬件配置?