# QuantParam
## 概述
量化参数结构体。
相关的公式如下,q为量化后的参数,r为真实参数,$ r_{max} $为待量化数据的最大值,$ r_{min} $待量化数据的最小值,$ round(x) $为x四舍五入取整,$ clamp(x,min,max) $为如下运算:
$ \text{clamp}(x,min,max) = \begin{cases} \text{max} & \text{ if } x > \text{ max } \\ \text{min} & \text{ if } x < \text{ min } \\ x & \text{ otherwise } \\ \end{cases} $
- 浮点到定点的量化公式:
$ \text{q}(x_i) = clamp(round(\frac{r}{scale}+zeroPoint), min , max) $
- 定点到浮点的反量化公式:
$ \text{r}= (q-zeroPoint)\*scale $
- 量化参数scale由如下公式计算:
$ scale = \frac{r_{max}-r_{min}}{q_{max}-q_{min}} $
- 量化参数zeroPoint由如下公式计算:
$ zeroPoint = round(q_{min}-\frac{r_{min}}{scale}) $
- 量化参数 \( q_{min},q_{max} \) 如下公式计算:
$ q_{min} = -(1<<(numBits-1)) $
$ q_{max} = (1<<(numBits-1))-1 $
特殊情况:当$ r_{min} $和$ r_{max} $同时为0时,scale 和 zeroPoint均为0。
**Since:**
3.2
**Version:**
1.0
**相关模块:**
[NNRt](_n_n_rt.md)
## 汇总
### Public 属性
| 名称 | 描述 |
| -------- | -------- |
| [numBits](#numbits) | int
量化的bit数 |
| [zeroPoint](#zeropoint) | int
零值 |
| [scale](#scale) | double
量化器的步长 |
## 类成员变量说明
### numBits
```
int QuantParam::numBits
```
**描述:**
量化的bit数
### scale
```
double QuantParam::scale
```
**描述:**
量化器的步长
### zeroPoint
```
int QuantParam::zeroPoint
```
**描述:**
零值