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: | |
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: | |
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: | |
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: | |
12) bakla.nn.Sigmoid | Uporabil se bo za uporabo funkcije po elementih kot: | |
13) svetilka.nn.Softplus | Uporabil se bo za uporabo funkcije po elementih kot: | |
14) torch.nn.Softshrink | Uporabil se bo za uporabo funkcije mehkega krčenja po elementih kot: | |
15) torch.nn.Softsign | Uporabil se bo za uporabo funkcije po elementih kot: | |
16) bakla.nn.Tanh | Uporabil se bo za uporabo funkcije po elementih kot: | |
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: | |
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: | |
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: | |
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: | |
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. | |
2) torch.nn.BatchNorm2d | Uporablja se za uporabo paketne normalizacije nad 4D. | |
3) torch.nn.BatchNorm3d | Uporablja se za uporabo paketne normalizacije nad 5D vhodi. | |
4) torch.nn.GroupNorm | Uporablja se za uporabo skupinske normalizacije nad mini paketom vnosov. | |
5) torch.nn.SyncBatchNorm | Uporablja se za uporabo paketne normalizacije nad n-dimenzionalnimi vhodi. | |
6) torch.nn.InstanceNorm1d | Uporablja se za uporabo normalizacije primerka nad 3D vnosom. | |
7) torch.nn.InstanceNorm2d | Uporablja se za uporabo normalizacije primerka nad 4D vhodom. | |
8) torch.nn.InstanceNorm3d | Uporablja se za uporabo normalizacije primerka nad vhodom 5D. | |
9) torch.nn.LayerNorm | Uporablja se za uporabo normalizacije plasti nad mini serijo vnosov. | |
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: | |
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: | |
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: 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: | |
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 med 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. | |
2) torch.nn.PairwiseDistance | Izračuna paketno parno razdaljo med vektorjema v1, v2 z uporabo p-norme: | |
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: | |
12) torch.nn.MultiLabelMarginLoss | Uporablja se za ustvarjanje merila, ki optimizira izgubo tečaja večrazredne večrazvrstitvene med vhodom x in izhodom y. | |
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: | |
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. | |
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). | |
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. | |
17) torch.nn.MultiMarginLoss | Uporablja se za ustvarjanje merila, ki optimizira izgubo šarnirja večrazredne klasifikacije med vhodom x in izhodom y. | |
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