赞
踩
剪枝就是将训练好的「大模型」的不重要的通道删除掉,在几乎不影响准确率的条件下对网络进行加速。而量化就是将浮点数(高精度)表示的权重和偏置用低精度整数(常用的有int8)来近似表示。
量化计算的验证:
用一层3x3网络验证量化计算,步骤如下:
一定要注意几个scale的作用:quan.scale和quan.zero_point是对输入的量化。这里需要注意输入是否做了归一化。原始输入是0-255(x),归一化后将会变成0-1。量化后又将变成0-255(y),x和y并不相同。量化采用每通道量化,而不是每tensor量化,因此精度更高,通道指的是输出通道。注意,weight和bias使用的是int8,而activate层用的是uint8。代码如下: #构造输入的量化tensor #构造参数的量化tensor #利用量化tensor做卷积和激活 #生成新的量化tensor #和推断的结果做对比。(理论上应该是完全一样的)
一共有三个scale和三个zero_point,因为weight为对称量化,因此可忽略不计,zero_point将只剩下两个。 FPGA计算全部都是定点计算。 bias讲首先量化成16bit的数(int16),量化方式是将其扩大1/(a*b)倍,输入将被量化成uint8,采用的方式是x/a+zero_point 输入和weight进行卷积后加上bias,激活之后重新量化成uint8。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。