评价此页

Quantization API Reference#

Created On: Jul 25, 2020 | Last Updated On: Dec 01, 2025

torch.ao.quantization#

此模块包含 Eager 模式下的量化 API。

Top level APIs#

quantize

使用训练后静态量化量化输入浮点模型。

quantize_dynamic

将浮点模型转换为动态(即仅权重)量化模型。

quantize_qat

进行量化感知训练并输出量化模型

prepare

为量化校准或量化感知训练准备模型副本。

prepare_qat

为量化校准或量化感知训练准备模型副本,并将其转换为量化版本。

convert

根据 mapping,通过调用目标模块类的 from_float 方法,将输入模块中的子模块转换为不同的模块。

Preparing model for quantization#

fuse_modules.fuse_modules

将模块列表融合成一个单独的模块。

QuantStub

量化存根模块,在校准之前,它与观察器相同,在 convert 中会被替换为 nnq.Quantize

DeQuantStub

反量化存根模块,在校准之前,它与身份函数相同,在 convert 中会被替换为 nnq.DeQuantize

QuantWrapper

一个包装类,用于包装输入模块,添加 QuantStub 和 DeQuantStub,并将模块的调用包裹在对 quant 和 dequant 模块的调用中。

add_quant_dequant

如果叶子子模块有有效的 qconfig,则使用 QuantWrapper 包装叶子子模块。请注意,此函数将就地修改模块的子模块,并且它也可以返回一个包装输入模块的新模块。

Utility functions#

swap_module

如果模块有量化对应项且已附加 observer,则交换该模块。

propagate_qconfig_

通过模块层级结构传播 qconfig,并在每个叶子模块上分配 qconfig 属性

default_eval_fn

定义默认的评估函数。

torch.ao.quantization.utils#

跨不同量化模式(eager/graph)共享的工具函数

activation_is_dynamically_quantized

给定一个 qconfig,决定激活是否需要动态量化,这包括动态量化到 quint8、qint8 和 float16

activation_is_int32_quantized

给定一个 qconfig,决定激活是否需要量化到 int32

activation_is_int8_quantized

给定一个 qconfig,决定激活是否需要量化到 int8,这包括量化到 quint8、qint8

activation_is_statically_quantized

给定一个 qconfig,决定激活是否需要量化,这包括量化到 quint8、qint8 和 qint32 以及 float16

determine_qparams

计算量化参数,给定最小值和最大值张量。

check_min_max_valid

检查给定的最小值和最大值是否有效,即它们是否存在且最小值小于最大值。

calculate_qmin_qmax

根据量化范围、观察器数据类型以及范围是否已缩减,计算实际的 qmin 和 qmax。

validate_qmin_qmax

验证用户指定的量化范围是否已正确初始化并且在观察器数据类型支持的给定范围内。

torch.ao.quantization.quantize_fx#

此模块包含 FX 图模式量化 API(原型)。

prepare_fx

为训练后量化准备模型

prepare_qat_fx

为量化感知训练准备模型

convert_fx

将已校准或已训练的模型转换为量化模型

fuse_fx

融合 conv+bn、conv+bn+relu 等模块,模型必须处于 eval 模式。

torch.ao.quantization.qconfig_mapping#

此模块包含 QConfigMapping,用于配置 FX 图模式量化。

QConfigMapping

模型算子到 torch.ao.quantization.QConfig 的映射。

get_default_qconfig_mapping

返回训练后量化的默认 QConfigMapping。

get_default_qat_qconfig_mapping

返回量化感知训练的默认 QConfigMapping。

torch.ao.quantization.backend_config#

此模块包含 BackendConfig,这是一个配置对象,定义了后端中如何支持量化。目前仅由 FX 图模式量化使用,但我们可能会将其扩展到 Eager 模式量化。

BackendConfig

定义给定后端上可量化的模式集合,以及如何从这些模式生成参考量化模型的配置。

BackendPatternConfig

指定给定算子模式量化行为的配置对象。

DTypeConfig

指定用于输入和输出激活、权重和偏差的参考模型规范中用于量化算子的数据类型的配置对象。

DTypeWithConstraints

用于为给定 dtype 指定附加约束的配置,例如量化值范围、比例值范围和固定量化参数,用于 DTypeConfig

ObservationType

一个枚举,代表算子/算子模式应如何被观察的不同方式

