logo

torch.nn u PyTorchu

PyTorch nudi modul torch.nn koji nam pomaže u stvaranju i obuci neuronske mreže. Prvo ćemo uvježbati osnovnu neuronsku mrežu na MNIST skupu podataka bez korištenja značajki iz ovih modela. Koristit ćemo samo osnovnu funkcionalnost tenzora PyTorcha, a zatim ćemo postupno dodavati jednu po jednu značajku iz torch.nn.

torch.nn pruža nam mnogo više klasa i modula za implementaciju i obuku neuronske mreže.

Paket nn sadrži sljedeće module i klase:

Da ne Razred i modul Opis
1. baklja.nn.Parametar To je tip tenzora koji se treba smatrati parametrom modula.
2. Kontejneri
1) baklja.nn.Modul To je osnovna klasa za sve module neuronske mreže.
2) baklja.nn.Sekvencijalni To je sekvencijalni spremnik u koji će se moduli dodavati istim redoslijedom kojim su proslijeđeni u konstruktoru.
3) baklja.nn.ModuleList Ovo će zadržati podmodule na popisu.
4) baklja.nn.ModuleDict Ovo će držati podmodule u direktoriju.
5) torch.nn.ParameterList Ovo će držati parametre na popisu.
6) baklja.nn.parametarDict Ovo će držati parametre u direktoriju.
3. Konvolucijski slojevi
1) baklja.nn.Conv1d Ovaj paket će se koristiti za primjenu 1D konvolucije preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
2) baklja.nn.Conv2d Ovaj paket će se koristiti za primjenu 2D konvolucije preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
3) baklja.nn.Conv3d Ovaj paket će se koristiti za primjenu 3D konvolucije preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
4) baklja.nn.ConvTranspose1d Ovaj paket koristit će se za primjenu 1D transponiranog operatora konvolucije na ulaznu sliku sastavljenu od nekoliko ulaznih ravnina.
5) baklja.nn.ConvTranspose2d Ovaj paket koristit će se za primjenu 2D transponiranog operatora konvolucije na ulaznu sliku sastavljenu od nekoliko ulaznih ravnina.
6) baklja.nn.ConvTranspose3d Ovaj paket koristit će se za primjenu operatora 3D transponirane konvolucije na ulaznu sliku sastavljenu od nekoliko ulaznih ravnina.
7) baklja.nn.Rasklopiti Koristi se za izdvajanje klizećih lokalnih blokova iz skupnog ulaznog tenzora.
8) baklja.nn.Preklop Koristi se za kombiniranje niza kliznih lokalnih blokova u veliki sadržajni tenzor.
4. Udruživanje slojeva
1) baklja.nn.MaxPool1d Koristi se za primjenu 1D max skupljanja preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
2) baklja.nn.MaxPool2d Koristi se za primjenu 2D max skupljanja preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
3) baklja.nn.MaxPool3d Koristi se za primjenu 3D max skupljanja preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
4) baklja.nn.MaxUnpool1d Koristi se za izračunavanje djelomičnog inverza MaxPool1d.
5) baklja.nn.MaxUnpool2d Koristi se za izračunavanje djelomičnog inverza MaxPool2d.
6) baklja.nn.MaxUnpool3d Koristi se za izračunavanje djelomičnog obrata MaxPool3d.
7) baklja.nn.AvgPool1d Koristi se za primjenu 1D prosječnog skupljanja preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
8) baklja.nn.AvgPool2d Koristi se za primjenu 2D prosječnog skupljanja preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
9) baklja.nn.AvgPool3d Koristi se za primjenu 3D prosječnog skupljanja preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
10) baklja.nn.FractionalMaxPool2d Koristi se za primjenu 2D frakcijskog maksimalnog skupljanja preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
11) baklja.nn.LPPool1d Koristi se za primjenu 1D skupljanja prosječne snage na ulazni signal koji se sastoji od nekoliko ulaznih ravnina.
12) baklja.nn.LPPool2d Koristi se za primjenu 2D skupljanja prosječne snage na ulazni signal koji se sastoji od nekoliko ulaznih ravnina.
13) baklja.nn.AdavtiveMaxPool1d Koristi se za primjenu 1D prilagodljivog maksimalnog udruživanja preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
14) baklja.nn.AdavtiveMaxPool2d Koristi se za primjenu 2D prilagodljivog maksimalnog skupljanja preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
15) baklja.nn.AdavtiveMaxPool3d Koristi se za primjenu 3D prilagodljivog maksimalnog skupljanja preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
16) baklja.nn.AdavtiveAvgPool1d Koristi se za primjenu 1D adaptivnog prosječnog skupljanja preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
17) baklja.nn.AdavtiveAvgPool2d Koristi se za primjenu 2D adaptivnog prosječnog skupljanja preko ulaznog signala sastavljenog od nekoliko ulaznih ravnina.
18) baklja.nn.AdavtiveAvgPool3d Koristi se za primjenu 3D prilagodljivog skupljanja prosjeka na ulazni signal sastavljen od nekoliko ulaznih ravnina.
5. Slojevi podloge
1) baklja.nn.ReflectionPad1d Ispunit će ulazni tenzor pomoću odraza ulazne granice.
2) baklja.nn.ReflactionPad2d Ispunit će ulazni tenzor pomoću odraza ulazne granice.
3) torch.nn.ReplicationPad1 Ispunit će ulazni tenzor koristeći replikaciju ulazne granice.
4) torch.nn.ReplicationPad2d Ispunit će ulazni tenzor koristeći replikaciju ulazne granice.
5) torch.nn.ReplicationPad3d Ispunit će ulazni tenzor koristeći replikaciju ulazne granice.
6) baklja.nn.ZeroPad2d Ispunit će granice ulaznog tenzora nulom.
7) baklja.nn.ConstantPad1d Ispunit će granice ulaznog tenzora konstantnom vrijednošću.
8) baklja.nn.ConstantPad2d Ispunit će granice ulaznog tenzora konstantnom vrijednošću.
9) baklja.nn.ConstantPad3d Ispunit će granice ulaznog tenzora konstantnom vrijednošću.
6. Nelinearne aktivacije (ponderirani zbroj, nelinearnost)
1) baklja.nn.ELU Koristit će se za primjenu funkcije po elementima:
ELU(x)=max(0,x)+min(0,α*(exp(x)-1))
2) baklja.nn.Hardshrink Koristit će se za primjenu funkcije jakog skupljanja po elementima:
torch.nn u PyTorchu
3) baklja.nn.LeakyReLU Koristit će se za primjenu funkcije po elementima:
LeakyReLu(x)=max(0,x) +negativni_nagib*min(0,x)
4) baklja.nn.LogSigmoid Koristit će se za primjenu funkcije po elementima:
torch.nn u PyTorchu
5) baklja.nn.MultiheadAttention Koristi se kako bi se modelu omogućilo da prati informacije iz različitih reprezentativnih potprostora
6) baklja.nn.PReLU Koristit će se za primjenu funkcije po elementima:
PReLU(x)=max(0,x)+a*min(0,x)
7) baklja.nn.ReLU Koristit će se za primjenu funkcije ispravljene linearne jedinice po elementima:
ReLU(x)=max(0,x)
8) baklja.nn.ReLU6 Koristit će se za primjenu funkcije po elementima:
ReLU6(x)=min(max(0,x),6)
9) baklja.nn.RReLU Koristit će se za primjenu randomizirane funkcije nepropusne ispravljene linearne jedinice, po elementima, kao što je opisano u radu:
torch.nn u PyTorchu
10) baklja.nn.SELU Koristit će se za primjenu funkcije po elementima kao:
SELU(x)=skala*(max(0,x)+ min(0,a*(exp(x)-1)))

