logo

torch.nn i PyTorch

PyTorch tillhandahåller modulen torch.nn för att hjälpa oss att skapa och träna det neurala nätverket. Vi kommer först att träna det grundläggande neurala nätverket på MNIST-datauppsättningen utan att använda några funktioner från dessa modeller. Vi kommer bara att använda den grundläggande PyTorch-tensorfunktionen och sedan kommer vi stegvis att lägga till en funktion från torch.nn åt gången.

torch.nn ger oss många fler klasser och moduler för att implementera och träna det neurala nätverket.

Paketet nn innehåller följande moduler och klasser:

Ja Nej Klass och modul Beskrivning
1. ficklampa.nn.Parameter Det är en typ av tensor som ska betraktas som en modulparameter.
2. Behållare
1) torch.nn.Modul Det är en basklass för alla neurala nätverksmoduler.
2) torch.nn.Sekventiell Det är en sekventiell behållare i vilken moduler kommer att läggas till i samma ordning som de skickas i konstruktorn.
3) torch.nn.ModuleList Detta kommer att hålla undermoduler i en lista.
4) torch.nn.ModuleDict Detta kommer att hålla undermoduler i en katalog.
5) torch.nn.ParameterList Detta kommer att hålla parametrarna i en lista.
6) torch.nn.parameterDict Detta kommer att hålla parametrarna i en katalog.
3. Faltningslager
1) torch.nn.Conv1d Detta paket kommer att användas för att applicera en 1D-faltning över en ingångssignal som består av flera ingångsplan.
2) torch.nn.Conv2d Detta paket kommer att användas för att applicera en 2D-faltning över en insignal som består av flera ingångsplan.
3) torch.nn.Conv3d Detta paket kommer att användas för att applicera en 3D-faltning över en insignal som består av flera ingångsplan.
4) torch.nn.ConvTranspose1d Detta paket kommer att användas för att applicera en 1D-transponerad faltningsoperator över en ingångsbild som består av flera inmatningsplan.
5) torch.nn.ConvTranspose2d Detta paket kommer att användas för att applicera en 2D-transponerad faltningsoperator över en ingångsbild som består av flera inmatningsplan.
6) torch.nn.ConvTranspose3d Detta paket kommer att användas för att applicera en 3D-transponerad faltningsoperator över en ingångsbild som består av flera inmatningsplan.
7) torch.nn.Utfold Den används för att extrahera glidande lokala block från en batchinmatad tensor.
8) torch.nn.Fold Den används för att kombinera en rad glidande lokala block till en stor innehållande tensor.
4. Samla lager
1) torch.nn.MaxPool1d Den används för att tillämpa en 1D max-poolning över en insignal som består av flera ingångsplan.
2) torch.nn.MaxPool2d Den används för att tillämpa en 2D max-poolning över en insignal som består av flera ingångsplan.
3) torch.nn.MaxPool3d Den används för att tillämpa en 3D-maxpoolning över en insignal som består av flera ingångsplan.
4) torch.nn.MaxUnpool1d Den används för att beräkna den partiella inversen av MaxPool1d.
5) torch.nn.MaxUnpool2d Den används för att beräkna den partiella inversen av MaxPool2d.
6) torch.nn.MaxUnpool3d Den används för att beräkna den partiella inversen av MaxPool3d.
7) torch.nn.AvgPool1d Den används för att tillämpa en 1D-medelvärdespoolning över en insignal som består av flera ingångsplan.
8) torch.nn.AvgPool2d Den används för att applicera en 2D-medelvärdespoolning över en insignal som består av flera ingångsplan.
9) torch.nn.AvgPool3d Den används för att applicera en 3D-medelvärdespoolning över en insignal som består av flera ingångsplan.
10) torch.nn.FractionalMaxPool2d Den används för att tillämpa en 2D fraktionerad maxpoolning över en insignal som består av flera ingångsplan.
11) torch.nn.LPPool1d Den används för att applicera en 1D-effektmedelpoolning över en insignal som består av flera ingångsplan.
12) torch.nn.LPPool2d Den används för att tillämpa en 2D-effektmedelpoolning över en insignal som består av flera ingångsplan.
13) torch.nn.AdavtiveMaxPool1d Den används för att applicera en 1D adaptiv maxpoolning över en insignal som består av flera ingångsplan.
14) torch.nn.AdavtiveMaxPool2d Den används för att tillämpa en 2D adaptiv maxpoolning över en insignal som består av flera ingångsplan.
15) torch.nn.AdavtiveMaxPool3d Den används för att tillämpa en 3D adaptiv maxpoolning över en insignal som består av flera ingångsplan.
16) torch.nn.AdavtiveAvgPool1d Den används för att applicera en 1D adaptiv medelpoolning över en insignal som består av flera ingångsplan.
17) torch.nn.AdavtiveAvgPool2d Den används för att applicera en 2D adaptiv medelpoolning över en insignal som består av flera ingångsplan.
18) torch.nn.AdavtiveAvgPool3d Den används för att applicera en 3D adaptiv medelpoolning över en insignal som består av flera ingångsplan.
5. Vadderande lager
1) torch.nn.ReflectionPad1d Den kommer att fylla på ingångstensorn med hjälp av reflektionen av ingångsgränsen.
2) torch.nn.ReflactionPad2d Den kommer att fylla på ingångstensorn med hjälp av reflektionen av ingångsgränsen.
3) torch.nn.ReplicationPad1 Det kommer att fylla på ingångstensorn med hjälp av replikeringen av ingångsgränsen.
4) torch.nn.ReplicationPad2d Det kommer att fylla på ingångstensorn med hjälp av replikeringen av ingångsgränsen.
5) torch.nn.ReplicationPad3d Det kommer att fylla på ingångstensorn med hjälp av replikeringen av ingångsgränsen.
6) torch.nn.ZeroPad2d Det kommer att fylla in tensorgränserna med noll.
7) torch.nn.ConstantPad1d Det kommer att fylla in tensorgränserna med ett konstant värde.
8) torch.nn.ConstantPad2d Det kommer att fylla in tensorgränserna med ett konstant värde.
9) torch.nn.ConstantPad3d Det kommer att fylla in tensorgränserna med ett konstant värde.
6. Icke-linjära aktiveringar (vägd summa, icke-linjäritet)
1) torch.nn.ELU Den kommer att använda för att tillämpa den elementmässiga funktionen:
ELU(x)=max(0,x)+min(0,α*(exp(x)-1))
2) torch.nn.Hardshrink Den kommer att använda för att applicera den hårda krympningsfunktionen elementvis funktion:
torch.nn i PyTorch
3) torch.nn.LeakyReLU Den kommer att använda för att tillämpa den elementmässiga funktionen:
LeakyReLu(x)=max(0,x) +negativ_lutning*min(0,x)
4) torch.nn.LogSigmoid Den kommer att använda för att tillämpa den elementmässiga funktionen:
torch.nn i PyTorch
5) torch.nn.MultiheadAttention Den används för att låta modellen ta hand om information från olika representationsunderrum
6) torch.nn.PReLU Den kommer att användas för att tillämpa den elementmässiga funktionen:
PReLU(x)=max(0,x)+a*min(0,x)
7) torch.nn.ReLU Den kommer att använda för att applicera den likriktade linjära enhetsfunktionen elementvis:
ReLU(x)=max(0,x)
8) torch.nn.ReLU6 Den kommer att användas för att tillämpa den elementmässiga funktionen:
ReLU6(x)=min(max(0,x),6)
9) torch.nn.RReLU Det kommer att användas för att tillämpa den slumpmässiga läckande likriktade linjära enhetsfunktionen, elementmässigt, som beskrivs i artikeln:
torch.nn i PyTorch
10) torch.nn.SELU Den kommer att använda för att tillämpa den elementmässiga funktionen som:
SELU(x)=skala*(max(0,x)+ min(0,a*(exp(x)-1)))

