本题要求实现二维卷积 + 零填充(padding),并且题面明确说明是“无核翻转”的卷积,本质上就是二维相关运算(cross-correlation):
对每个输出像素 (i,j),让卷积核以 (i,j) 为中心覆盖在原图上,做逐元素乘加;超出边界的位置视为 0(即在图像外层补零)。
设:
卷积计算是人工智应用的常见计算操作,在深度学习中,卷积一般使用无核翻转的方式,通过如下公式计算:
(S⋅K)(i,j)−∑m∑nS(i+m,j+n)⋅K(m,n)
其中:
S 是输入图像(或二维信号)
K 是卷积核(或滤波器)
(i,j) 是输出图像的坐标
(m,n) 是卷积核的坐标
所谓 Padding 是根据卷积的尺寸,在输入图像外围填充若干圈 0 ,确保卷积计算后的辅出数据尺寸与原始输入一致。
如:

第一行 为输入卷积尺寸 m∗m 和图像尺寸 n∗n,m 为大于 1 的奇数,n 为大于 1 的整数
然后是卷积矩阵数据,共 m 行,每行为卷积核的某一行,值的取值范围 [−10,10] 整数
最后是图像数据,共 n 行,每行为图像数据的某一行,值的取值范围 [0,255] 整数

如:
3 3
1 0 -1
1 0 -1
1 0 -1
1 2 3
4 5 6
7 8 9
输出为带 padding 卷积操作后结果数据,大小为输入图像的尺寸 n∗n ,如:
-7 -4 7
-15 -6 15
-13 -4 13
输入
3 5
-5 4 0
0 -3 -2
3 2 0
231 112 85 120 114
154 237 168 55 35
203 204 160 70 7
194 32 36 99 181
64 185 251 30 115
输出
-609 430 552 26 -107
394 -737 98 440 -25
-13 -108 -965 -538 503
294 195 371 -366 -543
214 -1899 -829 -106 -119
输入
3 5
1 0 -1
1 0 -1
1 0 -1
3 2 5 4 8
1 8 2 4 1
3 7 5 2 9
8 2 1 4 3
1 5 7 2 8
输出
-10 -3 2 -2 8
-17 -5 7 -6 10
-17 4 7 -5 10
-14 -1 6 -7 8
-7 1 1 -3 6