使用 im2col(image to column)方法实现一维卷积。
im2col 的核心思想:将卷积运算转化为矩阵乘法——把输入信号中每个滑窗片段展开为矩阵的一行,再与卷积核做矩阵乘法,避免嵌套循环。
给定一维输入信号 x(长度 L),卷积核 w(长度 K),步长 S 和填充 P:
输出 im2col 矩阵和卷积结果。
第一行包含四个整数 L,K,S,P(4≤L≤64,2≤K≤9,1≤S≤3,0≤P≤K/2)。
第二行包含 L 个浮点数,表示输入信号 x。
第三行包含 K 个浮点数,表示卷积核 w。
所有浮点数保留 4 位小数。保证输出长度 O≥1。
第一行两个整数 O 和 K,表示 im2col 矩阵的行数和列数。
接下来 O 行,每行 K 个浮点数,表示 im2col 矩阵的每一行,保留 4 位小数。
最后一行 O 个浮点数,表示卷积结果 y,保留 4 位小数。
输入
5 3 1 0
1.0000 2.0000 3.0000 4.0000 5.0000
0.5000 -0.5000 1.0000
输出
3 3
1.0000 2.0000 3.0000
2.0000 3.0000 4.0000
3.0000 4.0000 5.0000
2.5000 3.5000 4.5000
说明
L=5,K=3,S=1,P=0,无填充,步长为 1,滑窗产生 3 个片段。
第 1 行取 x′[0:3]=[1,2,3],与 w=[0.5,−0.5,1.0] 点积得 1×0.5+2×(−0.5)+3×1.0=2.5。
输入
6 3 2 1
1.0000 3.0000 -1.0000 2.0000 4.0000 -2.0000
-1.0000 0.5000 1.0000
输出
3 3
0.0000 1.0000 3.0000
3.0000 -1.0000 2.0000
2.0000 4.0000 -2.0000
3.5000 -1.5000 -2.0000
说明
P=1,左右各补一个零,得到 x′=[0,1,3,−1,2,4,−2,0]。S=2,从位置 0,2,4 取窗口。
第 1 行取 x′[0:3]=[0,1,3],点积得 0×(−1)+1×0.5+3×1.0=3.5。
im2col 的后两行按这个取窗规则整理为 x′[2:5]、x′[4:7]。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册