torch.nn

这些是构成图形的基本组件:

Buffer

一种不应该被认为是模型参数的张量。

Parameter

一种被视作模块参数的张量。

UninitializedParameter

一个未初始化的参数。

UninitializedBuffer

一个未初始化的缓冲区。

容器

Module

所有神经网络模块的基础类。

Sequential

一个有序容器。

ModuleList

将子模块存储在列表中。

ModuleDict

将子模块存放在字典里。

ParameterList

将参数保存在列表中。

ParameterDict

将参数存入字典。

模块的全局挂钩

register_module_forward_pre_hook

为所有模块注册一个通用的前置预处理钩子。

register_module_forward_hook

为所有的模块注册一个全局前进钩子。

register_module_backward_hook

为所有模块注册一个共用的反向钩子。

register_module_full_backward_pre_hook

为所有模块注册一个通用的反向前置钩子。

register_module_full_backward_hook

为所有模块注册一个共用的反向钩子。

register_module_buffer_registration_hook

注册一个适用于所有模块的缓冲区注册钩子。

register_module_registration_hook

注册一个适用于所有模块的模块注册钩子。

register_module_parameter_registration_hook

为所有模块注册一个通用的参数注册钩子。

卷积层

nn.Conv1d

对由多个输入平面组成的输入信号进行一维卷积操作。

nn.Conv2d

对由多个输入平面组成的输入信号进行二维卷积操作。

nn.Conv3d

对由多个输入平面组成的输入信号进行三维卷积。

nn.ConvTranspose1d

对该一维输入图像(由多个输入平面组成)应用一维转置卷积运算。

nn.ConvTranspose2d

对该输入图像进行二维转置卷积运算,该图像由多个输入平面组成。

nn.ConvTranspose3d

对由多个输入平面组成的输入图像进行三维转置卷积操作。

nn.LazyConv1d

一个具有惰性初始化的in_channels参数的torch.nn.Conv1d模块。

nn.LazyConv2d

一个带有惰性初始化的torch.nn.Conv2d模块,该模块的in_channels参数在运行时确定。

nn.LazyConv3d

一个具有惰性初始化的in_channels参数的torch.nn.Conv3d模块。

nn.LazyConvTranspose1d

一个具有in_channels参数惰性初始化的torch.nn.ConvTranspose1d模块。

nn.LazyConvTranspose2d

一个具有in_channels参数惰性初始化的torch.nn.ConvTranspose2d模块。

nn.LazyConvTranspose3d

一个具有in_channels参数惰性初始化的torch.nn.ConvTranspose3d模块。

nn.Unfold

从批处理输入张量中提取滑动局部块。

nn.Fold

将一系列滑动局部块合并成一个大的包含张量。

池化层

nn.MaxPool1d

对由多个输入平面组成的一维输入信号进行最大池化操作。

nn.MaxPool2d

对由多个输入平面组成的输入信号进行二维最大池化操作。

nn.MaxPool3d

对由多个输入平面组成的输入信号进行三维最大池化操作。

nn.MaxUnpool1d

计算MaxPool1d的部分逆运算。

nn.MaxUnpool2d

计算MaxPool2d的部分逆运算。

nn.MaxUnpool3d

计算MaxPool3d的部分逆运算。

nn.AvgPool1d

对由多个输入平面组成的一维输入信号进行平均池化操作。

nn.AvgPool2d

对由多个输入平面组成的输入信号进行二维平均池化操作。

nn.AvgPool3d

对该数据执行三维平均池化操作,该数据由多个输入平面组成。

nn.FractionalMaxPool2d

对由多个输入平面组成的二维输入信号进行二维分数最大池化。

nn.FractionalMaxPool3d

对由多个输入平面组成的输入信号进行三维分数最大池化的操作。

nn.LPPool1d

对由多个输入平面组成的输入信号进行一维幂平均池化处理。

nn.LPPool2d

对该输入信号进行二维幂平均池化操作,该信号由多个输入平面组成。

nn.LPPool3d

对该输入信号进行三维幂平均池化操作,该信号由多个输入平面组成。

nn.AdaptiveMaxPool1d

对由多个输入平面组成的一维输入信号进行自适应最大池化操作。

nn.AdaptiveMaxPool2d

对由多个输入平面组成的输入信号进行二维自适应最大池化。

nn.AdaptiveMaxPool3d

