如何在 Python 中执行定点量化

Posted

技术标签:

【中文标题】如何在 Python 中执行定点量化【英文标题】:How to perform fixed-point quantization in Python 【发布时间】:2021-03-26 00:11:56 【问题描述】:

我希望量化现有神经网络模型的权重和偏差。据我了解,定点表示可确保权重、偏差和激活的固定位宽,并具有预定固定数量的整数和小数位。

基本上我想执行训练后量化。我查看了这篇文章https://www.tensorflow.org/model_optimization/guide/quantization/post_training。

但是我找不到任何支持我想要做的事情,即能够在权重、偏差和激活的定点表示方案中指定整数和小数位的数量。

我确实找到了似乎支持此功能的 QKeras 库。但是,它似乎没有内置的量化 sigmoid 层。

任何可以帮助我做我想做的事情的指针或图书馆/文章推荐,都会非常有帮助,非常感谢。

【问题讨论】:

【参考方案1】:

一种使用任意定点小数(基数为 2)类型量化权重和偏差的方法是使用fxpmath python 包。

您正在尝试做的一个简单示例是这个 jupyter 笔记本:Fixed-Point Precision Neural Network for MNIST dataset。考虑到它只显示权重和偏差的转换来评估推理性能,而不是激活。这也可以使用相同的包手动实现(它支持 Numpy)。

【讨论】:

以上是关于如何在 Python 中执行定点量化的主要内容,如果未能解决你的问题,请参考以下文章

开源项目|基于darknet实现量化感知训练,已实现yolov3-tiny所有算子

如何在 sse 中实现有符号定点数学中向零的衰减?

如何在运行中编写一个固定点和一个变化的贝塞尔曲线路径

一文搞懂模型量化算法

如何在 Python 中矢量化点积?

python - 如何在python scikit-learn中进行字典向量化后预测单个新样本?