网络量化——为什么需要“zero_point”?为什么对称量化不需要“零点”?
原文标题 :network quantization——Why do we need “zero_point”? Why symmetric quantization doesn’t need “zero point”?
我整天都在谷歌上搜索,但仍然找不到我需要的答案。我的脑子里一定有什么误会。你能帮帮我吗?
1. 为什么我们需要“zero_point”?
量化:q=round(r/scale)+zero_point
我认为 zero_point (作为偏移量)将缩放数据移动到适当的位置,例如,在下图中对于无符号 2 位量化,零点将 [-1,2] 移动到 {0,1,2, 3}
我是对的吗?
如果我错了,请帮助纠正我;
如果我是对的,那么这里需要零点(对称量化),为什么 Jacob 在 IAO 中,第 2.1 节说零点用于填充零?在我看来,这只是结果,而不是根本原因?
2、为什么对称量化不需要“零点”?
在Goolge白皮书和一些博客中,它说对称量化不需要零点(因为zero_point=0):
我可以在有符号量化中理解它,因为浮点范围和量化范围都是对称的,因此 zero_point=0。
但是,我们如何在无符号量化中忽略 zero_point 在量化范围 [0,2^b-1] 不对称的情况下?在这种情况下,在我看来,我们必须有一个正零点才能将缩放数据转移到范围 [0, 2^b-1] 如下图:
回复
我来回复-
WBR 评论
我还没有找到或得到明确的答案。
但我说服自己如下:
1.Why do we need “zero_point”?
zero_point 绝对是一个偏移量或偏差,将缩放的数据移动到适当的位置。对此不应有任何怀疑。
但是,Jocab 提出的“动机”是“Z 与量化的 q 具有相同的关系”,而不是“具有零点”。前者确保真正的“0”被量化无误,因此在以量化方式推断时,在 zero_padding 中填充(而不是值“0”)的零点(与q相同)错误)。
- 为什么对称量化不需要“零点”?
我认为白皮书公式(7)-(9)中的“if signed”和“if unsigned”是在谈论x的符号,即真实的、未量化的浮点值,而不是量化一。这意味着,有符号浮点值被量化为有符号定点整数,零点=0;和无符号浮点到无符号定点整数,零点= 0。
2年前