Shortcuts

torch.nn

这些是图表的基本构建块:

参数

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

未初始化参数

一个未初始化的参数。

未初始化缓冲区

一个未初始化的缓冲区。

容器

模块

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

顺序

一个顺序容器。

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_module_registration_hook

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

register_module_parameter_registration_hook

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

卷积层

nn.Conv1d

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

nn.Conv2d

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

nn.Conv3d

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

nn.ConvTranspose1d

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

nn.ConvTranspose2d

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

nn.ConvTranspose3d

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

nn.LazyConv1d

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

nn.LazyConv2d

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

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

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

nn.MaxUnpool1d

计算 MaxPool1d 的部分逆运算。

nn.MaxUnpool2d

计算 MaxPool2d 的部分逆运算。

nn.MaxUnpool3d

计算 MaxPool3d 的部分逆运算。

nn.AvgPool1d

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

nn.AvgPool2d

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

nn.AvgPool3d

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

nn.FractionalMaxPool2d

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

nn.FractionalMaxPool3d

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

nn.LPPool1d

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

nn.LPPool2d

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

nn.LPPool3d

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

nn.AdaptiveMaxPool1d

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

nn.AdaptiveMaxPool2d

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

nn.AdaptiveMaxPool3d

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

nn.AdaptiveAvgPool1d

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

nn.AdaptiveAvgPool2d

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

nn.AdaptiveAvgPool3d

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

填充层

nn.ReflectionPad1d

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

nn.ReflectionPad2d

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

nn.ReflectionPad3d

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

nn.ReplicationPad1d

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

nn.ReplicationPad2d

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

nn.ReplicationPad3d

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

nn.ZeroPad1d

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

nn.ZeroPad2d

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

nn.ZeroPad3d

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

nn.ConstantPad1d

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

nn.ConstantPad2d

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

nn.ConstantPad3d

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

nn.CircularPad1d

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

nn.CircularPad2d

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

nn.CircularPad3d

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

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

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

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

nn.ReLU6

逐元素应用ReLU6函数。

nn.RReLU

对每个元素应用随机化泄漏修正线性单元函数。

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

应用逐元素的Tanhshrink函数。

nn.Threshold

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

nn.GLU

应用门控线性单元函数。

非线性激活函数(其他)

nn.Softmin

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

nn.Softmax

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

nn.Softmax2d

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

nn.LogSoftmax

log(Softmax(x))\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.RNNBase

RNN模块的基类(RNN、LSTM、GRU)。

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

一个转换器模型。

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 是推断出来的。

Dropout 层

nn.Dropout

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

nn.Dropout1d

随机将整个通道置零。

nn.Dropout2d

随机将整个通道置零。

nn.Dropout3d

随机将整个通道置零。

nn.AlphaDropout

对输入应用 Alpha Dropout。

nn.FeatureAlphaDropout

随机遮蔽整个通道。

稀疏层

nn.Embedding

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

nn.EmbeddingBag

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

距离函数

nn.CosineSimilarity

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

nn.PairwiseDistance

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

损失函数

nn.L1Loss

创建一个标准,用于衡量输入 xx 和目标 yy 之间每个元素的平均绝对误差(MAE)。

nn.MSELoss

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

nn.CrossEntropyLoss

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

nn.CTCLoss

连接时序分类损失。

nn.NLLLoss

负对数似然损失。

nn.PoissonNLLLoss

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

nn.GaussianNLLLoss

高斯负对数似然损失。

nn.KLDivLoss

库尔贝克-莱布勒散度损失。

nn.BCELoss

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

nn.BCEWithLogitsLoss

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

nn.MarginRankingLoss

创建一个标准,用于衡量给定输入 x1x1, x2x2,两个1D小批量或0D 张量,以及一个标签1D小批量或0D 张量 yy(包含1或-1)。

nn.HingeEmbeddingLoss

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

nn.MultiLabelMarginLoss

创建一个标准,用于优化输入 xx(一个2D小批量张量)和输出 yy(这是一个2D 张量,包含目标类索引)之间的多类多分类铰链损失(基于边际的损失)。

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 和一个 Tensor 标签 yy,其值为 1 或 -1。

nn.MultiMarginLoss

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

nn.TripletMarginLoss

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

nn.TripletMarginWithDistanceLoss

创建一个标准,用于衡量给定输入张量 aappnn(分别表示锚点、正样本和负样本)以及一个非负实值函数(“距离函数”),用于计算锚点和正样本之间的距离(“正距离”)以及锚点和负样本之间的距离(“负距离”)。

视觉层

nn.PixelShuffle

根据上采样因子重新排列张量中的元素。

nn.PixelUnshuffle

反转PixelShuffle操作。

nn.Upsample

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

nn.UpsamplingNearest2d

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

nn.UpsamplingBilinear2d

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

混洗层

nn.ChannelShuffle

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

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

nn.DataParallel

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

nn.parallel.DistributedDataParallel

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

实用工具

来自 torch.nn.utils 模块:

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

clip_grad_norm_

裁剪可迭代参数的梯度范数。

clip_grad_norm

裁剪可迭代参数的梯度范数。

clip_grad_value_

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

用于将模块参数展平为单个向量以及从单个向量恢复模块参数的实用函数。

parameters_to_vector

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

vector_to_parameters

将向量的切片复制到参数的可迭代对象中。

用于将模块与BatchNorm模块融合的实用函数。

fuse_conv_bn_eval

将卷积模块和批量归一化模块融合成一个单一的新卷积模块。

fuse_conv_bn_weights

将卷积模块参数和BatchNorm模块参数融合为新的卷积模块参数。

fuse_linear_bn_eval

将一个线性模块和一个批归一化模块融合成一个单一的新线性模块。

fuse_linear_bn_weights

将线性模块参数和BatchNorm模块参数融合为新的线性模块参数。

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

convert_conv2d_weight_memory_format

nn.Conv2d.weightmemory_format 转换为 memory_format

convert_conv3d_weight_memory_format

nn.Conv3d.weightmemory_format 转换为 memory_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掩码的修剪参数化。

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

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

prune.custom_from_mask

修剪与module中名为name的参数对应的张量,通过应用预先计算的掩码mask

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 填充长度可变的张量列表。

nn.utils.rnn.pack_sequence

打包一个可变长度的张量列表。

nn.utils.rnn.unpack_sequence

将 PackedSequence 解包为一系列可变长度的张量列表。

nn.utils.rnn.unpad_sequence

将填充的Tensor解压为一系列长度可变的Tensor。

nn.Flatten

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

nn.Unflatten

将一个张量维度展开为所需的形状。

量化函数

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

延迟模块初始化

nn.modules.lazy.LazyModuleMixin

用于延迟初始化参数的模块的混合器,也称为“懒模块”。

优云智算