感觉深度学习在移动端的全面开花就在这两年了,其实感觉已经开始开花了。
先说说量化是怎么一回事,目前我们在caffe, tensorflow等框架上训练模型(前向和反向)都是使用float 32的,与int 8相比,所需储存空间更大,但是精度更好。
量化目前来讲,有两种方式,一种是通过训练量化finetune原来的模型,另一种是直接对模型和计算进行量化。这篇文章先来讲不使用finetune,直接对训练完毕的模型进行进行量化。
在深度学习中,对float 32进行int 8量化,使其模型尺寸更小、推断更快、耗电更低。唯一的缺点,模型精度会下降。
先比较一下,float 32 和 int 8有什么区别
Dynamic Range(两种数据类型的数值范围)
FP32 -3.4 x 10^38 ~ +3.4 x 10^38
INT8 -128 ~ +127
其实量化过程很简单,更高精度的向低精度的范围进行映射。
当bias=0时,就是正负对称做的一个对称的量化
图片来自于《8-bit inference with tensor RT》,版权归nvidia所有
在量化过程中,又可以分