模块式(Module)

Float Module

基础容器

Module

Module基类。

Sequential

A sequential container.

Module.forward

Module.parameters

返回一个可迭代对象,遍历当前模块中的所有 Parameter

Module.named_parameters

返回一个可迭代对象,可以遍历当前模块中key与 Parameter 组成的键值对。其中 key 是从模块到 Parameter 的点路径(dotted path)。

Module.buffers

返回该模块中对于buffers的一个可迭代对象。

Module.named_buffers

返回可遍历模块中 key 与 buffer 的键值对的可迭代对象,其中 key 为从该模块至 buffer 的点路径(dotted path)。

Module.children

返回一个可迭代对象,可遍历所有属于当前模块的直接属性的子模块。

Module.named_children

返回可迭代对象,可以遍历属于当前模块的直接属性的所有子模块(submodule)与键(key)组成的”key-submodule”对,其中’key’是子模块对应的属性名。

Module.modules

返回一个可迭代对象,可以遍历当前模块中的所有模块,包括其本身。

Module.named_modules

返回可迭代对象,可以遍历当前模块包括自身在内的所有其内部模块所组成的key-module键-模块对,其中’key’是从当前模块到各子模块的点路径(dotted path)。

Module.apply

对当前模块中的所有模块应用函数 fn,包括当前模块本身。

Module.train

当前模块中所有模块的 training 属性(包括自身)置为 mode

Module.eval

当前模块中所有模块的 training 属性(包括自身)置为 False ,并将其切换为推理模式。

Module.disable_quantize

设置 modulequantize_diabled 属性,并返回 module

Module.state_dict

Module.load_state_dict

加载一个参数字典,这个字典通常使用:func:`state_dict`得到。

初始化

fill_

val 填入到给定的 tensor

zeros_

使用标量值 0 填入给定 tensor

ones_

使用标量值 1 填入给定的 tensor

uniform_

使用从均匀分布 \(\mathcal{U}(\text{a}, \text{b})\) 中的随机采样值填入给定的 tensor

normal_

使用从正态分布 \(\mathcal{N}(\text{mean}, \text{std}^2)\) 中的随机采样值填入给定的 tensor

calculate_gain

对于给定的非线性函数返回一个推荐的增益值(见下表)。

calculate_fan_in_and_fan_out

Calculates fan_in / fan_out value for given weight tensor.

calculate_correct_fan

计算对于给定的权重张量fan_in或fan_out值,这取决于给定的 mode

xavier_uniform_

使用从 \(\mathcal{U}(-a, a)\) 中随机采样值填入 tensor 。其中,

xavier_normal_

使用从 \(\mathcal{N}(0, \text{std}^2)\) 中随机采样值填入 tensor 。其中,

msra_uniform_

使用 \(\mathcal{U}(-\text{bound}, \text{bound})\) 的随机采样值填入 tensor

msra_normal_

\(\mathcal{N}(0, \text{std}^2)\) 中随机采样得到值,填入 tensor ,式中,

算子支持

Elemwise

A Module to do elemwise operator.

Concat

A Module to do functional concat.

卷积层

Conv1d

对输入张量进行一维卷积

Conv2d

对输入张量进行二维卷积

Conv3d

对输入 tensor 进行三维卷积

ConvRelu2d

A fused Module including Conv2d and relu.

ConvTranspose2d

对输入张量进行二维转置卷积。

LocalConv2d

Applies a spatial convolution with untied kernels over an groupped channeled input 4D tensor.

DeformableConv2d

可变形卷积

池化层

AvgPool2d

对输入数据进行2D平均池化。

MaxPool2d

对输入数据进行2D最大值池化(max pooling)。

AdaptiveAvgPool2d

对输入数据进行2D平均池化。

AdaptiveMaxPool2d

对输入数据进行2D最大池化。

DeformablePSROIPooling

非线性激活层

Sigmoid

对每个元素应用函数:

Softmax

对每个元素进行Softmax分类操作

ReLU

对每个元素应用函数:

LeakyReLU

对每个元素应用函数:

PReLU

对每个元素应用函数:

归一化层

BatchNorm1d

在2D/3D张量上进行批标准化(batch normalization)。

BatchNorm2d

在四维张量上进行批标准化(Batch Normalization)。

SyncBatchNorm

