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: | |
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: | |
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: | |
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: | |
12) torch.nn.Sigmoid | Den kommer att använda för att tillämpa den elementmässiga funktionen som: | |
13) torch.nn.Softplus | Den kommer att använda för att tillämpa den elementmässiga funktionen som: | |
14) torch.nn.Softshrink | Den kommer att använda för att applicera mjuk krympfunktion elementvis som: | |
15) torch.nn.Softsign | Den kommer att använda för att tillämpa den elementmässiga funktionen som: | |
16) torch.nn.Tanh | Den kommer att använda för att tillämpa den elementmässiga funktionen som: | |
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: | |
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: | |
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: | |
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: | |
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. | |
2) torch.nn.BatchNorm2d | Den används för att tillämpa batchnormalisering över en 4D. | |
3) torch.nn.BatchNorm3d | Den används för att tillämpa batchnormalisering över 5D-ingångar. | |
4) torch.nn.GroupNorm | Den används för att tillämpa gruppnormalisering över en minibatch av ingångar. | |
5) torch.nn.SyncBatchNorm | Den används för att tillämpa batchnormalisering över n-dimensionella ingångar. | |
6) torch.nn.InstanceNorm1d | Den används för att tillämpa en instansnormalisering över en 3D-ingång. | |
7) torch.nn.InstanceNorm2d | Den används för att tillämpa en instansnormalisering över en 4D-ingång. | |
8) torch.nn.InstanceNorm3d | Den används för att tillämpa en instansnormalisering över en 5D-ingång. | |
9) torch.nn.LayerNorm | Den används för att tillämpa lagernormalisering över en mini-batch av ingångar. | |
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: | |
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: | |
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: 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: | |
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 under 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. | |
2) torch.nn.PairwiseDistance | Den beräknar det satsvisa parvisa avståndet mellan vektorerna v1, v2 med hjälp av p-normen: | |
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: | |
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. | |
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: | |
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. | |
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). | |
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. | |
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. | |
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