对由多个输入平面组成的输入信号进行三维自适应最大值池化。

nn.AdaptiveAvgPool1d

对由多个输入平面组成的输入信号进行一维自适应平均池化。

nn.AdaptiveAvgPool2d

对由多个输入平面组成的输入信号进行二维自适应平均池化。

nn.AdaptiveAvgPool3d

对该数据进行三维自适应平均池化的操作,该数据由多个输入平面组成。

填充层

nn.ReflectionPad1d

用输入边界镜像来填充输入张量。

nn.ReflectionPad2d

用输入边界镜像来填充输入张量。

nn.ReflectionPad3d

用输入边界镜像来填充输入张量。

nn.ReplicationPad1d

通过复制输入边界来填充输入张量。

nn.ReplicationPad2d

通过复制输入边界来填充输入张量。

nn.ReplicationPad3d

通过复制输入边界来填充输入张量。

nn.ZeroPad1d

在输入张量的边界上用零进行 padding。

nn.ZeroPad2d

在输入张量的边界上用零进行 padding。

nn.ZeroPad3d

在输入张量的边界上用零进行 padding。

nn.ConstantPad1d

用常数值填充输入张量的边界。

nn.ConstantPad2d

用常数值填充输入张量的边界。

nn.ConstantPad3d

用常数值填充输入张量的边界。

nn.CircularPad1d

使用输入边界上的循环 padding 来填充输入张量。

nn.CircularPad2d

使用输入边界上的循环 padding 来填充输入张量。

nn.CircularPad3d

使用输入边界上的循环 padding 来填充输入张量。

非线性激活(加权求和与非线性操作)

nn.ELU

按元素应用指数线性单元(ELU)函数。

nn.Hardshrink

按元素应用硬收缩(Hardshrink)函数。

nn.Hardsigmoid

对每个元素应用Hardsigmoid函数。

nn.Hardtanh

元素级应用HardTanh函数。

nn.Hardswish

对每个元素应用Hardswish函数。

nn.LeakyReLU

对每个元素应用LeakyReLU函数。

nn.LogSigmoid

逐元素应用Logsigmoid函数。

nn.MultiheadAttention

允许模型同时从不同的表示子空间中获取信息。

nn.PReLU

应用逐元素的PReLU函数。

nn.ReLU

对元素应用修正线性单元(ReLU)函数。

nn.ReLU6

元素级应用ReLU6函数。

nn.RReLU

元素级别应用随机泄漏 rectified 线性单元函数。

nn.SELU

按元素应用SELU函数。

nn.CELU

按元素应用CELU函数。

nn.GELU

应用高斯误差线性单位函数。

nn.Sigmoid

对每个元素应用Sigmoid函数。

nn.SiLU

逐元素应用Sigmoid线性单元(SiLU)函数。

nn.Mish

逐元素应用Mish函数。

nn.Softplus

对每个元素应用Softplus函数。

nn.Softshrink

逐元素地应用软阈值函数。

nn.Softsign

应用逐元素的Softsign函数。

nn.Tanh

对每个元素应用双曲正切(Tanh)函数。

nn.Tanhshrink

应用元素-wise Tanhshrink 函数。

nn.Threshold

对输入张量的每个元素应用阈值处理。

nn.GLU

应用 gated 线性单元函数。

其他非线性激活函数

nn.Softmin

对n维输入张量应用Softmin函数。

nn.Softmax

对n维输入张量应用Softmax函数。

nn.Softmax2d

对每个空间位置上的特征应用SoftMax函数。

nn.LogSoftmax

$\log(\text{Softmax}(x))$函数应用于 n 维输入张量。

nn.AdaptiveLogSoftmaxWithLoss

高效的softmax逼近

归一化层

nn.BatchNorm1d

对2D或3D输入进行批处理规范化。

nn.BatchNorm2d

对4D输入进行批规范化处理。

nn.BatchNorm3d

对5D输入进行批规范化处理。

nn.LazyBatchNorm1d

一个具有惰性初始化的 torch.nn.BatchNorm1d 模块。

nn.LazyBatchNorm2d

一个带有惰性初始化的torch.nn.BatchNorm2d模块。

nn.LazyBatchNorm3d

一个具有惰性初始化的 torch.nn.BatchNorm3d 模块。

nn.GroupNorm

对一批输入数据进行组归一化处理。

nn.SyncBatchNorm

对N维输入进行批处理规范化。

