logo

torch.nn v PyTorchu

PyTorch ponuja modul torch.nn, ki nam pomaga pri ustvarjanju in usposabljanju nevronske mreže. Najprej bomo učili osnovno nevronsko mrežo na naboru podatkov MNIST brez uporabe funkcij iz teh modelov. Uporabili bomo samo osnovno funkcionalnost tenzorja PyTorch, nato pa bomo postopoma dodajali eno funkcijo iz torch.nn hkrati.

torch.nn nam ponuja veliko več razredov in modulov za implementacijo in usposabljanje nevronske mreže.

Paket nn vsebuje naslednje module in razrede:

da ne Razred in modul Opis
1. torch.nn.Parameter To je vrsta tenzorja, ki ga je treba obravnavati kot parameter modula.
2. Zabojniki
1) torch.nn.Modul Je osnovni razred za vse module nevronske mreže.
2) bakla.nn.Zaporedna Je zaporedni vsebnik, v katerega bodo moduli dodani v enakem vrstnem redu, kot so posredovani v konstruktorju.
3) torch.nn.ModuleList To bo vsebovalo podmodule na seznamu.
4) torch.nn.ModuleDict To bo hranilo podmodule v imeniku.
5) torch.nn.ParameterList To bo vsebovalo parametre na seznamu.
6) torch.nn.parameterDict To bo hranilo parametre v imeniku.
3. Konvolucijske plasti
1) torch.nn.Conv1d Ta paket bo uporabljen za uporabo 1D konvolucije nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
2) torch.nn.Conv2d Ta paket bo uporabljen za uporabo 2D konvolucije nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
3) torch.nn.Conv3d Ta paket bo uporabljen za uporabo 3D konvolucije nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
4) torch.nn.ConvTranspose1d Ta paket bo uporabljen za uporabo 1D transponiranega konvolucijskega operatorja nad vhodno sliko, sestavljeno iz več vhodnih ravnin.
5) torch.nn.ConvTranspose2d Ta paket bo uporabljen za uporabo 2D transponiranega konvolucijskega operatorja nad vhodno sliko, sestavljeno iz več vhodnih ravnin.
6) torch.nn.ConvTranspose3d Ta paket bo uporabljen za uporabo 3D transponiranega konvolucijskega operatorja nad vhodno sliko, sestavljeno iz več vhodnih ravnin.
7) bakla.nn.Razgrni Uporablja se za ekstrahiranje drsnih lokalnih blokov iz paketnega vhodnega tenzorja.
8) bakla.nn.Pregib Uporablja se za združevanje niza drsečih lokalnih blokov v velik vsebujoči tenzor.
4. Združevanje plasti
1) torch.nn.MaxPool1d Uporablja se za uporabo 1D max združevanja nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
2) torch.nn.MaxPool2d Uporablja se za uporabo 2D max združevanja nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
3) torch.nn.MaxPool3d Uporablja se za uporabo 3D max združevanja nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
4) torch.nn.MaxUnpool1d Uporablja se za izračun delnega obrata MaxPool1d.
5) torch.nn.MaxUnpool2d Uporablja se za izračun delnega obrata MaxPool2d.
6) torch.nn.MaxUnpool3d Uporablja se za izračun delnega obrata MaxPool3d.
7) torch.nn.AvgPool1d Uporablja se za uporabo 1D združevanja povprečja nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
8) torch.nn.AvgPool2d Uporablja se za uporabo 2D povprečnega združevanja na vhodnem signalu, sestavljenem iz več vhodnih ravnin.
9) torch.nn.AvgPool3d Uporablja se za uporabo združevanja 3D povprečja nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
10) torch.nn.FractionalMaxPool2d Uporablja se za uporabo 2D delnega največjega združevanja nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
11) torch.nn.LPPool1d Uporablja se za uporabo 1D združevanja povprečne moči nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
12) torch.nn.LPPool2d Uporablja se za uporabo 2D združevanja povprečne moči nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
13) torch.nn.AdavtiveMaxPool1d Uporablja se za uporabo 1D prilagodljivega največjega združevanja nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
14) torch.nn.AdavtiveMaxPool2d Uporablja se za uporabo 2D prilagodljivega največjega združevanja nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
15) torch.nn.AdavtiveMaxPool3d Uporablja se za uporabo 3D prilagodljivega največjega združevanja nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
16) torch.nn.AdavtiveAvgPool1d Uporablja se za uporabo 1D prilagodljivega povprečnega združevanja nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
17) torch.nn.AdavtiveAvgPool2d Uporablja se za uporabo 2D prilagodljivega združevanja povprečja nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
18) torch.nn.AdavtiveAvgPool3d Uporablja se za uporabo 3D prilagodljivega združevanja povprečja nad vhodnim signalom, sestavljenim iz več vhodnih ravnin.
5. Oblazinjene plasti
1) torch.nn.ReflectionPad1d Obložil bo vhodni tenzor z odbojem vhodne meje.
2) torch.nn.ReflactionPad2d Obložil bo vhodni tenzor z odbojem vhodne meje.
3) torch.nn.ReplicationPad1 Obložil bo vhodni tenzor z uporabo replikacije vhodne meje.
4) torch.nn.ReplicationPad2d Obložil bo vhodni tenzor z uporabo replikacije vhodne meje.
5) torch.nn.ReplicationPad3d Obložil bo vhodni tenzor z uporabo replikacije vhodne meje.
6) torch.nn.ZeroPad2d Meje vhodnega tenzorja bo zapolnil z ničlo.
7) torch.nn.ConstantPad1d Vhodne meje tenzorja bo oblazinil s konstantno vrednostjo.
8) torch.nn.ConstantPad2d Vhodne meje tenzorja bo oblazinil s konstantno vrednostjo.
9) torch.nn.ConstantPad3d Vhodne meje tenzorja bo oblazinil s konstantno vrednostjo.
6. Nelinearne aktivacije (utežena vsota, nelinearnost)
1) svetilka.nn.ELU Uporabil se bo za uporabo funkcije po elementih:
ELU(x)=max(0,x)+min(0,α*(exp(x)-1))
2) bakla.nn.Hardshrink Uporabil se bo za uporabo funkcije trdega krčenja po elementih:
torch.nn v PyTorchu
3) torch.nn.LeakyReLU Uporabil se bo za uporabo funkcije po elementih:
LeakyReLu(x)=max(0,x) +negativni_naklon*min(0,x)
4) torch.nn.LogSigmoid Uporabil se bo za uporabo funkcije po elementih:
torch.nn v PyTorchu
5) torch.nn.MultiheadAttention Uporablja se, da omogoči modelu, da se posveti informacijam iz različnih reprezentacijskih podprostorov
6) bakla.nn.PReLU Uporabljen bo za uporabo funkcije po elementih:
PReLU(x)=max(0,x)+a*min(0,x)
7) bakla.nn.ReLU Uporabil se bo za uporabo popravljene funkcije linearne enote po elementih:
ReLU(x)=max(0,x)
8) bakla.nn.ReLU6 Uporabljen bo za uporabo funkcije po elementih:
ReLU6(x)=min(max(0,x),6)
9) bakla.nn.RReLU Uporabljal se bo za uporabo randomizirane funkcije linearne enote za puščanje popravljenih elementov, kot je opisano v članku:
torch.nn v PyTorchu
10) bakla.nn.SELU Uporabil se bo za uporabo funkcije po elementih kot:
SELU(x)=lestvica*(max(0,x)+ min(0,a*(exp(x)-1)))

