浮点数的定点化

发布时间 2023-03-25 11:01:35作者: 森是林上木

例题

1、【大疆】对 12.918 做无损定点化,需要的最小位宽是多少位?位宽选择 11 位时的量化误差是多少?

A 13位,0.0118B 12位,0.0118C 13位,0.0039D 12位,0.0039

分析:(1)整数 12 需要 4bit。假设位宽选择12位,即小数需要 8bit,12.918 * 2^8 = 3307.008,定点化后的小数小于0.5,可以看成是【无损定点化】,固答案为 12 位;(2)位宽选择11位,即小数需要 7bit,12.918 * 2^7 = 1653.504,量化误差为 0.504/2^7 = 0.0039375,固答案为0.0039。

答案:结合分析,得出答案为D。

无损定点化

定点化处理中存在量化误差,该量化误差能进行计算。当我们对小数部分定点化处理后,得到一个整数值,该整数值/最大定点化整数值,即可得到该小数部分的反量化值,然后减去原来的小数部分,即可得到误差,再次利用有效位进行比对,即可知道是否为无损误差。
比如:0.928 用 8位定点化
1、则换成整数:0.928*256 = 238
2、对其反量化:238/256=0.930
3、减去原来的小数部分 0.930-0.928 = 0.002
4、有效位比对 ,原来的小数部分有效位3位,而0.002 小数点后后第三位是2,因此不是无损误差。

(4条消息) FPGA中浮点数的定点化处理技术及高斯模板定点化处理方法_Fighting_XH的博客-CSDN博客

 

例子

★:如果一组数据中有256、255、254、253~1、1/2、1/3、1/4~1/255,如果使用浮点数定点化将他们无损表示出来?

1/256 = 0.00390625
1/255 = 0.00392156
1/254 = 0.00395256
1/253 = 0.00396825

目标:找到能够区分256~1/256的一组定点数

思路:找出1/255-1/256 or 1/253 - 1/254 or 1/n - 1/(n+1)的最小值,并用1/2^n次方进行对比,如果该值小于最小值,则表明可以使用该n次方作为定点化时放大倍数。

1/255 -1/256 = 0.00392156 - 0.00390625 = 0.00001531

1/2^14 = 0.00006103515625 

1/2^15 = 0.000030517578125

1/2^16 = 0.0000152587890625

因此最少应该使用16作为最小放大倍数实现无损定点化。