量化如何以及何时在 TFLite Graph 中工作?
How and when does quantization work in a TFLite Graph?
我有一个经过量化训练、冻结、使用 TOCO 转换为 tflite 的 TF 模型,现在我有 TFLite HTML 图形模型和 json。
我可以看到,对于我图中的每个张量,每个张量都有量化属性(最小值、最大值、比例、零点),我正在尝试确定这些属性中的每一个如何应用于每个张量.
例如,我理解representation of quantized data,我可以理解为将量化后的weights/biases乘以比例并加上最小值returns原来的weights/biases(差不多)。
不明白的地方:
- 为什么有些张量有量化属性(如 Relu、Sigmoid)但没有内在参数(如权重和偏置)?是因为它们是输出张量,在数据输入到下一个操作之前应用了量化吗?
- 在数据流通过模型的过程中,在哪些点(如果有)应用量化?例如,假设有一个浮点数图像张量通过了 conv2d 操作 - weights/bias/relu 的量化属性在哪里以及如何用于获取 conv2d 操作的输出?
本质上,如果我将 TFLite 模型数据解析为一个 numpy 数组,我需要了解哪些关于网络数据流的所有信息(关于量化),以便重新创建从头开始推理的模型。
我似乎找不到与此相关的任何文档。任何帮助将不胜感激。
卷积内循环执行 uint8 值的 macc。还有一个较小的外部循环用于计算 macc 的 z 偏移部分。在每个内核卷积结束时,您需要使用 input_scale * kernel_scale / output_scale 的缩小乘数从 int32 累加器缩小到 8 位 uint8 范围。这三个比例值是在训练期间学习的,位于 tflite 推理文件中。本文解释了这些操作。
http://openaccess.thecvf.com/content_cvpr_2018/papers/Jacob_Quantization_and_Training_CVPR_2018_paper.pdf
我有一个经过量化训练、冻结、使用 TOCO 转换为 tflite 的 TF 模型,现在我有 TFLite HTML 图形模型和 json。
我可以看到,对于我图中的每个张量,每个张量都有量化属性(最小值、最大值、比例、零点),我正在尝试确定这些属性中的每一个如何应用于每个张量.
例如,我理解representation of quantized data,我可以理解为将量化后的weights/biases乘以比例并加上最小值returns原来的weights/biases(差不多)。
不明白的地方:
- 为什么有些张量有量化属性(如 Relu、Sigmoid)但没有内在参数(如权重和偏置)?是因为它们是输出张量,在数据输入到下一个操作之前应用了量化吗?
- 在数据流通过模型的过程中,在哪些点(如果有)应用量化?例如,假设有一个浮点数图像张量通过了 conv2d 操作 - weights/bias/relu 的量化属性在哪里以及如何用于获取 conv2d 操作的输出?
本质上,如果我将 TFLite 模型数据解析为一个 numpy 数组,我需要了解哪些关于网络数据流的所有信息(关于量化),以便重新创建从头开始推理的模型。
我似乎找不到与此相关的任何文档。任何帮助将不胜感激。
卷积内循环执行 uint8 值的 macc。还有一个较小的外部循环用于计算 macc 的 z 偏移部分。在每个内核卷积结束时,您需要使用 input_scale * kernel_scale / output_scale 的缩小乘数从 int32 累加器缩小到 8 位 uint8 范围。这三个比例值是在训练期间学习的,位于 tflite 推理文件中。本文解释了这些操作。 http://openaccess.thecvf.com/content_cvpr_2018/papers/Jacob_Quantization_and_Training_CVPR_2018_paper.pdf