实现一个多通道二维卷积。给定输入张量形状、数据、卷积核形状与权重,以及卷积参数 bias/stride/padding/dilation,计算输出并按一行打印,数值保留4位小数(不足补0)。
- 输入张量形状为 c x y,其中 c 为通道数,x 为行数,y 为列数。随后给出 cxy 个实数,按“通道优先,通道内行优先、行内列优先”顺序给出。
- 卷积核形状为 out in k k,其中 out 为输出通道数,in 为输入通道数(应与 c 相等),k 为核的高与宽。
- 卷积权重共 outink*k 个实数,顺序为:先按输出通道 0..out-1,再按输入通道 0..in-1,然后核内按行优先、行内列优先。
-
参数行给出4个整数:bias stride padding dilation。
- bias 取 0/1。若为 1,紧随其后再给一行 out 个实数,作为各输出通道的偏置;若为 0,则无该行、偏置默认为 0。
- stride、padding、dilation 为各向同性整数(高宽一致)。
-
计算方式:对每个输出通道 oc、输出位置 (oh, ow),有
out[oc, oh, ow] = Σ_ic Σ_ki Σ_kj input[ic, ih, iw] * weight[oc, ic, ki, kj] + bias[oc]
其中 ih = ohstride + kidilation - padding,iw = owstride + kjdilation - padding;若 ih/iw 越界,则该项忽略(视为0)。 -
输出形状为 out × x_out × y_out,其中
x_out = floor((x + 2padding - dilation(k-1) - 1)/stride + 1)
y_out 同理。最终按“输出通道优先,再行优先、再列优先”一行打印,元素间以空格分隔,均保留4位小数。

