本题需要手写二维卷积 Conv2D(input, weight, bias, stride, padding, dilation),支持步幅、零填充与空洞(扩张)卷积。
设输入形状为 (C, H, W),卷积核形状为 (Out, In, K, K)。
输出尺寸计算
令有效核尺寸 K_eff = dilation * (K - 1) + 1
卷积神经网络 (CNN) 是计算机视觉领域的核心模型,ResNed 通过残差连接 (Residual Connection) 进一步解决了深层神经网络梯度消失的问题,本题要求实现 CNN 基础的卷积函数 Conv2D(input,weight,bias,stride,padding,dilation),相关参数描述如下:
input:输入数据;
weight:卷积核的权重;
bias:卷积核的偏置
stride:卷积核的移动步长;
padding:输入数据边缘填充的像素数(填充 0 );
dilation:卷积核元素之间的间隔;
第 1 行:输入数据的形状 c,x,y,以空格隔开
第 2 行:输入数据,为 c∗x∗y 个实数,按照先行后列排序。
第 3 行:卷积核的形状 out,in,k,k
第 4 行:卷积的权重,数量为 out∗in∗k∗k ,按照先行后列排序
第 5 行: bias,stride,padding,dilation
第 6 行:若 bias 为 1 ,则该行为 bias 的具体值,长度为 out ,否则该行为空
其中 0<x,y<1000,0<k<100
卷积的计算结果,输出为一行,保留 4 位小数,不足四位小数补 0
输入
1 4 4
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
1 1 3 3
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
0 1 0 1
输出
54.0000 63.0000 90.0000 99.0000
说明
输入的形状为 (1.4,4) ,故第二行的数据 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 的数据排列方式为:
[[[1.0,2.0,3.0,4.0],
[5.0.6.0,7.0,8.0],
[9.0,10.0,11.0,12.0]
[13.0,14.0,15.0,16.0]]]
卷积计算结果为:
[[[54.0000,63.0000],
[90.0000,99.0000]
输出为:54.0000 63.0000 90.0000 99.0000
输入
1 4 4
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
1 1 3 3
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1 1 0 1
1.0
输出
55.0000 64.0000 91.0000 100.0000