評價此頁

torch.nn#

建立日期:2016 年 12 月 23 日 | 最後更新日期:2025 年 7 月 25 日

These are the basic building blocks for graphs

緩衝區

一種不應被視為模型引數的 Tensor。

引數

一種應被視為模組引數的 Tensor。

未初始化的引數

未初始化的引數。

未初始化的緩衝區

未初始化的緩衝區。

容器#

模組

所有神經網路模組的基類。

序列

一個順序容器。

模組列表

以列表形式儲存子模組。

模組字典

以字典形式儲存子模組。

引數列表

將引數儲存在一個列表中。

引數字典

以字典形式儲存引數。

模組的全域性鉤子

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

為所有模組註冊一個引數註冊鉤子。

卷積層#

nn.Conv1d

對由多個輸入平面組成的輸入訊號進行1D卷積操作。

nn.Conv2d

在由多個輸入平面組成的輸入訊號上應用二維卷積。

nn.Conv3d

對由多個輸入平面組成的輸入訊號應用 3D 卷積。

nn.ConvTranspose1d

對由多個輸入平面組成的輸入影像應用 1D 轉置卷積運算子。

nn.ConvTranspose2d

對由多個輸入平面組成的輸入影像應用 2D 轉置卷積運算子。

nn.ConvTranspose3d

對由多個輸入平面組成的輸入影像應用 3D 轉置卷積運算元。

nn.LazyConv1d

一個 torch.nn.Conv1d 模組,具有 in_channels 引數的延遲初始化。

nn.LazyConv2d

一個 torch.nn.Conv2d 模組,具有 in_channels 引數的延遲初始化。

nn.LazyConv3d

一個 torch.nn.Conv3d 模組,具有 in_channels 引數的延遲初始化。

nn.LazyConvTranspose1d

一個 torch.nn.ConvTranspose1d 模組,具有 in_channels 引數的延遲初始化。

nn.LazyConvTranspose2d

一個 torch.nn.ConvTranspose2d 模組,具有 in_channels 引數的延遲初始化。

nn.LazyConvTranspose3d

一個 torch.nn.ConvTranspose3d 模組,具有 in_channels 引數的延遲初始化。

nn.Unfold

從批處理的輸入 Tensor 中提取滑動區域性塊。

nn.Fold

將一組滑動區域性塊組合成一個大的包含 Tensor。

池化層#

nn.MaxPool1d

對由多個輸入平面組成的輸入訊號應用 1D 最大池化。

nn.MaxPool2d

在由多個輸入平面組成的輸入訊號上應用 2D 最大池化。

nn.MaxPool3d

對由多個輸入平面組成的輸入訊號應用 3D 最大池化。

nn.MaxUnpool1d

計算 MaxPool1d 的部分逆操作。

nn.MaxUnpool2d

計算 MaxPool2d 的部分逆操作。

nn.MaxUnpool3d

計算 MaxPool3d 的部分逆操作。

nn.AvgPool1d

對由多個輸入平面組成的輸入訊號進行1D平均池化操作。

nn.AvgPool2d

對由多個輸入平面組成的輸入訊號應用 2D 平均池化。

nn.AvgPool3d

對由多個輸入層組成的輸入訊號應用 3D 平均池化。

nn.FractionalMaxPool2d

對由多個輸入平面組成的輸入訊號應用 2D 分數最大池化。

nn.FractionalMaxPool3d

對由多個輸入平面組成的輸入訊號應用 3D 分數最大池化。

nn.LPPool1d

對由多個輸入平面組成的輸入訊號應用一維 p-範數平均池化。

nn.LPPool2d

對由多個輸入平面組成的輸入訊號應用 2D 冪平均池化。

nn.LPPool3d

對由多個輸入平面組成的輸入訊號應用 3D 冪平均池化。

nn.AdaptiveMaxPool1d

對由多個輸入平面組成的輸入訊號應用 1D 自適應最大池化。

nn.AdaptiveMaxPool2d

對由多個輸入平面組成的輸入訊號應用 2D 自適應最大池化。

nn.AdaptiveMaxPool3d

對由多個輸入平面組成的輸入訊號應用 3D 自適應最大池化。

nn.AdaptiveAvgPool1d

對由多個輸入平面組成的輸入訊號應用 1D 自適應平均池化。

nn.AdaptiveAvgPool2d

對由多個輸入平面組成的輸入訊號應用二維自適應平均池化。

nn.AdaptiveAvgPool3d

對由多個輸入平面組成的輸入訊號應用 3D 自適應平均池化。

填充層#

nn.ReflectionPad1d

使用輸入邊界的反射來填充輸入張量。

