logo

torch.nn v PyTorch

PyTorch poskytuje modul torch.nn, ktorý nám pomáha pri vytváraní a trénovaní neurónovej siete. Najprv natrénujeme základnú neurónovú sieť na dátovom súbore MNIST bez použitia akýchkoľvek funkcií z týchto modelov. Použijeme iba základnú funkciu tenzora PyTorch a potom postupne pridávame jednu funkciu z torch.nn.

torch.nn nám poskytuje oveľa viac tried a modulov na implementáciu a trénovanie neurónovej siete.

Balík nn obsahuje nasledujúce moduly a triedy:

Áno nie Trieda a Modul Popis
1. pochodeň.nn.Parameter Je to typ tenzora, ktorý treba považovať za parameter modulu.
2. Kontajnery
1) baterka.nn.Modul Je to základná trieda pre všetky moduly neurónových sietí.
2) baterka.nn.Sekvenčné Je to sekvenčný kontajner, do ktorého sa budú pridávať moduly v rovnakom poradí, ako sa odovzdávajú v konštruktore.
3) torch.nn.ModuleList Toto bude obsahovať podmoduly v zozname.
4) baterka.nn.ModuleDict Toto bude obsahovať podmoduly v adresári.
5) torch.nn.ParameterList Toto bude obsahovať parametre v zozname.
6) horák.nn.parameterDict Toto bude obsahovať parametre v adresári.
3. Konvolučné vrstvy
1) pochodeň.nn.Conv1d Tento balík sa použije na aplikáciu 1D konvolúcie cez vstupný signál zložený z niekoľkých vstupných rovín.
2) pochodeň.nn.Conv2d Tento balík sa použije na aplikáciu 2D konvolúcie cez vstupný signál zložený z niekoľkých vstupných rovín.
3) pochodeň.nn.Conv3d Tento balík sa použije na aplikáciu 3D konvolúcie cez vstupný signál zložený z niekoľkých vstupných rovín.
4) torch.nn.ConvTranspose1d Tento balík sa použije na aplikáciu 1D transponovaného konvolučného operátora na vstupný obraz zložený z niekoľkých vstupných rovín.
5) torch.nn.ConvTranspose2d Tento balík sa použije na aplikáciu 2D transponovaného konvolučného operátora na vstupný obraz zložený z niekoľkých vstupných rovín.
6) torch.nn.ConvTranspose3d Tento balík sa použije na aplikáciu 3D transponovaného konvolučného operátora na vstupný obraz zložený z niekoľkých vstupných rovín.
7) pochodeň.nn.Rozvinúť Používa sa na extrakciu posuvných lokálnych blokov z dávkového vstupného tenzora.
8) baterka.nn.Zložiť Používa sa na spojenie radu posuvných lokálnych blokov do veľkého obsahujúceho tenzora.
4. Združovacie vrstvy
1) baterka.nn.MaxPool1d Používa sa na aplikáciu 1D max poolingu na vstupný signál zložený z niekoľkých vstupných rovín.
2) baterka.nn.MaxPool2d Používa sa na aplikáciu 2D max poolingu na vstupný signál zložený z niekoľkých vstupných rovín.
3) baterka.nn.MaxPool3d Používa sa na aplikáciu 3D max poolingu na vstupný signál zložený z niekoľkých vstupných rovín.
4) baterka.nn.MaxUnpool1d Používa sa na výpočet čiastočnej inverznej hodnoty MaxPool1d.
5) baterka.nn.MaxUnpool2d Používa sa na výpočet čiastočnej inverznej hodnoty MaxPool2d.
6) baterka.nn.MaxUnpool3d Používa sa na výpočet čiastočnej inverznej hodnoty MaxPool3d.
7) torch.nn.AvgPool1d Používa sa na aplikáciu 1D priemernej združovania na vstupný signál zložený z niekoľkých vstupných rovín.
8) torch.nn.AvgPool2d Používa sa na aplikáciu 2D priemernej združovania na vstupný signál zložený z niekoľkých vstupných rovín.
9) torch.nn.AvgPool3d Používa sa na aplikáciu 3D priemernej združovania na vstupný signál zložený z niekoľkých vstupných rovín.
10) torch.nn.FractionalMaxPool2d Používa sa na aplikovanie 2D frakčného maxima na vstupný signál zložený z niekoľkých vstupných rovín.
11) baterka.nn.LPPool1d Používa sa na aplikáciu 1D združovania priemerného výkonu na vstupný signál zložený z niekoľkých vstupných rovín.
12) baterka.nn.LPPool2d Používa sa na aplikáciu 2D združovania priemerného výkonu na vstupný signál zložený z niekoľkých vstupných rovín.
13) baterka.nn.AdavtiveMaxPool1d Používa sa na aplikáciu 1D adaptívneho max poolingu na vstupný signál zložený z niekoľkých vstupných rovín.
14) baterka.nn.AdavtiveMaxPool2d Používa sa na aplikáciu 2D adaptívneho max poolingu na vstupný signál zložený z niekoľkých vstupných rovín.
15) torch.nn.AdavtiveMaxPool3d Používa sa na aplikáciu 3D adaptívneho max poolingu na vstupný signál zložený z niekoľkých vstupných rovín.
16) torch.nn.AdavtiveAvgPool1d Používa sa na aplikáciu 1D adaptívneho priemeru na vstupný signál zložený z niekoľkých vstupných rovín.
17) torch.nn.AdavtiveAvgPool2d Používa sa na aplikáciu 2D adaptívneho priemeru na vstupný signál zložený z niekoľkých vstupných rovín.
18) torch.nn.AdavtiveAvgPool3d Používa sa na aplikáciu 3D adaptívneho priemeru na vstupný signál zložený z niekoľkých vstupných rovín.
5. Výplňové vrstvy
1) baterka.nn.ReflectionPad1d Doplní vstupný tenzor pomocou odrazu vstupnej hranice.
2) baterka.nn.ReflactionPad2d Doplní vstupný tenzor pomocou odrazu vstupnej hranice.
3) torch.nn.ReplicationPad1 Vyplní vstupný tenzor pomocou replikácie vstupnej hranice.
4) torch.nn.ReplicationPad2d Vyplní vstupný tenzor pomocou replikácie vstupnej hranice.
5) torch.nn.ReplicationPad3d Vyplní vstupný tenzor pomocou replikácie vstupnej hranice.
6) baterka.nn.ZeroPad2d Hranice vstupného tenzora vyplní nulou.
7) baterka.nn.ConstantPad1d Doplní hranice vstupného tenzora konštantnou hodnotou.
8) baterka.nn.ConstantPad2d Doplní hranice vstupného tenzora konštantnou hodnotou.
9) baterka.nn.ConstantPad3d Doplní hranice vstupného tenzora konštantnou hodnotou.
6. Nelineárne aktivácie (vážený súčet, nelinearita)
1) baterka.nn.ELU Použije sa na použitie funkcie po prvkoch:
ELU(x)=max(0,x)+min(0,α*(exp(x)-1))
2) baterka.nn.Hardshrink Používa sa na aplikáciu funkcie tvrdého zmršťovania po prvkoch:
torch.nn v PyTorch
3) pochodeň.nn.LeakyReLU Použije sa na použitie funkcie po prvkoch:
LeakyReLu(x)=max(0,x) +negative_slope*min(0,x)
4) torch.nn.LogSigmoid Použije sa na použitie funkcie po prvkoch:
torch.nn v PyTorch
5) baterka.nn.MultiheadPozor Používa sa na umožnenie modelu venovať sa informáciám z rôznych reprezentačných podpriestorov
6) pochodeň.nn.PReLU Použije sa na aplikáciu funkcie po prvkoch:
PReLU(x)=max(0,x)+a*min(0,x)
7) pochodeň.nn.ReLU Použije sa na použitie prvkov funkcie rektifikovanej lineárnej jednotky:
ReLU(x)=max(0,x)
8) baterka.nn.ReLU6 Použije sa na aplikáciu funkcie po prvkoch:
ReLU6(x)=min(max(0,x),6)
9) pochodeň.nn.RReLU Použije sa na aplikáciu náhodnej netesnej funkcie rektifikovaných lineárnych jednotiek, po prvkoch, ako je opísané v článku:
torch.nn v PyTorch
10) pochodeň.nn.SELU Použije sa na použitie funkcie po prvkoch ako:
SELU(x)=mierka*(max(0,x)+ min(0,a*(exp(x)-1)))

