---
title: MIN-MAX量化算法
description: "该算法是统计数据（activation）和权重（weight）中数据的最大值最小值，根据最大值和最小值，将数据缩放到量化位宽的边界值范围，然后根据量化公式计算出对应的缩放因子scale与偏移值offset。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/amct/atlasamct_16_0417.html
sourcePath: /source/zh/canncommercial/900/devaids/amct/atlasamct_16_0417.html
indexId: 496b0463084c6169901113384f1280b9995747ab80f8d6449fd003c0daf37e3d65
---
# MIN-MAX量化算法

该算法是统计数据（activation）和权重（weight）中数据的最大值最小值，根据最大值和最小值，将数据缩放到量化位宽的边界值范围，然后根据量化公式计算出对应的缩放因子scale与偏移值offset。

在初始化时，根据weight_granularity（参数介绍请参见config详细配置）离线计算weight的最大值和最小值，离线计算得到scale_w/offset_w，添加到record对象中。前向传播时，获取当前batch的最大最小值，并刷新全局最大最小值。获取weight和activation的min/max值后，根据下面公式，计算scale和offset（对于weight，只支持对称场景，offset为0）。

- 对称量化场景
  scale=

  if abs(max) > abs(min)

  abs(max)/(2^(quant_bit-1)-1)

  else

  abs(max)/(2^(quant_bit-1))

  offset=0

- 非对称量化场景
  scale=(max-min)/(2^quant_bit-1)

  offset=-2^(quant_bit-1)-min/scale
