1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

本题可以使用直接模拟的方法实现二维空洞卷积。普通卷积核中相邻元素对应输入矩阵中的相邻位置,而空洞卷积中相邻卷积核元素之间需要间隔 d−1d-1d−1 个位置,因此卷积核的有效尺寸为:

Keff=K+(K−1)(d−1)K_{eff}=K+(K-1)(d-1) Keff​=K+(K−1)(d−1)

其中 KKK 是卷积核边长,ddd 是膨胀率。

P4939.第3题-2D 单通道空洞卷积(Dilated Convolution)底层实现

    1000ms Tried: 83 Accepted: 28 Difficulty: 5 所属公司 : 华为
    算法与标签>机器学习算法

题目内容

空洞卷积(膨胀卷积)是卷积神经网络中扩大特征感受野且不增加参数 / 计算量的核心操作,广泛应用于语义分割等任务,本题要求基于原生语法 / 标准库手动实现单通道 2D2D2D 空洞卷积的底层逻辑,禁止调用任何卷积相关高级库函数。

计算逻辑详细步骤

步骤 1:输入特征图的 Padding 填充

对输入的 H×WH \times WH×W 二维特征图进行常数 000 填充:在特征图的上下方向各填充 paddingpaddingpadding 层 000,左右方向也各填充 paddingpaddingpadding 层 000,得到尺寸为 (H+2×padding)×(W+2×padding)(H+2 \times padding) \times (W+2 \times padding)(H+2×padding)×(W+2×padding) 的填充后特征图。

步骤 2:计算有效卷积核尺寸与输出特征图尺寸

有效卷积核尺寸(膨胀后的实际感受野尺寸):设原始卷积核尺寸为 K×KK \times KK×K(KKK 为奇数),膨胀率为 dilationdilationdilation(记为 ddd),则有效核尺寸公式为:

Keff=K+(K−1)×(d−1)K_{eff}=K+(K-1)\times(d-1) Keff​=K+(K−1)×(d−1)

(d=1d=1d=1 时,Keff=KK_{eff}=KKeff​=K,等价于普通卷积)

输出特征图尺寸:设输入特征图原始尺寸为 Hin×WinH_{in} \times W_{in}Hin​×Win​,步长为 stridestridestride(记为 sss),填充为 padding(记为 ppp),则输出特征图的高和宽分别为:

Hout=⌊Hin+2p−Keffs⌋+1H_{out}=\left\lfloor\frac{H_{in}+2p-K_{eff}}{s}\right\rfloor+1 Hout​=⌊sHin​+2p−Keff​​⌋+1 Wout=⌊Win+2p−Keffs⌋+1W_{out}=\left\lfloor\frac{W_{in}+2p-K_{eff}}{s}\right\rfloor+1 Wout​=⌊sWin​+2p−Keff​​⌋+1

步骤 3:滑动窗口遍历与空洞卷积核心计算

窗口滑动规则:以步长 stridestridestride 为间隔,在填充后的特征图上滑动有效尺寸为 KeffK_{eff}Keff​ 的窗口,窗口总数对应输出特征图的 Hout×WoutH_{out} \times W_{out}Hout​×Wout​ 个位置;

空洞卷积乘加规则:对每个滑动窗口,无需给卷积核插入空洞(000),而是按膨胀率 dilationdilationdilation 间隔选取窗口内的元素与原始卷积核逐元素相乘:

  • 设当前窗口在填充后特征图的起始坐标为 (istart,jstart)(i_{start}, j_{start})(istart​,jstart​);
  • 遍历原始卷积核的每个位置 (ik,jk)(0≤ik<K,0≤jk<K)(i_k, j_k)(0 \le i_k < K, 0 \le j_k < K)(ik​,jk​)(0≤ik​<K,0≤jk​<K),计算该位置对应填充后特征图的坐标:iin=istart+ik×di_{in}=i_{start}+i_k \times diin​=istart​+ik​×d,jin=jstart+jk×dj_{in}=j_{start}+j_k \times djin​=jstart​+jk​×d;
  • 若 (iin,jin)(i_{in}, j_{in})(iin​,jin​) 在填充后特征图的有效范围内,将填充后特征图的元素 padded[iin][jin]padded[i_{in}][j_{in}]padded[iin​][jin​] 与卷积核元素 kernel[ik][jk]kernel[i_k][j_k]kernel[ik​][jk​] 相乘,并累加到当前窗口的结果中;
  • 结果赋值:每个窗口的乘加累加结果作为输出特征图对应位置 (iout,jout)(i_{out}, j_{out})(iout​,jout​) 的数值。

