目录

torch.nn

这些是构建图的基本组件:

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_hook

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

卷积层

nn.Conv1d

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

nn.Conv2d

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

nn.Conv3d

在多个输入平面组成的输入信号上应用三维卷积。

nn.ConvTranspose1d

在输入图像上应用一维转置卷积运算符,该图像由多个输入平面组成。

nn.ConvTranspose2d

在输入图像的多个输入平面之上应用二维转置卷积运算符。

nn.ConvTranspose3d

在输入图像上应用一个由多个输入平面组成的三维转置卷积运算符。

nn.LazyConv1d

一个 torch.nn.Conv1d 模块,其中 in_channels 参数通过 Conv1d 推断得出,并且在初始化时是懒加载的。

nn.LazyConv2d

一个 torch.nn.Conv2d 模块,其中 in_channels 参数通过 Conv2d 推断得出,并且在初始化时是懒加载的。

nn.LazyConv3d

一个 torch.nn.Conv3d 模块,其中 in_channels 参数通过 Conv3d 推断得出,并且在初始化时是懒加载的。

nn.LazyConvTranspose1d

一个 torch.nn.ConvTranspose1d 模块,其中 in_channels 参数通过 ConvTranspose1d 推断得出,并且在初始化时是懒加载的。

nn.LazyConvTranspose2d

一个 torch.nn.ConvTranspose2d 模块,其中 in_channels 参数通过 ConvTranspose2d 推断得出,并且在初始化时是懒加载的。

nn.LazyConvTranspose3d

一个 torch.nn.ConvTranspose3d 模块,其中 in_channels 参数通过 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.AdaptiveMaxPool1d

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

nn.AdaptiveMaxPool2d

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

nn.AdaptiveMaxPool3d

对由多个输入平面组成的空间信号应用三维自适应最大池化。

nn.AdaptiveAvgPool1d

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

nn.AdaptiveAvgPool2d

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

nn.AdaptiveAvgPool3d

对由多个输入平面组成的空间信号应用三维自适应平均池化。

填充层

nn.ReflectionPad1d

使用输入边界的数据反射来填充输入张量。

nn.ReflectionPad2d

使用输入边界的数据反射来填充输入张量。

nn.ReflectionPad3d

使用输入边界的数据反射来填充输入张量。

nn.ReplicationPad1d

使用输入边界复制来填充输入张量。

nn.ReplicationPad2d

使用输入边界复制来填充输入张量。

nn.ReplicationPad3d

使用输入边界复制来填充输入张量。

nn.ZeroPad2d

用零填充输入张量的边界。

nn.ConstantPad1d

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

nn.ConstantPad2d

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

nn.ConstantPad3d

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

非线性激活(加权和,非线性)

nn.ELU

将指数线性单元(ELU)函数逐元素应用,如论文所述:通过指数线性单元(ELUs)实现快速准确的深度网络学习

nn.Hardshrink

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

nn.Hardsigmoid

对元素进行逐点 HardSigmoid 函数运算。

nn.Hardtanh

对元素进行逐个应用 HardTanh 函数。

nn.Hardswish

逐元素应用 hardswish 函数,如论文中所述:

nn.LeakyReLU

逐元素应用函数:

nn.LogSigmoid

逐元素应用函数:

nn.MultiheadAttention

允许模型联合关注来自不同表示子空间的信息,如论文所述:Attention Is All You Need

nn.PReLU

逐元素应用函数:

nn.ReLU

逐元素应用修正线性单元函数:

nn.ReLU6

逐元素应用函数:

nn.RReLU

逐元素应用随机泄漏线性单元函数,如论文中所述:

nn.SELU

按元素依次应用,如下所示:

nn.CELU

逐元素应用函数:

nn.GELU

应用高斯误差线性单元函数:

nn.Sigmoid

逐元素应用函数:

nn.SiLU

对元素应用 sigmoid 线性单元(SiLU)函数。

nn.Mish

对元素应用Mish函数。

nn.Softplus

对每个元素应用Softplus函数 Softplus(x)=1βlog(1+exp(βx))\text{Softplus}(x) = \frac{1}{\beta} * \log(1 + \exp(\beta * x))

nn.Softshrink

逐元素应用软收缩函数:

nn.Softsign

逐元素应用函数:

nn.Tanh

对元素进行逐点应用双曲正切(Tanh)函数。

nn.Tanhshrink

逐元素应用函数:

nn.Threshold

