评价此页

FakeQuantize#

class torch.ao.quantization.fake_quantize.FakeQuantize(observer=<class 'torch.ao.quantization.observer.MovingAverageMinMaxObserver'>, quant_min=None, quant_max=None, is_dynamic=False, **observer_kwargs)[source]#

模拟训练时的量化和反量化操作。

此模块的输出由以下公式给出:

x_out = (
    clamp(round(x / scale + zero_point), quant_min, quant_max) - zero_point
) * scale
  • is_dynamic 指示 fake quantie 是动态量化算子(choose_qparams -> q -> dq)的占位符还是静态量化算子(q -> dq)。

  • scale 定义了用于量化的尺度因子。

  • zero_point 指定了浮点数 0 映射到的量化值。

  • fake_quant_enabled 控制 fake 量化在张量上的应用,请注意统计数据仍可更新。

  • observer_enabled 控制张量上的统计数据收集。

  • dtype 指定正在通过 fake-quantization 模拟的量化 dtype,

    允许的值为 torch.qint8 和 torch.quint8。

参数
  • observer (module) – 用于观察输入张量上的统计数据并计算尺度和零点的模块。

  • observer_kwargs (optional) – 观察器模块的参数。

变量

activation_post_process (Module) – 用户提供的模块,用于收集输入张量上的统计数据并提供计算尺度和零点的方法。