在图像任务中,卷积层要对多通道输入做滑窗加权求和。现在请你实现“多通道、单输出通道”的二维卷积:同一位置上,各输入通道卷积结果累加得到输出值,不做激活与归一化。 · 输入张量形状:(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 3 3 1 2 3 4 5 6 7 8 9 1 2 2 1 0 0 1 1 0
6 8 12 14
考点:模拟
限制 1 秒 / 256MB | 标准输入输出
推荐方向:模拟
本题切入点
多通道单输出卷积:先补 padding,再以 stride 滑窗,把各通道与对应核的乘积和相加得到该格输出,越界窗口跳过。
不涉及复杂算法,把题目描述的流程原样翻译成代码逐步执行即可。
思路框架(模拟 通法 · 非本题专属)
实现要点:结构上通常是一个外层循环包住若干 if/else 分支;只要状态定义清楚,正确率很高。
复杂度:时间 O(操作次数) | 空间 O(状态数)
该范式的通法易错点
样例 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。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年秋招-华为-11月06号留学生AI岗。