题目本质是:
在端侧设备部署神经网络模型时,需解决模型参数量过大的问题。本题目要求实现神经网络模型的结构化剪枝,通过移除冗余输入通道降低模型复杂度,同时保持分类性能。给定输入矩阵 X 、模型权重 W 以及剪枝比例 ratio,对 W 进行结构化剪枝,并使用剪枝后的结果计算模型预测结果。以下是相关计算流程及指标定义说明。
输入矩阵: X (维度: n×d, n 为样本数,d 为输入特征数)
权重矩阵: W (维度:d×c,c 为输出类别数)
计算过程:
剪枝目标 : 对权重矩阵 W 按行剪枝(移除整行权重),剪枝率为 ratio,剪枝指标为 L1 范数。
提示:
1、y=softmax(h) 其中 yij=∑jexp(hij−max(hi))exp(hij−max(hi)) ,按行计算概率分布,每个元系减去最大值防止外溢,
2、labeli=argmax(yi) 按行计算,输出每行最大值对应的列下标,范围为 [0,c) 。
1.剪枝定义
按行剪枝 : 移除权重矩阵 W 中不重要的行(对应输入特征),保留重要行。
物理意义 : 移除对输出影响较小的输入特征,压缩模型输入维度。
剪枝后维度:
2.剪枝指标
L1 范数:对权重矩阵 W 的每一行计算绝对值之和。
剪枝规则 : 保留 L1 范数较大的行(重要性高),移除 L1 范数较小的行(重要性低)。
3.剪枝步骤
1.计算每行 L1 范数:row_norms=[∥W0,:∥1,∥Wi,:∥1,...∥Wd−1,:∥1]
2.确定剪枝行数: k=⌊ratio×d⌋ (需剪掉的行数)
3.选择 L1 范数最小的 k 行移除,得到剪枝后权重矩阵 W′ 。
4.调整输入矩阵 X :移除与剪枝行对应的列,得到 X’ 。
说明:
k=⌊ratio×d⌋
表示 k 是向下取整后的结果。如果 ratio>0 并且向下取整后 k 为 0 ,则取 k 为 1 (至少剪枝 1 行)
输入内容如下:
第一行三个整数:n d c
接下来 n 行,每行 d 个浮点数:X 矩阵
接下来 d 行,每行 c 个浮点数:W 矩阵
最后一行:剪枝率 ratio
输入范围:
1、1<=n,d,c<=64
2、0<=ratio<=1.0
输出为使用剪枝后矩阵计算得到的预测 label 结果。
输入
4 5 2
1.89 1.88 0.87 0.19 0.62
0.75 0.75 1.45 0.24 0.65
1.26 0.4 0.69 0.54 0.93
0.11 0.61 0.25 1.47 1.96
0.89 2.44
0.97 2.61
2.24 0.72
1.64 0.38
2.29 0.69
0.3
输出
1 0 1 0
说明
输入
2 2 2
1.0 2.0
3.0 4.0
0.1 0.2
0.3 0.4
0.5
输出
1 1
说明
表示 X 矩阵为:
1.0 2.0
3.0 4.0
W 矩阵为:
0.1 0.2
0.3 0.4
剪枝率 ratio 为 0.5