nn.InstanceNorm1d

进行实例规范化。

nn.InstanceNorm2d

进行实例规范化。

nn.InstanceNorm3d

进行实例规范化。

nn.LazyInstanceNorm1d

一个带有num_features参数惰性初始化的torch.nn.InstanceNorm1d模块。

nn.LazyInstanceNorm2d

一个带有num_features参数惰性初始化的torch.nn.InstanceNorm2d模块。

nn.LazyInstanceNorm3d

一个具有num_features参数惰性初始化的torch.nn.InstanceNorm3d模块。

nn.LayerNorm

对一批输入数据进行层归一化处理。

nn.LocalResponseNorm

对输入信号进行局部响应归一化处理。

nn.RMSNorm

对一批输入数据进行均方根层规范化处理。

循环层

nn.RNNBase

RNN模块(包括RNN、LSTM和GRU)的基础类。

nn.RNN

使用多层 Elman RNN 和 $\tanh$$\text{ReLU}$ 非线性函数处理输入序列。

nn.LSTM

使用多层长短期记忆(LSTM)RNN处理输入序列。

nn.GRU

使用多层门控循环单元(GRU)RNN处理输入序列。

nn.RNNCell

带有 tanh 或 ReLU 激活函数的 Elman RNN 单元。

nn.LSTMCell

LSTM(长短期记忆)单元。

nn.GRUCell

一个门控循环单元(GRU)。

变换器层

nn.Transformer

一个变换器模型。

nn.TransformerEncoder

TransformerEncoder 包含 N 个堆叠的编码器层。

nn.TransformerDecoder

TransformerDecoder 由 N 个解码层堆叠而成。

nn.TransformerEncoderLayer

TransformerEncoderLayer 包含自注意力机制和前向网络。

nn.TransformerDecoderLayer

TransformerDecoderLayer 包含自注意力(self-attn)、多头注意力(multi-head-attn)和前向网络。

线性层

nn.Identity

一个对参数不敏感的身份占位符操作符。

nn.Linear

对输入数据进行仿射线性变换:$y = xA^T + b$

nn.Bilinear

对输入数据进行双线性变换:$y = x_1^T A x_2 + b$

nn.LazyLinear

一个torch.nn.Linear 模块,其中 in_features 是通过推断得出的。

_dropout层_

nn.Dropout

在训练过程中,以概率 p 随机将输入张量的某些元素置零。

nn.Dropout1d

随机将整个通道设置为零。

nn.Dropout2d

随机将整个通道设置为零。

nn.Dropout3d

随机将整个通道设置为零。

nn.AlphaDropout

对输入应用Alpha Dropout。

nn.FeatureAlphaDropout

随机完全遮蔽整个通道。

稀疏层

nn.Embedding

一个简单的查找表,用于存储固定大小字典的嵌入。

nn.EmbeddingBag

计算嵌入集合的和或平均值,无需生成中间嵌入。

距离函数

nn.CosineSimilarity

沿 计算并返回 $x_1$$x_2$之间的余弦相似度。

nn.PairwiseDistance

计算输入向量之间的成对距离,或输入矩阵各列之间的成对距离。

损失函数

nn.L1Loss

创建一个用于衡量输入$x$和目标$y$之间平均绝对误差(MAE)的标准。

nn.MSELoss

创建一个用于衡量输入$x$和目标$y$之间均方误差(即平方L2范数)的标准。

nn.CrossEntropyLoss

此准则计算输入 logits 和目标之间的交叉熵损失。

nn.CTCLoss

连接时序分类损失

nn.NLLLoss

负对数似然损失函数。

nn.PoissonNLLLoss

基于泊松分布的目标的负对数似然损失。

nn.GaussianNLLLoss

高斯负对数似然损失函数。

nn.KLDivLoss

Kullback-Leibler 散度损失函数。

nn.BCELoss

创建一个衡量目标与输入概率之间二元交叉熵的标准。

nn.BCEWithLogitsLoss

此损失函数将一个Sigmoid层和BCELoss层结合在一个类中。

nn.MarginRankingLoss

创建一个准则,用于度量给定输入$x1$$x2$(两个1D小批量或0D Tensors)以及包含 1 或 -1 的标签 1D 小批量或 0D Tensor $y$的损失。

nn.HingeEmbeddingLoss

根据输入张量$x$和包含1或-1的标签张量$y$来计算损失。

