torch.nn
这些是构成图形的基本组件:
torch.nn
一种不应该被认为是模型参数的张量。 |
|
一种被视作模块参数的张量。 |
|
一个未初始化的参数。 |
|
一个未初始化的缓冲区。 |
容器
所有神经网络模块的基础类。 |
|
一个有序容器。 |
|
将子模块存储在列表中。 |
|
将子模块存放在字典里。
|
|
将参数保存在列表中。 |
|
将参数存入字典。 |
模块的全局挂钩
为所有模块注册一个通用的前置预处理钩子。 |
|
为所有的模块注册一个全局前进钩子。 |
|
为所有模块注册一个共用的反向钩子。 |
|
为所有模块注册一个通用的反向前置钩子。 |
|
为所有模块注册一个共用的反向钩子。 |
|
注册一个适用于所有模块的缓冲区注册钩子。 |
|
注册一个适用于所有模块的模块注册钩子。 |
|
为所有模块注册一个通用的参数注册钩子。 |
卷积层
对由多个输入平面组成的输入信号进行一维卷积操作。 |
|
对由多个输入平面组成的输入信号进行二维卷积操作。 |
|
对由多个输入平面组成的输入信号进行三维卷积。 |
|
对该一维输入图像(由多个输入平面组成)应用一维转置卷积运算。 |
|
对该输入图像进行二维转置卷积运算,该图像由多个输入平面组成。 |
|
对由多个输入平面组成的输入图像进行三维转置卷积操作。 |
|
一个具有惰性初始化的 |
|
一个带有惰性初始化的 |
|
一个具有惰性初始化的 |
|
一个具有 |
|
一个具有 |
|
一个具有 |
|
从批处理输入张量中提取滑动局部块。 |
|
将一系列滑动局部块合并成一个大的包含张量。 |
池化层
对由多个输入平面组成的一维输入信号进行最大池化操作。 |
|
对由多个输入平面组成的输入信号进行二维最大池化操作。 |
|
对由多个输入平面组成的输入信号进行三维最大池化操作。 |
|
计算 |
|
计算 |
|
计算 |
|
对由多个输入平面组成的一维输入信号进行平均池化操作。 |
|
对由多个输入平面组成的输入信号进行二维平均池化操作。 |
|
对该数据执行三维平均池化操作,该数据由多个输入平面组成。 |
|
对由多个输入平面组成的二维输入信号进行二维分数最大池化。 |
|
对由多个输入平面组成的输入信号进行三维分数最大池化的操作。 |
|
对由多个输入平面组成的输入信号进行一维幂平均池化处理。 |
|
对该输入信号进行二维幂平均池化操作,该信号由多个输入平面组成。 |
|
对该输入信号进行三维幂平均池化操作,该信号由多个输入平面组成。 |
|
对由多个输入平面组成的一维输入信号进行自适应最大池化操作。 |
|
对由多个输入平面组成的输入信号进行二维自适应最大池化。 |
|
对由多个输入平面组成的输入信号进行三维自适应最大值池化。 |
|
对由多个输入平面组成的输入信号进行一维自适应平均池化。 |
|
对由多个输入平面组成的输入信号进行二维自适应平均池化。 |
|
对该数据进行三维自适应平均池化的操作,该数据由多个输入平面组成。 |
填充层
用输入边界镜像来填充输入张量。 |
|
用输入边界镜像来填充输入张量。 |
|
用输入边界镜像来填充输入张量。 |
|
通过复制输入边界来填充输入张量。 |
|
通过复制输入边界来填充输入张量。 |
|
通过复制输入边界来填充输入张量。 |
|
在输入张量的边界上用零进行 padding。 |
|
在输入张量的边界上用零进行 padding。 |
|
在输入张量的边界上用零进行 padding。 |
|
用常数值填充输入张量的边界。 |
|
用常数值填充输入张量的边界。 |
|
用常数值填充输入张量的边界。 |
|
使用输入边界上的循环 padding 来填充输入张量。 |
|
使用输入边界上的循环 padding 来填充输入张量。 |
|
使用输入边界上的循环 padding 来填充输入张量。 |
非线性激活(加权求和与非线性操作)
按元素应用指数线性单元(ELU)函数。 |
|
按元素应用硬收缩(Hardshrink)函数。 |
|
对每个元素应用Hardsigmoid函数。 |
|
元素级应用HardTanh函数。 |
|
对每个元素应用Hardswish函数。 |
|
对每个元素应用LeakyReLU函数。 |
|
逐元素应用Logsigmoid函数。 |
|
允许模型同时从不同的表示子空间中获取信息。 |
|
应用逐元素的PReLU函数。 |
|
对元素应用修正线性单元(ReLU)函数。 |
|
元素级应用ReLU6函数。 |
|
元素级别应用随机泄漏 rectified 线性单元函数。 |
|
按元素应用SELU函数。 |
|
按元素应用CELU函数。 |
|
应用高斯误差线性单位函数。 |
|
对每个元素应用Sigmoid函数。 |
|
逐元素应用Sigmoid线性单元(SiLU)函数。 |
|
逐元素应用Mish函数。 |
|
对每个元素应用Softplus函数。 |
|
逐元素地应用软阈值函数。 |
|
应用逐元素的Softsign函数。 |
|
对每个元素应用双曲正切(Tanh)函数。 |
|
应用元素-wise Tanhshrink 函数。 |
|
对输入张量的每个元素应用阈值处理。 |
|
应用 gated 线性单元函数。 |
其他非线性激活函数
对n维输入张量应用Softmin函数。 |
|
对n维输入张量应用Softmax函数。 |
|
对每个空间位置上的特征应用SoftMax函数。 |
|
将$\log(\text{Softmax}(x))$函数应用于 n 维输入张量。 |
|
高效的softmax逼近 |
归一化层
对2D或3D输入进行批处理规范化。 |
|
对4D输入进行批规范化处理。 |
|
对5D输入进行批规范化处理。 |
|
一个具有惰性初始化的 |
|
一个带有惰性初始化的 |
|
一个具有惰性初始化的 |
|
对一批输入数据进行组归一化处理。 |
|
对N维输入进行批处理规范化。 |
|
进行实例规范化。 |
|
进行实例规范化。 |
|
进行实例规范化。 |
|
一个带有 |
|
一个带有 |
|
一个具有 |
|
对一批输入数据进行层归一化处理。 |
|
对输入信号进行局部响应归一化处理。 |
|
对一批输入数据进行均方根层规范化处理。 |
循环层
RNN模块(包括RNN、LSTM和GRU)的基础类。 |
|
使用多层 Elman RNN 和 $\tanh$ 或 $\text{ReLU}$ 非线性函数处理输入序列。 |
|
使用多层长短期记忆(LSTM)RNN处理输入序列。 |
|
使用多层门控循环单元(GRU)RNN处理输入序列。 |
|
带有 tanh 或 ReLU 激活函数的 Elman RNN 单元。 |
|
LSTM(长短期记忆)单元。 |
|
一个门控循环单元(GRU)。 |
变换器层
一个变换器模型。 |
|
TransformerEncoder 包含 N 个堆叠的编码器层。 |
|
TransformerDecoder 由 N 个解码层堆叠而成。 |
|
TransformerEncoderLayer 包含自注意力机制和前向网络。 |
|
TransformerDecoderLayer 包含自注意力(self-attn)、多头注意力(multi-head-attn)和前向网络。 |
线性层
一个对参数不敏感的身份占位符操作符。 |
|
对输入数据进行仿射线性变换:$y = xA^T + b$。 |
|
对输入数据进行双线性变换:$y = x_1^T A x_2 + b$。 |
|
一个 |
_dropout层_
在训练过程中,以概率 |
|
随机将整个通道设置为零。 |
|
随机将整个通道设置为零。 |
|
随机将整个通道设置为零。 |
|
对输入应用Alpha Dropout。 |
|
随机完全遮蔽整个通道。 |
稀疏层
一个简单的查找表,用于存储固定大小字典的嵌入。 |
|
计算嵌入集合的和或平均值,无需生成中间嵌入。 |
距离函数
沿 |
|
计算输入向量之间的成对距离,或输入矩阵各列之间的成对距离。 |
损失函数
创建一个用于衡量输入$x$和目标$y$之间平均绝对误差(MAE)的标准。 |
|
创建一个用于衡量输入$x$和目标$y$之间均方误差(即平方L2范数)的标准。 |
|
此准则计算输入 logits 和目标之间的交叉熵损失。 |
|
连接时序分类损失 |
|
负对数似然损失函数。 |
|
基于泊松分布的目标的负对数似然损失。 |
|
高斯负对数似然损失函数。 |
|
Kullback-Leibler 散度损失函数。 |
|
创建一个衡量目标与输入概率之间二元交叉熵的标准。 |
|
此损失函数将一个Sigmoid层和BCELoss层结合在一个类中。 |
|
创建一个准则,用于度量给定输入$x1$和$x2$(两个1D小批量或0D Tensors)以及包含 1 或 -1 的标签 1D 小批量或 0D Tensor $y$的损失。 |
|
根据输入张量$x$和包含1或-1的标签张量$y$来计算损失。 |
|
创建一个优化准则,用于计算输入$x$(一个二维小批量Tensor)和输出$y$(一个二维Tensor的目标类索引)之间的多类别多分类铰链损失(基于边际的损失)。 |
|
创建一个准则:如果绝对元素级别的误差小于 delta,则采用平方项;否则采用比例为 delta 的 L1 项。 |
|
根据绝对元素级别的误差是否低于beta值来决定使用平方项还是L1项。 |
|
创建一个准则,用于优化输入张量$x$和目标张量$y$(包含1或-1)之间的两分类逻辑回归损失。 |
|
创建一个基于最大熵的多标签一对一损失准则,并根据输入$x$和目标$y$(大小为$(N, C)$)进行优化。 |
|
创建一个准则来度量损失,给定输入张量 $x_1$ 和 $x_2$,以及一个值为 1 或 -1 的 Tensor 标签 $y$。 |
|
创建一个准则来优化输入$x$(2D小批量Tensor)和输出$y$(目标类索引的1D张量,$0 \leq y \leq \text{x.size}(1)-1$)之间的多分类铰链损失(基于边距的损失): |
|
创建一个用于度量三元组损失的标准,给定输入张量$x1$、$x2$和$x3$,以及一个大于$0$的边界值。 |
|
创建一个准则来度量三元组损失,给定输入张量$a$、$p$和$n$(分别代表锚点、正例和反例),并使用一个非负实值函数(“距离函数”)来计算锚点与正例之间的距离(“正向距离”)以及锚点与反例之间的距离(“反向距离”)。 |
视觉层
根据放大的因素,重新排列张量中的元素。 |
|
执行 PixelShuffle 操作的逆操作。 |
|
对给定的多通道一维(时间)、二维(空间)或三维(体积)数据进行上采样处理。 |
|
对由多个输入通道组成的输入信号进行二维最近邻上采样。 |
|
对由多个输入通道组成的输入信号进行二维双线性上采样。 |
随机排列层
将张量中的通道划分并重新排列。 |
数据并行层(多GPU、分布式)
在模块层面实现数据并行处理。 |
|
基于 |
工具集
来自torch.nn.utils
模块:
用于裁剪参数梯度的实用函数。
对参数迭代器的梯度范数进行裁剪。 |
|
|
对参数迭代器的梯度范数进行裁剪。 |
将迭代器中参数的梯度裁剪到指定值。 |
用于将 Module 参数展平为单个向量并从中恢复的实用函数。
将参数的可迭代对象展平为一个单一的向量。 |
|
将向量的切片复制到参数列表中。 |
用于融合含有BatchNorm模块的Module的工具函数。
将一个卷积模块和一个 BatchNorm 模块融合成一个新的卷积模块。 |
|
将卷积模块参数与批处理规范化模块参数融合成新的卷积模块参数。 |
|
将一个线性模块和一个批处理规范化模块融合成一个新的线性模块。 |
|
将线性模块参数与批处理规范化模块参数合并为新的线性模块参数。 |
用于转换模块参数内存格式的实用工具函数。
将 |
|
将 |
用于对模块参数进行权重归一化处理的工具函数。
对给定模块中的参数进行权重规范化。 |
|
从模块中移除权重归一化重新参数化。 |
|
对给定模块中的参数应用光谱规范化。 |
|
从模块中删除谱范数重参数化。 |
用于初始化模块参数的工具函数。
给定一个模块类对象和参数 args/kwargs,无需初始化参数或缓冲区来实例化该模块。 |
用于修剪模块参数的工具类和函数。
用于创建新剪枝技术的抽象基础类。 |
|
用于迭代剪枝的方法序列容器。 |
|
一种实用性的裁剪方法,不会裁剪任何单元,而是生成一个全为1的掩码来创建裁剪参数化。 |
|
随机修剪张量中目前尚未修剪的单元。 |
|
通过将具有最小L1范数的单元置零来修剪张量中的单元。 |
|
随机修剪张量中尚未被修剪的完整通道。 |
|
根据张量通道的 L |
|
进行剪枝重新参数化,但不修剪任何单元。 |
|
通过随机移除当前未修剪的单元来修剪张量。 |
|
通过删除L1范数最小的单元来修剪张量。 |
|
通过在指定维度上随机删除通道来修剪张量。 |
|
通过移除指定维度上 L |
|
根据指定的 |
|
使用 |
|
从模块中删除剪枝重参数化,并从前向钩子中删除剪枝方法。 |
|
通过查看剪枝预挂钩来检查模块是否被剪枝。 |
使用torch.nn.utils.parameterize.register_parametrization()
中新的参数化功能实现的参数化。
对矩阵或矩阵批进行正交或酉参数化。 |
|
对给定模块中的参数进行权重规范化。 |
|
对给定模块中的参数应用光谱规范化。 |
用于对现有模块中的张量进行参数化的实用函数。这些函数可以根据特定的映射函数(从输入空间到参数化空间)来参数化给定的参数或缓存变量。它们不是将对象转换为参数的方法。有关如何实现自己的参数化的更多信息,请参阅参数化教程。
在模块中为张量注册参数化。 |
|
去掉模块中张量的参数化。 |
|
一个上下文管理器,用于启用在 |
|
判断一个模块是否进行了参数化。 |
一个顺序容器,用于存放和管理参数化 |
用于无状态调用指定模块的工具函数。
通过对模块的参数和缓冲区进行替换,使用提供的参数和缓冲区来进行功能调用。 |
其他模块里的工具函数
保存打包序列的数据及其对应的 |
|
将包含不同长度填充序列的张量进行打包。 |
|
对一批长度不同的序列进行填充。 |
|
用 |
|
将一个变量长度的张量列表进行打包。 |
|
将 PackedSequence 解包为一个包含多个不同长度张量的列表。 |
|
将填充的张量解封装成一个变量长度张量的列表。 |
将连续的维度范围展平为一个张量。 |
|
展平张量维度,将其扩展为所需的形状。 |
懒加载模块初始化
这是一个用于模块的混入类,这些模块会延迟初始化参数,也被称为“懒惰模块”。 |