快捷键

torch.ao.quantization.stubs 的源代码

# mypy: 允许未类型化定义

from 火炬 导入 神经网络


[文档]类 QuantStub(nn.Module): r"""量化占位模块,在校准之前,这与观察者相同, 在`convert`中将替换为`nnq.Quantize`。 Args: qconfig:张量量化配置, 如果未提供 qconfig,我们将从父模块获取 qconfig """ def __init__(self, qconfig=None): super().__init__() if qconfig: self.qconfig = qconfig def forward(self, x): return x
[docs]class DeQuantStub(nn.Module): r"""Dequantize stub 模块,在校准之前,这与恒等映射相同, 这将在 `convert` 中被替换为 `nnq.DeQuantize` Args: qconfig:张量的量化配置, 如果未提供 qconfig,我们将从父模块获取 qconfig """ def __init__(self, qconfig=None): super().__init__() if qconfig: self.qconfig = qconfig def forward(self, x): return x
[文档]class QuantWrapper(nn.Module): 这是一个包装输入模块的包装类,添加了 QuantStub 和 DeQuantStub,并将对模块的调用包围在量化和反量化模块的调用中。 这被`量化`实用函数用于添加量化和反量化。 模块。 这被`量化`实用函数用于添加量化和反量化功能。 dequant 模块,在`convert`函数之前,`QuantStub`只是一个观察者, 它观察输入张量,在`convert`之后,`QuantStub` 将被替换为`nnq.Quantize`,它执行实际的量化。同样地 对于`DeQuantStub`。 "源代码" 量级占位符 去量化占位符 神经网络模块 def __init__(self, 模块): super().__init__() qconfig = getattr(模块, "qconfig", None) self.add_module("量化", QuantStub(qconfig))) self.add_module("dequant", DeQuantStub(qconfig)) 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)

© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

查看 PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源,获取您的疑问解答

查看资源