torch.nn¶
这些是构建图的基本组件:
torch.nn
一种被视为模块参数的张量。 |
|
未初始化的参数。 |
|
一个未初始化的缓冲区。 |
容器¶
所有神经网络模块的基础类。 |
|
顺序容器。 |
|
包含子模块的列表。 |
|
在字典中保存子模块。 |
|
以列表形式保存参数。 |
|
以字典形式保存参数。 |
模块全局钩子
为所有模块注册一个通用的前向预钩子。 |
|
为所有模块注册一个全局的前向钩子 |
|
为所有模块注册一个通用的反向钩子。 |
|
为所有模块注册一个通用的反向钩子。 |
卷积层¶
对由多个输入平面组成的一维输入信号应用卷积。 |
|
对由多个输入平面组成的一维输入信号应用二维卷积。 |
|
在多个输入平面组成的输入信号上应用三维卷积。 |
|
在输入图像上应用一维转置卷积运算符,该图像由多个输入平面组成。 |
|
在输入图像的多个输入平面之上应用二维转置卷积运算符。 |
|
在输入图像上应用一个由多个输入平面组成的三维转置卷积运算符。 |
|
一个 |
|
一个 |
|
一个 |
|
一个 |
|
一个 |
|
一个 |
|
从批量输入张量中提取滑动局部块。 |
|
将一组滑动局部块组合成一个大的包含张量。 |
池化层¶
对由多个输入平面组成的一维输入信号应用最大池化操作。 |
|
对由多个输入平面组成的一维输入信号应用二维最大池化。 |
|
对由多个输入平面组成的空间信号应用三维最大池化操作。 |
|
计算 |
|
计算 |
|
计算 |
|
对由多个输入平面组成的一维输入信号应用平均池化操作。 |
|
对由多个输入平面组成的一维输入信号应用二维平均池化。 |
|
对由多个输入平面组成的一组输入信号应用三维平均池化。 |
|
对由多个输入平面组成的输入信号应用二维分数最大池化。 |
|
对由多个输入平面组成的空间信号应用三维分数最大池化。 |
|
对由多个输入平面组成的一维输入信号应用幂平均池化操作。 |
|
对由多个输入平面组成的输入信号应用二维幂平均池化。 |
|
对由多个输入平面组成的一维输入信号应用自适应最大池化。 |
|
对由多个输入平面组成的空间信号应用二维自适应最大池化。 |
|
对由多个输入平面组成的空间信号应用三维自适应最大池化。 |
|
对由多个输入平面组成的一维输入信号应用自适应平均池化操作。 |
|
对由多个输入平面组成的一维输入信号应用二维自适应平均池化。 |
|
对由多个输入平面组成的空间信号应用三维自适应平均池化。 |
填充层¶
使用输入边界的数据反射来填充输入张量。 |
|
使用输入边界的数据反射来填充输入张量。 |
|
使用输入边界的数据反射来填充输入张量。 |
|
使用输入边界复制来填充输入张量。 |
|
使用输入边界复制来填充输入张量。 |
|
使用输入边界复制来填充输入张量。 |
|
用零填充输入张量的边界。 |
|
用一个常量值填充输入张量的边界。 |
|
用一个常量值填充输入张量的边界。 |
|
用一个常量值填充输入张量的边界。 |
非线性激活(加权和,非线性)¶
逐元素应用函数: |
|
对每个元素应用硬收缩函数: |
|
逐元素应用函数: |
|
对每个元素应用 HardTanh 函数 |
|
逐元素应用 hardswish 函数,如论文中所述: |
|
逐元素应用函数: |
|
逐元素应用函数: |
|
允许模型同时关注来自不同表示子空间的信息。 |
|
逐元素应用函数: |
|
逐元素应用修正线性单元函数: |
|
逐元素应用函数: |
|
逐元素应用随机泄漏线性单元函数,如论文中所述: |
|
按元素依次应用,如下所示: |
|
逐元素应用函数: |
|
应用高斯误差线性单元函数: |
|
逐元素应用函数: |
|
对元素应用 sigmoid 线性单元(SiLU)函数。 |
|
对元素应用Mish函数。 |
|
逐元素应用函数: |
|
逐元素应用软收缩函数: |
|
逐元素应用函数: |
|
逐元素应用函数: |
|
逐元素应用函数: |
|
对输入张量的每个元素进行阈值处理。 |
|
应用门控线性单元函数 ,其中 是输入矩阵的前半部分, 是后半部分。 |
非线性激活函数(其他)¶
对一个n维输入张量应用Softmin函数,对其进行重新缩放,使得n维输出张量的元素位于 [0, 1] 范围内,并且总和为1。 |
|
对一个n维输入张量应用Softmax函数,对其进行重新缩放,使得n维输出张量的元素位于[0,1]范围内,并且总和为1。 |
|
在每个空间位置上对特征应用 SoftMax。 |
|
对 n 维输入张量应用 函数。 |
|
Efficient softmax approximation as described in GPU上的高效softmax近似方法,由Edouard Grave, Armand Joulin, Moustapha Cissé, David Grangier, 和 Hervé Jégou提出. |
归一化层¶
对2D或3D输入(一个包含可选额外通道维度的1D输入的小批量)应用批量归一化,如论文 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 中所述。 |
|
对4D输入(一批2D输入,带有额外的通道维度)应用批量归一化,如论文批量归一化:通过减少内部协变量偏移来加速深度网络训练中所述。 |
|
对5D输入(一批3D输入,带有额外的通道维度)应用批量归一化,如论文批量归一化:通过减少内部协变量偏移来加速深度网络训练中所述。 |
|
一个 |
|
一个 |
|
一个 |
|
对一批输入应用如论文Group Normalization中描述的组归一化 |
|
对N维输入(一个包含额外通道维度的[N-2]D输入的小批量)应用批量归一化,如论文批量归一化:通过减少内部协变量偏移来加速深度网络训练中所述。 |
|
对3D输入(一个包含可选额外通道维度的1D输入的小批量)应用实例归一化,如论文Instance Normalization: The Missing Ingredient for Fast Stylization中所述。 |
|
对4D输入(如论文Instance Normalization: The Missing Ingredient for Fast Stylization中描述的2D输入小批量数据,附加通道维度)应用实例归一化。 |
|
对5D输入(一个包含额外通道维度的3D输入的小批量)应用实例归一化,如论文实例归一化:快速风格化的缺失成分中所述。 |
|
一个 |
|
一个 |
|
一个 |
|
对一个输入的小批量应用层归一化,如论文层归一化中所述 |
|
对由多个输入平面组成的输入信号应用局部响应归一化,其中通道占据第二个维度。 |
循环层¶
对输入序列应用具有或非线性层的多层Elman RNN。 |
|
将多层长短期记忆(LSTM)RNN 应用于输入序列。 |
|
对输入序列应用多层门控循环单元(GRU)RNN。 |
|
具有 tanh 或 ReLU 非线性的 Elman RNN 单元。 |
|
一个长短期记忆(LSTM)单元。 |
|
门控循环单元(GRU)单元 |
Transformer 层¶
一个Transformer模型。 |
|
TransformerEncoder 是 N 个编码器层的堆叠 |
|
TransformerDecoder 是 N 个解码器层的堆叠 |
|
TransformerEncoderLayer 由自注意力机制和前馈网络组成。 |
|
TransformerDecoderLayer 由自注意力层、多头注意力层和前馈网络组成。 |
线性层¶
一个占位符身份运算符,不敏感于参数。 |
|
对输入的数据应用线性变换: |
|
对输入数据应用双线性变换: |
|
一个 |
丢弃层¶
在训练过程中,使用伯努利分布的样本,以概率 |
|
随机零化整个通道(一个通道是一个2D特征图,例如,批次输入中第个样本的第个通道是一个2D张量)。 |
|
随机零化整个通道(一个通道是一个3D特征图,例如,批处理输入中第 |
|
对输入应用 Alpha Dropout。 |
|
随机屏蔽整个通道(一个通道即一个特征图,例如 |
损失函数¶
创建一个度量输入和目标之间平均绝对误差(MAE)的准则。 |
|
创建一个度量标准,用于测量输入和目标中每个元素之间的均方误差(平方L2范数)。 |
|
该准则计算输入和目标之间的交叉熵损失。 |
|
连接主义时序分类损失。 |
|
对数似然损失的负值。 |
|
目标的泊松分布的对数似然损失。 |
|
高斯负对数似然损失。 |
|
Kullback-Leibler 散度损失衡量 |
|
创建一个度量二元交叉熵的准则,用于衡量目标与输入概率之间的差异: |
|
该损失结合了Sigmoid层和BCELoss到一个单一类别中。 |
|
创建一个准则,用于根据输入 、 两个一维小批量 Tensors 和一个标签一维小批量张量 (包含 1 或 -1)来衡量损失。 |
|
计算给定输入张量 和标签张量 (包含 1 或 -1)的损失。 |
|
创建一个优化准则,在输入(一个2D小批量Tensor)和输出(目标类索引的2DTensor)之间计算多分类多标签铰链损失(基于边际的损失)。 |
|
创建一个标准,当绝对元素误差低于 delta 时使用平方项,否则使用按 delta 缩放的 L1 项。 |
|
创建一个标准,当绝对元素误差低于 beta 时使用平方项,否则使用 L1 项。 |
|
创建一个优化准则,用于在输入张量和目标张量(包含1或-1)之间进行两分类逻辑回归损失的优化。 |
|
创建一个基于最大熵的多标签一对一损失优化标准,输入和目标的大小为。 |
|
创建一个度量损失的标准,给定输入张量 , 和一个值为 1 或 -1 的 Tensor 标签 。 |
|
创建一个优化多分类铰链损失(基于 margin 的损失)的标准,该损失存在于输入 (一个 2D 小批量 Tensor)和输出 (这是一个目标类别索引的 1D 张量,)之间: |
|
创建一个度量三元组损失的标准,给定输入张量,,和一个大于的边界值。 |
|
创建一个准则,用于根据输入张量 , , 和 (分别表示锚点、正样本和负样本)来衡量三元组损失,并使用一个非负的实值函数(“距离函数”)来计算锚点与正样本之间的关系(“正距离”)以及锚点与负样本之间的关系(“负距离”)。 |
视觉层¶
将形状为 的张量中的元素重新排列为形状为 的张量,其中 r 是上采样因子。 |
|
将形状为 的张量重新排列成形状为 的张量,从而反向执行 |
|
对给定的多通道一维(时间)、二维(空间)或三维(体积)数据进行上采样。 |
|
对由多个输入通道组成的一维输入信号应用二维最近邻上采样。 |
|
对由多个输入通道组成的一维输入信号应用二维双线性上采样。 |
数据并行层(多GPU,分布式)¶
在模块级别实现数据并行化。 |
|
实现了基于 |
工具¶
来自torch.nn.utils模块
对参数的可迭代对象进行梯度范数裁剪。 |
|
将参数的可迭代对象在指定值处进行梯度裁剪。 |
|
将参数转换为一个向量 |
|
将一个向量转换为参数 |
|
用于创建新剪枝技术的抽象基类。 |
容器用于保存一系列迭代剪枝方法。 |
|
一种实用的剪枝方法,不会剪枝任何单元,但会生成一个全为一的掩码来定义剪枝参数化。 |
|
随机修剪(当前未修剪的)张量中的单位。 |
|
通过将具有最低 L1 范数的单元置零来修剪张量中的单元(当前未经过修剪)。 |
|
随机修剪张量中的整个通道(目前未被修剪)。 |
|
根据张量通道的L |
|
将剪枝重新参数化应用于名为 |
|
修剪对应于名为 |
|
通过移除指定的 amount 个(当前未修剪的)单位中 L1 范数最低的,对参数称为 |
|
修剪对应于名为 |
|
修剪与称为 |
|
全局修剪与 |
|
通过应用在 |
|
从模块中移除剪枝重参数化,并从正向钩子中移除剪枝方法。 |
|
检查 |
|
对给定模块中的参数应用权重归一化。 |
|
从模块中移除权重归一化重新参数化。 |
|
将谱归一化应用于给定模块中的参数。 |
|
从模块中移除频谱归一化重新参数化。 |
|
给定一个模块类对象以及参数 args / kwargs,在不初始化参数或缓冲区的情况下实例化该模块。 |
使用新的参数化功能在torch.nn.utils.parameterize.register_parametrization()中实现的参数化。
将正交或酉参数化应用于矩阵或矩阵批次。 |
|
将谱归一化应用于给定模块中的参数。 |
实用函数,用于对现有模块中的张量进行参数化。 请注意,这些函数可以用于给定的参数或缓冲区,通过特定的函数从输入空间映射到参数化空间。它们不是将对象转换为参数的参数化方法。有关如何实现自己的参数化的更多信息,请参阅 参数化教程。
向模块中的张量添加参数化。 |
|
移除模块中张量的参数化。 |
|
上下文管理器,启用在使用 |
|
如果模块具有活动参数化,则返回 |
一个顺序容器,用于保存和管理 |
其他模块中的工具函数
存储数据和一个打包序列的 |
|
包装一个包含不同长度填充序列的张量。 |
|
对一批变长序列进行填充。 |
|
使用 |
|
将一个可变长度的 Tensor 列表打包 |
将连续范围的维度展平为一个张量。 |
|
将张量的一维展平,扩展到所需的形状。 |