当前位置:   article > 正文

神经网络量化----吐血总结

神经网络量化

 神经网络量化----吐血总结


目录

 神经网络量化----吐血总结

1. 前言

1.1 量化是什么?

1.2 量化会带来什么?

2. 量化具体介绍

2.1 非对称量化

2.2 对称量化

2.3 随机量化

2.4 量化感知训练

3. 经典量化论文解读

3.1 Google 8-bit Integer-Arithmetric-Only Inference



1. 前言

本文主要借鉴于Google关于量化的白皮书,Quantizing deep convolutional networks for efficient inference: A whitepaper
并感谢666DZY666大佬的开源项目:https://github.com/666DZY666/model-compression 
能力有限,若有描述不当的地方,请大佬勿喷,仅为学习使用,若侵权,请告知,立删。

1.1 量化是什么?

量化是模型压缩的一种方式。量化就是把高位宽(例如32float)表示的权值或者激活值用较低位宽来近似表示(int8),在数值上的体现就是将连续的值离散化。

1.2 量化会带来什么?

量化主要用在边缘计算等硬件限制较大的场景下,即工业应用上(总不能在边缘上都带着GPU吧)。现有很多先进的神经网络(例如resnet,densenet)在分类、识别上都取得了较好的效果,但其普及程度远不及效果稍差但模型小、运算快的mobilenet,而mobilenet就是在权衡速度、识别率下产物。当然了,mobilenet不是量化模型,只是用来举个例子,用于说明量化的潜力。

以下为量化所带来的一些影响:

  • 优点1:加快运算速度。当把32float转变为int8表示时,在不考虑系统有浮点加速模块时,定点运算要比浮点运算快,感兴趣的可查阅定点数和浮点数运算的区别
  • 优点2:减少存储空间。若将32浮点数转变为8位表示时,存储空间减小到了1/4大小。
  • 缺点1:在用低带宽数值近似表示时,会造成一些精度损失。值得高兴的是,神经网络的参数大多是冗余的(或者说是对噪声的容忍度),所以当在近似变换时对精度的影响不是特别大

下面用图来说明量化是怎么带来损失的,A为实际的浮点值,量化后近似为B,但其表示的值为C点,缩放因子越大,A和C的距离就越远,误差就越大,所以在量化时引入的近似会带来一些精度上的损失。(后面会具体讲解如何设置最值,来找到合适的缩放因子)
 

图片1


2. 量化具体介绍

2.1 非对称量化

本文都以量化到8-bit为例
1)首先,设置浮点数的最大值x_max,最小值x_min

  • 对于权重:权重在训练后大小都是固定的&
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/141381
推荐阅读
相关标签
  

闽ICP备14008679号