Rspress

# #hbDNNQuantiScale

`typedef struct { int32_t scaleLen; float *scaleData; int32_t zeroPointLen; int32_t *zeroPointData; } hbDNNQuantiScale;`

量化/反量化的缩放数据。

对于输入 ：若采集到浮点数据 `data`， 对应的缩放数据是 `scale`，零点偏移数据是 `zeroPoint`，则送入模型的推理数据为g((d a t a/s c a l e)+z e r o P o i n t)g((data / scale) + zeroPoint)g((d a t a/sc a l e)+zero P o in t)，其中： g(x)=c l i p(r o u n d(x))g(x) = clip(round(x))g(x)=c l i p(ro u n d(x))，clip为截断函数，例如U8： g(x)∈[0,255]g(x)∈[0, 255]g(x)∈[0,255]，S8： g(x)∈[−128,127]g(x)∈[-128, 127]g(x)∈[−128,127]。

对于输出 ：若推理结果 `data`，对应的缩放数据是 `scale`，零点偏移数据是 `zeroPoint`，则最终的推理结果为 (d a t a−z e r o P o i n t)∗s c a l e(data - zeroPoint) * scale(d a t a−zero P o in t)∗sc a l e。

其中 `scaleLen` 由数据 `data` 按照 `per-axis` 或 `per-tensor`（反）量化方式决定。 当数据 `data` 按 `per-tensor` （反）量化时，`scaleLen` 等于 `1`，此时不需要关注 `quantizeAxis` 数值； 否则 `quantizeAxis` 表示数据量化轴所在维度索引， `scaleLen` 等于数据 `data` 第 `quantizeAxis` 维度大小。 `zeroPointLen` 与 `scaleLen` 保持一致。

- 成员

成员名称 | 描述
--- | ---
`scaleLen` | 缩放数据的长度。
`scaleData` | 缩放数据的首地址。
`zeropointLen` | 零点偏移数据的长度。
`zeropointData` | 零点偏移数据的首地址。

页面目录