nn.MultiLabelMarginLoss

创建一个优化准则,用于计算输入$x$(一个二维小批量Tensor)和输出$y$(一个二维Tensor的目标类索引)之间的多类别多分类铰链损失(基于边际的损失)。

nn.HuberLoss

创建一个准则:如果绝对元素级别的误差小于 delta,则采用平方项;否则采用比例为 delta 的 L1 项。

nn.SmoothL1Loss

根据绝对元素级别的误差是否低于beta值来决定使用平方项还是L1项。

nn.SoftMarginLoss

创建一个准则,用于优化输入张量$x$和目标张量$y$(包含1或-1)之间的两分类逻辑回归损失。

nn.MultiLabelSoftMarginLoss

创建一个基于最大熵的多标签一对一损失准则,并根据输入$x$和目标$y$(大小为$(N, C)$)进行优化。

nn.CosineEmbeddingLoss

创建一个准则来度量损失,给定输入张量 $x_1$$x_2$,以及一个值为 1 或 -1 的 Tensor 标签 $y$

nn.MultiMarginLoss

创建一个准则来优化输入$x$(2D小批量Tensor)和输出$y$(目标类索引的1D张量,$0 \leq y \leq \text{x.size}(1)-1$)之间的多分类铰链损失(基于边距的损失):

nn.TripletMarginLoss

创建一个用于度量三元组损失的标准,给定输入张量$x1$$x2$$x3$,以及一个大于$0$的边界值。

nn.TripletMarginWithDistanceLoss

创建一个准则来度量三元组损失,给定输入张量$a$$p$$n$(分别代表锚点、正例和反例),并使用一个非负实值函数(“距离函数”)来计算锚点与正例之间的距离(“正向距离”)以及锚点与反例之间的距离(“反向距离”)。

视觉层

nn.PixelShuffle

根据放大的因素,重新排列张量中的元素。

nn.PixelUnshuffle

执行 PixelShuffle 操作的逆操作。

nn.Upsample

对给定的多通道一维(时间)、二维(空间)或三维(体积)数据进行上采样处理。

nn.UpsamplingNearest2d

对由多个输入通道组成的输入信号进行二维最近邻上采样。

nn.UpsamplingBilinear2d

对由多个输入通道组成的输入信号进行二维双线性上采样。

随机排列层

nn.ChannelShuffle

将张量中的通道划分并重新排列。

数据并行层(多GPU、分布式)

nn.DataParallel

在模块层面实现数据并行处理。

nn.parallel.DistributedDataParallel

基于 torch.distributed 在模块级别实现分布式数据并行。

工具集

来自torch.nn.utils模块:

用于裁剪参数梯度的实用函数。

clip_grad_norm_

对参数迭代器的梯度范数进行裁剪。

clip_grad_norm

对参数迭代器的梯度范数进行裁剪。

clip_grad_value_

将迭代器中参数的梯度裁剪到指定值。

用于将 Module 参数展平为单个向量并从中恢复的实用函数。

parameters_to_vector

将参数的可迭代对象展平为一个单一的向量。

vector_to_parameters

将向量的切片复制到参数列表中。

用于融合含有BatchNorm模块的Module的工具函数。

fuse_conv_bn_eval

将一个卷积模块和一个 BatchNorm 模块融合成一个新的卷积模块。

fuse_conv_bn_weights

将卷积模块参数与批处理规范化模块参数融合成新的卷积模块参数。

fuse_linear_bn_eval

将一个线性模块和一个批处理规范化模块融合成一个新的线性模块。

fuse_linear_bn_weights

将线性模块参数与批处理规范化模块参数合并为新的线性模块参数。

用于转换模块参数内存格式的实用工具函数。

convert_conv2d_weight_memory_format

nn.Conv2d.weightmemory_format 转换为目标 memory_format

convert_conv3d_weight_memory_format

nn.Conv3d.weightmemory_format 属性转换为目标格式。此转换会递归地应用于嵌套的 nn.Module,包括 module

用于对模块参数进行权重归一化处理的工具函数。

weight_norm

对给定模块中的参数进行权重规范化。

remove_weight_norm

从模块中移除权重归一化重新参数化。

spectral_norm

对给定模块中的参数应用光谱规范化。

remove_spectral_norm

从模块中删除谱范数重参数化。

用于初始化模块参数的工具函数。

skip_init