对输入张量的每个元素进行阈值处理。

nn.GLU

应用门控线性单元函数 GLU(a,b)=aσ(b){GLU}(a, b)= a \otimes \sigma(b),其中 aa 是输入矩阵的前半部分,bb 是后半部分。

非线性激活函数(其他)

nn.Softmin

对一个n维输入张量应用Softmin函数,对其进行重新缩放,使得n维输出张量的元素位于 [0, 1] 范围内,并且总和为1。

nn.Softmax

对一个n维输入张量应用Softmax函数,对其进行重新缩放,使得n维输出张量的元素位于[0,1]范围内,并且总和为1。

nn.Softmax2d

在每个空间位置上对特征应用 SoftMax。

nn.LogSoftmax

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

nn.AdaptiveLogSoftmaxWithLoss

Efficient softmax approximation as described in GPU上的高效softmax近似方法,由Edouard Grave, Armand Joulin, Moustapha Cissé, David Grangier, 和 Hervé Jégou提出.

归一化层

nn.BatchNorm1d

对2D或3D输入应用如论文Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift中所述的批量归一化。

nn.BatchNorm2d

对4D输入(一批2D输入,带有额外的通道维度)应用批量归一化,如论文批量归一化:通过减少内部协变量偏移来加速深度网络训练中所述。

nn.BatchNorm3d

对5D输入(一批3D输入,带有额外的通道维度)应用批量归一化,如论文批量归一化:通过减少内部协变量偏移来加速深度网络训练中所述。

nn.LazyBatchNorm1d

一个 torch.nn.BatchNorm1d 模块,其中 num_features 参数通过 BatchNorm1d 推断得出,并且在初始化时是懒加载的。

nn.LazyBatchNorm2d

一个 torch.nn.BatchNorm2d 模块,其中 num_features 参数通过 BatchNorm2d 推断得出,并且在初始化时是懒加载的。

nn.LazyBatchNorm3d

一个 torch.nn.BatchNorm3d 模块,其中 num_features 参数通过 BatchNorm3d 推断得出,并且在初始化时是懒加载的。

nn.GroupNorm

对一批输入应用如论文Group Normalization中描述的组归一化

nn.SyncBatchNorm

对N维输入(一个包含额外通道维度的[N-2]D输入的小批量)应用批量归一化,如论文批量归一化:通过减少内部协变量偏移来加速深度网络训练中所述。

nn.InstanceNorm1d

对2D(未批处理)或3D(批处理)输入应用实例归一化,如论文实例归一化:快速风格化的缺失成分中所述。

nn.InstanceNorm2d

对4D输入(如论文Instance Normalization: The Missing Ingredient for Fast Stylization中描述的2D输入小批量数据,附加通道维度)应用实例归一化。

nn.InstanceNorm3d

对5D输入(一个包含额外通道维度的3D输入的小批量)应用实例归一化,如论文实例归一化:快速风格化的缺失成分中所述。

nn.LazyInstanceNorm1d

一个 torch.nn.InstanceNorm1d 模块,其中 num_features 参数通过 InstanceNorm1d 推断得出,并且在初始化时是懒加载的。

nn.LazyInstanceNorm2d

一个 torch.nn.InstanceNorm2d 模块,其中 num_features 参数通过 InstanceNorm2d 推断得出,并且在初始化时是懒加载的。

nn.LazyInstanceNorm3d

一个 torch.nn.InstanceNorm3d 模块,其中 num_features 参数通过 InstanceNorm3d 推断得出,并且在初始化时是懒加载的。

nn.LayerNorm

对一个输入的小批量应用层归一化,如论文层归一化中所述

nn.LocalResponseNorm

对由多个输入平面组成的输入信号应用局部响应归一化,其中通道占据第二个维度。

循环层

nn.RNNBase

nn.RNN

对输入序列应用具有tanh\tanhReLU\text{ReLU}非线性层的多层Elman RNN。

nn.LSTM

将多层长短期记忆(LSTM)RNN 应用于输入序列。

nn.GRU

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

nn.RNNCell

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

nn.LSTMCell

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

nn.GRUCell

门控循环单元(GRU)单元

Transformer 层

nn.Transformer

一个Transformer模型。

nn.TransformerEncoder

TransformerEncoder 是 N 个编码器层的堆叠

nn.TransformerDecoder

TransformerDecoder 是 N 个解码器层的堆叠

nn.TransformerEncoderLayer

