quantization软硬件量化要求的不同

因为硬件资源问题,硬件无法和软件一样进行高精度的浮点运算,所以用软件来模拟硬件计算时需要按硬件所能支持的位宽,将数据量化为低精度。

通常软件上量化其实是一种等分归类操作,即将原值域按照要求划分为若干份,然后将落到同一个区间的当成一个值即可。

由于硬件需用二进制表示,因此因此除了需满足软件上的等分操作外,还需根据Qn量化,将步长设为x**(-n)

eg:进行8位量化,及范围是-2**(n) ~ 2**(n)-1

(1)软件

S = max(|max(x)|, |min(x)|)/(2**(n)-1)

x = round(x/S)

x = clamp(x, -2**(n), 2**(n)-1)

 

 

(2)硬件

MAX = math.floor(max(|max(x)|, |min(x)|))

div = math.floor(math.log(MAX, 2)) + 1   //整数位宽,若MAX为0,则div=0

Q_number = n_bits -div          //加边界保护,Q_number小于0的时候取0

x = x.mul(2 ** Q_number).trunc().div(2 ** Q_number)   //量化将超出部分砍掉,然后变为2 ** Q_number的倍数

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值