nn.ReflectionPad2d

使用輸入邊界的反射來填充輸入張量。

nn.ReflectionPad3d

使用輸入邊界的反射來填充輸入張量。

nn.ReplicationPad1d

使用輸入邊界的複製來填充輸入張量。

nn.ReplicationPad2d

使用輸入邊界的複製來填充輸入張量。

nn.ReplicationPad3d

使用輸入邊界的複製來填充輸入張量。

nn.ZeroPad1d

用零填充輸入張量邊界。

nn.ZeroPad2d

用零填充輸入張量邊界。

nn.ZeroPad3d

用零填充輸入張量邊界。

nn.ConstantPad1d

用常數值填充輸入張量邊界。

nn.ConstantPad2d

用常數值填充輸入張量邊界。

nn.ConstantPad3d

用常數值填充輸入張量邊界。

nn.CircularPad1d

使用輸入邊界的迴圈填充來填充輸入張量。

nn.CircularPad2d

使用輸入邊界的迴圈填充來填充輸入張量。

nn.CircularPad3d

使用輸入邊界的迴圈填充來填充輸入張量。

非線性啟用(加權和,非線性)#

nn.ELU

逐元素應用指數線性單元 (ELU) 函式。

nn.Hardshrink

逐元素應用 Hard Shrinkage (Hardshrink) 函式。

nn.Hardsigmoid

逐元素應用 Hardsigmoid 函式。

nn.Hardtanh

逐元素應用 HardTanh 函式。

nn.Hardswish

逐元素應用 Hardswish 函式。

nn.LeakyReLU

逐元素應用 LeakyReLU 函式。

nn.LogSigmoid

逐元素應用 Logsigmoid 函式。

nn.MultiheadAttention

允許模型聯合關注來自不同表示子空間的資訊。

nn.PReLU

應用逐元素的 PReLU 函式。

nn.ReLU

逐元素應用線性整流單元函式。

nn.ReLU6

逐元素應用 ReLU6 函式。

nn.RReLU

逐元素應用隨機的 Leaky Rectified Linear Unit 函式。

nn.SELU

逐元素應用 SELU 函式。

nn.CELU

逐元素應用 CELU 函式。

nn.GELU

應用高斯誤差線性單元函式。

nn.Sigmoid

逐元素應用 Sigmoid 函式。

nn.SiLU

逐元素應用 Sigmoid 線性單元 (SiLU) 函式。

nn.Mish

逐元素應用 Mish 函式。

nn.Softplus

逐元素應用 Softplus 函式。

nn.Softshrink

逐元素應用 soft shrinkage 函式。

nn.Softsign

逐元素應用 Softsign 函式。

nn.Tanh

逐元素應用雙曲正切 (Tanh) 函式。

nn.Tanhshrink

逐元素應用 Tanhshrink 函式。

nn.Threshold

對輸入 Tensor 的每個元素進行閾值處理。

nn.GLU

應用門控線性單元函式。

非線性啟用(其他)#

nn.Softmin

對 n 維輸入 Tensor 應用 Softmin 函式。

nn.Softmax

將 Softmax 函式應用於 n 維輸入張量。

nn.Softmax2d

對每個空間位置應用特徵上的 SoftMax。

nn.LogSoftmax

對 n 維輸入 Tensor 應用 log(Softmax(x))\log(\text{Softmax}(x)) 函式。

nn.AdaptiveLogSoftmaxWithLoss

高效的 softmax 近似。

歸一化層#

nn.BatchNorm1d

對 2D 或 3D 輸入應用批歸一化。

nn.BatchNorm2d

對 4D 輸入應用 Batch Normalization。

nn.BatchNorm3d

對 5D 輸入應用批歸一化。

nn.LazyBatchNorm1d

一個具有延遲初始化的 torch.nn.BatchNorm1d 模組。

nn.LazyBatchNorm2d

一個具有延遲初始化的 torch.nn.BatchNorm2d 模組。

nn.LazyBatchNorm3d

一個具有延遲初始化的 torch.nn.BatchNorm3d 模組。

nn.GroupNorm

對輸入的小批次應用組歸一化。

nn.SyncBatchNorm

對 N 維輸入應用批歸一化。

nn.InstanceNorm1d

應用例項歸一化。

nn.InstanceNorm2d

應用例項歸一化。

nn.InstanceNorm3d

應用例項歸一化。

nn.LazyInstanceNorm1d

一個具有 num_features 引數延遲初始化的 torch.nn.InstanceNorm1d 模組。

nn.LazyInstanceNorm2d