Tukaj je α= 1,6732632423543772848170429916717 in lestvica = 1,0507009873554804934193349852946.
11) bakla.nn.TARGET Uporabil se bo za uporabo funkcije po elementih kot:
torch.nn v PyTorchu
12) bakla.nn.Sigmoid Uporabil se bo za uporabo funkcije po elementih kot:
torch.nn v PyTorchu
13) svetilka.nn.Softplus Uporabil se bo za uporabo funkcije po elementih kot:
torch.nn v PyTorchu
14) torch.nn.Softshrink Uporabil se bo za uporabo funkcije mehkega krčenja po elementih kot:
torch.nn v PyTorchu
15) torch.nn.Softsign Uporabil se bo za uporabo funkcije po elementih kot:
torch.nn v PyTorchu
16) bakla.nn.Tanh Uporabil se bo za uporabo funkcije po elementih kot:
torch.nn v PyTorchu
17) bakla.nn.Tanhshrink Uporabil se bo za uporabo funkcije po elementih kot:
Tanhshrink(x)=x-Tanh(x)
18) bakla.nn.Prag Uporabil bo prag za vsak element vhodnega tenzorja. Prag je opredeljen kot:
torch.nn v PyTorchu
7. Nelinearne aktivacije (drugo)
1) torch.nn.Softmin Uporablja se za uporabo funkcije softmin na n-dimenzionalnem vhodnem tenzorju za njihovo spreminjanje velikosti. Po tem so elementi n-dimenzionalnega izhodnega tenzorja v območju 0, 1 in vsota do 1. Softmin je definiran kot:
torch.nn v PyTorchu
2) gorilnik.nn.Softmax Uporablja se za uporabo funkcije softmax na n-dimenzionalnem vhodnem tenzorju za njihovo ponovno skaliranje. Po tem so elementi n-dimenzionalnega izhodnega tenzorja v območju 0, 1 in vsota 1. Softmax je definiran kot:
torch.nn v PyTorchu
3) torch.nn.Softmax2d Uporablja se za uporabo SoftMax nad funkcijami za vsako prostorsko lokacijo.
4) torch.nn.LogSoftmax Uporablja se za uporabo funkcije LogSoftmax za n-dimenzionalni vhodni tenzor. Funkcijo LofSoftmax lahko definiramo kot:
torch.nn v PyTorchu
5) torch.nn.AdaptiveLogSoftmaxWithLoss To je strategija za usposabljanje modelov z velikimi izhodnimi prostori. Zelo je učinkovit, kadar je distribucija nalepk zelo neuravnotežena
8. Normalizacijske plasti
1) torch.nn.BatchNorm1d Uporablja se za uporabo paketne normalizacije nad 2D ali 3D vhodi.
torch.nn v PyTorchu
2) torch.nn.BatchNorm2d Uporablja se za uporabo paketne normalizacije nad 4D.
torch.nn v PyTorchu
3) torch.nn.BatchNorm3d Uporablja se za uporabo paketne normalizacije nad 5D vhodi.
torch.nn v PyTorchu
4) torch.nn.GroupNorm Uporablja se za uporabo skupinske normalizacije nad mini paketom vnosov.
torch.nn v PyTorchu
5) torch.nn.SyncBatchNorm Uporablja se za uporabo paketne normalizacije nad n-dimenzionalnimi vhodi.
torch.nn v PyTorchu
6) torch.nn.InstanceNorm1d Uporablja se za uporabo normalizacije primerka nad 3D vnosom.
torch.nn v PyTorchu
7) torch.nn.InstanceNorm2d Uporablja se za uporabo normalizacije primerka nad 4D vhodom.
torch.nn v PyTorchu
8) torch.nn.InstanceNorm3d Uporablja se za uporabo normalizacije primerka nad vhodom 5D.
torch.nn v PyTorchu
9) torch.nn.LayerNorm Uporablja se za uporabo normalizacije plasti nad mini serijo vnosov.
torch.nn v PyTorchu
10) torch.nn.LocalResponseNorm Uporablja se za uporabo lokalne normalizacije odziva na vhodnem signalu, ki je sestavljen iz več vhodnih ravnin, kjer kanal zaseda drugo dimenzijo.
9. Ponavljajoče se plasti
1) bakla.nn.RNN Uporablja se za uporabo večplastnega Elman RNN z nelinearnostjo tanh ali ReLU na vhodno zaporedje. Vsaka plast izračuna naslednjo funkcijo za vsak element v vhodnem zaporedju:
ht=tanh(Wnjimxt+bnjim+Whhtt-1+bhh)
2) bakla.nn.LSTM Uporablja se za uporabo večslojnega dolgega kratkoročnega pomnilnika (LSTM) RNN na vhodno zaporedje. Vsaka plast izračuna naslednjo funkcijo za vsak element v vhodnem zaporedju:
torch.nn v PyTorchu
3) bakla.nn.GRU Uporablja se za uporabo večslojne zaprte ponavljajoče se enote (GRU) RNN na vhodno zaporedje. Vsaka plast izračuna naslednjo funkcijo za vsak element v vhodnem zaporedju:
torch.nn v PyTorchu
4) bakla.nn.RNNCell Uporablja se za uporabo celice Elman RNN z nelinearnostjo tanh ali ReLU na vhodno zaporedje. Vsaka plast izračuna naslednjo funkcijo za vsak element v vhodnem zaporedju:
h'=tanh(Wnjimx+bnjim+Whhh+bhh)
ReLU se uporablja namesto tanh
5) torch.nn.LSTMCell Uporablja se za uporabo celice dolgega kratkoročnega pomnilnika (LSTM) na vhodno zaporedje. Vsaka plast izračuna naslednjo funkcijo za vsak element v vhodnem zaporedju:
torch.nn v PyTorchu
Kjer je σ sigmoidna funkcija in * je Hadamardov produkt.
6) torch.nn.GRUCell Uporablja se za uporabo celice GRU (Gated Recurrent Unit) na vhodno zaporedje. Vsaka plast izračuna naslednjo funkcijo za vsak element v vhodnem zaporedju:
torch.nn v PyTorchu
10. Linearni sloji
1) bakla.nn.Identiteta Je operator identitete nadomestnega znaka, ki je neobčutljiv na argumente.
2) bakla.nn.Linearna Uporablja se za uporabo linearne transformacije vhodnih podatkov:
y=xAT+b
3) bakla.nn.Bilinearno Uporablja se za uporabo bilinearne transformacije vhodnih podatkov:
y=x1sekira2+b
enajst. Izpadni sloji
1) bakla.nn.Izpad Uporablja se za uravnavanje in preprečevanje ko-adaptacije nevronov. Faktor od torch.nn v PyTorchumed treningom meri izhod. To pomeni, da modul med vrednotenjem izračuna funkcijo identitete.
2) torch.nn.Dropout2d Če so sosednje slikovne pike znotraj zemljevidov funkcij povezane, potem torch.nn.Dropout ne bo uredil aktivacij in bo zmanjšal efektivno stopnjo učenja. V tem primeru se torch.nn.Dropout2d() uporablja za spodbujanje neodvisnosti med zemljevidi funkcij.
3) torch.nn.Dropout3d Če so sosednje slikovne pike znotraj zemljevidov funkcij povezane, potem torch.nn.Dropout ne bo uredil aktivacij in bo zmanjšal efektivno stopnjo učenja. V tem primeru se torch.nn.Dropout2d () uporablja za spodbujanje neodvisnosti med zemljevidi funkcij.
4) torch.nn.AlphaDropout Uporablja se za uporabo Alpha Dropout nad vnosom. Alpha Dropout je vrsta Dropouta, ki ohranja lastnost samonormalizacije.
12. Redke plasti
1) torch.nn.Vdelava Uporablja se za shranjevanje vdelanih besed in njihovo pridobivanje z uporabo indeksov. Vhod za modul je seznam indeksov, izhod pa ustrezna vdelava besed.
2) torch.nn.EmbeddingBag Uporablja se za izračun vsot ali povprečja 'vreč' vdelave brez instanciranja vmesne vdelave.
13. Funkcija razdalje
1) torch.nn.CosineSimilarity Vrnil bo podobnost kosinusa med x1 in x2, izračunano vzdolž dim.
torch.nn v PyTorchu
2) torch.nn.PairwiseDistance Izračuna paketno parno razdaljo med vektorjema v1, v2 z uporabo p-norme:
torch.nn v PyTorchu
14. Funkcija izgube
1) bakla.nn.L1Izguba Uporablja se za merilo, ki meri srednjo absolutno napako med vsakim elementom v vhodu x in ciljem y. Nezmanjšano izgubo je mogoče opisati kot:
l(x,y)=L={l1,...,ln},ln=|xn-inn|,
Kjer je N velikost serije.
2) torch.nn.MSELoss Uporablja se za merilo, ki meri srednjo kvadratno napako med vsakim elementom v vhodu x in ciljem y. Nezmanjšano izgubo je mogoče opisati kot:
l(x,y)=L={l1,...,ln},ln=(xn-inn)2,
Kjer je N velikost serije.
3) torch.nn.CrossEntropyLoss Ta kriterij združuje nn.LogSoftmax() in nn.NLLLoss() v enem samem razredu. Koristno je, ko treniramo problem klasifikacije z razredi C.
4) torch.nn.CTCLoss Izguba konekcionistične časovne klasifikacije izračuna izgubo med neprekinjeno časovno vrsto in ciljnim zaporedjem.
5) torch.nn.NLLLoss Izguba Negative Log-Likelihood se uporablja za usposabljanje klasifikacijskega problema z razredi C.
6) bakla.nn.PoissonNLLLoss Negativna izguba logaritma verjetnosti s Poissonovo porazdelitvijo t
target~Poisson(input)loss(input,target)=input-target*log(target!)he target.
7) torch.nn.KLDivLoss Je uporabna mera razdalje za zvezno porazdelitev, uporabna pa je tudi, ko izvajamo neposredno regresijo nad prostorom zvezne porazdelitve izhoda.
8) bakla.nn.BCELoss Uporablja se za ustvarjanje merila, ki meri binarno navzkrižno entropijo med ciljem in izhodom. Nezmanjšano izgubo je mogoče opisati kot:
l(x,y)=L={l1,...,ln},ln=-vn[inn*logxn+ (1-letn)*log(1-xn)],
Kjer je N velikost serije.
9) torch.nn.BCEWithLogitsLoss Združuje sigmoidno plast in BCELoss v enem samem razredu. Trik log-sum-exp lahko izkoristimo za numerično stabilnost tako, da operacijo združimo v eno plast.
10) torch.nn.MarginRankingLoss Ustvari kriterij, ki meri izgubo danih vhodov x1, x2, dveh 1D mini-paketnih tenzorjev in oznake 1D mini-paketnega tenzorja y, ki vsebuje 1 ali -1. Funkcija izgube za vsak vzorec v mini seriji je naslednja:
izguba(x,y)=max(0,-y*(x1-x2)+marža
11) torch.nn.HingeEmbeddingLoss HingeEmbeddingLoss meri izgubo podanega vhodnega tenzorja x in tenzorja oznak y, ki vsebujeta 1 ali -1. Uporablja se za merjenje, ali sta dva vhoda podobna ali različna. Funkcija izgube je opredeljena kot:
torch.nn v PyTorchu
12) torch.nn.MultiLabelMarginLoss Uporablja se za ustvarjanje merila, ki optimizira izgubo tečaja večrazredne večrazvrstitvene med vhodom x in izhodom y.
torch.nn v PyTorchu
13) torch.nn.SmoothL1Loss Uporablja se za ustvarjanje merila, ki uporablja izraz na kvadrat, če absolutna napaka glede na element pade pod 1, v nasprotnem primeru pa člen L1. Znana je tudi kot Huberjeva izguba:
torch.nn v PyTorchu
14) torch.nn.SoftMarginLoss Uporablja se za ustvarjanje kriterija, ki optimizira logistično izgubo dvorazredne klasifikacije med vhodnim tenzorjem x in ciljnim tenzorjem y, ki vsebujeta 1 ali -1.
torch.nn v PyTorchu
15) torch.nn.MultiLabelSoftMarginLoss Uporablja se za ustvarjanje merila, ki optimizira izgubo enega proti vsem z več oznakami na podlagi največje entropije med vhodom x in ciljno velikostjo y (N, C).
torch.nn v PyTorchu
16) torch.nn.CosineEmbeddingLoss Uporablja se za ustvarjanje kriterija, ki meri izgubo danih vhodnih tenzorjev x1, x2 in oznake tenzorja y z vrednostmi 1 ali -1. Uporablja se za merjenje, ali sta dva vhoda podobna ali različna, z uporabo kosinusne razdalje.
torch.nn v PyTorchu
17) torch.nn.MultiMarginLoss Uporablja se za ustvarjanje merila, ki optimizira izgubo šarnirja večrazredne klasifikacije med vhodom x in izhodom y.
torch.nn v PyTorchu
18) torch.nn.TripletMarginLoss Uporablja se za ustvarjanje kriterija, ki meri trojno izgubo danih vhodnih tenzorjev x1, x2, x3 in roba z vrednostjo, večjo od 0. Uporablja se za merjenje relativne podobnosti med vzorci. Trojček je sestavljen iz sidra, pozitivnega primera in negativnega primera.
L(a,p,n)=max{d(ajaz,strjaz)-d(ajaz,njaz)+marža,0}
petnajst. Plasti vida
1) torch.nn.PixelShuffle Uporablja se za preurejanje elementov v tenzor oblike (*,C×r2,H,W) na tenzor oblike (*,C,H×r,W,r)
2) torch.nn.Upsample Uporablja se za nadvzorčenje danih večkanalnih 1D, 2D ali 3D podatkov.
3) torch.nn.upsamplingNearest2d Uporablja se za uporabo 2D vzorčenja najbližjega soseda na vhodni signal, ki je sestavljen iz več vhodnih kanalov.
4) torch.nn.UpsamplingBilinear2d Uporablja se za uporabo 2D bilinearnega povečanega vzorčenja za vhodni signal, ki je sestavljen iz več vhodnih kanalov.
16. DataParallel layers (multi-GPE, distributed)
1) torch.nn.DataParallel Uporablja se za implementacijo vzporednosti podatkov na ravni modula.
2) torch.nn.DistributedDataParallel Uporablja se za implementacijo porazdeljenega podatkovnega paralelizma, ki temelji na paketu torch.distributed na ravni modula.
3) torch.nn.DistributedDataParallelCPU Uporablja se za implementacijo porazdeljene podatkovne paralelnosti za CPE na ravni modula.
17. Pripomočki
1) torch.nn.clip_grad_norm_ Uporablja se za izrez gradientne norme iterable parametrov.
2) torch.nn.clip_grad_value_ Uporablja se za striženje norme gradienta iterable parametrov pri podani vrednosti.
3) torch.nn.parameters_to_vector Uporablja se za pretvorbo parametrov v en vektor.
4) torch.nn.vector_to_parameters Uporablja se za pretvorbo enega vektorja v parametre.
5) bakla.nn.teža_norma Uporablja se za uporabo normalizacije teže za parameter v danem modulu.
6) torch.nn.remove_weight_norm Uporablja se za odstranitev normalizacije teže in ponovne parametrizacije iz modula.
7) bakla.nn.spektralna_norma Uporablja se za uporabo spektralne normalizacije parametra v danem modulu.
8) torch.nn.PackedSequence Uporabljal se bo za shranjevanje podatkov in seznama batch_sizes pakiranega zaporedja.
9) torch.nn.pack_padded_sequence Uporablja se za pakiranje tenzorja, ki vsebuje podložena zaporedja spremenljive dolžine.
10) torch.nn.pad_packed_sequence Uporablja se za polnjenje zapakirane serije zaporedij spremenljive dolžine.
11) torch.nn.pad_sequence Uporablja se za dopolnitev seznama tenzorjev spremenljive dolžine z vrednostjo zapolnitve.
12) torch.nn.pack_sequence Uporablja se za pakiranje seznama tenzorjev spremenljive dolžine
13) torch.nn.remove_spectral_norm Uporablja se za odstranitev spektralne normalizacije in ponovne parametrizacije iz modula.

Referenca:

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