对于分布式训练执行组同步Batch Normalization操作。

GroupNorm

对于GroupNorm的简单实现。将Channel方向分Group,然后每个Group内做归一化,算(C//G) Hw的均值;这样与Batchsize无关,不受其约束

InstanceNorm

InstanceNorm的简单实现。对Channel内做归一化,算H*W的均值,用在风格化迁移;因为在图像风格化中,生成结果主要依赖于某个图像实例,所以对整个Batch归一化不适合图像风格化中,因而对HW做归一化。可以加速模型收敛,并且保持每个图像实例之间的独立。

LayerNorm

层归一化的简单实现,对于Channel方向做归一化,算CHW的均值,主要对RNN作用明显。

线性层

Linear

Applies a linear transformation to the input.

Identity

恒等占位符,输出和输入相等

随机失活层

Dropout

Randomly sets input elements to zeros with the probability \(drop\_prob\) during training.

稀疏层

Embedding

一个简单的查询表,存储具有固定大小的词向量(embedding)于固定的词典中。

融合操作

ConvBn2d

A fused Module including Conv2d and BatchNorm2d.

ConvBnRelu2d

A fused Module including Conv2d, BatchNorm2d and relu.

BatchMatMulActivation

带激活的批矩阵乘(当前仅支持 relu 激活),输入均不支持转置。

量化支持

QuantStub

A helper Module simply returning input.

DequantStub

A helper Module simply returning input.

QAT Module

基础容器

QATModule

浮点数量化相关模块的基类。主要用于 QAT 和 Calibration 。

QATModule.set_qconfig

使用 qconfig 更改量化相关配置。包含权重和激活值的 observer 和 fake_quant 。

QATModule.set_fake_quant

QATModule.set_observer

QATModule.apply_quant_weight

target 上根据 qconfig 应用权重observer以及fake_quant。

QATModule.apply_quant_activation

target 上根据 qconfig 应用权重observer以及fake_quant。

QATModule.apply_quant_bias

使用:func:~.fake_quant_bias`来处理``target`

QATModule.get_weight_dtype

qconfig 中获取权重的量化数据类型。

QATModule.get_activation_dtype

按照qconfig指定的方法,从 qconfig 中获取激活值的量化数据类型。

QATModule.get_weight_qparams

获取权重的量化参数。

QATModule.get_activation_qparams

获取激活值的量化参数。

QATModule.from_float_module

返回从浮点型 Module 实例转换而来的 QATModule 实例。

算子支持

Linear

A QATModule version of Linear.

Elemwise

A QATModule to do elemwise operator with QAT support.

Concat

A QATModule to do functional concat with QAT support.

Conv2d

A QATModule Conv2d with QAT support.

ConvRelu2d

A QATModule include Conv2d and relu with QAT support.

ConvBn2d

A fused QATModule including Conv2d and BatchNorm2d with QAT support.

ConvBnRelu2d

A fused QATModule including Conv2d, BatchNorm2d and relu with QAT support.

BatchMatMulActivation

支持QAT的:class:~.QATModule BatchMatMulActivation

QuantStub

仅返回输入的辅助 QATModule, 但在转换为 QuantizedModule 之后,会对输入进行量化。

DequantStub

仅返回输入的辅助 QATModule , 但在转换为 QuantizedModule 之后,会对输入进行反量化。

Quantized Module

QuantizedModule

量化(quantized)版本 Module 的基类。应从 QATModule 转换而来,不支持训练。

QuantizedModule.from_qat_module

返回从 QATModule 实例转换而来的 QuantizedModule 实例。

算子支持

Linear

量化(quantized)版本 Linear

Elemwise

量化(quantized)版本 Elemwise

Concat

量化(quantized)版本 concatQuantizedModule,仅用于推理阶段。

Conv2d

量化(quantized)版本 Conv2d

ConvRelu2d

量化(quantized)版本 ConvRelu2d

ConvBn2d

量化(quantized)版本 ConvBn2d

ConvBnRelu2d

量化(quantized)版本 ConvBnRelu2d

BatchMatMulActivation

:class:`~.qat.BatchMatMulActivation`的量化版本。

QuantStub

量化(quantized)版本 QuantStub,可将输入转化为量化数据类型。

DequantStub

量化(quantized)版本 DequantStub,可将量化后的输入重置为float32类型。