实现一个多通道二维卷积。给定输入张量形状、数据、卷积核形状与权重,以及卷积参数 biasstridepaddingdilation,计算输出并按一行打印,数值保留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 取 01。若为 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;若 ihiw 越界,则该项忽略(视为0)。 输出形状为 out × x_out × y_out,其中 x_out = floor((x + 2padding - dilation(k-1) - 1)stride + 1) y_out 同理。最终按“输出通道优先,再行优先、再列优先”一行打印,元素间以空格分隔,均保留4位小数。
输入描述:
第1行:c x y第2行:cxy 个实数(通道优先、行优先、列优先)第3行:out in k k第4行:outink*k 个实数(权重,顺序见上)第5行:bias stride padding dilation若 bias=1:第6行再给 out 个实数(各输出通道的偏置)


输出描述:
一行实数,按规定顺序展开,保留4位小数
示例1

输入

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

输出

2.0000 4.0000 6.0000 8.0000 10.0000 12.0000 14.0000 16.0000 18.0000

说明

单通道、1×1 卷积核、权重为 2、无偏置,等价于整幅图每个像素乘 2;输出与输入同形状(3×3),按行展开打印。
加载中...