根据博客"https://petewarden.com/2016/05/03/how-to-quantize-neural-networks-with-tensorflow/",Tensorflow在进入一个层之前对值进行量化。在被该层处理后,这些值被去量化。Tensorflow通过将值重新标度在0到255之间来量化值,因此需要保持"min“和"max”来对值进行量化。
我想问: 1.如何确定“量化”运算输出中的“最小”和“最大”?我的意思是,如果我们简单地找到最小值和最大值,并将它们设置为0和255,那么在进行卷积时,我们就会得到数据溢出或下溢。2.如何确定“卷积”运算输出中的“最小”和“最大”?重量和激活都是量化的,所以有两组"min“和"max”。卷积运算如何将它们组合成一组"min“和"max"?
发布于 2017-07-18 18:07:30
TensorFlow使用i.a.用于低精度矩阵乘法的宝石。虽然使用8位值作为输入,但中间结果是32位值.在返回结果之前,这些32位值被转换回8位。
来自https://github.com/google/gemmlowp/blob/master/doc/low-precision.md:
为了避免溢出,我们在内部累积超过8位的结果,最后我们只保留一些重要的8位。
https://stackoverflow.com/questions/41564212
复制相似问题