一個具有 num_features 引數延遲初始化的 torch.nn.InstanceNorm2d 模組。

nn.LazyInstanceNorm3d

一個具有 num_features 引數延遲初始化的 torch.nn.InstanceNorm3d 模組。

nn.LayerNorm

對輸入 mini-batch 應用層歸一化。

nn.LocalResponseNorm

對輸入訊號應用區域性響應歸一化。

nn.RMSNorm

對輸入的小批次應用均方根層歸一化。

迴圈層#

nn.RNNBase

RNN 模組(RNN、LSTM、GRU)的基類。

nn.RNN

對輸入序列應用多層 Elman RNN,使用 tanh\tanhReLU\text{ReLU} 非線性。

nn.LSTM

對輸入序列應用多層長短期記憶 (LSTM) RNN。

nn.GRU

對輸入序列應用多層門控迴圈單元 (GRU) RNN。

nn.RNNCell

一個具有 tanh 或 ReLU 非線性的 Elman RNN 單元。

nn.LSTMCell

一個長短期記憶 (LSTM) 單元。

nn.GRUCell

一個門控迴圈單元 (GRU) 單元。

Transformer 層#

nn.Transformer

一個基本的 Transformer 層。

nn.TransformerEncoder

TransformerEncoder 是 N 個編碼器層的堆疊。

nn.TransformerDecoder

TransformerDecoder 是 N 個解碼器層的堆疊。

nn.TransformerEncoderLayer

TransformerEncoderLayer 由自注意力機制和前饋網路組成。

nn.TransformerDecoderLayer

TransformerDecoderLayer 由自注意力、多頭注意力和前饋網路組成。

線性層#

nn.Identity

一個佔位符身份運算元,對引數不敏感。

nn.Linear

對輸入資料應用仿射線性變換:y=xAT+by = xA^T + b.

nn.Bilinear

對輸入資料應用雙線性變換:y=x1TAx2+by = x_1^T A x_2 + b.

nn.LazyLinear

一個 torch.nn.Linear 模組,其中 in_features 被推斷。

Dropout 層#

nn.Dropout

在訓練期間,以機率 p 隨機將輸入張量中的一些元素歸零。

nn.Dropout1d

隨機將整個通道置零。

nn.Dropout2d

隨機將整個通道置零。

nn.Dropout3d

隨機將整個通道置零。

nn.AlphaDropout

對輸入應用 Alpha Dropout。

nn.FeatureAlphaDropout

隨機遮蔽整個通道。

稀疏層#

nn.Embedding

一個簡單的查詢表,儲存固定詞彙表和大小的嵌入。

nn.EmbeddingBag

計算嵌入“包”的總和或平均值,而無需例項化中間嵌入。

距離函式#

nn.CosineSimilarity

計算 x1x_1x2x_2 沿 dim 計算的餘弦相似度。

nn.PairwiseDistance

計算輸入向量之間的成對距離,或輸入矩陣列之間的成對距離。

損失函式#

nn.L1Loss

建立一個標準,用於衡量輸入 xx 和目標 yy 之間每個元素的平均絕對誤差 (MAE)。

nn.MSELoss

建立一個標準,用於衡量輸入 xx 和目標 yy 之間每個元素的平均平方誤差(平方 L2 範數)。

nn.CrossEntropyLoss

此準則計算輸入 logits 和 target 之間的交叉熵損失。

nn.CTCLoss

連線主義時間分類損失。

nn.NLLLoss

負對數似然損失。

nn.PoissonNLLLoss

目標為泊松分佈時的負對數似然損失。

nn.GaussianNLLLoss

高斯負對數似然損失。

nn.KLDivLoss

Kullback-Leibler 散度損失。

nn.BCELoss

建立一個準則,用於衡量目標值與輸入機率之間的二元交叉熵。

nn.BCEWithLogitsLoss

此損失結合了 Sigmoid 層和 BCELoss,在一個類中。

nn.MarginRankingLoss

建立一個標準,用於衡量輸入 x1x1x2x2 和標籤(包含 1 或 -1)的 1D mini-batch 或 0D Tensors yy 之間的損失。

nn.HingeEmbeddingLoss

衡量輸入 Tensor xx 和標籤 Tensor yy(包含 1 或 -1)之間的損失。

nn.MultiLabelMarginLoss

建立一個標準,用於最佳化輸入 xx(一個 2D mini-batch Tensor)和輸出 yy(目標類別索引的 2D Tensor)之間的多類多分類合頁損失(基於邊距的損失)。

nn.HuberLoss

建立一個標準,當元素級絕對誤差小於 delta 時使用平方項,否則使用 delta 縮放的 L1 項。

