/usr/local/lib64/python3.6/site-packages/torch/ao/quantization
NameSizeModeActions
__pycache__/-0755rm
fake_quantize.py185370644editdlrm
fuser_method_mappings.py53610644editdlrm
fuse_modules.py57690644editdlrm
observer.py527930644editdlrm
qconfig.py117010644editdlrm
quantization_mappings.py94300644editdlrm
quantize.py242670644editdlrm
quantize_jit.py90440644editdlrm
quant_type.py4510644editdlrm
stubs.py18550644editdlrm
utils.py84420644editdlrm
_correct_bias.py49670644editdlrm
_equalize.py65530644editdlrm
_learnable_fake_quantize.py72460644editdlrm
__init__.py1630644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/ao/quantization/stubs.py (1855B)
from torch import nn class QuantStub(nn.Module): r"""Quantize stub module, before calibration, this is same as an observer, it will be swapped as `nnq.Quantize` in `convert`. Args: qconfig: quantization configuration for the tensor, if qconfig is not provided, we will get qconfig from parent modules """ def __init__(self, qconfig=None): super(QuantStub, self).__init__() if qconfig: self.qconfig = qconfig def forward(self, x): return x class DeQuantStub(nn.Module): r"""Dequantize stub module, before calibration, this is same as identity, this will be swapped as `nnq.DeQuantize` in `convert`. """ def __init__(self): super(DeQuantStub, self).__init__() def forward(self, x): return x class QuantWrapper(nn.Module): r"""A wrapper class that wraps the input module, adds QuantStub and DeQuantStub and surround the call to module with call to quant and dequant modules. This is used by the `quantization` utility functions to add the quant and dequant modules, before `convert` function `QuantStub` will just be observer, it observes the input tensor, after `convert`, `QuantStub` will be swapped to `nnq.Quantize` which does actual quantization. Similarly for `DeQuantStub`. """ quant: QuantStub dequant: DeQuantStub module: nn.Module def __init__(self, module): super(QuantWrapper, self).__init__() qconfig = module.qconfig if hasattr(module, 'qconfig') else None self.add_module('quant', QuantStub(qconfig)) self.add_module('dequant', DeQuantStub()) self.add_module('module', module) self.train(module.training) def forward(self, X): X = self.quant(X) X = self.module(X) return self.dequant(X)