QConfig
#
from torch.ao.quantization.qconfig import QConfig
QConfig
类是命名元组(namedtuple),包含两个字段:activation
和 weight
。这个类用于描述如何对神经网络的层(或部分)进行量化,通过为激活函数和权重分别提供观测者类(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__
方法中,代码检查了 activation
和 weight
是否为 nn.Module
的实例。如果是,则抛出一个值错误,提示用户传递观测者类而不是观测者实例。如果需要覆盖构造函数的参数,可以使用 MyObserver.with_args(x=1)
这样的语法。