赞
踩
ONNX 运行时中的量化是指 ONNX 模型的 8 位线性量化。
在量化期间,浮点值被映射到以下形式的 8 位量化空间:val_fp32 = scale * (val_quantized - zero_point)
scale是一个正实数,用于将浮点数映射到量化空间。计算方法如下:
对于非对称量化:
- <span style="background-color:#f5f6fa"><span style="background-color:#f5f6fa"><span style="color:#5c5962"><span style="background-color:#f5f6fa"><span style="color:#5c5962"><code> scale = (data_range_max - data_range_min) / (quantization_range_max - quantization_range_min)
- </code></span></span></span></span></span>
对于对称量化:
- <span style="background-color:#f5f6fa"><span style="background-color:#f5f6fa"><span style="color:#5c5962"><span style="background-color:#f5f6fa"><span style="color:#5c5962"><code> scale = max(abs(data_range_max), abs(data_range_min)) * 2 / (quantization_range_max - quantization_range_min)
- </code></span></span></span></span></span>
zero_point表示量化空间中的零。浮点零值在量化空间中能够精确表示是很重要的。这是因为许多 CNN 中都使用了零填充。如果量化后无法唯一表示0,就会导致精度误差。
有两种表示量化 ONNX 模型的方法:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。