QConfig

QConfig#

from torch.ao.quantization.qconfig import QConfig

QConfig 类是命名元组(namedtuple),包含两个字段:activationweight。这个类用于描述如何对神经网络的层(或部分)进行量化,通过为激活函数和权重分别提供观测者类(observer classes)或可调用对象来设置。

需要注意的是,QConfig 需要包含观测者类(如 MinMaxObserver),而不是具体的观察者实例本身。量化准备函数将为每个层多次实例化观测者。

观测者类通常具有合理的默认参数,但可以使用 with_args 方法覆盖它们(类似于 functools.partial):

my_qconfig = QConfig(
    activation=MinMaxObserver.with_args(dtype=torch.qint8),
    weight=default_observer.with_args(dtype=torch.qint8))

__new__ 方法中,代码检查了 activationweight 是否为 nn.Module 的实例。如果是,则抛出一个值错误,提示用户传递观测者类而不是观测者实例。如果需要覆盖构造函数的参数,可以使用 MyObserver.with_args(x=1) 这样的语法。