根据博客文章" https://petewarden.com/2016/05/03/how-to-quantize-neural-networks-with-tensorflow/",Tensorflow会在值进入图层之前对其进行量化.在由层处理之后,对值进行解量化.Tensorflow通过重新调整0到255之间的值来量化值,因此需要保持"min"和"max"来对值进行反量化.
我想问一下:1."量化"运算的输出中的"min"和"max"是如何确定的?我的意思是,如果我们只是找到最小值和最大值并将它们设置为0和255,我们将在进行卷积时获得数据上溢或下溢.2.如何确定"卷积"运算的输出中的"min"和"max"?权重和激活都是量化的,因此有两组"min"和"max".卷积运算如何将它们组合成一组"min"和"max"?
TensorFlow 使用 ia gemmlowp进行低精度矩阵乘法。尽管使用 8 位值作为输入,但中间结果是 32 位值。在返回结果之前,这些 32 位值将转换回 8 位。
来自https://github.com/google/gemmlowp/blob/master/doc/low- precision.md:
为了避免溢出,我们在内部累积超过 8 位的结果,最后我们只保留一些有效的 8 位。
| 归档时间: |
|
| 查看次数: |
2652 次 |
| 最近记录: |