TransformerEncoderLayer 由自注意力机制和前馈网络组成。

nn.TransformerDecoderLayer

TransformerDecoderLayer 由自注意力层、多头注意力层和前馈网络组成。

线性层

nn.Identity

一个占位符身份运算符,不敏感于参数。

nn.Linear

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

nn.Bilinear

对输入数据应用双线性变换:y=x1TAx2+by = x_1^T A x_2 + b

nn.LazyLinear

一个torch.nn.Linear模块,其中in_features被推断。

丢弃层

nn.Dropout

在训练过程中,使用伯努利分布的样本,以概率 p 随机将输入张量的某些元素设为零。

nn.Dropout2d

随机零化整个通道(一个通道是一个2D特征图,例如,批次输入中第ii个样本的第jj个通道是一个2D张量input[i,j]\text{input}[i, j])。

nn.Dropout3d

随机零化整个通道(一个通道是一个3D特征图,例如,批处理输入中第ii个样本的第jj个通道是一个3D张量input[i,j]\text{input}[i, j])。

nn.AlphaDropout

对输入应用 Alpha Dropout。

nn.FeatureAlphaDropout

随机屏蔽整个通道(一个通道即一个特征图,例如

稀疏层

nn.Embedding

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

nn.EmbeddingBag

计算嵌入“袋子”的总和或平均值,而无需实例化中间嵌入。

距离函数

nn.CosineSimilarity

返回x1x_1x2x_2之间的余弦相似度,沿dim计算。

nn.PairwiseDistance

计算向量 v1v_1, v2v_2 之间的成对距离,使用 p-范数:

损失函数

nn.L1Loss

创建一个度量输入xx和目标yy之间平均绝对误差(MAE)的准则。

nn.MSELoss

创建一个度量标准,用于测量输入xx和目标yy中每个元素之间的均方误差(平方L2范数)。

nn.CrossEntropyLoss

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

nn.CTCLoss

连接主义时序分类损失。

nn.NLLLoss

对数似然损失的负值。

nn.PoissonNLLLoss

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

nn.GaussianNLLLoss

高斯负对数似然损失。

nn.KLDivLoss

KL 散度损失。

nn.BCELoss

创建一个度量二元交叉熵的准则,用于衡量目标与输入概率之间的差异:

nn.BCEWithLogitsLoss

该损失结合了Sigmoid层和BCELoss到一个单一类别中。

nn.MarginRankingLoss

创建一个用于根据输入x1x1x2x2,两个1D小批量或0DTensors,以及1D小批量或0DTensoryy(包含1或-1)来衡量损失的标准。

nn.HingeEmbeddingLoss

计算给定输入张量 xx 和标签张量 yy (包含 1 或 -1)的损失。

nn.MultiLabelMarginLoss

创建一个优化准则,在输入xx(一个2D小批量Tensor)和输出yy(目标类索引的2DTensor)之间计算多分类多标签铰链损失(基于边际的损失)。

nn.HuberLoss

创建一个标准,当绝对元素误差低于 delta 时使用平方项,否则使用按 delta 缩放的 L1 项。

nn.SmoothL1Loss

创建一个标准,当绝对元素误差低于 beta 时使用平方项,否则使用 L1 项。

nn.SoftMarginLoss

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

nn.MultiLabelSoftMarginLoss

创建一个基于最大熵的多标签一对一损失优化标准,输入xx和目标yy的大小为(N,C)(N, C)

nn.CosineEmbeddingLoss

创建一个度量损失的标准,给定输入张量 x1x_1x2x_2 和一个值为 1 或 -1 的 Tensor 标签 yy

nn.MultiMarginLoss

创建一个优化多分类铰链损失(基于 margin 的损失)的标准,该损失存在于输入 xx (一个 2D 小批量 Tensor)和输出 yy (这是一个目标类别索引的 1D 张量,0yx.size(1)10 \leq y \leq \text{x.size}(1)-1)之间:

nn.TripletMarginLoss

创建一个度量三元组损失的标准,给定输入张量x1x1x2x2x3x3和一个大于00的边界值。

nn.TripletMarginWithDistanceLoss

创建一个准则,用于根据输入张量 aa, pp, 和 nn(分别表示锚点、正样本和负样本)来衡量三元组损失,并使用一个非负的实值函数(“距离函数”)来计算锚点与正样本之间的关系(“正距离”)以及锚点与负样本之间的关系(“负距离”)。

视觉层

nn.PixelShuffle

将形状为 (,C×r2,H,W)(*, C \times r^2, H, W) 的张量中的元素重新排列为形状为 (,C,H×r,W×r)(*, C, H \times r, W \times r) 的张量,其中 r 是上采样因子。

nn.PixelUnshuffle

将形状为 (,C,H×r,W×r)(*, C, H \times r, W \times r) 的张量重新排列成形状为 (,C×r2,H,W)(*, C \times r^2, H, W) 的张量,从而反向执行 PixelShuffle 操作,其中 r 是缩小比例因子。

nn.Upsample

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

nn.UpsamplingNearest2d

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

nn.UpsamplingBilinear2d

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

洗牌层

nn.ChannelShuffle

将形状为 (,C,H,W)(*, C , H, W) 的张量中的通道分成 g 组并重新排列为 (,Cg,g,H,W)(*, C \frac g, g, H, W),同时保持原始张量形状。

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

nn.DataParallel

在模块级别实现数据并行化。

nn.parallel.DistributedDataParallel

实现了基于torch.distributed包的模块级分布式数据并行性。

工具

来自torch.nn.utils模块

clip_grad_norm_

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

clip_grad_value_

将参数的可迭代对象在指定值处进行梯度裁剪。

parameters_to_vector

将参数转换为一个向量

vector_to_parameters

将一个向量转换为参数

prune.BasePruningMethod

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

prune.PruningContainer

容器用于保存一系列迭代剪枝方法。

prune.Identity

一种实用的剪枝方法,不会剪枝任何单元,但会生成一个全为一的掩码来定义剪枝参数化。

prune.RandomUnstructured

随机修剪(当前未修剪的)张量中的单位。

prune.L1Unstructured

通过将具有最低 L1 范数的单元置零来修剪张量中的单元(当前未经过修剪)。

prune.RandomStructured

随机修剪张量中的整个通道(目前未被修剪)。

prune.LnStructured

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

prune.CustomFromMask

prune.identity

将剪枝重新参数化应用于名为name的参数对应的张量,但不实际剪枝任何单元。

prune.random_unstructured

修剪对应于名为name的参数在module中的张量,通过随机选择(当前未修剪)单位的指定amount进行删除。

prune.l1_unstructured

通过移除指定的 amount 个(当前未修剪的)单位中 L1 范数最低的,对参数称为 namemodule 中对应的张量进行剪枝。

prune.random_structured

修剪对应于名为name的参数在module中的张量,通过随机选择指定的amount(当前未修剪)通道沿指定的dim进行删除。

prune.ln_structured

修剪与称为 name 的参数对应的张量,在 module 中通过移除指定的 amount 个(当前未被修剪的)通道,沿着指定的 dim 维度,并选择 Ln-norm 最低的部分。

prune.global_unstructured

全局修剪与parameters中的所有参数对应的张量,通过应用指定的pruning_method

prune.custom_from_mask

通过应用在mask中预计算的掩码,修剪对应于名为name的参数的张量。

prune.remove

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

prune.is_pruned

检查 module 是否被修剪,方法是查找其模块中继承自 BasePruningMethodforward_pre_hooks

weight_norm

对给定模块中的参数应用权重归一化。

remove_weight_norm

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

spectral_norm

将谱归一化应用于给定模块中的参数。

remove_spectral_norm

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

skip_init

给定一个模块类对象以及参数 args / kwargs,在不初始化参数或缓冲区的情况下实例化该模块。

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

parametrizations.orthogonal

将正交或酉参数化应用于矩阵或矩阵批次。

parametrizations.spectral_norm

将谱归一化应用于给定模块中的参数。

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

parametrize.register_parametrization

向模块中的张量添加参数化。

parametrize.remove_parametrizations

移除模块中张量的参数化。

parametrize.cached

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

parametrize.is_parametrized

如果模块具有活动参数化,则返回 True

parametrize.ParametrizationList

一个顺序容器,用于保存和管理 originaloriginal0, original1, .

其他模块中的工具函数

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对一组长度可变的张量进行填充

nn.utils.rnn.pack_sequence

将一个可变长度的 Tensor 列表打包

nn.Flatten

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

nn.Unflatten

将张量的一维展平,扩展到所需的形状。

量化函数

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

惰性模块初始化

nn.modules.lazy.LazyModuleMixin

用于模块的混入类,可延迟初始化参数,也称为“惰性模块”。

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源