torch.nn¶
这些是构建图的基本组件:
torch.nn
一种不应被视为模型参数的张量。 |
|
一种被视为模块参数的张量。 |
|
未初始化的参数。 |
|
一个未初始化的缓冲区。 |
容器¶
所有神经网络模块的基础类。 |
|
顺序容器。 |
|
包含子模块的列表。 |
|
在字典中保存子模块。 |
|
以列表形式保存参数。 |
|
以字典形式保存参数。 |
模块全局钩子
为所有模块注册一个通用的前向预钩。 |
|
为所有模块注册一个全局前向钩子。 |
|
为所有模块注册一个通用的反向钩子。 |
|
为所有模块注册一个通用的反向预钩。 |
|
为所有模块注册一个通用的反向钩子。 |
|
为所有模块注册一个通用的缓冲区注册钩子。 |
|
为所有模块注册一个通用的模块注册钩子。 |
|
为所有模块注册一个通用的参数注册钩子。 |
卷积层¶
对由多个输入平面组成的一维输入信号应用卷积。 |
|
对由多个输入平面组成的一维输入信号应用二维卷积。 |
|
在多个输入平面组成的输入信号上应用三维卷积。 |
|
在输入图像上应用一维转置卷积运算符,该图像由多个输入平面组成。 |
|
在输入图像的多个输入平面之上应用二维转置卷积运算符。 |
|
在输入图像上应用一个由多个输入平面组成的三维转置卷积运算符。 |
|
一个带有懒初始化 |
|
一个带有懒初始化 |
|
一个带有懒初始化 |
|
一个带有懒初始化 |
|
一个带有懒初始化 |
|
一个带有懒初始化 |
|
从批量输入张量中提取滑动局部块。 |
|
将一组滑动局部块组合成一个大的包含张量。 |
池化层¶
对由多个输入平面组成的一维输入信号应用最大池化操作。 |
|
对由多个输入平面组成的一维输入信号应用二维最大池化。 |
|
对由多个输入平面组成的空间信号应用三维最大池化操作。 |
|
计算 |
|
计算 |
|
计算 |
|
对由多个输入平面组成的一维输入信号应用平均池化操作。 |
|
对由多个输入平面组成的一维输入信号应用二维平均池化。 |
|
对由多个输入平面组成的一组输入信号应用三维平均池化。 |
|
对由多个输入平面组成的输入信号应用二维分数最大池化。 |
|
对由多个输入平面组成的空间信号应用三维分数最大池化。 |
|
对由多个输入平面组成的一维输入信号应用幂平均池化操作。 |
|
对由多个输入平面组成的输入信号应用二维幂平均池化。 |
|
对由多个输入平面组成的输入信号应用三维幂平均池化。 |
|
对由多个输入平面组成的一维输入信号应用自适应最大池化。 |
|
对由多个输入平面组成的空间信号应用二维自适应最大池化。 |
|
对由多个输入平面组成的空间信号应用三维自适应最大池化。 |
|
对由多个输入平面组成的一维输入信号应用自适应平均池化操作。 |
|
对由多个输入平面组成的一维输入信号应用二维自适应平均池化。 |
|
对由多个输入平面组成的空间信号应用三维自适应平均池化。 |
填充层¶
使用输入边界的数据反射来填充输入张量。 |
|
使用输入边界的数据反射来填充输入张量。 |
|
使用输入边界的数据反射来填充输入张量。 |
|
使用输入边界复制来填充输入张量。 |
|
使用输入边界复制来填充输入张量。 |
|
使用输入边界复制来填充输入张量。 |
|
用零填充输入张量的边界。 |
|
用零填充输入张量的边界。 |
|
用零填充输入张量的边界。 |
|
用一个常量值填充输入张量的边界。 |
|
用一个常量值填充输入张量的边界。 |
|
用一个常量值填充输入张量的边界。 |
|
使用输入边界循环填充对输入张量进行填充。 |
|
使用输入边界循环填充对输入张量进行填充。 |
|
使用输入边界循环填充对输入张量进行填充。 |
非线性激活(加权和,非线性)¶
对元素应用指数线性单元(ELU)函数。 |
|
对元素应用硬收缩(Hardshrink)函数。 |
|
对元素进行逐点 HardSigmoid 函数运算。 |
|
对元素进行逐个应用 HardTanh 函数。 |
|
对元素应用 Hardswish 函数。 |
|
对元素进行逐个应用漏尾ReLU函数。 |
|
对元素进行逐个应用Logsigmoid函数。 |
|
允许模型同时关注来自不同表示子空间的信息。 |
|
应用逐元素PReLU函数。 |
|
对元素应用整流线性单元函数。 |
|
对元素进行逐点ReLU6函数运算。 |
|
应用元素级别的随机泄露修正线性单元函数。 |
|
对元素进行逐个应用 SELU 函数。 |
|
对元素应用CELU函数。 |
|
应用高斯误差线性单元函数。 |
|
对元素进行逐个应用 Sigmoid 函数。 |
|
对元素应用 sigmoid 线性单元(SiLU)函数。 |
|
对元素应用Mish函数。 |
|
对元素进行逐个Softplus函数运算。 |
|
对元素进行逐点软收缩函数运算。 |
|
应用元素-wise Softsign 函数。 |
|
对元素进行逐点应用双曲正切(Tanh)函数。 |
|
应用元素级别的Tanhshrink函数。 |
|
对输入张量的每个元素进行阈值处理。 |
|
应用门控线性单元函数。 |
非线性激活函数(其他)¶
对 n 维输入张量应用 Softmin 函数。 |
|
对 n 维输入张量应用 Softmax 函数。 |
|
在每个空间位置上对特征应用 SoftMax。 |
|
对 n 维输入张量应用 函数。 |
|
高效的 softmax 近似。 |
归一化层¶
对 2D 或 3D 输入应用批处理归一化。 |
|
对 4D 输入应用批处理规范化。 |
|
对五维输入应用批处理规范化。 |
|
一个具有惰性初始化的 |
|
一个具有惰性初始化的 |
|
一个具有惰性初始化的 |
|
对输入的小批量数据应用组归一化。 |
|
对N维输入应用批规范化。 |
|
应用实例归一化。 |
|
应用实例归一化。 |
|
应用实例归一化。 |
|
一个带有懒初始化 |
|
一个带有懒初始化 |
|
一个带有懒初始化 |
|
对输入的小批量数据应用层归一化。 |
|
对输入信号应用局部响应归一化。 |
|
对输入的小批量数据应用均方根层归一化。 |
循环层¶
递归神经网络模块(RNN、LSTM、GRU)的基础类。 |
|
将多层Elman RNN应用到输入序列中,具有或个非线性。 |
|
对输入序列应用多层长短期记忆(LSTM)循环神经网络(RNN)。 |
|
对输入序列应用多层门控循环单元(GRU)RNN。 |
|
具有 tanh 或 ReLU 非线性的 Elman RNN 单元。 |
|
一个长短期记忆(LSTM)单元。 |
|
带门控的循环单元(GRU)细胞。 |
Transformer 层¶
一个Transformer模型。 |
|
TransformerEncoder 是由 N 个编码层组成的堆叠。 |
|
Transformer解码器由N个解码层组成。 |
|
TransformerEncoderLayer 由自注意力机制和前馈网络组成。 |
|
TransformerDecoderLayer 由自注意力层、多头注意力层和前馈网络组成。 |
线性层¶
一个占位符身份运算符,不敏感于参数。 |
|
对传入的数据应用仿射线性变换:。 |
|
对传入的数据应用双线性变换:。 |
|
一个 |
损失函数¶
创建一个度量输入和目标之间平均绝对误差(MAE)的准则。 |
|
创建一个度量标准,用于测量输入和目标中每个元素之间的均方误差(平方L2范数)。 |
|
此准则计算输入对数几率与目标之间的交叉熵损失。 |
|
连接主义时序分类损失。 |
|
对数似然损失的负值。 |
|
目标的泊松分布的对数似然损失。 |
|
高斯负对数似然损失。 |
|
KL 散度损失。 |
|
创建一个度量二元交叉熵的准则,用于衡量目标与输入概率之间的差异: |
|
该损失结合了Sigmoid层和BCELoss到一个单一类别中。 |
|
创建一个用于根据输入,,两个1D小批量或0DTensors,以及1D小批量或0DTensor(包含1或-1)来衡量损失的标准。 |
|
计算给定输入张量 和标签张量 (包含 1 或 -1)的损失。 |
|
创建一个优化准则,在输入(一个2D小批量Tensor)和输出(目标类索引的2DTensor)之间计算多分类多标签铰链损失(基于边际的损失)。 |
|
创建一个标准,当绝对元素误差低于 delta 时使用平方项,否则使用按 delta 缩放的 L1 项。 |
|
创建一个标准,当绝对元素误差低于 beta 时使用平方项,否则使用 L1 项。 |
|
创建一个优化准则,用于在输入张量和目标张量(包含1或-1)之间进行两分类逻辑回归损失的优化。 |
|
创建一个基于最大熵的多标签一对一损失优化标准,输入和目标的大小为。 |
|
创建一个度量损失的标准,给定输入张量 , 和一个值为 1 或 -1 的 Tensor 标签 。 |
|
创建一个优化多分类铰链损失(基于 margin 的损失)的标准,该损失存在于输入 (一个 2D 小批量 Tensor)和输出 (这是一个目标类别索引的 1D 张量,)之间: |
|
创建一个度量三元组损失的标准,给定输入张量,,和一个大于的边界值。 |
|
创建一个度量三元组损失的标准,给定输入张量、和(分别表示锚点、正例和负例),并使用一个非负实值函数("距离函数")来计算锚点与正例之间的关系("正向距离")和锚点与负例之间的关系("负向距离")。 |
视觉层¶
根据缩放因子重新排列张量中的元素。 |
|
反向像素拼接操作。 |
|
对给定的多通道一维(时间)、二维(空间)或三维(体积)数据进行上采样。 |
|
对由多个输入通道组成的一维输入信号应用二维最近邻上采样。 |
|
对由多个输入通道组成的一维输入信号应用二维双线性上采样。 |
数据并行层(多GPU,分布式)¶
在模块级别实现数据并行化。 |
|
实现基于 |
工具¶
从torch.nn.utils模块:
用于裁剪参数梯度的工具函数。
对参数可迭代对象裁剪梯度范数。 |
|
对参数可迭代对象裁剪梯度范数。 |
|
对可迭代参数进行梯度裁剪,将其值限定在指定范围内。 |
|
计算张量序列的范数。 |
|
根据预计算的总范数和期望的最大范数,缩放参数组的梯度。 |
用于将模块参数展平为单个向量以及从单个向量还原的工具函数。
将参数的可迭代对象展平为单个向量。 |
|
将向量的切片复制到参数的可迭代对象中。 |
用于融合包含批处理归一化模块的模块的工具函数。
融合一个卷积模块和一个批归一化模块,形成一个新的单一卷积模块。 |
|
融合卷积模块参数和批归一化模块参数为新的卷积模块参数。 |
|
融合一个线性模块和一个批归一化模块为一个新的单一线性模块。 |
|
融合线性模块参数和批归一化模块参数为新的线性模块参数。 |
用于转换模块参数内存格式的工具函数。
将 |
|
将 |
用于对模块参数应用和移除权重归一化的工具函数。
对给定模块中的参数应用权重归一化。 |
|
移除模块的权重归一化重参数化。 |
|
对给定模块中的参数应用谱归一化。 |
|
移除模块中的谱范数重新参数化。 |
初始化模块参数的工具函数。
给定一个模块类对象和参数 args / kwargs,在不初始化参数/缓冲区的情况下实例化该模块。 |
用于修剪模块参数的工具类和函数。
用于创建新剪枝技术的抽象基类。 |
|
容器用于保存一系列迭代剪枝方法。 |
|
一种实用的剪枝方法,不会剪枝任何单元,但会生成一个全为一的掩码来定义剪枝参数化。 |
|
随机修剪(当前未修剪的)张量中的单位。 |
|
通过将具有最低 L1 范数的单元置零来修剪张量中的单元(当前未经过修剪)。 |
|
随机修剪张量中的整个通道(目前未被修剪)。 |
|
根据张量通道的L |
|
应用剪枝重新参数化而不修剪任何单元。 |
|
通过移除随机(当前未修剪)单元来修剪张量。 |
|
通过移除 L1 范数最低的单元来修剪张量。 |
|
沿指定维度移除随机通道以修剪张量。 |
|
通过删除指定维度上L |
|
全局修剪与 |
|
通过在 |
|
从模块中移除剪枝重参数化,并从前向钩子中移除剪枝方法。 |
|
通过查找剪枝预钩子来检查一个模块是否被剪枝。 |
使用新的参数化功能在torch.nn.utils.parameterize.register_parametrization()中实现的参数化。
对矩阵或矩阵批次应用正交或酉参数化。 |
|
对给定模块中的参数应用权重归一化。 |
|
对给定模块中的参数应用谱归一化。 |
实用函数,用于对现有模块中的张量进行参数化。 请注意,这些函数可以用于给定的参数或缓冲区,通过特定的函数从输入空间映射到参数化空间。它们不是将对象转换为参数的参数化方法。有关如何实现自己的参数化的更多信息,请参阅 参数化教程。
在模块中为张量注册一个参数化。 |
|
移除模块中张量的参数化。 |
|
上下文管理器,启用在使用 |
|
确定一个模块是否有参数化。 |
一个顺序容器,用于保存和管理参数化 |
以无状态方式调用给定模块的工具函数。
通过用提供的参数和缓冲区替换模块的参数和缓冲区来调用该模块的功能。 |
其他模块中的工具函数
存储数据和一个打包序列的 |
|
包装一个包含不同长度填充序列的张量。 |
|
填充一批长度不一的可变长度序列。 |
|
用 |
|
打包一个变长张量列表。 |
|
将 PackedSequence 展开为一列表示不同长度张量。 |
|
移除填充张量中的填充部分,将其转换为一组长度各异的张量列表。 |
将连续范围的维度展平为一个张量。 |
|
将张量的一维展平,扩展到所需的形状。 |