直方图观察器 ¶
- class torch.ao.quantization.observer.HistogramObserver(bins=2048, dtype=torch.quint8, qscheme=torch.per_tensor_affine, reduce_range=False, quant_min=None, quant_max=None, factory_kwargs=None, eps=1.1920928955078125e-07, is_dynamic=False, **kwargs)[source][source]¶
该模块记录张量值的运行直方图以及最小/最大值。
calculate_qparams
将计算缩放和零点。- 参数:
柜子(int)- 用于直方图的柜子数量
dtype(dtype)- 量化节点需要的 dtype 参数,用于实现参考模型规范
qscheme – 要使用的量化方案
reduce_range – 通过 1 位减少量化数据类型的范围
eps (Tensor) – float32 的 Epsilon 值,默认为 torch.finfo(torch.float32).eps。
比例尺和零点计算如下:
- 创建输入数据的直方图。
直方图是连续计算的,每个新观察到的张量都会改变每个 bin 的范围。
- 在直方图中搜索分布以找到最优的 min/max 值。
搜索 min/max 值确保相对于浮点模型的最小化量化误差。
- 计算比例和零点的方法与以下相同。
MinMaxObserver