定点 浮点 神经网络 量化_神经网络量化入门--后训练量化

本文深入探讨卷积网络的后训练量化,包括卷积层的量化细节和整个网络的量化流程。通过实例展示了如何用PyTorch从零搭建量化模型,以及如何在量化后保持高精度。文章提供了卷积层量化、全网络量化流程的实现,并通过实验验证了量化对模型精度的影响。
摘要由CSDN通过智能技术生成

上一篇文章介绍了矩阵量化的基本原理,并推广到卷积网络中。JermmyXu:神经网络量化入门--基本原理​zhuanlan.zhihu.com

介绍了矩阵量化的基本原理,并推广到卷积网络中。这一章开始,我会逐步深入到卷积网络的量化细节中,并用 pytorch 从零搭建一个量化模型,帮助读者实际感受量化的具体流程。

本章中,我们来具体学习最简单的量化方法——后训练量化「post training quantization」

由于本人接触量化不久,如表述有错,欢迎指正。

卷积层量化

卷积网络最核心的要素是卷积,前文虽然有提及卷积运算的量化,但省略了很多细节,本文继续深入卷积层的量化。

这里我们继续沿用之前的公式,用

表示 scale 和 zero point,

表示浮点实数,

表示定点整数。

假设卷积的权重 weight 为

,bias 为

,输入为

,输出的激活值为

。由于卷积本质上就是矩阵运算,因此可以表示成:

由此得到量化的公式:

这里面非整数的部分就只有

,因此接下来就是把这部分也变成定点运算。

对于 bias,由于

的结果通常会用 int32 的整数存储,因此 bias 通常也量化到 int32。这里我们可以直接用

来代替

,由于

都是对应 8 个 bit 的缩放比例,因此

最多就放缩到 16 个 bit,用 32bit 来存放 bias 绰绰有余,而

则直接记为 0。

因此,公式 (3) 再次调整为:

其中,

根据上一篇文章的介绍,

可以通过一个定点小数加上 bit shift 来实现,因此公式 (4) 完全可以通过定点运算进行计算。由于

都是可以事先计算的,因此

也可以事先计算好,实际 inference 的时候,只需要计算

即可。

卷积网络量化流程

了解完整个卷积层的量化,现在我们再来完整过一遍卷积网络的量化流程。

我们继续沿用前文的小网络:

其中,

表示输入和输出,

是网络中间的 feature map,

表示

量化后的定点数,

等同理。

在后训练量化中,我们需要一些样本来统计

以及

的数值范围「即 min, max」,再根据量化的位数以及量化方法来计算 scale 和 zero point。

本文中,我们先采用最简单的量化方式,即统计 min、max 后,按照线性量化公式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值