步骤 4:输出结果

将所有窗口的计算结果整理为 Hout×WoutH_{out} \times W_{out}Hout​×Wout​ 的二维矩阵,作为最终输出。

输入描述

输入特征图的大小(HHH 和 WWW)

输入特征图的元素,共 H×WH×WH×W 个,且全部为整数

卷积核的大小(KKK),为奇数

卷积核的元素,共 K×KK×KK×K 个,且全部为整数

步长(stridestridestride)为 ≥1≥1≥1 的整数;

填充(paddingpaddingpadding)为正整数(仅支持常数 000 填充,输入特征图上下左右各填充 paddingpaddingpadding 层 000);

膨胀率(dilationdilationdilation)为 ≥1≥1≥1 的整数(dilation=1dilation=1dilation=1 时等价于普通 2D2D2D 卷积)。

输出描述

逐行返回卷积后的二维特征图

样例1

输入

4 6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
3
1 0 -1 1 0 -1 1 0 -1
1
1
2

输出

-32 -8 -8 30
-20 -8 -8 18

说明

样例2

输入

3 3
1 2 3 4 5 6 7 8 9
3
1 0 -1 1 0 -1 1 0 -1
1
0
1

输出

6

说明

输入和卷积核都是 3×33×33×3 的矩阵,膨胀率为 111,此时等效于一个常规卷积
有效核尺寸 =3+(3−1)×0=3=3+(3-1)×0=3=3+(3−1)×0=3,输出尺寸 =(3+0−3)/1+1=1×1=(3+0-3)/1+1=1×1 =(3+0−3)/1+1=1×1 窗口内元素乘加:1×1+2×0+3×(−1)+4×1+5×0+6×(−1)+7×1+8×0+9×(−1)=−81×1 + 2×0 + 3×(-1) + 4×1 + 5×0 + 6×(-1) + 7×1 + 8×0 + 9×(-1) = -81×1+2×0+3×(−1)+4×1+5×0+6×(−1)+7×1+8×0+9×(−1)=−8

样例3

输入

5 5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
3
1 0 1 0 1 0 1 0 1
1
0
2

输出

5

说明

输入是 5×55×55×5 的卷积,卷积核为 3×33×33×3 的卷积
有效核尺寸 =3+(3−1)×1=5=3+(3-1)×1=5=3+(3−1)×1=5,输出尺寸 =(5+0−5)/1+1=1×1=(5+0-5)/1+1=1×1 =(5+0−5)/1+1=1×1

按膨胀率 222 选取输入元素(间隔 111个元素):
输入窗口为 5×55×55×5,选取位置:(0,0)、(0,2)、(0,4)、(2,0)、(2,2)、(2,4)、(4,0)、(4,2)、(4,4)(0,0)、(0,2)、(0,4)、(2,0)、(2,2)、(2,4)、(4,0)、(4,2)、(4,4) (0,0)、(0,2)、(0,4)、(2,0)、(2,2)、(2,4)、(4,0)、(4,2)、(4,4)

乘加求和:1×1+1×1+1×1+1×1+1×1+1×1+1×1+1×1+1×1=91×1 + 1×1 + 1×1 + 1×1 + 1×1 + 1×1 + 1×1 + 1×1 + 1×1 = 91×1+1×1+1×1+1×1+1×1+1×1+1×1+1×1+1×1=9

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 2, 58ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?