在图像任务中,卷积层要对多通道输入做滑窗加权求和。现在请你实现“多通道、单输出通道”的二维卷积:同一位置上,各输入通道卷积结果累加得到输出值,不做激活与归一化。 输入张量形状:(C, H_in, W_in),共 C 个通道,每个通道是H_in × W_in的二维数组。 卷积核形状:(C, K_h, K_w),每个通道配一张K_h × K_w的核,通道数与输入相同。 步长与填充:步长为stride(整数 ≥ 1),四周以 0 填充padding层。 计算方式: 1) 先在输入四周补 0,得到尺寸(C, H_in + 2*padding, W_in + 2*padding)。 2) 以步长stride滑动大小为K_h × K_w的窗口;若窗口越界(不足以覆盖核),该位置跳过。 3) 对每个窗口:逐通道与对应核做逐元素相乘并求和,再把各通道和相加,得到该格的输出值。 输出张量形状为(H_out, W_out),其中 H_out = (H_in + 2*padding - K_h) stride + 1 W_out = (W_in + 2*padding - K_w) stride + 1 所有输入与输出均为整数。
输入描述:
第1行:C H_in W_in接下来C * H_in行:按“通道 1 的 H_in 行,再通道 2 的 H_in 行,…”的顺序,每行含W_in个整数下一行:C K_h K_w(C 必与第一行一致)接下来C * K_h行:按通道顺序,每个通道给出K_h行、每行K_w个整数最后一行:stride padding


输出描述:
输出H_out行、每行W_out个整数,空格分隔
示例1

输入

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

输出

6 8
12 14

说明

  • 形状计算:H_out=(3+2*0-2)//1+1=2,W_out 同理为 2,输出为 2×2。
  • 位置(0,0)窗口=[[1,2],[4,5]],与核[[1,0],[0,1]]逐元素相乘并求和:11+20+40+51=6。
  • 位置(0,1)窗口=[[2,3],[5,6]] → 21+30+50+61=8。
  • 位置(1,0)窗口=[[4,5],[7,8]] → 41+50+70+81=12。
  • 位置(1,1)窗口=[[5,6],[8,9]] → 51+60+80+91=14。


备注:
本题由牛友@Charles 整理上传
加载中...