hbDNNQuantiScale

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

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

对于输入 :若采集到浮点数据 data, 对应的缩放数据是 scale,零点偏移数据是 zeroPoint,则送入模型的推理数据为g((data/scale)+zeroPoint)g((data / scale) + zeroPoint),其中: g(x)=clip(round(x))g(x) = clip(round(x)),clip为截断函数,例如U8: g(x)[0,255]g(x)∈[0, 255],S8: g(x)[128,127]g(x)∈[-128, 127]

对于输出 :若推理结果 data,对应的缩放数据是 scale,零点偏移数据是 zeroPoint,则最终的推理结果为 (datazeroPoint)scale(data - zeroPoint) * scale

其中 scaleLen 由数据 data 按照 per-axisper-tensor(反)量化方式决定。 当数据 dataper-tensor (反)量化时,scaleLen 等于 1,此时不需要关注 quantizeAxis 数值; 否则 quantizeAxis 表示数据量化轴所在维度索引, scaleLen 等于数据 dataquantizeAxis 维度大小。 zeroPointLenscaleLen 保持一致。

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