Tu α= 1,6732632423543772848170429916717 a mierka = 1,0507009873554804934193349852946.
11) pochodeň.nn.CIEĽ Použije sa na použitie funkcie po prvkoch ako:
torch.nn v PyTorch
12) pochodeň.nn.Sigmoid Použije sa na použitie funkcie po prvkoch ako:
torch.nn v PyTorch
13) baterka.nn.Softplus Použije sa na použitie funkcie po prvkoch ako:
torch.nn v PyTorch
14) baterka.nn.Softshrink Používa sa na aplikáciu funkcie mäkkého zmršťovania po jednotlivých prvkoch ako:
torch.nn v PyTorch
15) torch.nn.Softsign Použije sa na použitie funkcie po prvkoch ako:
torch.nn v PyTorch
16) pochodeň.nn.Tanh Použije sa na použitie funkcie po prvkoch ako:
torch.nn v PyTorch
17) pochodeň.nn.Tanhshrink Použije sa na použitie funkcie po prvkoch ako:
Tanhshrink(x)=x-Tanh(x)
18) baterka.nn.Threshold Používa sa na prahové hodnoty každého prvku vstupného tenzora. Prah je definovaný ako:
torch.nn v PyTorch
7. Nelineárne aktivácie (iné)
1) baterka.nn.Softmin Používa sa na aplikáciu funkcie softmin na n-rozmerný vstup Tensor, aby sa zmenila ich mierka. Potom prvky n-rozmerného výstupu Tensor ležia v rozsahu 0, 1 a súčet do 1. Softmin je definovaný ako:
torch.nn v PyTorch
2) horák.nn.Softmax Používa sa na aplikáciu funkcie softmax na n-rozmerný vstup Tensor, aby sa zmenila ich mierka. Potom prvky n-rozmerného výstupu Tensor ležia v rozsahu 0, 1 a súčet do 1. Softmax je definovaný ako:
torch.nn v PyTorch
3) baterka.nn.Softmax2d Používa sa na aplikáciu funkcií SoftMax na každé priestorové umiestnenie.
4) baterka.nn.LogSoftmax Používa sa na aplikáciu funkcie LogSoftmax na n-rozmerný vstup Tensor. Funkciu LofSoftmax možno definovať ako:
torch.nn v PyTorch
5) torch.nn.AdaptiveLogSoftmaxWithLoss Je to stratégia pre tréning modelov s veľkými výstupnými priestormi. Je veľmi efektívny, keď je distribúcia štítkov značne nevyvážená
8. Normalizačné vrstvy
1) horák.nn.BatchNorm1d Používa sa na aplikáciu dávkovej normalizácie cez 2D alebo 3D vstupy.
torch.nn v PyTorch
2) torch.nn.BatchNorm2d Používa sa na aplikáciu dávkovej normalizácie cez 4D.
torch.nn v PyTorch
3) torch.nn.BatchNorm3d Používa sa na aplikáciu dávkovej normalizácie cez 5D vstupy.
torch.nn v PyTorch
4) baterka.nn.GroupNorm Používa sa na aplikáciu skupinovej normalizácie na mini-dávku vstupov.
torch.nn v PyTorch
5) torch.nn.SyncBatchNorm Používa sa na aplikáciu dávkovej normalizácie na n-rozmerné vstupy.
torch.nn v PyTorch
6) horák.nn.InstanceNorm1d Používa sa na aplikáciu normalizácie inštancie na 3D vstup.
torch.nn v PyTorch
7) horák.nn.InstanceNorm2d Používa sa na aplikáciu normalizácie inštancie na 4D vstup.
torch.nn v PyTorch
8) baterka.nn.InstanceNorm3d Používa sa na aplikáciu normalizácie inštancie na 5D vstup.
torch.nn v PyTorch
9) horák.nn.LayerNorm Používa sa na aplikáciu normalizácie vrstiev na mini-dávku vstupov.
torch.nn v PyTorch
10) torch.nn.LocalResponseNorm Používa sa na aplikáciu normalizácie lokálnej odozvy na vstupný signál, ktorý sa skladá z niekoľkých vstupných rovín, kde kanál zaberá druhý rozmer.
9. Opakujúce sa vrstvy
1) pochodeň.nn.RNN Používa sa na aplikáciu viacvrstvového Elman RNN s tanh alebo ReLU nelinearitou na vstupnú sekvenciu. Každá vrstva vypočíta nasledujúcu funkciu pre každý prvok vo vstupnej sekvencii:
ht=tanh(WichXt+bich+Whhtt-1+bhh)
2) baterka.nn.LSTM Používa sa na aplikáciu viacvrstvovej dlhodobej krátkodobej pamäte (LSTM) RNN na vstupnú sekvenciu. Každá vrstva vypočíta nasledujúcu funkciu pre každý prvok vo vstupnej sekvencii:
torch.nn v PyTorch
3) pochodeň.nn.GRU Používa sa na aplikáciu viacvrstvovej hradlovej rekurentnej jednotky (GRU) RNN na vstupnú sekvenciu. Každá vrstva vypočíta nasledujúcu funkciu pre každý prvok vo vstupnej sekvencii:
torch.nn v PyTorch
4) pochodeň.nn.RNNCell Používa sa na aplikáciu bunky Elman RNN s nelinearitou tanh alebo ReLU na vstupnú sekvenciu. Každá vrstva vypočíta nasledujúcu funkciu pre každý prvok vo vstupnej sekvencii:
h'=tanh(Wichx+bich+Whhh+bhh)
ReLU sa používa namiesto tanh
5) pochodeň.nn.LSTMCell Používa sa na aplikáciu bunky dlhej krátkodobej pamäte (LSTM) na vstupnú sekvenciu. Každá vrstva vypočíta nasledujúcu funkciu pre každý prvok vo vstupnej sekvencii:
torch.nn v PyTorch
Kde σ je sigmoidná funkcia a * je Hadamardov súčin.
6) baterka.nn.GRUCell Používa sa na aplikáciu bunky hradlovej rekurentnej jednotky (GRU) na vstupnú sekvenciu. Každá vrstva vypočíta nasledujúcu funkciu pre každý prvok vo vstupnej sekvencii:
torch.nn v PyTorch
10. Lineárne vrstvy
1) pochodeň.nn.Identita Je to zástupný operátor identity, ktorý nie je citlivý na argumenty.
2) baterka.nn.Lineárne Používa sa na aplikáciu lineárnej transformácie na prichádzajúce údaje:
y=xAT+b
3) baterka.nn.Bilineárna Používa sa na aplikáciu bilineárnej transformácie na prichádzajúce údaje:
y=x1Ax2+b
jedenásť. Výpadkové vrstvy
1) baterka.nn.Dropout Používa sa na regularizáciu a prevenciu spoločnej adaptácie neurónov. Faktorom torch.nn v PyTorchpočas tréningu škáluje výstup. To znamená, že modul počas vyhodnocovania vypočítava funkciu identity.
2) baterka.nn.Dropout2d Ak sú susedné pixely v mapách prvkov korelované, potom torch.nn.Dropout neupraví aktivácie a zníži efektívnu rýchlosť učenia. V tomto prípade sa torch.nn.Dropout2d() používa na podporu nezávislosti medzi mapami prvkov.
3) baterka.nn.Dropout3d Ak sú susedné pixely v mapách prvkov korelované, potom torch.nn.Dropout neupraví aktivácie a zníži efektívnu rýchlosť učenia. V tomto prípade sa torch.nn.Dropout2d () používa na podporu nezávislosti medzi mapami objektov.
4) baterka.nn.AlphaDropout Používa sa na aplikáciu Alpha Dropout nad vstupom. Alpha Dropout je typ Dropout, ktorý si zachováva samonormalizačnú vlastnosť.
12. Riedke vrstvy
1) baterka.nn.Vloženie Používa sa na ukladanie vložených slov a ich získavanie pomocou indexov. Vstupom pre modul je zoznam indexov a výstupom je zodpovedajúce vloženie slova.
2) baterka.nn.EmbeddingBag Používa sa na výpočet súčtu alebo priemeru „vreciek“ vkladania bez vytvárania inštancie stredného vloženia.
13. Funkcia vzdialenosti
1) pochodeň.nn.CosinePodobnosť Vráti kosínusovú podobnosť medzi x1 a x2, vypočítanú podľa dim.
torch.nn v PyTorch
2) baterka.nn.PairwiseDistance Vypočítava dávkovo párovú vzdialenosť medzi vektormi v1, v2 pomocou p-normy:
torch.nn v PyTorch
14. Stratová funkcia
1) pochodeň.nn.L1Strata Používa sa na kritérium, ktoré meria strednú absolútnu chybu medzi každým prvkom na vstupe x a cieľom y. Nezníženú stratu možno opísať takto:
l(x,y)=L={l1,...,ln},ln=|xn-an|,
Kde N je veľkosť šarže.
2) baterka.nn.MSELoss Používa sa na kritérium, ktoré meria strednú štvorcovú chybu medzi každým prvkom na vstupe x a cieľom y. Nezníženú stratu možno opísať takto:
l(x,y)=L={l1,...,ln},ln=(xn-an)2,
Kde N je veľkosť šarže.
3) torch.nn.CrossEntropyLoss Toto kritérium kombinuje nn.LogSoftmax() a nn.NLLLoss() do jednej jedinej triedy. Je to užitočné, keď trénujeme klasifikačný problém s triedami C.
4) baterka.nn.CTCLoss Strata Connectionist Temporal Classification počíta stratu medzi súvislým časovým radom a cieľovou sekvenciou.
5) pochodeň.nn.NLLLoss Strata negatívnej logaritmickej pravdepodobnosti sa používa na trénovanie klasifikačného problému s triedami C.
6) pochodeň.nn.PoissonNLLLoss Záporná logaritmická pravdepodobnostná strata s Poissonovým rozdelením t
cieľ~Poisson(vstup)strata(vstup,cieľ)=vstupný-cieľ*log(cieľ!)cieľ.
7) pochodeň.nn.KLDivLoss Je to užitočná miera vzdialenosti pre spojitú distribúciu a je tiež užitočná, keď vykonávame priamu regresiu cez priestor spojitej distribúcie výstupu.
8) horák.nn.BCELoss Používa sa na vytvorenie kritéria, ktoré meria binárnu krížovú entropiu medzi cieľom a výstupom. Nezníženú stratu možno opísať takto:
l(x,y)=L={l1,...,ln},ln=-vn[an*logxn+ (1-rn)*log(1-xn)],
Kde N je veľkosť šarže.
9) pochodeň.nn.BCCEWithLogitsLoss Spája sigmoidnú vrstvu a BCELoss v jednej triede. Kombináciou operácie do jednej vrstvy môžeme využiť trik log-sum-exp na numerickú stabilitu.
10) torch.nn.MarginRankingLoss Vytvára kritérium, ktoré meria stratu daných vstupov x1, x2, dvoch 1D mini-batch tenzorov a štítkového 1D mini-batch tenzora y, ktoré obsahujú 1 alebo -1. Stratová funkcia pre každú vzorku v minidávke je nasledovná:
strata(x,y)=max(0,-y*(x1-X2)+marža
11) torch.nn.HingeEmbeddingLoss HingeEmbeddingLoss meria stratu daného vstupného tenzora x a označenia tenzora y, ktoré obsahujú 1 alebo -1. Používa sa na meranie, či sú dva vstupy podobné alebo rozdielne. Stratová funkcia je definovaná ako:
torch.nn v PyTorch
12) baterka.nn.MultiLabelMarginLoss Používa sa na vytvorenie kritéria, ktoré optimalizuje stratu závesu viacerých tried medzi vstupom x a výstupom y.
torch.nn v PyTorch
13) baterka.nn.SmoothL1Loss Používa sa na vytvorenie kritéria, ktoré používa druhú mocninu, ak absolútna chyba prvkov klesne pod 1 a inak výraz L1. Je tiež známa ako Huberova strata:
torch.nn v PyTorch
14) torch.nn.SoftMarginLoss Používa sa na vytvorenie kritéria, ktoré optimalizuje logistickú stratu klasifikácie dvoch tried medzi vstupným tenzorom x a cieľovým tenzorom y, ktoré obsahujú 1 alebo -1.
torch.nn v PyTorch
15) torch.nn.MultiLabelSoftMarginLoss Používa sa na vytvorenie kritéria, ktoré optimalizuje stratu viacerých značiek jedna proti všetkým na základe maximálnej entropie medzi vstupom x a cieľovou veľkosťou y ​​(N, C).
torch.nn v PyTorch
16) torch.nn.CosineEmbeddingLoss Používa sa na vytvorenie kritéria, ktoré meria stratu daných vstupných tenzorov x1, x2 a tenzorového označenia y s hodnotami 1 alebo -1. Používa sa na meranie, či sú dva vstupy podobné alebo odlišné, pomocou kosínusovej vzdialenosti.
torch.nn v PyTorch
17) baterka.nn.MultiMarginLoss Používa sa na vytvorenie kritéria, ktoré optimalizuje stratu závesu klasifikácie viacerých tried medzi vstupom x a výstupom y.
torch.nn v PyTorch
18) torch.nn.TripletMarginLoss Používa sa na vytvorenie kritéria, ktoré meria tripletovú stratu daného vstupného tenzora x1, x2, x3 a maržu s hodnotou väčšou ako 0. Používa sa na meranie relatívnej podobnosti medzi vzorkami. Trojica sa skladá z kotvy, pozitívneho príkladu a negatívneho príkladu.
L(a,p,n)=max{d(ai,si)-d(ai,ni)+marža,0}
pätnásť. Vrstvy videnia
1) baterka.nn.PixelShuffle Používa sa na preusporiadanie prvkov v tenzore tvaru (*,C×r2,H,W) na tenzor tvaru (*,C,H×r,W,r)
2) baterka.nn.Upsample Používa sa na prevzorkovanie daných viackanálových 1D, 2D alebo 3D dát.
3) torch.nn.upsamplingNearest2d Používa sa na aplikáciu 2D prevzorkovania najbližšieho suseda na vstupný signál, ktorý sa skladá z viacerých vstupných kanálov.
4) torch.nn.UpsamplingBilinear2d Používa sa na aplikáciu 2D bilineárneho prevzorkovania na vstupný signál, ktorý sa skladá z viacerých vstupných kanálov.
16. DataParallel vrstvy (multi-GPU, distribuované)
1) baterka.nn.DataParallel Používa sa na implementáciu paralelizmu údajov na úrovni modulu.
2) torch.nn.DistributedDataParallel Používa sa na implementáciu distribuovaného dátového paralelizmu, ktorý je založený na balíku torch.distributed na úrovni modulu.
3) torch.nn.DistributedDataParallelCPU Používa sa na implementáciu distribuovaného dátového paralelizmu pre CPU na úrovni modulu.
17. Verejné služby
1) torch.nn.clip_grad_norm_ Používa sa na orezanie normy gradientu iterovateľných parametrov.
2) torch.nn.clip_grad_value_ Používa sa na orezanie normy gradientu iterovateľných parametrov na zadanú hodnotu.
3) torch.nn.parameters_to_vector Používa sa na prevod parametrov na jeden vektor.
4) torch.nn.vector_to_parameters Používa sa na prevod jedného vektora na parametre.
5) pochodeň.nn.norma hmotnosti Používa sa na aplikáciu normalizácie hmotnosti na parameter v danom module.
6) torch.nn.remove_weight_norm Používa sa na odstránenie normalizácie hmotnosti a preparametrizácie z modulu.
7) pochodeň.nn.spektrálna_norma Slúži na aplikáciu spektrálnej normalizácie na parameter v danom module.
8) torch.nn.PackedSequence Použije sa na uchovávanie údajov a zoznamu veľkostí batch_sizes zbalenej sekvencie.
9) torch.nn.pack_padded_sequence Používa sa na balenie tenzoru obsahujúceho vyplnené sekvencie s premenlivou dĺžkou.
10) torch.nn.pad_packed_sequence Používa sa na vyplnenie zbalenej dávky sekvencií s premenlivou dĺžkou.
11) torch.nn.pad_sequence Používa sa na vyplnenie zoznamu tenzorov premenlivej dĺžky s hodnotou vyplnenia.
12) torch.nn.pack_sequence Používa sa na balenie zoznamu tenzorov s premenlivou dĺžkou
13) torch.nn.remove_spectral_norm Používa sa na odstránenie spektrálnej normalizácie a reparametrizácie z modulu.

Referencia:

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