torch.ao.quantization.backend_config.utils#

entry_to_pretty_str

给定一个 backend_config_dict 条目,返回其人类可读表示形式的字符串。

pattern_to_human_readable

remove_boolean_dispatch_from_name

某些 op 有默认的字符串表示形式,例如“<function boolean_dispatch.<locals>.fn at 0x7ff1106bf280>”,此函数将它们替换为硬编码的函数名称。

torch.ao.quantization.fx.custom_config#

此模块包含几个 CustomConfig 类,它们在 eager 模式和 FX 图模式量化中都使用

FuseCustomConfig

用于 fuse_fx() 的自定义配置。

PrepareCustomConfig

用于 prepare_fx()prepare_qat_fx() 的自定义配置。

ConvertCustomConfig

用于 convert_fx() 的自定义配置。

StandaloneModuleConfigEntry

torch.ao.quantization.fx.utils#

all_node_args_except_first

返回第一个之后的所有节点参数索引

all_node_args_have_no_tensors

如果我们确定该节点的所有参数都没有张量(都是原语),则返回 True。

collect_producer_nodes

从目标节点开始,追溯到遇到 input 或 getattr 节点。这用于提取从 getattr 到目标节点的算子链,例如:.

create_getattr_from_value

给定任何类型的 a 值,创建一个对应的 getattr 节点,并将该值注册为模块的 buffer。

create_node_from_old_node_preserve_meta

创建 new_node 并将必要的元数据从 old_node 复制到其中。

graph_module_from_producer_nodes

collect_producer_nodes 函数提取的生产者节点构建一个图模块 :param root: 原始图的根模块 :param producer_nodes: 用于构建图的节点列表

maybe_get_next_module

获取与 is_target_module_type 所需的模块匹配的下一个模块(如果存在)

node_arg_is_bias

返回节点参数是否为 bias

node_arg_is_weight

返回节点参数是否为 weight

return_arg_list

构建一个函数,该函数接受一个节点作为参数,并返回对 node.args 有效的 arg_indices

torch.ao.quantization.quantizer#

torch.ao.quantization.pt2e (pytorch 2.0 导出实现中的量化)#

torch.ao.quantization.pt2e.export_utils#

model_is_exported

如果 torch.nn.Module 已导出,则返回 True,否则返回 False(例如,如果模型是 FX 符号跟踪的或根本未跟踪)。

torch.ao.quantization.pt2e.lowering#

lower_pt2e_quantized_to_x86

将 PT2E 量化模型降级到 x86 后端。

PT2 Export (pt2e) Numeric Debugger#

generate_numeric_debug_handle

为给定 ExportedProgram 的图模块中的所有节点(例如 conv2d、squeeze、conv1d 等,除了 placeholder)附加 numeric_debug_handle_id。

CUSTOM_KEY

str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

NUMERIC_DEBUG_HANDLE_KEY

str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

prepare_for_propagation_comparison

向具有 numeric_debug_handle 的节点添加输出记录器

extract_results_from_loggers

对于给定模型,提取每个调试句柄的张量统计信息和相关信息。

compare_results

给定两个映射(从 debug_handle_id(整数)到张量列表)的字典,返回一个从 debug_handle_idNodeAccuracySummary 的映射,该映射包含 SQNR、MSE 等比较信息。

torch.ao.quantization.observer#

此模块包含观察器,用于在校准(PTQ)或训练(QAT)期间收集值统计信息。

ObserverBase

基本观察器模块。

MinMaxObserver

基于运行中的最小值和最大值计算量化参数的观察器模块。

MovingAverageMinMaxObserver

基于最小值和最大值的移动平均值计算量化参数的观察器模块。

PerChannelMinMaxObserver

用于基于运行时的逐通道最小/最大值计算量化参数的观察者模块。

MovingAveragePerChannelMinMaxObserver

用于基于运行时的逐通道最小/最大值计算量化参数的观察者模块。

HistogramObserver

该模块记录张量值的运行直方图以及最小值/最大值。

PlaceholderObserver

一个不执行任何操作的观察器,只将其配置传递给量化模块的 .from_float()

RecordingObserver

该模块主要用于调试,并在运行时记录张量值。

NoopObserver

一个不执行任何操作的观察器,只将其配置传递给量化模块的 .from_float()

get_observer_state_dict

返回对应于观察器统计数据的 state dict。