给定一个模块类对象和参数 args/kwargs,无需初始化参数或缓冲区来实例化该模块。

用于修剪模块参数的工具类和函数。

prune.BasePruningMethod

用于创建新剪枝技术的抽象基础类。

prune.PruningContainer

用于迭代剪枝的方法序列容器。

prune.Identity

一种实用性的裁剪方法,不会裁剪任何单元,而是生成一个全为1的掩码来创建裁剪参数化。

torch.nn.utils.prune.RandomUnstructured

随机修剪张量中目前尚未修剪的单元。

prune.L1Unstructured

通过将具有最小L1范数的单元置零来修剪张量中的单元。

prune.RandomStructured

随机修剪张量中尚未被修剪的完整通道。

prune.LnStructured

根据张量通道的 Ln-范数来修剪整个通道(目前尚未被修剪)。

prune.CustomFromMask

prune.identity

进行剪枝重新参数化,但不修剪任何单元。

prune.random_unstructured

通过随机移除当前未修剪的单元来修剪张量。

prune.l1_unstructured

通过删除L1范数最小的单元来修剪张量。

prune.random_structured

通过在指定维度上随机删除通道来修剪张量。

prune.ln_structured

通过移除指定维度上 Ln-范数最低的通道来对张量进行修剪。

prune.global_unstructured

根据指定的 pruning_method 对所有参数对应的张量进行全局剪枝。

prune.custom_from_mask

使用mask中的预计算掩码来修剪module中名为name的参数对应的张量。

prune.remove

从模块中删除剪枝重参数化,并从前向钩子中删除剪枝方法。

prune.is_pruned

通过查看剪枝预挂钩来检查模块是否被剪枝。

使用torch.nn.utils.parameterize.register_parametrization()中新的参数化功能实现的参数化。

parametrizations.orthogonal

对矩阵或矩阵批进行正交或酉参数化。

parametrizations.weight_norm

对给定模块中的参数进行权重规范化。

parametrizations.spectral_norm

对给定模块中的参数应用光谱规范化。

用于对现有模块中的张量进行参数化的实用函数。这些函数可以根据特定的映射函数(从输入空间到参数化空间)来参数化给定的参数或缓存变量。它们不是将对象转换为参数的方法。有关如何实现自己的参数化的更多信息,请参阅参数化教程

parametrize.register_parametrization

在模块中为张量注册参数化。

parametrize.remove_parametrizations

去掉模块中张量的参数化。

parametrize.cached

一个上下文管理器,用于启用在 register_parametrization() 中注册的参数化的缓存系统。

parametrize.is_parametrized

判断一个模块是否进行了参数化。

parametrize.ParametrizationList

一个顺序容器,用于存放和管理参数化 torch.nn.Module 的原始参数或缓冲区。

用于无状态调用指定模块的工具函数。

stateless.functional_call

通过对模块的参数和缓冲区进行替换,使用提供的参数和缓冲区来进行功能调用。

其他模块里的工具函数

nn.utils.rnn.PackedSequence

保存打包序列的数据及其对应的batch_sizes列表。

nn.utils.rnn.pack_padded_sequence

将包含不同长度填充序列的张量进行打包。

nn.utils.rnn.pad_packed_sequence

对一批长度不同的序列进行填充。

nn.utils.rnn.pad_sequence

padding_value 对一个长度不一的 Tensor 列表进行填充。

nn.utils.rnn.pack_sequence

将一个变量长度的张量列表进行打包。

nn.utils.rnn.unpack_sequence

将 PackedSequence 解包为一个包含多个不同长度张量的列表。

nn.utils.rnn.unpad_sequence

将填充的张量解封装成一个变量长度张量的列表。

nn.Flatten

将连续的维度范围展平为一个张量。

nn.Unflatten

展平张量维度,将其扩展为所需的形状。

量化函数

量化是指在低于浮点精度的位宽下执行计算和存储张量的技术。PyTorch 支持逐 tensor 和逐通道非对称线性量化。要了解如何在 PyTorch 中使用量化函数,请参阅量化文档。

懒加载模块初始化

nn.modules.lazy.LazyModuleMixin

这是一个用于模块的混入类,这些模块会延迟初始化参数,也被称为“懒惰模块”。

别名

以下是torch.nn中对应项的别名:

nn.modules.normalization.RMSNorm

对一批输入数据进行均方根层规范化处理。

本页目录