当前位置: 首页 > news >正文

【动手学深度学习】6.3 填充与步幅(个人向笔记)

  • 卷积的输出形状取决于输入形状和卷积核的形状
  • 在应用连续的卷积后,我们最终得到的输出大小远小于输入大小,这是由于卷积核的宽度和高度通常大于1导致的
  • 比如,一个 240 × 240 240×240 240×240像素的图像,经过10层 5 × 5 5×5 5×5的卷积后,将减少到 200 × 200 200×200 200×200像素。如此一来,原始图像的边界丢失了许多有用信息。而填充是解决此问题最有效的方法
  • 有时,我们可能希望大幅降低图像的宽度和高度。例如,如果我们发现原始的输入分辨率十分冗余。步幅则可以在这类情况下提供帮助。

1. 填充

  • 上面提到我们在应用多层卷积的时候常常丢失边缘像素
  • 解决此问题的简单方法就是填充:在输入图像的边界填充元素(通常是0)
  • 下图就是一个填充的例子
    在这里插入图片描述
  • 通常,如果我们添加 p h p_h ph 行填充,大约一半在顶部一半在底部,和 p w p_w pw 列填充,大约一半在左边一半在右边,那么输出的形状就会变为如下所示
    在这里插入图片描述
  • 这就意味着输出的高度和宽度分别增加 p h p_h ph p w p_w pw
  • 在许多情况下我们会设置 p h = k h − 1 p_h=k_h-1 ph=kh1 p w = k w − 1 p_w=k_w-1 pw=kw1,使输入和输出具有相同的高度和宽度。这样可以在构建网络时更容易预每个图层的输出形状。
  • 如果 k h k_h kh 为奇数,那么我们将在高度的两侧填充 p h / 2 p_h/2 ph/2 行。而如果 k h k_h kh 是偶数,则另一种可能性就是在顶部输入填充 p h / 2 p_h/2 ph/2 上取整,而对底部下取整。宽度同理
  • 而卷积神经网络中卷积核的高度和宽度通常为奇数。选择计数的好处是保持空间维度的同时可以在顶部和底部填充数量相同的行,在左侧和右侧填充相同适量的列
  • 对于任何二维张量 x,当满足:① 卷积核的大小是奇数 ② 所有边的填充行数和列数相同 ③ 输出与输入具有相同的宽度和高度。那么我们就可以说输出 V[i,j] 是通过以输入 X[i,j] 为中心,与卷积核进行互相关计算得到的
  • 在下面给出上面所述情形的一个例子
    在这里插入图片描述
  • 当卷积核的高度和宽度不同时,我们可以填充不同的高度和宽度,如下图所示
    在这里插入图片描述

2. 步幅

  • 有时为了高效计算或缩减采样次数,卷积窗口可以跳过中间位置,每次滑动多个元素
  • 我们将每次滑动元素的数量称为步幅,目前为止我们只使用过高度或者宽度为1的步幅
  • 下图是垂直步幅为 3,水平步幅为 2 的互相关运算。着色部分是输出元素以及用于输出计算的输入和内核张量元素
    在这里插入图片描述
  • 通常,当垂直步幅为 s h s_h sh,水平步幅为 s w s_w sw 时,输出形状为:
    在这里插入图片描述
  • 如果我们设置了 p h = k h − 1 p_h=k_h-1 ph=kh1 p w = k w − 1 p_w=k_w-1 pw=kw1,那么输出形状将简化为如下
    在这里插入图片描述
  • 如果更进一步,输入和输出的高度和宽度可以被垂直和水平步整除的话,输出形状可以被进一步简化为
    在这里插入图片描述
  • 下面我们将高度和宽度的步幅都设置为2,从而将输入的高度和宽度都减半
    在这里插入图片描述
  • 下面是一个稍微复杂的例子
    在这里插入图片描述
  • 然而在实践中我们很少用不一致的步幅和填充
http://www.lryc.cn/news/459795.html

相关文章:

  • 【宝可梦】游戏
  • docker启动的rabbitmq如何启动其SSL功能
  • 易基因: cfMeDIP-seq揭示cfDNA甲基化高效区分原发性和转移性前列腺|Nat Commun
  • CMake 教程跟做与翻译 4
  • MySQL面试题分享
  • vue路由缓存问题
  • RabbitMQ中如何解决消息堆积问题,如何保证消息有序性
  • python爬虫案例——selenium爬取淘宝商品信息,实现翻页抓取(14)
  • 在VSCode中使用Excalidraw
  • 25中国投资中投笔试测评秋招校招SHL笔试题型分享
  • 【LeetCode热题100】分治-快排
  • Docker 教程四 (Docker 镜像加速)
  • 各类排序详解
  • 【c语言——指针详解(4)】
  • C# (.net6)实现Redis发布和订阅简单案例
  • 【golang】gorm 使用map实现in 条件查询用法
  • 理论篇| 移动端爬虫
  • systemd实现seatunnel自动化启停
  • MySQL-08.DDL-表结构操作-创建-案例
  • 完成Sentinel-Dashboard控制台数据的持久化-同步到Nacos
  • RocketMq详解:三、RocketMq通用生产和消费方法改造
  • 基于SpringBoot+Vue+Uniapp的仓库点单小程序的详细设计和实现
  • R语言从多波段tif数据中逐个提取单波段数据
  • 华为海思:大小海思的双轮驱动战略分析
  • LeetCode | 704.二分查找
  • TCP三握四挥
  • java项目之大型商场应急预案管理系统(源码+文档)
  • 【C++】--内存管理
  • 【设计模式系列】模板方法模式
  • java8 Stream流详细API及用法