摘要
本文根据google发表在cvpr2018上的量化文章《Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference》讲解量化过程,该过程同时也是谷歌的Tensorflow Lite中使用的量化方法。
1. 量化方案
经典的Uniform Affine Quantizer中存在计算量无法下降的问题,Tensorflow在其量化工具中进行了改进,实现了把浮点数计算变为整数计算,精度损失在1%-2%。量化过程如下:
设整数q与浮点数r的转换关系为:
假设卷积过程中的浮点数相乘过程如下:
r3为输出,r1、r2分别为输入的权重和数据,这三个数都是浮点数型。
在矩阵NxN中,对于一个浮点数,有
其中
把(2)带入(1)中得到,
从(4)中可以看出浮点数计算已经被转化为整数的计算,其中只有M是浮点数,并且M是可以预先计算出来的
M还可以再进一步进行简化运算,作者发现M值总是在(0,1)的区间之内,于是可以设