torch.nn#
创建日期:2016年12月23日 | 最后更新日期:2025年7月25日
这些是构建计算图的基础模块
容器#
模块的全局钩子
注册一个所有模块共有的前向传播前钩子。 |
|
注册一个所有模块共有的全局前向传播钩子。 |
|
注册所有模块通用的后向钩子。 |
|
注册一个所有模块共有的反向传播前钩子。 |
|
注册所有模块通用的后向钩子。 |
|
注册一个所有模块共有的缓冲区注册钩子。 |
|
注册一个所有模块共有的模块注册钩子。 |
|
注册一个所有模块共有的参数注册钩子。 |
卷积层#
对由多个输入平面组成的输入信号进行1D卷积操作。 |
|
在由多个输入平面组成的输入信号上应用二维卷积。 |
|
对由多个输入平面组成的输入信号应用 3D 卷积。 |
|
对由多个输入平面组成的输入图像应用 1D 转置卷积运算符。 |
|
对由多个输入平面组成的输入图像应用 2D 转置卷积运算符。 |
|
对由多个输入平面组成的输入图像应用 3D 转置卷积算子。 |
|
具有 |
|
具有 |
|
具有 |
|
具有 |
|
具有 |
|
具有 |
|
从批处理的输入 Tensor 中提取滑动局部块。 |
|
将一组滑动局部块组合成一个大的包含 Tensor。 |
池化层#
对由多个输入平面组成的输入信号应用 1D 最大池化。 |
|
在由多个输入平面组成的输入信号上应用 2D 最大池化。 |
|
对由多个输入平面组成的输入信号应用 3D 最大池化。 |
|
计算 |
|
计算 |
|
计算 |
|
对由多个输入平面组成的输入信号进行1D平均池化操作。 |
|
对由多个输入平面组成的输入信号应用 2D 平均池化。 |
|
对由多个输入层组成的输入信号应用 3D 平均池化。 |
|
对由多个输入平面组成的输入信号应用 2D 分数最大池化。 |
|
对由多个输入平面组成的输入信号应用 3D 分数最大池化。 |
|
对由多个输入平面组成的输入信号应用一维 p-范数平均池化。 |
|
对由多个输入平面组成的输入信号应用 2D 幂平均池化。 |
|
对由多个输入平面组成的输入信号应用 3D 幂平均池化。 |
|
对由多个输入平面组成的输入信号应用 1D 自适应最大池化。 |
|
对由多个输入平面组成的输入信号应用 2D 自适应最大池化。 |
|
对由多个输入平面组成的输入信号应用 3D 自适应最大池化。 |
|
对由多个输入平面组成的输入信号应用 1D 自适应平均池化。 |
|
对由多个输入平面组成的输入信号应用二维自适应平均池化。 |
|
对由多个输入平面组成的输入信号应用 3D 自适应平均池化。 |
填充层#
使用输入边界的反射来填充输入张量。 |
|
使用输入边界的反射来填充输入张量。 |
|
使用输入边界的反射来填充输入张量。 |
|
使用输入边界的复制来填充输入张量。 |
|
使用输入边界的复制来填充输入张量。 |
|
使用输入边界的复制来填充输入张量。 |
|
用零填充输入张量边界。 |
|
用零填充输入张量边界。 |
|
用零填充输入张量边界。 |
|
用常数值填充输入张量边界。 |
|
用常数值填充输入张量边界。 |
|
用常数值填充输入张量边界。 |
|
使用输入边界的循环填充来填充输入张量。 |
|
使用输入边界的循环填充来填充输入张量。 |
|
使用输入边界的循环填充来填充输入张量。 |
非线性激活函数(加权和,非线性)#
逐元素应用指数线性单元 (ELU) 函数。 |
|
逐元素应用 Hard Shrinkage (Hardshrink) 函数。 |
|
逐元素应用 Hardsigmoid 函数。 |
|
逐元素应用 HardTanh 函数。 |
|
逐元素应用 Hardswish 函数。 |
|
逐元素应用 LeakyReLU 函数。 |
|
逐元素应用 Logsigmoid 函数。 |
|
允许模型联合关注来自不同表示子空间的信息。 |
|
应用逐元素的 PReLU 函数。 |
|
逐元素应用线性整流单元函数。 |
|
逐元素应用 ReLU6 函数。 |
|
逐元素应用随机的 Leaky Rectified Linear Unit 函数。 |
|
逐元素应用 SELU 函数。 |
|
逐元素应用 CELU 函数。 |
|
应用高斯误差线性单元函数。 |
|
逐元素应用 Sigmoid 函数。 |
|
逐元素应用 Sigmoid 线性单元 (SiLU) 函数。 |
|
逐元素应用 Mish 函数。 |
|
逐元素应用 Softplus 函数。 |
|
逐元素应用 soft shrinkage 函数。 |
|
逐元素应用 Softsign 函数。 |
|
逐元素应用双曲正切 (Tanh) 函数。 |
|
逐元素应用 Tanhshrink 函数。 |
|
对输入 Tensor 的每个元素进行阈值处理。 |
|
应用门控线性单元函数。 |
非线性激活函数(其他)#
对 n 维输入 Tensor 应用 Softmin 函数。 |
|
将 Softmax 函数应用于 n 维输入张量。 |
|
对每个空间位置应用特征上的 SoftMax。 |
|
对 n 维输入 Tensor 应用 函数。 |
|
高效的 softmax 近似。 |
归一化层#
对 2D 或 3D 输入应用批归一化。 |
|
对 4D 输入应用 Batch Normalization。 |
|
对 5D 输入应用批归一化。 |
|
具有延迟初始化的 |
|
具有延迟初始化的 |
|
具有延迟初始化的 |
|
对输入的小批量应用组归一化。 |
|
对 N 维输入应用批归一化。 |
|
应用实例归一化。 |
|
应用实例归一化。 |
|
应用实例归一化。 |
|
具有 |
|
具有 |
|
具有 |
|
对输入 mini-batch 应用层归一化。 |
|
对输入信号应用局部响应归一化。 |
|
对输入的小批量应用均方根层归一化。 |
循环神经网络层#
RNN 模块(RNN、LSTM、GRU)的基类。 |
|
将多层 Elman RNN 应用于输入序列,使用 或 非线性激活。 |
|
将多层长短期记忆 (LSTM) RNN 应用于输入序列。 |
|
将多层门控循环单元 (GRU) RNN 应用于输入序列。 |
|
一个具有 tanh 或 ReLU 非线性的 Elman RNN 单元。 |
|
一个长短期记忆 (LSTM) 单元。 |
|
一个门控循环单元 (GRU) 单元。 |
Transformer 层#
一个基本的 Transformer 层。 |
|
TransformerEncoder 是 N 个编码器层的堆栈。 |
|
TransformerDecoder 是 N 个解码器层的堆栈。 |
|
TransformerEncoderLayer 由自注意力机制和前馈网络组成。 |
|
TransformerDecoderLayer 由自注意力、多头注意力和前馈网络组成。 |
线性层#
一个占位符身份算子,对参数不敏感。 |
|
对输入数据应用仿射线性变换: 。 |
|
对输入数据应用双线性变换: 。 |
|
一个 in_features 参数被自动推断的 |
Dropout 层#
在训练期间,以概率 |
|
随机将整个通道置零。 |
|
随机将整个通道置零。 |
|
随机将整个通道置零。 |
|
对输入应用 Alpha Dropout。 |
|
随机屏蔽整个通道。 |
稀疏层#
一个简单的查找表,存储固定词汇表和大小的嵌入。 |
|
计算嵌入“包”的和或平均值,而无需实例化中间嵌入。 |
距离函数#
返回 和 之间的余弦相似度,沿 dim 计算。 |
|
计算输入向量之间的成对距离,或输入矩阵列之间的成对距离。 |
损失函数#
创建一个标准,用于衡量输入 和目标 之间每个元素的平均绝对误差 (MAE)。 |
|
创建一个标准,用于衡量输入 和目标 之间每个元素的平均平方误差(平方 L2 范数)。 |
|
此准则计算输入 logits 和 target 之间的交叉熵损失。 |
|
连接主义时间分类损失。 |
|
负对数似然损失。 |
|
目标为泊松分布时的负对数似然损失。 |
|
高斯负对数似然损失。 |
|
Kullback-Leibler 散度损失。 |
|
创建一个准则,用于衡量目标值与输入概率之间的二元交叉熵。 |
|
此损失函数在一个类中结合了 Sigmoid 层和 BCELoss。 |
|
创建一个衡量损失的准则,给定输入 , (两个 1D 小批量或 0D 张量)以及一个标签(1D 小批量或 0D 张量)(包含 1 或 -1)。 |
|
衡量给定输入张量 和标签张量 (包含 1 或 -1)的损失。 |
|
创建一个准则,在输入 (一个 2D 小批量 张量)和输出 (目标类索引的 2D 张量)之间优化多类多分类合页损失(基于边缘的损失)。 |
|
创建一个准则,如果绝对逐元素误差低于 delta,则使用平方项,否则使用 delta 缩放的 L1 项。 |
|
创建一个准则,如果绝对逐元素误差低于 beta,则使用平方项,否则使用 L1 项。 |
|
创建一个标准,用于优化输入 Tensor 和目标 Tensor (包含 1 或 -1)之间的二分类逻辑损失。 |
|
创建一个准则,在输入 和大小为 的目标 之间,基于最大熵优化多标签一对多损失。 |
|
创建一个准则,衡量给定输入张量 , 和值为 1 或 -1 的 张量 标签 的损失。 |
|
创建一个准则,在输入 (一个 2D 小批量 张量)和输出 (目标类索引的 1D 张量,)之间优化多类分类合页损失(基于边缘的损失)。 |
|
创建一个准则,给定输入张量 , , 和一个大于 的边缘值,来衡量三元组损失。 |
|
创建一个准则,衡量给定输入张量 , 和 (分别代表锚点、正样本和负样本)的三元组损失,并使用非负实值函数(“距离函数”)计算锚点与正样本之间的关系(“正距离”)以及锚点与负样本之间的关系(“负距离”)。 |
视觉层#
根据上采样因子重新排列张量中的元素。 |
|
PixelShuffle 操作的逆操作。 |
|
对给定的多通道一维(时间)、二维(空间)或三维(体积)数据进行上采样。 |
|
对由多个输入通道组成的输入信号应用 2D 最近邻上采样。 |
|
对由多个输入通道组成的输入信号应用 2D 双线性上采样。 |
Shuffle 层#
分割并重新排列张量中的通道。 |
数据并行层(多 GPU,分布式)#
在模块级别实现数据并行。 |
|
在模块级别实现基于 |
工具#
来自 torch.nn.utils 模块
用于裁剪参数梯度的工具函数。
对可迭代参数的梯度范数进行裁剪。 |
|
对可迭代参数的梯度范数进行裁剪。 |
|
将参数可迭代对象中的梯度裁剪到指定值。 |
|
计算一个张量可迭代对象的范数。 |
|
在给定预计算的总范数和所需的极限范数的情况下,缩放参数可迭代对象的梯度。 |
用于将模块参数平铺为单个向量或从向量恢复参数的工具函数。
将参数可迭代对象展平成单个向量。 |
|
将一个向量的切片复制到参数的可迭代对象中。 |
用于融合模块与 BatchNorm 模块的工具函数。
将卷积模块和 BatchNorm 模块融合为一个新的卷积模块。 |
|
将卷积模块参数和 BatchNorm 模块参数融合到新的卷积模块参数中。 |
|
将线性模块和 BatchNorm 模块融合为一个新的线性模块。 |
|
将线性模块参数和 BatchNorm 模块参数融合为新的线性模块参数。 |
用于转换模块参数内存格式的工具函数。
将 |
|
将 |
用于应用和移除模块参数权重归一化的工具函数。
对给定模块中的参数应用权重归一化。 |
|
从模块中移除权重归一化重参数化。 |
|
对给定模块中的参数应用谱归一化。 |
|
从模块中移除谱归一化重参数化。 |
用于初始化模块参数的工具函数。
给定一个模块类对象和参数/关键字参数,在不初始化参数/缓冲区的情况下实例化模块。 |
用于修剪模块参数的工具类和函数。
用于创建新修剪技术的抽象基类。 |
|
用于存放一系列修剪方法以进行迭代修剪的容器。 |
|
一种不修剪任何单元但生成带全 1 掩码的修剪参数化的工具修剪方法。 |
|
随机修剪张量中(当前未修剪的)单元。 |
|
通过将 L1 范数最小的单元置零来修剪(当前未修剪的)单元。 |
|
随机修剪张量中的整个通道(当前未修剪的)。 |
|
根据 L |
|
应用修剪重参数化而不修剪任何单元。 |
|
通过移除随机(当前未修剪的)单元来修剪张量。 |
|
通过移除 L1 范数最小的单元来修剪张量。 |
|
通过沿指定维度移除随机通道来修剪张量。 |
|
通过沿指定维度移除 L |
|
通过应用指定的 |
|
通过应用 |
|
从模块中移除修剪重参数化,并从前向钩子中移除修剪方法。 |
|
通过检查修剪前钩子来确定模块是否已被修剪。 |
使用 torch.nn.utils.parameterize.register_parametrization() 中的新参数化功能实现的参数化。
将正交或酉参数化应用于矩阵或一批矩阵。 |
|
对给定模块中的参数应用权重归一化。 |
|
对给定模块中的参数应用谱归一化。 |
用于在现有模块上参数化张量的工具函数。请注意,这些函数可用于在给定映射函数(从输入空间到参数化空间)的情况下参数化给定的 Parameter 或 Buffer。它们不是将对象转换为参数的参数化。有关如何实现自己的参数化的更多信息,请参阅 参数化教程。
向模块中的张量注册参数化。 |
|
移除模块中张量上的参数化。 |
|
上下文管理器,启用在已注册 |
|
确定模块是否具有参数化。 |
|
将参数化及其参数化的参数从 |
|
返回应用参数化之前的模块类型;如果没有,则返回模块类型。 |
一个顺序容器,用于持有和管理参数化 |
用于以无状态方式调用给定模块的工具函数。
通过用提供的参数替换模块参数和缓冲区,在模块上执行函数调用。 |
其他模块中的工具函数
持有打包序列的数据和 |
|
打包包含可变长度填充序列的张量。 |
|
填充可变长度序列的打包批次。 |
|
使用 |
|
打包可变长度张量列表。 |
|
将 PackedSequence 解包为可变长度张量列表。 |
|
将填充的张量解填充为可变长度张量列表。 |
|
返回 |
|
返回 |
|
返回工厂关键字参数的规范化字典。 |
将连续维度的范围展平为张量。 |
|
取消张量维度的展平,将其扩展为所需形状。 |
量化函数#
量化是指以低于浮点精度的位宽执行计算和存储张量的技术。PyTorch 支持每张量(per-tensor)和每通道(per-channel)的非对称线性量化。要了解如何在 PyTorch 中使用量化函数,请参阅 量化 文档。
延迟模块初始化#
用于延迟初始化参数的模块的 Mixin,也称为“延迟模块”。 |