Ovdje je α= 1,6732632423543772848170429916717 i skala = 1,0507009873554804934193349852946.
11) baklja.nn.CILJA Koristit će se za primjenu funkcije po elementima kao:
torch.nn u PyTorchu
12) baklja.nn.Sigmoid Koristit će se za primjenu funkcije po elementima kao:
torch.nn u PyTorchu
13) gorionik.nn.Softplus Koristit će se za primjenu funkcije po elementima kao:
torch.nn u PyTorchu
14) gorionik.nn.Softshrink Koristit će se za primjenu funkcije laganog skupljanja po elementima kao:
torch.nn u PyTorchu
15) baklja.nn.Softsign Koristit će se za primjenu funkcije po elementima kao:
torch.nn u PyTorchu
16) baklja.nn.Tanh Koristit će se za primjenu funkcije po elementima kao:
torch.nn u PyTorchu
17) baklja.nn.Tanhshrink Koristit će se za primjenu funkcije po elementima kao:
Tanhskupljenje(x)=x-Tanh(x)
18) baklja.nn.Prag Koristit će se za pragove svakog elementa ulaznog tenzora. Prag je definiran kao:
torch.nn u PyTorchu
7. Nelinearne aktivacije (ostalo)
1) baklja.nn.Softmin Koristi se za primjenu funkcije softmin na n-dimenzionalni ulazni tenzor za njihovu promjenu skale. Nakon toga, elementi n-dimenzionalnog izlaznog tenzora nalaze se u rasponu od 0, 1 i zbroju do 1. Softmin se definira kao:
torch.nn u PyTorchu
2) plamenik.nn.Softmax Koristi se za primjenu funkcije softmax na n-dimenzionalni ulazni tenzor za njihovu promjenu skale. Nakon toga, elementi n-dimenzionalnog izlaznog tenzora nalaze se u rasponu 0, 1 i zbroju do 1. Softmax se definira kao:
torch.nn u PyTorchu
3) baklja.nn.Softmax2d Koristi se za primjenu SoftMax nad značajkama na svaku prostornu lokaciju.
4) baklja.nn.LogSoftmax Koristi se za primjenu funkcije LogSoftmax na n-dimenzionalni ulazni tenzor. Funkcija LofSoftmax može se definirati kao:
torch.nn u PyTorchu
5) baklja.nn.AdaptiveLogSoftmaxWithLoss To je strategija za obuku modela s velikim izlaznim prostorom. Vrlo je učinkovit kada je distribucija naljepnica izrazito neuravnotežena
8. Slojevi normalizacije
1) plamenik.nn.BatchNorm1d Koristi se za primjenu skupne normalizacije na 2D ili 3D ulaze.
torch.nn u PyTorchu
2) plamenik.nn.BatchNorm2d Koristi se za primjenu grupne normalizacije na 4D.
torch.nn u PyTorchu
3) plamenik.nn.BatchNorm3d Koristi se za primjenu skupne normalizacije na 5D ulaze.
torch.nn u PyTorchu
4) baklja.nn.GrupnaNorma Koristi se za primjenu grupne normalizacije na mini-seriju ulaza.
torch.nn u PyTorchu
5) torch.nn.SyncBatchNorm Koristi se za primjenu grupne normalizacije na n-dimenzionalne ulaze.
torch.nn u PyTorchu
6) baklja.nn.InstanceNorm1d Koristi se za primjenu normalizacije instance na 3D ulaz.
torch.nn u PyTorchu
7) baklja.nn.InstanceNorm2d Koristi se za primjenu normalizacije instance na 4D ulaz.
torch.nn u PyTorchu
8) torch.nn.InstanceNorm3d Koristi se za primjenu normalizacije instance na 5D ulaz.
torch.nn u PyTorchu
9) baklja.nn.LayerNorm Koristi se za primjenu normalizacije slojeva na mini-seriju ulaza.
torch.nn u PyTorchu
10) torch.nn.LocalResponseNorm Koristi se za primjenu lokalne normalizacije odziva na ulazni signal koji se sastoji od nekoliko ulaznih ravnina, gdje kanal zauzima drugu dimenziju.
9. Ponavljajući slojevi
1) baklja.nn.RNN Koristi se za primjenu višeslojnog Elman RNN-a s tanh ili ReLU nelinearnošću na ulaznu sekvencu. Svaki sloj izračunava sljedeću funkciju za svaki element u ulaznom nizu:
ht=tanh(Wihxt+bih+Whhtt-1+bhh)
2) baklja.nn.LSTM Koristi se za primjenu RNN višeslojne dugotrajne memorije (LSTM) na ulaznu sekvencu. Svaki sloj izračunava sljedeću funkciju za svaki element u ulaznom nizu:
torch.nn u PyTorchu
3) baklja.nn.GRU Koristi se za primjenu višeslojne zatvorene rekurentne jedinice (GRU) RNN na ulaznu sekvencu. Svaki sloj izračunava sljedeću funkciju za svaki element u ulaznom nizu:
torch.nn u PyTorchu
4) baklja.nn.RNNCell Koristi se za primjenu Elmanove RNN ćelije s tanh ili ReLU nelinearnošću na ulaznu sekvencu. Svaki sloj izračunava sljedeću funkciju za svaki element u ulaznom nizu:
h'=tanh(Wihx+bih+Whhh+bhh)
ReLU se koristi umjesto tanh
5) baklja.nn.LSTMCell Koristi se za primjenu ćelije dugog kratkoročnog pamćenja (LSTM) na ulaznu sekvencu. Svaki sloj izračunava sljedeću funkciju za svaki element u ulaznom nizu:
torch.nn u PyTorchu
Gdje je σ sigmoidna funkcija, a * je Hadamardov produkt.
6) baklja.nn.GRUCell Koristi se za primjenu ćelije rekurentne jedinice (GRU) na ulaznu sekvencu. Svaki sloj izračunava sljedeću funkciju za svaki element u ulaznom nizu:
torch.nn u PyTorchu
10. Linearni slojevi
1) baklja.nn.Identitet To je operator identiteta rezerviranog mjesta koji je neosjetljiv na argumente.
2) baklja.nn.Linearni Koristi se za primjenu linearne transformacije na dolazne podatke:
y=xAT+b
3) baklja.nn.Bilinear Koristi se za primjenu bilinearne transformacije na dolazne podatke:
y=x1Sjekira2+b
jedanaest. Ispadajući slojevi
1) baklja.nn.Ispadanje Koristi se za regulaciju i sprječavanje koadaptacije neurona. Faktor od torch.nn u PyTorchutijekom treninga skalira izlaz. To znači da modul izračunava funkciju identiteta tijekom evaluacije.
2) baklja.nn.Dropout2d Ako su susjedni pikseli unutar mapa značajki u korelaciji, tada torch.nn.Dropout neće regulirati aktivacije i smanjit će efektivnu stopu učenja. U ovom slučaju, torch.nn.Dropout2d() se koristi za promicanje neovisnosti između mapa značajki.
3) baklja.nn.Dropout3d Ako su susjedni pikseli unutar mapa značajki u korelaciji, tada torch.nn.Dropout neće regulirati aktivacije i smanjit će efektivnu stopu učenja. U ovom slučaju, torch.nn.Dropout2d () se koristi za promicanje neovisnosti između mapa značajki.
4) baklja.nn.AlphaDropout Koristi se za primjenu Alpha Dropout preko ulaza. Alpha Dropout je vrsta Dropout-a koja održava svojstvo samonormalizacije.
12. Rijetki slojevi
1) baklja.nn.Ugrađivanje Koristi se za pohranjivanje umetanja riječi i njihovo dohvaćanje pomoću indeksa. Ulaz za modul je popis indeksa, a izlaz je odgovarajuća ugradnja riječi.
2) baklja.nn.EmbeddingBag Koristi se za izračunavanje zbroja ili srednje vrijednosti 'vreća' ugrađivanja bez instanciranja srednjeg ugrađivanja.
13. Funkcija udaljenosti
1) baklja.nn.Kosinusna sličnost Vratit će sličnost kosinusa između x1 i x2, izračunatu duž dim.
torch.nn u PyTorchu
2) baklja.nn.PairwiseDistance Izračunava batch-wise pairwise udaljenost između vektora v1, v2 koristeći p-normu:
torch.nn u PyTorchu
14. Funkcija gubitka
1) baklja.nn.L1Gubitak Koristi se za kriterij koji mjeri srednju apsolutnu pogrešku između svakog elementa u ulazu x i cilja y. Nesmanjeni gubitak može se opisati kao:
l(x,y)=L={l1,...,ln},ln=|xn-in|,
Gdje je N veličina serije.
2) baklja.nn.MSELoss Koristi se za kriterij koji mjeri srednju kvadratnu pogrešku između svakog elementa u ulazu x i cilja y. Nesmanjeni gubitak može se opisati kao:
l(x,y)=L={l1,...,ln},ln=(xn-in)2,
Gdje je N veličina serije.
3) baklja.nn.CrossEntropyLoss Ovaj kriterij kombinira nn.LogSoftmax() i nn.NLLLoss() u jednu klasu. Korisno je kada treniramo problem klasifikacije s C klasama.
4) baklja.nn.CTCLoss Gubitak konekcionističke vremenske klasifikacije izračunava gubitak između kontinuiranog vremenskog niza i ciljnog niza.
5) baklja.nn.NLLLoss Gubitak Negative Log-Likelihood koristi se za treniranje problema klasifikacije s C klasama.
6) baklja.nn.PoissonNLLLoss Negativni logaritamski gubitak vjerojatnosti s Poissonovom distribucijom t
target~Poisson(input)loss(input,target)=input-target*log(target!)he target.
7) baklja.nn.KLDivLoss To je korisna mjera udaljenosti za kontinuiranu distribuciju, a također je korisna kada izvodimo izravnu regresiju nad prostorom kontinuirane distribucije izlaza.
8) baklja.nn.BCELoss Koristi se za stvaranje kriterija koji mjeri binarnu unakrsnu entropiju između cilja i izlaza. Nesmanjeni gubitak može se opisati kao:
l(x,y)=L={l1,...,ln},ln=-vn[in*logxn+ (1-gn)*log(1-xn)],
Gdje je N veličina serije.
9) baklja.nn.BCEWithLogitsLoss Kombinira sigmoidni sloj i BCELoss u jednu klasu. Možemo iskoristiti trik log-sum-exp za numeričku stabilnost kombiniranjem operacije u jedan sloj.
10) baklja.nn.MarginRankingLoss Stvara kriterij koji mjeri gubitak zadanih ulaza x1, x2, dva 1D mini-serijskih tenzora i oznaku 1D mini-serijskih tenzora y koji sadrže 1 ili -1. Funkcija gubitka za svaki uzorak u mini-seriji je sljedeća:
gubitak(x,y)=max(0,-y*(x1-x2)+margina
11) baklja.nn.HingeEmbeddingLoss HingeEmbeddingLoss mjeri gubitak zadanog ulaznog tenzora x i tenzora oznaka y koji sadrže 1 ili -1. Koristi se za mjerenje jesu li dva ulaza slična ili različita. Funkcija gubitka je definirana kao:
torch.nn u PyTorchu
12) baklja.nn.MultiLabelMarginLoss Koristi se za stvaranje kriterija koji optimizira gubitak šarke za više klasa između ulaza x i izlaza y.
torch.nn u PyTorchu
13) baklja.nn.SmoothL1Loss Koristi se za stvaranje kriterija koji koristi kvadratni član ako apsolutna elementna pogreška padne ispod 1 i L1 član u suprotnom. Također je poznat kao Huberov gubitak:
torch.nn u PyTorchu
14) baklja.nn.SoftMarginLoss Koristi se za stvaranje kriterija koji optimizira logistički gubitak klasifikacije dvije klase između ulaznog tenzora x i ciljnog tenzora y koji sadrže 1 ili -1.
torch.nn u PyTorchu
15) baklja.nn.MultiLabelSoftMarginLoss Koristi se za stvaranje kriterija koji optimizira gubitak s više oznaka jedan protiv svih na temelju maksimalne entropije između ulaza x i cilja y veličine (N, C).
torch.nn u PyTorchu
16) torch.nn.CosineEmbeddingLoss Koristi se za stvaranje kriterija koji mjeri gubitak danih ulaznih tenzora x1, x2 i oznake tenzora y s vrijednostima 1 ili -1. Koristi se za mjerenje jesu li dva ulaza slična ili različita, koristeći kosinusnu udaljenost.
torch.nn u PyTorchu
17) baklja.nn.MultiMarginLoss Koristi se za stvaranje kriterija koji optimizira gubitak šarke klasifikacije u više klasa između ulaza x i izlaza y.
torch.nn u PyTorchu
18) baklja.nn.TripletMarginLoss Koristi se za stvaranje kriterija koji mjeri trostruki gubitak danih ulaznih tenzora x1, x2, x3 i margine s vrijednošću većom od 0. Koristi se za mjerenje relativne sličnosti između uzoraka. Trojka se sastoji od sidra, pozitivnog primjera i negativnog primjera.
L(a,p,n)=max{d(ai,stri)-d(ai,ni)+margina,0}
petnaest. Slojevi vizije
1) baklja.nn.PixelShuffle Koristi se za preraspoređivanje elemenata u tenzor oblika (*,C×r2,H,W) na tenzor oblika (*,C,H×r,W,r)
2) baklja.nn.Uzorak Koristi se za povećanje uzorkovanja zadanih višekanalnih 1D, 2D ili 3D podataka.
3) torch.nn.upsamplingNearest2d Koristi se za primjenu 2D uzorkovanja najbližeg susjeda na ulazni signal koji je sastavljen od višestrukih ulaznih kanala.
4) torch.nn.UpsamplingBilinear2d Koristi se za primjenu 2D bilinearnog povećanja uzorkovanja na ulazni signal koji je sastavljen od više ulaznih kanala.
16. Paralelni slojevi podataka (više GPU, distribuirano)
1) baklja.nn.DataParallel Koristi se za implementaciju paralelizma podataka na razini modula.
2) baklja.nn.DistributedDataParallel Koristi se za implementaciju paralelizma distribuiranih podataka, koji se temelji na paketu torch.distributed na razini modula.
3) torch.nn.DistributedDataParallelCPU Koristi se za implementaciju paralelizma distribuiranih podataka za CPU na razini modula.
17. Komunalije
1) torch.nn.clip_grad_norm_ Koristi se za rezanje norme gradijenta iterabilnog parametra.
2) torch.nn.clip_grad_value_ Koristi se za rezanje norme gradijenta iterabilnog parametra na specificiranu vrijednost.
3) baklja.nn.parametri_za_vektor Koristi se za pretvaranje parametara u jedan vektor.
4) torch.nn.vector_to_parameters Koristi se za pretvaranje jednog vektora u parametre.
5) baklja.nn.težinska_norma Koristi se za primjenu normalizacije težine na parametar u zadanom modulu.
6) baklja.nn.ukloni_normu_težine Koristi se za uklanjanje normalizacije težine i ponovne parametrizacije iz modula.
7) baklja.nn.spektralna_norma Koristi se za primjenu spektralne normalizacije na parametar u zadanom modulu.
8) torch.nn.PackedSequence Koristit će se za držanje podataka i popisa batch_sizes pakiranog niza.
9) torch.nn.pack_padded_sequence Koristi se za pakiranje tenzora koji sadrži podstavljene nizove promjenjive duljine.
10) torch.nn.pad_packed_sequence Koristi se za upotpunjavanje paketa nizova promjenjive duljine.
11) torch.nn.pad_sequence Koristi se za popunjavanje popisa tenzora promjenjive duljine s vrijednošću popunjavanja.
12) torch.nn.pack_sequence Koristi se za pakiranje popisa tenzora promjenjive duljine
13) baklja.nn.ukloni_spektralnu_normu Koristi se za uklanjanje spektralne normalizacije i ponovne parametrizacije iz modula.

Referenca:

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