load_observer_state_dict

给定输入模型和一个包含模型观察器统计数据的 state_dict,将统计数据加载回模型。

default_observer

静态量化的默认观察器,通常用于调试。

default_placeholder_observer

默认占位符观察器,通常用于量化到 torch.float16。

default_debug_observer

默认仅用于调试的观察器。

default_weight_observer

默认权重观察器。

default_histogram_observer

默认直方图观察器,通常用于 PTQ。

default_per_channel_weight_observer

默认逐通道权重观察器,通常用于支持逐通道权重量化的后端,例如 fbgemm

default_dynamic_quant_observer

动态量化的默认观察器。

default_float_qparams_observer

浮点零点的默认观察器。

AffineQuantizedObserverBase

仿射量化的观察器模块(pytorch/ao

Granularity

表示量化粒度的基类。

MappingType

浮点数如何映射到整数

PerAxis

表示量化中的逐轴粒度。

PerBlock

表示量化中的逐块粒度。

PerGroup

表示量化中的逐通道组粒度。

PerRow

表示量化中的逐行粒度。

PerTensor

表示逐张量粒度。

PerToken

表示量化中的逐 token 粒度。

TorchAODType

PyTorch 核心中尚不存在的数据类型的占位符。

ZeroPointDomain

枚举,指示零点是在整数域还是浮点域

get_block_size

根据输入形状和粒度类型获取块大小。

torch.ao.quantization.fake_quantize#

此模块实现了在 QAT 期间用于执行伪量化的模块。

FakeQuantizeBase

伪量化基模块。

FakeQuantize

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

FixedQParamsFakeQuantize

在训练时模拟量化和反量化。

FusedMovingAvgObsFakeQuantize

定义用于观察张量的融合模块。

default_fake_quant

激活的默认伪量化。

default_weight_fake_quant

权重的默认伪量化。

default_per_channel_weight_fake_quant

逐通道权重的默认伪量化。

default_histogram_fake_quant

使用直方图的激活伪量化。

default_fused_act_fake_quant

默认伪量化的融合版本,性能更优。

default_fused_wt_fake_quant

默认权重伪量化的融合版本,性能更优。

default_fused_per_channel_wt_fake_quant

默认逐通道权重伪量化的融合版本,性能更优。

disable_fake_quant

禁用模块的伪量化。

enable_fake_quant

启用模块的伪量化。

disable_observer

禁用此模块的观察。

enable_observer

启用此模块的观察。

torch.ao.quantization.qconfig#

此模块定义了 QConfig 对象,这些对象用于为单个算子配置量化设置。

QConfig

通过分别提供激活和权重的观察器类来描述如何量化层或网络的一部分。

default_qconfig

默认 qconfig 配置。

default_debug_qconfig

用于调试的默认 qconfig 配置。

default_per_channel_qconfig

用于逐通道权重量化的默认 qconfig 配置。

default_dynamic_qconfig

默认动态 qconfig。

float16_dynamic_qconfig

权重量化为 torch.float16 的动态 qconfig。

float16_static_qconfig

激活和权重都量化为 torch.float16 的动态 qconfig。

per_channel_dynamic_qconfig

逐通道量化权重的动态 qconfig。

float_qparams_weight_only_qconfig

具有浮点零点的权重量化的动态 qconfig。

default_qat_qconfig

QAT 的默认 qconfig。

default_weight_only_qconfig

仅量化权重的默认 qconfig。

default_activation_only_qconfig

仅量化激活的默认 qconfig。

default_qat_qconfig_v2

默认 QAT 配置的融合版本,具有性能优势。

torch.ao.nn.intrinsic#

此模块实现了可量化的组合(融合)模块 conv + relu。

ConvReLU1d

这是一个顺序容器,它调用 Conv1d 和 ReLU 模块。

ConvReLU2d

这是一个顺序容器,它调用 Conv2d 和 ReLU 模块。

ConvReLU3d

这是一个顺序容器,它调用 Conv3d 和 ReLU 模块。

LinearReLU

这是一个顺序容器,它调用 Linear 和 ReLU 模块。

ConvBn1d

这是一个顺序容器,它调用 Conv 1d 和 Batch Norm 1d 模块。

ConvBn2d

这是一个顺序容器,它调用 Conv 2d 和 Batch Norm 2d 模块。

ConvBn3d

这是一个顺序容器,它调用 Conv 3d 和 Batch Norm 3d 模块。

ConvBnReLU1d

这是一个顺序容器,它调用 Conv 1d、Batch Norm 1d 和 ReLU 模块。

ConvBnReLU2d

这是一个顺序容器,它调用 Conv 2d、Batch Norm 2d 和 ReLU 模块。

ConvBnReLU3d

这是一个顺序容器,它调用 Conv 3d、Batch Norm 3d 和 ReLU 模块。

BNReLU2d

这是一个顺序容器,它调用 BatchNorm 2d 和 ReLU 模块。

BNReLU3d

这是一个顺序容器,它调用 BatchNorm 3d 和 ReLU 模块。

torch.ao.nn.intrinsic.qat#

此模块实现了量化感知训练所需的融合操作版本。

LinearReLU

一个由 Linear 和 ReLU 模块融合而成的 LinearReLU 模块,附加了权重的 FakeQuantize 模块,用于量化感知训练。

ConvBn1d

一个由 Conv1d 和 BatchNorm1d 融合而成的 ConvBn1d 模块,附加了权重的 FakeQuantize 模块,用于量化感知训练。

ConvBnReLU1d

一个由 Conv1d、BatchNorm1d 和 ReLU 融合而成的 ConvBnReLU1d 模块,附加了权重的 FakeQuantize 模块,用于量化感知训练。

ConvBn2d

一个由 Conv2d 和 BatchNorm2d 融合而成的 ConvBn2d 模块,附加了权重的 FakeQuantize 模块,用于量化感知训练。

ConvBnReLU2d

一个由 Conv2d、BatchNorm2d 和 ReLU 融合而成的 ConvBnReLU2d 模块,附加了权重的 FakeQuantize 模块,用于量化感知训练。

ConvReLU2d

一个由 Conv2d 和 ReLU 融合而成的 ConvReLU2d 模块,附加了权重的 FakeQuantize 模块,用于量化感知训练。

ConvBn3d

一个由 Conv3d 和 BatchNorm3d 融合而成的 ConvBn3d 模块,附加了权重的 FakeQuantize 模块,用于量化感知训练。

ConvBnReLU3d

一个由 Conv3d、BatchNorm3d 和 ReLU 融合而成的 ConvBnReLU3d 模块,附加了权重的 FakeQuantize 模块,用于量化感知训练。

ConvReLU3d

一个由 Conv3d 和 ReLU 融合而成的 ConvReLU3d 模块,附加了权重的 FakeQuantize 模块,用于量化感知训练。

update_bn_stats

freeze_bn_stats

torch.ao.nn.intrinsic.quantized#

此模块实现了诸如 conv + relu 等融合操作的量化实现。没有 BatchNorm 变体,因为它们通常在推理时折叠到卷积中。

BNReLU2d

一个由 BatchNorm2d 和 ReLU 融合而成的 BNReLU2d 模块

BNReLU3d

一个由 BatchNorm3d 和 ReLU 融合而成的 BNReLU3d 模块

ConvReLU1d

一个由 Conv1d 和 ReLU 融合而成的 ConvReLU1d 模块

ConvReLU2d

一个由 Conv2d 和 ReLU 融合而成的 ConvReLU2d 模块

ConvReLU3d

一个由 Conv3d 和 ReLU 融合而成的 ConvReLU3d 模块

LinearReLU

一个由 Linear 和 ReLU 模块融合而成的 LinearReLU 模块

torch.ao.nn.intrinsic.quantized.dynamic#

此模块实现了诸如 linear + relu 等融合操作的量化动态实现。

LinearReLU

一个由 Linear 和 ReLU 模块融合而成的 LinearReLU 模块,可用于动态量化。

torch.ao.nn.qat#

此模块实现了关键 nn 模块 **Conv2d()** 和 **Linear()** 的版本,这些版本在 FP32 中运行,但应用了舍入以模拟 INT8 量化的效果。

Conv2d

一个附加了权重的 FakeQuantize 模块的 Conv2d 模块,用于量化感知训练。

Conv3d

一个附加了权重的 FakeQuantize 模块的 Conv3d 模块,用于量化感知训练。

Linear

一个附加了权重的 FakeQuantize 模块的线性模块,用于量化感知训练。

torch.ao.nn.qat.dynamic#

此模块实现了诸如 **Linear()** 等关键 nn 模块的版本,这些模块在 FP32 中运行,但应用了舍入以模拟 INT8 量化的效果,并在推理期间动态量化。

Linear

一个附加了权重的 FakeQuantize 模块的线性模块,用于动态量化感知训练。

torch.ao.nn.quantized#

此模块实现了 nn 层(如 ~torch.nn.Conv2dtorch.nn.ReLU)的量化版本。

ReLU6

应用逐元素的函数

Hardswish

这是 Hardswish 的量化版本。

ELU

这是 ELU 的量化等效版本。

LeakyReLU

这是 LeakyReLU 的量化等效版本。

Sigmoid

这是 Sigmoid 的量化等效版本。

BatchNorm2d

这是 BatchNorm2d 的量化版本。

BatchNorm3d

这是 BatchNorm3d 的量化版本。

Conv1d

对由多个量化输入平面组成的量化输入信号应用一维卷积。

Conv2d

对由多个量化输入平面组成的量化输入信号应用二维卷积。

Conv3d

对由多个量化输入平面组成的量化输入信号应用三维卷积。

ConvTranspose1d

对由多个输入平面组成的输入图像应用 1D 转置卷积运算符。

ConvTranspose2d

对由多个输入平面组成的输入图像应用 2D 转置卷积运算符。

ConvTranspose3d

对由多个输入平面组成的输入图像应用 3D 转置卷积算子。

Embedding

一个量化 Embedding 模块,具有量化的打包权重作为输入。

EmbeddingBag

一个量化 EmbeddingBag 模块,具有量化的打包权重作为输入。

FloatFunctional

浮点运算的状态收集器类。

FXFloatFunctional

用于在 FX 图模式量化之前替换 FloatFunctional 模块的模块,因为 activation_post_process 将直接插入到顶层模块中

QFunctional

量化运算的包装类。

Linear

一个量化线性模块,具有量化张量作为输入和输出。

LayerNorm

这是 LayerNorm 的量化版本。

GroupNorm

这是 GroupNorm 的量化版本。

InstanceNorm1d

这是 InstanceNorm1d 的量化版本。

InstanceNorm2d

这是 InstanceNorm2d 的量化版本。

InstanceNorm3d

这是 InstanceNorm3d 的量化版本。

torch.ao.nn.quantized.functional#

函数接口 (已量化)。

此模块实现了函数式层的量化版本,例如 ~torch.nn.functional.conv2dtorch.nn.functional.relu。注意: torch.nn.functional.relu~torch.nn.functional.relu 支持量化输入。

avg_pool2d

kH×kWkH \times kW 区域上应用 2D 平均池化操作,步长为 sH×sWsH \times sW 步。

avg_pool3d

kD timeskH×kWkD \ times kH \times kW 区域上应用 3D 平均池化操作,步长为 sD×sH×sWsD \times sH \times sW 步。

adaptive_avg_pool2d

对由多个量化输入平面组成的量化输入信号应用 2D 自适应平均池化。

adaptive_avg_pool3d

对由多个量化输入平面组成的量化输入信号应用 3D 自适应平均池化。

conv1d

对由多个输入平面组成的量化 1D 输入应用 1D 卷积。

conv2d

对由多个输入平面组成的量化 2D 输入应用 2D 卷积。

conv3d

对由多个输入平面组成的量化 3D 输入应用 3D 卷积。

interpolate

将输入下/上采样到给定 size 或给定 scale_factor

linear

对输入的量化数据应用线性变换:y=xAT+by = xA^T + b

max_pool1d

对由多个量化输入平面组成的量化输入信号应用 1D 最大池化。

max_pool2d

对由多个量化输入平面组成的量化输入信号应用 2D 最大池化。

celu

逐元素应用量化的 CELU 函数。

leaky_relu

的量化版本。

hardtanh

这是 hardtanh() 的量化版本。

hardswish

这是 hardswish() 的量化版本。

threshold

逐元素应用阈值函数的量化版本

elu

这是 elu() 的量化版本。

hardsigmoid

这是 hardsigmoid() 的量化版本。

clamp

float(input, min_, max_) -> Tensor

upsample

将输入上采样到给定 size 或给定 scale_factor

upsample_bilinear

使用双线性上采样对输入进行上采样。

upsample_nearest

使用最近邻像素值对输入进行上采样。

torch.ao.nn.quantizable#

此模块实现了某些 nn 模块的可量化版本。这些模块可以与自定义模块机制结合使用,方法是将 custom_module_config 参数同时提供给 prepare 和 convert。

LSTM

可量化的长短期记忆 (LSTM)。

MultiheadAttention

torch.ao.nn.quantized.dynamic#

动态量化的 LinearLSTMLSTMCellGRUCellRNNCell

Linear

具有浮点张量作为输入和输出的动态量化线性模块。

LSTM

具有浮点张量作为输入和输出的动态量化 LSTM 模块。

GRU

将多层门控循环单元 (GRU) RNN 应用于输入序列。

RNNCell

一个具有 tanh 或 ReLU 非线性的 Elman RNN 单元。

LSTMCell

一个长短期记忆 (LSTM) 单元。

GRUCell

门控循环单元 (GRU) 单元

量化数据类型和量化方案#

请注意,目前算子实现仅支持 **conv** 和 **linear** 算子权重的逐通道量化。此外,输入数据和量化数据之间的映射如下:

Quantization:Qout=clamp(xinput/s+z,Qmin,Qmax)Dequantization:xout=(Qinputz)s\begin{aligned} \text{Quantization:}&\\ &Q_\text{out} = \text{clamp}(x_\text{input}/s+z, Q_\text{min}, Q_\text{max})\\ \text{Dequantization:}&\\ &x_\text{out} = (Q_\text{input}-z)*s \end{aligned}

其中 clamp(.)\text{clamp}(.)clamp() 相同,而缩放因子 ss 和零点 zz 的计算方式如 MinMaxObserver 中所述,具体如下:

if Symmetric:s=2max(xmin,xmax)/(QmaxQmin)z={0if dtype is qint8128otherwiseOtherwise:s=(xmaxxmin)/(QmaxQmin)z=Qminround(xmin/s)\begin{aligned} \text{if Symmetric:}&\\ &s = 2 \max(|x_\text{min}|, x_\text{max}) / \left( Q_\text{max} - Q_\text{min} \right) \\ &z = \begin{cases} 0 & \text{if dtype is qint8} \\ 128 & \text{otherwise} \end{cases}\\ \text{Otherwise:}&\\ &s = \left( x_\text{max} - x_\text{min} \right ) / \left( Q_\text{max} - Q_\text{min} \right ) \\ &z = Q_\text{min} - \text{round}(x_\text{min} / s) \end{aligned}

其中 :math:[x_\text{min}, x_\text{max}] 表示输入数据的范围,:math:Q_\text{min} 和 :math:Q_\text{max} 分别是量化数据类型的最小值和最大值。

请注意,:math:s 和 :math:z 的选择意味着,只要零点位于输入数据的范围内或使用了对称量化,零点就不会产生量化误差。

可以通过 自定义 算子 机制 <https://pytorch.ac.cn/tutorials/advanced/torch_script_custom_ops.html>_ 实现额外的数据类型和量化方案。

  • torch.qscheme — 用于描述张量量化方案的类型。支持的类型

    • torch.per_tensor_affine — 每张量,非对称

    • torch.per_channel_affine — 每通道,非对称

    • torch.per_tensor_symmetric — 每张量,对称

    • torch.per_channel_symmetric — 每通道,对称

  • torch.dtype — 用于描述数据的类型。支持的类型

    • torch.quint8 — 8 位无符号整数

    • torch.qint8 — 8 位有符号整数

    • torch.qint32 — 32 位有符号整数

QAT 模块。

此包正在被弃用。请使用 torch.ao.nn.qat.modules

QAT 动态模块。

此包正在被弃用。请使用 torch.ao.nn.qat.dynamic

此文件正在迁移到 torch/ao/quantization,并为兼容性而保留。如果您正在添加新的条目/功能,请将其添加到 torch/ao/quantization/fx/ 下的相应文件中,并在此处添加导入语句。

QAT 动态模块。

此包正在被弃用。请使用 torch.ao.nn.qat.dynamic

量化模块。

注意:

torch.nn.quantized 命名空间正在被弃用。请使用 torch.ao.nn.quantized

量化动态模块。

此文件正在迁移到 torch/ao/nn/quantized/dynamic,并为兼容性而保留。如果您正在添加新的条目/功能,请将其添加到 torch/ao/nn/quantized/dynamic 下的相应文件中,并在此处添加导入语句。