nn.SmoothL1Loss

建立一個標準,當元素級絕對誤差小於 beta 時使用平方項,否則使用 L1 項。

nn.SoftMarginLoss

建立一個標準,用於最佳化輸入 Tensor xx 和目標 Tensor yy(包含 1 或 -1)之間的二分類邏輯損失。

nn.MultiLabelSoftMarginLoss

建立一個標準,用於最佳化輸入 xx 和大小為 (N,C)(N, C) 的目標 yy 之間的多標籤一對多最大熵損失。

nn.CosineEmbeddingLoss

建立一個標準,用於衡量輸入 Tensor x1x_1x2x_2 和值為 1 或 -1 的標籤 Tensor yy 之間的損失。

nn.MultiMarginLoss

建立一個標準,用於最佳化輸入 xx(一個 2D mini-batch Tensor)和輸出 yy(目標類別索引的 1D 感測器,0yx.size(1)10 \leq y \leq \text{x.size}(1)-1)之間的多類分類合頁損失(基於邊距的損失)。

nn.TripletMarginLoss

建立一個標準,用於衡量輸入 Tensor x1x1x2x2x3x3 和大於 00 的邊距值之間的三元組損失。

nn.TripletMarginWithDistanceLoss

建立一個標準,用於衡量輸入 Tensor aapp,和 nn(分別代表錨點、正例和負例),以及一個非負實值函式(“距離函式”),用於計算錨點與正例之間的關係(“正距離”)和錨點與負例之間的關係(“負距離”)的三元組損失。

視覺層#

nn.PixelShuffle

根據上取樣因子重新排列張量中的元素。

nn.PixelUnshuffle

PixelShuffle 操作的逆操作。

nn.Upsample

對給定的多通道一維(時間)、二維(空間)或三維(體積)資料進行上取樣。

nn.UpsamplingNearest2d

對由多個輸入通道組成的輸入訊號應用 2D 最近鄰上取樣。

nn.UpsamplingBilinear2d

對由多個輸入通道組成的輸入訊號應用 2D 雙線性上取樣。

Shuffle 層#

nn.ChannelShuffle

分割並重新排列張量中的通道。

DataParallel 層(多 GPU,分散式)#

nn.DataParallel

在模組級別實現資料並行。

nn.parallel.DistributedDataParallel

在模組級別實現基於 torch.distributed 的分散式資料並行。

實用程式#

來自 torch.nn.utils 模組

用於裁剪引數梯度的實用函式。

clip_grad_norm_

對可迭代引數的梯度範數進行裁剪。

clip_grad_norm

對可迭代引數的梯度範數進行裁剪。

clip_grad_value_

將引數可迭代物件中的梯度裁剪到指定值。

get_total_norm

計算張量可迭代物件的範數。

clip_grads_with_norm_

根據預計算的總範數和所需的 max 範數縮放參數可迭代物件中的梯度。

用於將模組引數展平成單個向量以及將單個向量恢復為模組引數的實用函式。

parameters_to_vector

將引數可迭代物件展平成單個向量。

vector_to_parameters

將一個向量的切片複製到引數的可迭代物件中。

用於將模組與 BatchNorm 模組融合的實用函式。

fuse_conv_bn_eval

將卷積模組和 BatchNorm 模組融合為一個新的卷積模組。

fuse_conv_bn_weights

將卷積模組引數和 BatchNorm 模組引數融合到新的卷積模組引數中。

fuse_linear_bn_eval

將線性模組和 BatchNorm 模組融合為一個新的線性模組。

fuse_linear_bn_weights

將線性模組引數和 BatchNorm 模組引數融合為新的線性模組引數。

用於轉換模組引數記憶體格式的實用函式。

convert_conv2d_weight_memory_format

nn.Conv2d.weightmemory_format 轉換為指定的 memory_format

convert_conv3d_weight_memory_format

nn.Conv3d.weightmemory_format 轉換為 memory_format。轉換會遞迴地應用於巢狀的 nn.Module,包括 module

用於從模組引數應用和移除權重歸一化的實用函式。

weight_norm

對給定模組中的引數應用權重歸一化。

remove_weight_norm

從模組中移除權重歸一化重引數化。

spectral_norm

對給定模組中的引數應用譜歸一化。

remove_spectral_norm

從模組中移除譜歸一化重引數化。

用於初始化模組引數的實用函式。

skip_init

給定一個模組類物件和引數/關鍵字引數,在不初始化引數/緩衝區的情況下例項化模組。

用於剪枝模組引數的實用類和函式。

prune.BasePruningMethod

建立新剪枝技術的抽象基類。