Här α= 1,6732632423543772848170429916717 och skala = 1,0507009873554804934193349852946.
11) torch.nn.TARGET Den kommer att använda för att tillämpa den elementmässiga funktionen som:
torch.nn i PyTorch
12) torch.nn.Sigmoid Den kommer att använda för att tillämpa den elementmässiga funktionen som:
torch.nn i PyTorch
13) torch.nn.Softplus Den kommer att använda för att tillämpa den elementmässiga funktionen som:
torch.nn i PyTorch
14) torch.nn.Softshrink Den kommer att använda för att applicera mjuk krympfunktion elementvis som:
torch.nn i PyTorch
15) torch.nn.Softsign Den kommer att använda för att tillämpa den elementmässiga funktionen som:
torch.nn i PyTorch
16) torch.nn.Tanh Den kommer att använda för att tillämpa den elementmässiga funktionen som:
torch.nn i PyTorch
17) torch.nn.Tanhshrink Den kommer att använda för att tillämpa den elementmässiga funktionen som:
Tanhshrink(x)=x-Tanh(x)
18) fackla.nn.Tröskel Den kommer att använda för att tröskelvärda varje element i ingången Tensor. Tröskeln definieras som:
torch.nn i PyTorch
7. Icke-linjära aktiveringar (annat)
1) torch.nn.Softmin Den används för att tillämpa softmin-funktionen på en n-dimensionell ingång Tensor för att skala om dem. Därefter ligger elementen i den n-dimensionella utsignalen Tensor i intervallet 0, 1 och summan till 1. Softmin definieras som:
torch.nn i PyTorch
2) ficklampa.nn.Softmax Den används för att tillämpa softmax-funktionen på en n-dimensionell ingång Tensor för att skala om dem. Därefter ligger elementen i den n-dimensionella utsignalen Tensor i intervallet 0, 1 och summan till 1. Softmax definieras som:
torch.nn i PyTorch
3) torch.nn.Softmax2d Den används för att applicera SoftMax över funktioner på varje rumslig plats.
4) torch.nn.LogSoftmax Den används för att tillämpa LogSoftmax-funktionen på en n-dimensionell ingång Tensor. LofSoftmax-funktionen kan definieras som:
torch.nn i PyTorch
5) torch.nn.AdaptiveLogSoftmaxWithLoss Det är en strategi för träningsmodeller med stora utgångsutrymmen. Det är mycket effektivt när etikettfördelningen är mycket obalanserad
8. Normaliseringslager
1) torch.nn.BatchNorm1d Den används för att tillämpa batch-normalisering över en 2D- eller 3D-ingång.
torch.nn i PyTorch
2) torch.nn.BatchNorm2d Den används för att tillämpa batchnormalisering över en 4D.
torch.nn i PyTorch
3) torch.nn.BatchNorm3d Den används för att tillämpa batchnormalisering över 5D-ingångar.
torch.nn i PyTorch
4) torch.nn.GroupNorm Den används för att tillämpa gruppnormalisering över en minibatch av ingångar.
torch.nn i PyTorch
5) torch.nn.SyncBatchNorm Den används för att tillämpa batchnormalisering över n-dimensionella ingångar.
torch.nn i PyTorch
6) torch.nn.InstanceNorm1d Den används för att tillämpa en instansnormalisering över en 3D-ingång.
torch.nn i PyTorch
7) torch.nn.InstanceNorm2d Den används för att tillämpa en instansnormalisering över en 4D-ingång.
torch.nn i PyTorch
8) torch.nn.InstanceNorm3d Den används för att tillämpa en instansnormalisering över en 5D-ingång.
torch.nn i PyTorch
9) torch.nn.LayerNorm Den används för att tillämpa lagernormalisering över en mini-batch av ingångar.
torch.nn i PyTorch
10) torch.nn.LocalResponseNorm Den används för att tillämpa lokal responsnormalisering över en insignal som är sammansatt av flera ingångsplan, där kanalen upptar den andra dimensionen.
9. Återkommande lager
1) torch.nn.RNN Den används för att applicera en flerskikts Elman RNN med tanh eller ReLU olinjäritet på en ingångssekvens. Varje lager beräknar följande funktion för varje element i inmatningssekvensen:
ht=tanh(Wdemxt+bdem+Whhtt-1+bhh)
2) torch.nn.LSTM Det används för att applicera ett flerlagers långtidsminne (LSTM) RNN till en ingångssekvens. Varje lager beräknar följande funktion för varje element i inmatningssekvensen:
torch.nn i PyTorch
3) torch.nn.GRU Den används för att applicera en multi-layer gated recurrent unit (GRU) RNN till en ingångssekvens. Varje lager beräknar följande funktion för varje element i inmatningssekvensen:
torch.nn i PyTorch
4) torch.nn.RNNCell Den används för att applicera en Elman RNN-cell med tanh- eller ReLU-olinjäritet på en ingångssekvens. Varje lager beräknar följande funktion för varje element i inmatningssekvensen:
h'=tanh(Wdemx+bdem+Whhh+bhh)
ReLU används i stället för tanh
5) torch.nn.LSTMCell Den används för att applicera en lång korttidsminne (LSTM) cell till en inmatningssekvens. Varje lager beräknar följande funktion för varje element i inmatningssekvensen:
torch.nn i PyTorch
Där σ är sigmoidfunktionen och * är Hadamard-produkten.
6) torch.nn.GRUCell Den används för att applicera en gated recurrent unit (GRU) cell till en ingångssekvens. Varje lager beräknar följande funktion för varje element i inmatningssekvensen:
torch.nn i PyTorch
10. Linjära lager
1) fackla.nn.Identitet Det är en platshållaridentitetsoperator som är argumentokänslig.
2) torch.nn.Linjär Den används för att tillämpa en linjär transformation på inkommande data:
y=xAT+b
3) torch.nn.Bilinear Den används för att tillämpa en bilinjär transformation på inkommande data:
y=x1Yxa2+b
elva. Utfallslager
1) torch.nn.Dropout Det används för regularisering och förebyggande av samanpassning av neuroner. En faktor av torch.nn i PyTorchunder träning skalar resultatet. Det innebär att modulen beräknar en identitetsfunktion under utvärderingen.
2) torch.nn.Dropout2d Om intilliggande pixlar i funktionskartor är korrelerade, kommer inte torch.nn.Dropout att reglera aktiveringarna, och det kommer att minska den effektiva inlärningshastigheten. I det här fallet används torch.nn.Dropout2d() för att främja oberoende mellan funktionskartor.
3) torch.nn.Dropout3d Om intilliggande pixlar i funktionskartor är korrelerade, kommer inte torch.nn.Dropout att reglera aktiveringarna, och det kommer att minska den effektiva inlärningshastigheten. I det här fallet används torch.nn.Dropout2d () för att främja oberoende mellan funktionskartor.
4) torch.nn.AlphaDropout Den används för att applicera Alpha Dropout över ingången. Alpha Dropout är en typ av Dropout som upprätthåller den självnormaliserande egenskapen.
12. Glesa lager
1) torch.nn.Inbäddning Den används för att lagra ordinbäddningar och hämta dem med hjälp av index. Ingången för modulen är en lista med index, och utgången är motsvarande ordinbäddning.
2) torch.nn.EmbeddingBag Den används för att beräkna summor eller medelvärde av 'påsar' av inbäddning utan att instansiera den mellanliggande inbäddningen.
13. Avståndsfunktion
1) torch.nn.CosineSimilarity Det kommer att returnera cosinuslikheten mellan x1 och x2, beräknad längs dim.
torch.nn i PyTorch
2) torch.nn.PairwiseDistance Den beräknar det satsvisa parvisa avståndet mellan vektorerna v1, v2 med hjälp av p-normen:
torch.nn i PyTorch
14. Förlustfunktion
1) torch.nn.L1Loss Det används för ett kriterium som mäter det genomsnittliga absoluta felet mellan varje element i ingången x och mål y. Den oreducerade förlusten kan beskrivas som:
l(x,y)=L={l1,...,ln},ln=|xn-ochn|,
Där N är batchstorleken.
2) torch.nn.MSEloss Det används för ett kriterium som mäter medelkvadratfelet mellan varje element i ingången x och mål y. Den oreducerade förlusten kan beskrivas som:
l(x,y)=L={l1,...,ln},ln=(xn-ochn)2,
Där N är batchstorleken.
3) torch.nn.CrossEntropyLoss Detta kriterium kombinerar nn.LogSoftmax() och nn.NLLLoss() i en enda klass. Det är till hjälp när vi tränar ett klassificeringsproblem med C-klasser.
4) torch.nn.CTCLoss Connectionist Temporal Classification-förlust beräknar förlust mellan en kontinuerlig tidsserie och en målsekvens.
5) torch.nn.NLLLoss Den negativa log-likelihood-förlusten används för att träna ett klassificeringsproblem med C-klasser.
6) torch.nn.PoissonNLLLoss Den negativa log-sannolikhetsförlusten med Poisson-fördelningen av t
target~Poisson(input)loss(input,target)=input-target*log(target!)målet.
7) torch.nn.KLDivLoss Det är ett användbart avståndsmått för kontinuerlig fördelning, och det är också användbart när vi utför direkt regression över utrymmet för kontinuerlig utmatningsfördelning.
8) torch.nn.BCELoss Det används för att skapa ett kriterium som mäter den binära korsentropin mellan målet och utgången. Den oreducerade förlusten kan beskrivas som:
l(x,y)=L={l1,...,ln},ln=-vn[ochn*logxn+ (1-årn)*log(1-xn)],
Där N är batchstorleken.
9) torch.nn.BCEWithLogitsLoss Den kombinerar ett Sigmoid-lager och BCEloss i en enda klass. Vi kan dra fördel av log-sum-exp-tricket för numerisk stabilitet genom att kombinera operationen i ett lager.
10) torch.nn.MarginRankingLoss Det skapar ett kriterium som mäter förlusten av givna ingångar x1, x2, två 1D mini-batch-tensorer och en etikett 1D mini-batch-tensor y som innehåller 1 eller -1. Förlustfunktionen för varje prov i minibatchen är följande:
förlust(x,y)=max(0,-y*(x1-x2)+marginal
11) torch.nn.HingeEmbeddingLoss HingeEmbeddingLoss mäter förlusten av en given ingångstensor x och en etikett tensor y som innehåller 1 eller -1. Den används för att mäta om två ingångar är lika eller olika. Förlustfunktionen definieras som:
torch.nn i PyTorch
12) torch.nn.MultiLabelMarginLoss Det används för att skapa ett kriterium som optimerar en multi-klass multi-klassificering gångjärnsförlust mellan ingång x och utgång y.
torch.nn i PyTorch
13) torch.nn.SmoothL1Loss Det används för att skapa ett kriterium som använder en kvadratisk term om det absoluta elementmässiga felet faller under 1 och en L1 term i övrigt. Det är också känt som Huber-förlust:
torch.nn i PyTorch
14) torch.nn.SoftMarginLoss Den används för att skapa ett kriterium som optimerar den logistiska förlusten av tvåklassig klassificering mellan ingångstensor x och måltensor y som innehåller 1 eller -1.
torch.nn i PyTorch
15) torch.nn.MultiLabelSoftMarginLoss Det används för att skapa ett kriterium som optimerar förlusten av flera etiketter en-mot-alla baserat på max-entropi mellan ingången x och mål y av storlek (N, C).
torch.nn i PyTorch
16) torch.nn.CosineEmbeddingLoss Det används för att skapa ett kriterium som mäter förlusten av givna ingångstensorer x1, x2 och en tensoretikett y med värdena 1 eller -1. Den används för att mäta om två ingångar är lika eller olika, med hjälp av cosinusavståndet.
torch.nn i PyTorch
17) torch.nn.MultiMarginLoss Det används för att skapa ett kriterium som optimerar en multi-klass klassificering gångjärnsförlust mellan ingång x och utgång y.
torch.nn i PyTorch
18) torch.nn.TripletMarginLoss Det används för att skapa ett kriterium som mäter triplettförlusten för givna ingångstensorer x1, x2, x3 och en marginal med ett värde större än 0. Det används för att mäta en relativ likhet mellan sampel. En triplett består av ett ankare, positivt exempel och ett negativt exempel.
L(a,p,n)=max{d(ai, sidi)-d(ai,ni)+marginal,0}
femton. Visionslager
1) torch.nn.PixelShuffle Den används för att arrangera om elementen i en tensor av form(*,C×r2,H,W) till en tensor av form (*,C,H×r,W,r)
2) torch.nn.Upsample Den används för att upsampla en given flerkanalig 1D-, 2D- eller 3D-data.
3) torch.nn.upsamplingNearest2d Den används för att applicera 2D närmaste granne uppsampling på en insignal som är sammansatt med flera ingångskanaler.
4) torch.nn.UpsamplingBilinear2d Den används för att tillämpa 2D bilinjär uppsampling på en insignal som består av flera ingångskanaler.
16. DataParallella lager (multi-GPU, distribuerad)
1) torch.nn.DataParallel Den används för att implementera dataparallellism på modulnivå.
2) torch.nn.DistributedDataParallel Den används för att implementera distribuerad dataparallellism, som är baserad på torch.distributed-paketet på modulnivå.
3) torch.nn.DistributedDataParallelCPU Den används för att implementera distribuerad dataparallellism för CPU:n på modulnivå.
17. Verktyg
1) torch.nn.clip_grad_norm_ Den används för att klippa gradientnormen för en iterabel av parametrar.
2) torch.nn.clip_grad_value_ Den används för att klippa gradientnormen för en iterabel av parametrar vid det angivna värdet.
3) torch.nn.parameters_to_vector Den används för att konvertera parametrar till en vektor.
4) torch.nn.vector_to_parameters Den används för att konvertera en vektor till parametrarna.
5) torch.nn.weight_norm Den används för att tillämpa viktnormalisering på en parameter i den givna modulen.
6) torch.nn.remove_weight_norm Den används för att ta bort viktnormaliseringen och omparametreringen från en modul.
7) torch.nn.spectral_norm Den används för att tillämpa spektral normalisering på en parameter i den givna modulen.
8) torch.nn.PackedSequence Den kommer att använda för att hålla data och lista över batch_sizes för en packad sekvens.
9) torch.nn.pack_padded_sequence Den används för att packa en Tensor som innehåller vadderade sekvenser av varierande längd.
10) torch.nn.pad_packed_sequence Den används för att fylla en packad sats av sekvenser med variabel längd.
11) torch.nn.pad_sequence Den används för att fylla på en lista med tensorer med variabel längd med utfyllnadsvärde.
12) torch.nn.pack_sequence Den används för att packa en lista med tensorer med variabel längd
13) torch.nn.remove_spectral_norm Den används för att ta bort den spektrala normaliseringen och omparameteriseringen från en modul.

Referens:

https://pytorch.org/docs/stable/nn.html