Tensorflow如何进行量化和反量化?

den*_*nru 5 tensorflow

根据博客文章" 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"?

giz*_*ole 3

TensorFlow 使用 ia gemmlowp进行低精度矩阵乘法。尽管使用 8 位值作为输入,但中间结果是 32 位值。在返回结果之前,这些 32 位值将转换回 8 位。

来自https://github.com/google/gemmlowp/blob/master/doc/low- precision.md

为了避免溢出,我们在内部累积超过 8 位的结果,最后我们只保留一些有效的 8 位。