在终端设备上部署模型时,常需要先压缩网络规模。现给定一批样本矩阵 X(n 行 d 列)、一层线性分类器的权重矩阵 W(d 行 c 列),以及剪枝比例 ratio。请对 W 进行“按行剪枝”(即移除整行,对应丢弃一个输入特征),然后用剪枝后的模型对每个样本做预测,输出每行样本的预测类别索引(从 0 开始)。 任务要求 · 剪枝指标:对 W 的每一行计算 L1 范数(该行各元素绝对值之和)。L1 越小,越不重要。 · 剪枝行数:k = floor(ratio × d)。若 ratio > 0 且 floor(ratio × d) = 0,则令 k = 1(至少剪 1 行)。 · 剪枝规则:移除 L1 范数最小的 k 行,得到新权重 W'(形状为 (d−k) × c)。 · 特征对齐:将 X 中与被移除行同索引的列一并删除,得到 X'(形状为 n × (d−k))。 · 线性输出:h = X' × W',得到大小为 n × c 的分数矩阵。 · 稳定 Softmax:对 h 的每一行 i,先减去该行最大值,再做 softmax,得到概率分布 y_i。softmax 仅用于说明稳定做法;最终类别索引与直接对 h 行取最大位置相同。 · 预测结果:对每行取 argmax(若有并列则取最左的列索引),输出为一行,用空格分隔各样本类别索引。
· 第一行:三个整数 n d c。 · 接着 n 行:每行 d 个浮点数,构成矩阵 X。 · 接着 d 行:每行 c 个浮点数,构成矩阵 W。 · 最后一行:一个浮点数 ratio(0 <= ratio <= 1.0)。
· 一行,输出 n 个整数,空格分隔,为每个样本的预测类别索引。
3 3 2 1 0 0 0 1 0 0 0 1 2 1 0 -1 -2 3 0.33
0 0 1
考点:模拟
限制 1 秒 / 256MB | 标准输入输出
推荐方向:模拟
本题切入点
按 L1 范数从小到大剪掉 k = floor(ratio×d) 行(ratio>0 但结果为 0 时保底剪 1 行),同步删除 X 的对应列,再做线性输出与 argmax 取类别。
不涉及复杂算法,把题目描述的流程原样翻译成代码逐步执行即可。
思路框架(模拟 通法 · 非本题专属)
实现要点:结构上通常是一个外层循环包住若干 if/else 分支;只要状态定义清楚,正确率很高。
复杂度:时间 O(操作次数) | 空间 O(状态数)
该范式的通法易错点
样例 1:输入 3 3 2 / 1 0 0 / 0 1 0 / 0 0 1 / 2 1 / 0 -1 / -2 3 / 0.33 → 输出 0 0 1
d=3,ratio=0.33 → floor(0.33×3)=0,但 ratio>0,因此 k=1;
W 的行 L1:row1=3,row2=1,row3=5 → 移除 row2;
删除 X 的第 2 列,得到 X';W 删除对应行得到 W';
计算 h=X'W' 后逐行取最大位置,得到预测 0 0 1。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年秋招-华为-12月3号AI岗。