• 文档 >
  • torch.nn
快捷键

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_module_registration_hook

注册所有模块通用的模块注册钩子。

register_module_parameter_registration_hook

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

卷积层 ¶

nn.Conv1d

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

nn.Conv2d

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

nn.Conv3d

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

nn.ConvTranspose1d

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

nn.ConvTranspose2d

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

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

具有懒加载参数的模块。

nn.Unfold

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

nn.Fold

将滑动局部块数组合并成一个大张量。

池化层 ¶

nn.MaxPool1d

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

nn.MaxPool2d

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

nn.MaxPool3d

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

nn.MaxUnpool1d

计算部分逆元 MaxPool1d

nn.MaxUnpool2d

计算部分逆元 MaxPool2d

nn.MaxUnpool3d

计算部分逆元 MaxPool3d

nn.AvgPool1d

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

nn.AvgPool2d

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

nn.AvgPool3d

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

nn.FractionalMaxPool2d

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

nn.FractionalMaxPool3d

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

nn.LPPool1d

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

nn.LPPool2d

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

nn.LPPool3d

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

nn.AdaptiveMaxPool1d

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

nn.AdaptiveMaxPool2d

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

nn.AdaptiveMaxPool3d

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

nn.AdaptiveAvgPool1d

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

nn.AdaptiveAvgPool2d

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

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

应用硬 Sigmoid 函数,逐元素。

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

应用随机化的泄漏整流线性单元函数,逐元素。

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

逐元素应用软符号函数。

nn.Tanh

逐元素应用双曲正切(Tanh)函数。

nn.Tanhshrink

逐元素应用双曲正切收缩函数。

nn.Threshold

阈值化输入张量的每个元素。

nn.GLU

应用门控线性单元函数。

非线性激活(其他)¶

nn.Softmin

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

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

带有懒加载初始化的模块。

nn.LazyBatchNorm2d

带有懒加载初始化的模块。

nn.LazyBatchNorm3d

带有懒加载初始化的模块。

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\tanhReLU\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 由自注意力机制、多头注意力机制和前馈网络组成。

线性层

nn.Identity

一个对参数不敏感的占位符身份运算符。

nn.Linear

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

nn.Bilinear

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

nn.LazyLinear

一个自动推断 in_features 的模块。

Dropout 层 ¶

nn.Dropout

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

nn.Dropout1d

随机将整个通道置为零。

nn.Dropout2d

随机将整个通道置零

nn.Dropout3d

随机将整个通道置零

nn.AlphaDropout

在输入上应用 Alpha Dropout

nn.FeatureAlphaDropout

随机屏蔽整个通道

稀疏层 ¶

nn.Embedding

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

nn.EmbeddingBag

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

距离函数 ¶

nn.CosineSimilarity

在 dim 维度上计算 x1x_1x2x_2 之间的余弦相似度。

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

创建一个准则,用于衡量输入 x1x1x2x2 (两个 1D mini-batch 或 0D 张量)和标签 1D mini-batch 或 0D 张量 yy (包含 1 或-1)给出的损失。

nn.HingeEmbeddingLoss

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

nn.MultiLabelMarginLoss

创建一个准则,用于优化输入 xx (一个 2D mini-batch 张量)和输出 yy (是一个 2D 张量,包含目标类索引)之间的多类多分类 hinge 损失(基于边界的损失)。

nn.HuberLoss

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

nn.SmoothL1Loss

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

nn.SoftMarginLoss

创建一个标准,优化输入张量 xx 和目标张量 yy (包含 1 或-1)之间的二分类逻辑损失。

nn.MultiLabelSoftMarginLoss

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

nn.CosineEmbeddingLoss

创建一个标准,用于衡量输入张量 x1x_1x2x_2 和标签张量 yy (值为 1 或-1)的损失。

nn.MultiMarginLoss

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

nn.TripletMarginLoss

创建一个标准,用于衡量给定输入张量 x1x1x2x2x3x3 (分别代表锚、正例和负例)以及一个大于 00 的边界的三元组损失。

nn.TripletMarginWithDistanceLoss

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

视觉层 ¶

nn.PixelShuffle

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

nn.PixelUnshuffle

反向执行 PixelShuffle 操作。

nn.Upsample

对给定的多通道 1D(时间),2D(空间)或 3D(体积)数据进行上采样。

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_

在指定值处裁剪参数迭代器的梯度。

get_total_norm

计算张量序列的范数。

clip_grads_with_norm_

根据预计算的范数和期望的最大范数,缩放参数序列的梯度。

提供将模块参数从单个向量到单个向量以及从单个向量到张量序列的展开和还原的实用函数。

parameters_to_vector

将参数序列展开成一个单一向量。

vector_to_parameters

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

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

fuse_conv_bn_eval

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

fuse_conv_bn_weights

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

fuse_linear_bn_eval

将线性模块和 BatchNorm 模块融合成一个全新的线性模块。

fuse_linear_bn_weights

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

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

convert_conv2d_weight_memory_format

nn.Conv2d.weightmemory_format 转换为 memory_format

convert_conv3d_weight_memory_format

memory_formatnn.Conv3d.weight 转换为 memory_format ,转换递归应用于嵌套的 nn.Module ,包括 module

用于应用和移除模块参数权重归一化的实用函数。

weight_norm

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

remove_weight_norm

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

spectral_norm

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

remove_spectral_norm

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

初始化 Module 参数的实用函数。

skip_init

给定模块类对象和 args/kwargs,实例化模块而不初始化参数/缓冲区。

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

prune.BasePruningMethod

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

prune.PruningContainer

包含一系列修剪方法的容器,用于迭代修剪。

prune.Identity

不修剪任何单元的实用修剪方法,但生成由全 1 组成的修剪参数化掩码。

prune.RandomUnstructured

随机剪枝张量中的(当前未剪枝)单元。

prune.L1Unstructured

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

prune.RandomStructured

随机剪枝张量中的(当前未剪枝)整个通道。

prune.LnStructured

根据它们的 L n -范数剪枝张量中的(当前未剪枝)整个通道。

prune.CustomFromMask

prune.identity

无需剪枝任何单元,应用剪枝重参数化。

prune.random_unstructured

通过移除随机(当前未剪枝)单元来剪枝张量。

prune.l1_unstructured

通过移除具有最低 L1 范数的单元来剪枝张量。

prune.random_structured

沿指定维度移除随机通道来剪枝张量。

prune.ln_structured

通过移除指定维度上 L n -范数最低的通道来修剪张量。

prune.global_unstructured

parameters 中所有参数对应的张量进行全局修剪,应用指定的 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

允许在注册的参数化中启用缓存系统的上下文管理器。

parametrize.is_parametrized

判断一个模块是否有参数化。

parametrize.ParametrizationList

一个顺序容器,用于持有和管理参数化的原始参数或缓冲区。

以无状态方式调用给定模块的实用函数。

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

用于懒加载参数的模块混入,也称为“懒加载模块”。

别名

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

nn.modules.normalization.RMSNorm

对输入的小批量应用均方根层归一化。


© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,主题由 Read the Docs 提供。

文档

PyTorch 开发者文档全面访问

查看文档

教程

获取初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源