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