首页 > 试题广场 >

模型量化最小误差

[编程题]模型量化最小误差
  • 热度指数:1 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

在一台边缘设备上部署一个已缩放到合适范围的神经网络权重矩阵。网络共有 N 层,每层有 H 个实数权重。每一层必须统一选择一个量化位宽 q,且 q 只能取 2、4、8 三种之一。所有层选择的位宽之和不超过 Qmax。

若某层选择位宽 q,则对该层每个权重 w 执行:

1) 放大并取整:wq = int(w * 2^q)
2) 还原:wr = wq / 2^q
该层的量化误差定义为该层所有权重的 |w - wr| 之和。全网误差为各层误差之和。目标是在总位宽预算不超过 Qmax 的前提下,使全网误差最小。输出最小总误差乘以 100 后向下取整的结果。


输入描述:
  • 第一行:N H Qmax
  • 接下来 N 行:每行 H 个实数,表示对应层的权重


输出描述:
  • 一行,一个整数,为最小总误差乘以 100 后向下取整
示例1

输入

2 3 8
0.1 0.5 0.9
0.3 0.75 0.2

输出

12

说明

若两层都选 4 比特,误差之和为 0.0625 + 0.0625 = 0.125
预算 4 + 4 = 8,满足约束
输出 floor(0.125 * 100) = 12
其他组合(如 2+4 或 2+2)误差更大

备注:
  • 每层必须也只能选一个位宽(2 或 4 或 8)
  • 位宽预算约束:所有层选定的位宽之和 ≤ Qmax
  • 误差按绝对值累加
  • 结果向下取整,相当于 floor(answer * 100)

这道题你会答吗?花几分钟告诉大家答案吧!