当前位置:网站首页>【模型压缩】实例分析量化原理
【模型压缩】实例分析量化原理
2022-08-02 20:32:00 【AI小白龙】
1.从定点模型训练来分析量化原理:
定点模型训练是一个迁移训练的过程:在浮点网络的相应位置插入定点化处理节点(相
当于激活函数),然后在这个经过定点化的计算图上重新训练神经网络。以全连接层为例,定点模型训练函数会根据 Layer 类型的 Dense 层构建一个 TensorFlow的 dense 层(由 MatMul 和 Add 两个 OP 构成),并且在 MatMul 操作的输入、Add 操作的输出、权重张量和 MatMul 之间、偏置张量和 Add 之间增加定点化处理节点。
解析:公式Q的输入为;X(数据输入,输出,权值值,偏置值),以及统计的(或者人为设置的)最大值和最小值,其目的是将权值偏置训练迭代的结果限制在特定范围内,以减小量化损失。
公式中bitwidth(是要量化的位数16位或者8位), 如果要量化8位,那么根据以上描述
∇=2frac =xmax*128-1-1 ,当xmax
确定即可求出frac
,然后Q公式即可正常计算,Q=∇*floor
中floor
就是量化的结果,再次乘以∇
就是恢复到了浮点值来完成正常的浮点训练(即定点训练只是将网络的进行了定点的限制),当量化网络的整形结果输出时也可通过乘以当前层的∇
来得到正常的浮点值。
2.以libfacedetection实例分析
本实例并未进行定点训练,直接将浮点训练结果进行了定点化,但推理部分与上面原理和操作是一致的。
(1)将浮点权值转化为整形值,保存scale值,相当于∇
保存权值和scale值
(2)根据定点原理重写推理算法,首先重写整形矩阵运算,然后利用指令集加速
关于scale的传递,卷积为输入和权值的相乘,池化的输出等于输入
两外relu激活函数的scale需要重新求得,同样向下传递:
(3)定点转浮点的算子,将最终结果转成浮点
边栏推荐
猜你喜欢
软件测试的流程规范有哪些?具体要怎么做?
Thread线程类基本使用(上)
KDD 2022 | 深度图神经网络中的特征过相关:一个新视角
X 2 Earn必须依靠旁氏启动?GameFi的出路在哪?(下)
OP analysis and design
Common tools and test methods for interface testing (Introduction)
模糊查询like用法实例(Bee)
SQL基础练习题(mysql)
Jar包启动通过ClassPathResource获取不到文件路径问题
How to quickly compare two byte arrays for equality in .NET
随机推荐
"Weekly Translate Go" This time we have something different!-- "How to Code in Go" series launched
Bee 事务注解 @Tran 使用实例
特拉维夫大学 | Efficient Long-Text Understanding with Short-Text Models(使用短文本模型进行高效的长文本理解)
Flink Yarn Per Job - 启动AM
训练双塔检索模型,可以不用query-doc样本了?明星机构联合发文
美国爱荷华州立大学| Improving Distantly Supervised Relation Extraction by Natural Language Inference(通过自然语言推理改进远程监督关系提取)
Electrical diagram of power supply system
汉源高科2光12电千兆导轨式网管型工业以太网交换机双光自愈保护式以太网光交换机
浅议.NET遗留应用改造
The five classification of software testing
Packages and packages, access modifiers
How to quickly compare two byte arrays for equality in .NET
postgresql autovaccum自动清理
Digital twins help visualize the construction of smart cities
有效解决MySQL报错:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO/YES)
Xcode13.1 run engineering error fatal error: 'IFlyMSC/IFly h' file not found
基本语法(三)
线程安全(上)
你所不知道的C#中的细节
C语言中变量在内存中的保存与访问