算法部署——量化概述
一、量化原理
1、数据类型范围
2、原理详解
实现流程:在每层计算时需要先将feature map量化到INT8,然后将weights量化到INT8,最后卷积计算得到INT32的输出值,输出值乘以scale(float)值反量化到float,然后加上浮点格式的bias作为下一层的输入;
- scale值的计算
使用KL散度判断量化的好坏;
Scale = T / 127;
KL散度计算公式:
二、NCNN安装
$ git clone https://github.com/Tencent/ncnn.git
$ cd ncnn
$ cd build
$ cmake -DNCNN_VULKAN=OFF ..
$ make -j8
$ make install
在ncnn根目录下的src文件中,有各个网络层的定义源码,可供查阅;
在ncnn根目录下的tools/quantize中,ncnn2table描述了量化的全过程,详情请看源码;
总结
算法部署中量化的操作过程并不复杂,重点需要掌握的时C++的使用,这在整个部署中也是至关重要的;对于各个算子的实现,也可根据NCNN的源码进行阅读,加深对网络结构的理解;
版权声明:本文为weixin_40620310原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。