prune.PruningContainer

包含一系列剪枝方法的容器,用於迭代剪枝。

prune.Identity

實用的剪枝方法,不剪枝任何單元,但生成一個全為 1 的掩碼的剪枝引數化。

prune.RandomUnstructured

隨機剪枝張中(當前未剪枝的)單元。

prune.L1Unstructured

透過將 L1 範數最低的單元歸零來剪枝張中(當前未剪枝的)單元。

prune.RandomStructured

隨機剪枝張中(當前未剪枝的)整個通道。

prune.LnStructured

根據 Ln-範數剪枝張中(當前未剪枝的)整個通道。

prune.CustomFromMask

prune.identity

應用剪枝重引數化而不剪枝任何單元。

prune.random_unstructured

透過隨機移除(當前未剪枝的)單元來剪枝張。

prune.l1_unstructured

透過移除 L1 範數最低的單元來剪枝張。

prune.random_structured

沿指定維度隨機移除通道來剪枝張。

prune.ln_structured

沿指定維度移除 Ln-範數最低的通道來剪枝張。

prune.global_unstructured

透過應用指定的 pruning_method 來全域性剪枝 parameters 中對應所有引數的張量。

prune.custom_from_mask

透過應用 mask 中的預計算掩碼來剪枝 module 中名為 name 的引數對應的張量。

prune.remove

從模組中移除剪枝重引數化,並從前向鉤子中移除剪枝方法。

prune.is_pruned

透過查詢剪枝前向鉤子來檢查模組是否被剪枝。

使用 torch.nn.utils.parameterize.register_parametrization() 中新引數化功能實現的引數化。

parametrizations.orthogonal

對矩陣或矩陣批應用正交或酉引數化。

parametrizations.weight_norm

對給定模組中的引數應用權重歸一化。

parametrizations.spectral_norm

對給定模組中的引數應用譜歸一化。

用於對現有模組上的張量進行引數化的實用函式。注意,這些函式可以用於引數化給定的 Parameter 或 Buffer,給定一個將輸入空間對映到引數化空間的特定函式。它們不是將物件轉換為引數的引數化。有關如何實現自己的引數化的更多資訊,請參閱 引數化教程

parametrize.register_parametrization

將引數化註冊到模組中的張量。

parametrize.remove_parametrizations

移除模組中張量上的引數化。

parametrize.cached

上下文管理器,它在透過 register_parametrization() 註冊的引數化內啟用快取系統。

parametrize.is_parametrized

確定模組是否具有引數化。

parametrize.transfer_parametrizations_and_params

將引數化及其引數從 from_module 轉移到 to_module

parametrize.type_before_parametrizations

返回應用引數化之前的模組型別,如果未應用引數化,則返回模組型別。

parametrize.ParametrizationList

一個順序容器,用於儲存和管理已引數化的 torch.nn.Module 的原始引數或緩衝區。

用於以無狀態方式呼叫給定模組的實用函式。

stateless.functional_call

透過用提供的引數和緩衝區替換模組引數和緩衝區來對模組執行函式式呼叫。

其他模組中的實用函式

nn.utils.rnn.PackedSequence

儲存已打包序列的資料和 batch_sizes 列表。

nn.utils.rnn.pack_padded_sequence

打包包含可變長度填充序列的 Tensor。

nn.utils.rnn.pad_packed_sequence

填充已打包的可變長度序列批。

nn.utils.rnn.pad_sequence

使用 padding_value 填充可變長度 Tensor 列表。

nn.utils.rnn.pack_sequence

打包可變長度 Tensor 列表。

nn.utils.rnn.unpack_sequence

將 PackedSequence 解包為可變長度 Tensor 列表。

nn.utils.rnn.unpad_sequence

將填充的 Tensor 解填充為可變長度 Tensor 列表。

nn.utils.rnn.invert_permutation

返回 permutation 的逆。

nn.parameter.is_lazy

返回 param 是否為 UninitializedParameterUninitializedBuffer

nn.factory_kwargs

返回標準化的 factory kwargs 字典。

nn.modules.flatten.Flatten

將連續的維度範圍展平成一個張量。

nn.modules.flatten.Unflatten

將張量的維度解展平成所需的形狀。

量化函式#

量化指的是執行計算和儲存張量時使用低於浮點精度的低位寬的技術。PyTorch 支援每張量和每通道非對稱線性量化。要了解更多關於如何在 PyTorch 中使用量化函式的資訊,請參考 量化 文件。

延遲模組初始化#

nn.modules.lazy.LazyModuleMixin

用於延遲初始化引數的模組的混合類,也稱為“延遲模組”。