☰
TFLite INT8 量化为何把 BatchMatMul 拆成大量 FullyConnected
2026/10/29 2:47:27 网站建设 项目流程

把 PyTorch 模型经 ONNX、TensorFlow SavedModel 转成 TFLite 时,常会对比 float32 与 INT8 两版模型的算子构成。int8 版本里容易出现一种很刺眼的现象:原本几个BatchMatMul全部消失,取而代之的是几十个细碎的FullyConnected。这不是转换脚本的 bug,而是 TFLite 量化器的既定行为。

问题现象

转换链路:

ONNX → TF SavedModel → TFLite (float32) / TFLite (INT8)

float32 版本的算子统计:

Einsum → BatchMatMul 3 × BatchMatMul 1 × FullyConnected 合计 4 个矩阵运算

INT8 量化后的算子统计:

0 × BatchMatMul 65 × FullyConnected 合计 65 个小矩阵乘

每个FullyConnected做的都是很小的乘法:[1, 1, 32] × [12, 32] → [1, 12]。也就是说,批/组维度的每一个元素被拆成了一个独立算子。float32 模型里Einsum被正确折

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询