zoukankan      html  css  js  c++  java
  • 已知填充(Padding)与步幅(Strides),如何求输出尺寸?

    本文基于李沐老师的《动手学深度学习》(中文版)5.2小节的内容,加了一点个人的理解。

    假设输入形状为(n_h imes n_w),卷积核窗口形状为(k_h imes k_w)可以分为以下三种情况讨论,分别是:无填充且步幅为1,有填充且步幅为1,有填充步幅不为1。

    1. 无填充且步幅为1时

    输出形状将会是

    egin{equation} ( n_h-k_h+1) imes(n_w-k_w+1) end{equation}

    如何理解上式呢?(高和宽情况相同,只解释其一即可)。我们将(n_w-k_w+1)分为两部分(n_w-k_w)(1),分别用绿色和蓝色标注。绿色部分表示在“宽”这个方向上卷积核可以滑动的次数,当卷积核宽度为(k_w)且步幅为1时,滑动的次数刚好等于(n_w-k_w),即图1中白色的列数(等于1,即表示卷积核后续只能滑动1次)。而蓝色部分可以表示该卷积核在开始位置即会输出一个值。红色部分与绿色部分相结合,刚好等于输出的“宽”,即(n_w-k_w+1)

    无填充且步幅为1二维互相关运算
    图1 无填充且步幅为1的二维互相关运算
    实际上,对于本文中的三种情况,蓝色部分都为1,改变的只是绿色部分而已。

    有填充且步幅为1时

    按照上述的理解方式,很容易理解有填充时该如何求输出尺寸。如图2所示,假如我们在输入的“宽”方向上填充(p_w)列(图2中是左右侧各填充1列),那么绿色部分(即可滑动的次数)应该加上填充的列数,即(n_w-k_w+p_w),而蓝色部分(1)不变。则输出尺寸为:

    egin{equation} (n_h-k_h+p_h+1) imes(n_w-k_w+p_w+1) end{equation}

    有填充且步幅为1的二维互相关运算
    图2 有填充且步幅为1的二维互相关运算

    有填充且步幅不为1时

    那更进一步,步幅不为1的情况呢?当“宽”上步幅为(s_w)时,卷积核可滑动的次数会发生相应的改变,即绿色部分变为:(lfloor(n_w-k_w+p_w)/s_w floor),该式中的除(s_w)和向下取整很容易理解,不多做解释。蓝色部分还是为(1)不变,所以输出尺寸为:

    egin{equation} lfloor(n_h-k_h+p_h+s_h)/s_h floor imeslfloor(n_w-k_w+p_w+s_w)/s_w floor end{equation}

    当步幅为1时,式(3)即可退化为式(1)和式(2)
  • 相关阅读:
    MySQL query_cache_type 详解
    MySQL validate_password 插件
    MySQL冷备份的跨操作系统还原
    MySQL5.7新特性笔记
    MySQL参数详解
    保存mysql用户的登录信息到~.my.cnf文件;用于方便登录操作。
    MySQL应用层传输协议分析
    python egg
    MySQL 加锁处理分析
    train_test_split, 关于随机抽样和分层抽样
  • 原文地址:https://www.cnblogs.com/wtyuan/p/14233341.html
Copyright © 2011-2022 走看看