logo

torch.nn v PyTorch

PyTorch poskytuje modul torch.nn, který nám pomáhá při vytváření a trénování neuronové sítě. Nejprve natrénujeme základní neuronovou síť na datové sadě MNIST bez použití jakýchkoli funkcí z těchto modelů. Použijeme pouze základní funkcionalitu tenzoru PyTorch a poté postupně přidáme jednu funkci z torch.nn.

Torch.nn nám poskytuje mnoho dalších tříd a modulů pro implementaci a trénování neuronové sítě.

Balíček nn obsahuje následující moduly a třídy:

Ano ne Třída a modul Popis
1. pochodeň.nn.Parametr Je to typ tenzoru, který je třeba považovat za parametr modulu.
2. Kontejnery
1) baterka.nn.Modul Je to základní třída pro všechny moduly neuronové sítě.
2) pochodeň.nn.Sekvenční Je to sekvenční kontejner, do kterého budou moduly přidány ve stejném pořadí, v jakém byly předány v konstruktoru.
3) torch.nn.ModuleList To bude obsahovat podmoduly v seznamu.
4) pochodeň.nn.ModuleDict To bude obsahovat dílčí moduly v adresáři.
5) torch.nn.ParameterList To bude obsahovat parametry v seznamu.
6) hořák.nn.parametrDict To bude obsahovat parametry v adresáři.
3. Konvoluční vrstvy
1) pochodeň.nn.Conv1d Tento balíček bude použit k aplikaci 1D konvoluce na vstupní signál složený z několika vstupních rovin.
2) pochodeň.nn.Conv2d Tento balíček bude použit k aplikaci 2D konvoluce na vstupní signál složený z několika vstupních rovin.
3) pochodeň.nn.Conv3d Tento balíček bude použit k aplikaci 3D konvoluce na vstupní signál složený z několika vstupních rovin.
4) torch.nn.ConvTranspose1d Tento balíček bude použit k aplikaci 1D transponovaného operátoru konvoluce na vstupní obraz složený z několika vstupních rovin.
5) torch.nn.ConvTranspose2d Tento balíček bude použit k aplikaci 2D transponovaného operátoru konvoluce na vstupní obraz složený z několika vstupních rovin.
6) torch.nn.ConvTranspose3d Tento balíček bude použit k aplikaci 3D transponovaného operátoru konvoluce na vstupní obraz složený z několika vstupních rovin.
7) pochodeň.nn.Rozbalte Používá se k extrahování posuvných lokálních bloků z dávkového vstupního tenzoru.
8) baterka.nn.Složit Používá se ke spojení řady posuvných lokálních bloků do velkého obsahujícího tenzoru.
4. Sdružování vrstev
1) baterka.nn.MaxPool1d Používá se k aplikaci 1D max poolingu na vstupní signál složený z několika vstupních rovin.
2) baterka.nn.MaxPool2d Používá se k aplikaci 2D max poolingu na vstupní signál složený z několika vstupních rovin.
3) baterka.nn.MaxPool3d Používá se k aplikaci 3D max poolingu na vstupní signál složený z několika vstupních rovin.
4) pochodeň.nn.MaxUnpool1d Používá se k výpočtu částečné inverze MaxPool1d.
5) pochodeň.nn.MaxUnpool2d Používá se k výpočtu částečné inverze MaxPool2d.
6) pochodeň.nn.MaxUnpool3d Používá se k výpočtu částečné inverze MaxPool3d.
7) torch.nn.AvgPool1d Používá se k aplikaci 1D průměrného sdružování na vstupní signál složený z několika vstupních rovin.
8) torch.nn.AvgPool2d Používá se k aplikaci 2D průměrného sdružování na vstupní signál složený z několika vstupních rovin.
9) torch.nn.AvgPool3d Používá se k aplikaci 3D průměrného sdružování na vstupní signál složený z několika vstupních rovin.
10) pochodeň.nn.FractionalMaxPool2d Používá se k aplikaci 2D dílčího maximálního sdružování na vstupní signál složený z několika vstupních rovin.
11) pochodeň.nn.LPPool1d Používá se k aplikaci 1D sdružování průměrného výkonu na vstupní signál složený z několika vstupních rovin.
12) pochodeň.nn.LPPool2d Používá se k aplikaci 2D sdružování průměrného výkonu na vstupní signál složený z několika vstupních rovin.
13) pochodeň.nn.AdavtiveMaxPool1d Používá se k aplikaci 1D adaptivního maximálního sdružování na vstupní signál složený z několika vstupních rovin.
14) baterka.nn.AdavtiveMaxPool2d Používá se k aplikaci 2D adaptivního maximálního sdružování na vstupní signál složený z několika vstupních rovin.
15) torch.nn.AdavtiveMaxPool3d Používá se k aplikaci 3D adaptivního maximálního sdružování na vstupní signál složený z několika vstupních rovin.
16) torch.nn.AdavtiveAvgPool1d Používá se k aplikaci 1D adaptivního sdružování průměrů na vstupní signál složený z několika vstupních rovin.
17) torch.nn.AdavtiveAvgPool2d Používá se k aplikaci 2D adaptivního sdružování průměrů na vstupní signál složený z několika vstupních rovin.
18) torch.nn.AdavtiveAvgPool3d Používá se k aplikaci 3D adaptivního sdružování průměrů na vstupní signál složený z několika vstupních rovin.
5. Vrstvy výplně
1) pochodeň.nn.ReflectionPad1d Vyplní vstupní tenzor pomocí odrazu vstupní hranice.
2) pochodeň.nn.ReflactionPad2d Vyplní vstupní tenzor pomocí odrazu vstupní hranice.
3) torch.nn.ReplicationPad1 Vyplní vstupní tenzor pomocí replikace vstupní hranice.
4) torch.nn.ReplicationPad2d Vyplní vstupní tenzor pomocí replikace vstupní hranice.
5) torch.nn.ReplicationPad3d Vyplní vstupní tenzor pomocí replikace vstupní hranice.
6) baterka.nn.ZeroPad2d Hranice vstupního tenzoru vyplní nulou.
7) pochodeň.nn.ConstantPad1d Doplní hranice vstupního tenzoru konstantní hodnotou.
8) pochodeň.nn.ConstantPad2d Doplní hranice vstupního tenzoru konstantní hodnotou.
9) pochodeň.nn.ConstantPad3d Doplní hranice vstupního tenzoru konstantní hodnotou.
6. Nelineární aktivace (vážený součet, nelinearita)
1) pochodeň.nn.ELU Použije se k použití funkce po prvcích:
ELU(x)=max(0,x)+min(0,α*(exp(x)-1))
2) baterka.nn.Hardshrink Použije se k použití funkce tvrdého smrštění po prvcích:
torch.nn v PyTorch
3) pochodeň.nn.LeakyReLU Použije se k použití funkce po prvcích:
LeakyReLu(x)=max(0,x) +negative_slope*min(0,x)
4) pochodeň.nn.LogSigmoid Použije se k použití funkce po prvcích:
torch.nn v PyTorch
5) baterka.nn.MultiheadPozor Používá se k tomu, aby umožnil modelu věnovat se informacím z různých reprezentačních podprostorů
6) pochodeň.nn.PReLU Bude použit k aplikaci funkce po prvcích:
PReLU(x)=max(0,x)+a*min(0,x)
7) pochodeň.nn.ReLU Použije se k použití funkce rektifikované lineární jednotky po prvcích:
ReLU(x)=max(0,x)
8) pochodeň.nn.ReLU6 Bude použit k aplikaci funkce po prvcích:
ReLU6(x)=min(max(0,x),6)
9) pochodeň.nn.RReLU Použije se k aplikaci náhodné netěsné rektifikované lineární funkce, po prvcích, jak je popsáno v článku:
torch.nn v PyTorch
10) pochodeň.nn.SELU Použije se k použití funkce po prvcích jako:
SELU(x)=měřítko*(max(0,x)+ min(0,a*(exp(x)-1)))

Zde α= 1,6732632423543772848170429916717 a měřítko = 1,0507009873554804934193349852946.
11) pochodeň.nn.CÍL Použije se k použití funkce po prvcích jako:
torch.nn v PyTorch
12) pochodeň.nn.Sigmoid Použije se k použití funkce po prvcích jako:
torch.nn v PyTorch
13) hořák.nn.Softplus Použije se k použití funkce po prvcích jako:
torch.nn v PyTorch
14) baterka.nn.Softshrink Použije se k aplikaci funkce měkkého smrštění po jednotlivých prvcích jako:
torch.nn v PyTorch
15) pochodeň.nn.Softsign Použije se k použití funkce po prvcích jako:
torch.nn v PyTorch
16) pochodeň.nn.Tanh Použije se k použití funkce po prvcích jako:
torch.nn v PyTorch
17) pochodeň.nn.Tanhshrink Použije se k použití funkce po prvcích jako:
Tanhshrink(x)=x-Tanh(x)
18) pochodeň.nn.Práh Použije se k prahování každého prvku vstupního Tensoru. Práh je definován jako:
torch.nn v PyTorch
7. Nelineární aktivace (jiné)
1) pochodeň.nn.Softmin Používá se k aplikaci funkce softmin na n-rozměrný vstup Tensor pro jejich změnu měřítka. Poté prvky n-rozměrného výstupu Tensor leží v rozsahu 0, 1 a součet 1. Softmin je definován jako:
torch.nn v PyTorch
2) hořák.nn.Softmax Používá se k aplikaci funkce softmax na n-rozměrný vstup Tensor pro jejich změnu měřítka. Poté prvky n-rozměrného výstupu Tensor leží v rozsahu 0, 1 a součet 1. Softmax je definován jako:
torch.nn v PyTorch
3) baterka.nn.Softmax2d Používá se k aplikaci funkcí SoftMax na každé prostorové umístění.
4) baterka.nn.LogSoftmax Používá se k aplikaci funkce LogSoftmax na n-rozměrný vstup Tensor. Funkci LofSoftmax lze definovat jako:
torch.nn v PyTorch
5) torch.nn.AdaptiveLogSoftmaxWithLoss Je to strategie pro trénink modelů s velkými výstupními prostory. Je velmi efektivní, když je distribuce etiket vysoce nevyvážená
8. Normalizační vrstvy
1) pochodeň.nn.BatchNorm1d Používá se k aplikaci dávkové normalizace na 2D nebo 3D vstupy.
torch.nn v PyTorch
2) torch.nn.BatchNorm2d Používá se k aplikaci dávkové normalizace přes 4D.
torch.nn v PyTorch
3) torch.nn.BatchNorm3d Používá se k aplikaci dávkové normalizace na 5D vstupy.
torch.nn v PyTorch
4) baterka.nn.GroupNorm Používá se k aplikaci skupinové normalizace na minidávku vstupů.
torch.nn v PyTorch
5) torch.nn.SyncBatchNorm Používá se k aplikaci dávkové normalizace na n-rozměrné vstupy.
torch.nn v PyTorch
6) hořák.nn.InstanceNorm1d Používá se k aplikaci normalizace instance na 3D vstup.
torch.nn v PyTorch
7) pochodeň.nn.InstanceNorm2d Používá se k aplikaci normalizace instance na 4D vstup.
torch.nn v PyTorch
8) pochodeň.nn.InstanceNorm3d Používá se k aplikaci normalizace instance na 5D vstup.
torch.nn v PyTorch
9) hořák.nn.LayerNorm Používá se k aplikaci normalizace vrstev na minidávku vstupů.
torch.nn v PyTorch
10) torch.nn.LocalResponseNorm Používá se k aplikaci lokální normalizace odezvy na vstupní signál, který se skládá z několika vstupních rovin, kde kanál zaujímá druhý rozměr.
9. Opakující se vrstvy
1) pochodeň.nn.RNN Používá se k aplikaci vícevrstvého Elman RNN s tanh nebo ReLU nelinearitou na vstupní sekvenci. Každá vrstva vypočítá pro každý prvek ve vstupní sekvenci následující funkci:
ht=tanh(WjimXt+bjim+Whhtt-1+bhh)
2) pochodeň.nn.LSTM Používá se k aplikaci vícevrstvé dlouhé krátkodobé paměti (LSTM) RNN na vstupní sekvenci. Každá vrstva vypočítá pro každý prvek ve vstupní sekvenci následující funkci:
torch.nn v PyTorch
3) pochodeň.nn.GRU Používá se k aplikaci vícevrstvé hradlové rekurentní jednotky (GRU) RNN na vstupní sekvenci. Každá vrstva vypočítá pro každý prvek ve vstupní sekvenci následující funkci:
torch.nn v PyTorch
4) pochodeň.nn.RNNCell Používá se k aplikaci Elmanovy RNN buňky s tanh nebo ReLU nelinearitou na vstupní sekvenci. Každá vrstva vypočítá pro každý prvek ve vstupní sekvenci následující funkci:
h'=tanh(Wjimx+bjim+Whhh+bhh)
ReLU se používá místo tanh
5) pochodeň.nn.LSTMCell Používá se k aplikaci buňky dlouhé krátkodobé paměti (LSTM) na vstupní sekvenci. Každá vrstva vypočítá pro každý prvek ve vstupní sekvenci následující funkci:
torch.nn v PyTorch
Kde σ je sigmoidní funkce a * je Hadamardův součin.
6) pochodeň.nn.GRUCell Používá se k použití buňky GRU (Gated Recurrent Unit) na vstupní sekvenci. Každá vrstva vypočítá pro každý prvek ve vstupní sekvenci následující funkci:
torch.nn v PyTorch
10. Lineární vrstvy
1) pochodeň.nn.Identita Je to zástupný operátor identity, který není citlivý na argumenty.
2) pochodeň.nn.Lineární Používá se k aplikaci lineární transformace na příchozí data:
y=xAT+b
3) pochodeň.nn.Bilineární Používá se k aplikaci bilineární transformace na příchozí data:
y=x1Sekera2+b
jedenáct. Výpadkové vrstvy
1) torch.nn.Dropout Používá se pro regularizaci a prevenci koadaptace neuronů. Faktorem torch.nn v PyTorchběhem tréninku škáluje výstup. To znamená, že modul během vyhodnocování vypočítá funkci identity.
2) baterka.nn.Dropout2d Pokud jsou sousední pixely v mapách prvků korelovány, pak torch.nn.Dropout neupraví aktivace a sníží efektivní rychlost učení. V tomto případě se k podpoře nezávislosti mezi mapami prvků používá torch.nn.Dropout2d().
3) pochodeň.nn.Dropout3d Pokud jsou sousední pixely v mapách prvků korelovány, pak torch.nn.Dropout neupraví aktivace a sníží efektivní rychlost učení. V tomto případě se k podpoře nezávislosti mezi mapami prvků používá torch.nn.Dropout2d ().
4) pochodeň.nn.AlphaDropout Používá se k aplikaci Alpha Dropout přes vstup. Alpha Dropout je typ Dropout, který zachovává samonormalizační vlastnost.
12. Řídké vrstvy
1) pochodeň.nn.Vložení Používá se k ukládání vložení slov a jejich získávání pomocí indexů. Vstupem pro modul je seznam indexů a výstupem je odpovídající vložení slova.
2) baterka.nn.EmbeddingBag Používá se k výpočtu součtů nebo středních hodnot „sáčků“ vkládání bez vytváření instance mezilehlého vkládání.
13. Funkce vzdálenosti
1) pochodeň.nn.CosinePodobnost Vrátí kosinusovou podobnost mezi x1 a x2, vypočtenou podle dim.
torch.nn v PyTorch
2) pochodeň.nn.PairwiseDistance Vypočítává dávkově párovou vzdálenost mezi vektory v1, v2 pomocí p-normy:
torch.nn v PyTorch
14. Ztrátová funkce
1) pochodeň.nn.L1Ztráta Používá se ke kritériu, které měří střední absolutní chybu mezi každým prvkem ve vstupu x a cílem y. Nesníženou ztrátu lze popsat jako:
l(x,y)=L={l1,...,ln},ln=|xn-an|,
Kde N je velikost šarže.
2) pochodeň.nn.MSELoss Používá se ke kritériu, které měří střední druhou mocninu chyby mezi každým prvkem na vstupu x a cílem y. Nesníženou ztrátu lze popsat jako:
l(x,y)=L={l1,...,ln},ln=(xn-an)2,
Kde N je velikost šarže.
3) pochodeň.nn.CrossEntropyLoss Toto kritérium kombinuje nn.LogSoftmax() a nn.NLLLoss() v jedné jediné třídě. Je užitečné, když trénujeme klasifikační problém s C třídami.
4) pochodeň.nn.CTCLoss Ztráta Connectionist Temporal Classification vypočítá ztrátu mezi spojitou časovou řadou a cílovou sekvencí.
5) pochodeň.nn.NLLLoss Ztráta negativní logaritmické pravděpodobnosti se používá k trénování klasifikačního problému s třídami C.
6) pochodeň.nn.PoissonNLLLoss Negativní log-pravděpodobnostní ztráta s Poissonovým rozdělením t
cíl~Poisson(vstup)ztráta(vstup,cíl)=vstup-cíl*log(cíl!)cíl.
7) pochodeň.nn.KLDivLoss Je to užitečné měření vzdálenosti pro spojitou distribuci a je také užitečné, když provádíme přímou regresi přes prostor spojité distribuce výstupu.
8) pochodeň.nn.BCELoss Používá se k vytvoření kritéria, které měří binární křížovou entropii mezi cílem a výstupem. Nesníženou ztrátu lze popsat jako:
l(x,y)=L={l1,...,ln},ln=-vn[an*logxn+ (1-rn)*log(1-xn)],
Kde N je velikost šarže.
9) pochodeň.nn.BCCEWithLogitsLoss Kombinuje sigmoidní vrstvu a BCELoss v jedné jediné třídě. Můžeme využít trik log-součet-exp pro numerickou stabilitu spojením operace do jedné vrstvy.
10) pochodeň.nn.MarginRankingLoss Vytváří kritérium, které měří ztrátu daných vstupů x1, x2, dva 1D mini-batch tenzory a štítkový 1D mini-batch tenzor y, které obsahují 1 nebo -1. Funkce ztráty pro každý vzorek v minidávce je následující:
ztráta(x,y)=max(0,-y*(x1-X2)+marže
11) torch.nn.HingeEmbeddingLoss HingeEmbeddingLoss měří ztrátu daného vstupního tenzoru x a štítkového tenzoru y, které obsahují 1 nebo -1. Používá se pro měření, zda jsou dva vstupy podobné nebo odlišné. Ztrátová funkce je definována jako:
torch.nn v PyTorch
12) torch.nn.MultiLabelMarginLoss Používá se k vytvoření kritéria, které optimalizuje ztrátu závěsu více tříd mezi vstupem x a výstupem y.
torch.nn v PyTorch
13) baterka.nn.SmoothL1Loss Používá se k vytvoření kritéria, které používá člen na druhou, pokud absolutní chyba prvků klesne pod 1 a člen L1 jinak. Je také známá jako Huberova ztráta:
torch.nn v PyTorch
14) torch.nn.SoftMarginLoss Používá se k vytvoření kritéria, které optimalizuje logistickou ztrátu klasifikace dvou tříd mezi vstupním tenzorem x a cílovým tenzorem y, které obsahují 1 nebo -1.
torch.nn v PyTorch
15) torch.nn.MultiLabelSoftMarginLoss Používá se k vytvoření kritéria, které optimalizuje ztrátu vícenásobných značek jedna proti všem na základě maximální entropie mezi vstupem x a cílovou velikostí y (N, C).
torch.nn v PyTorch
16) torch.nn.CosineEmbeddingLoss Slouží k vytvoření kritéria, které měří ztrátu daných vstupních tenzorů x1, x2 a návěští tenzoru y s hodnotami 1 nebo -1. Používá se pro měření, zda jsou dva vstupy podobné nebo odlišné, pomocí kosinusové vzdálenosti.
torch.nn v PyTorch
17) torch.nn.MultiMarginLoss Používá se k vytvoření kritéria, které optimalizuje ztrátu závěsu klasifikace více tříd mezi vstupem x a výstupem y.
torch.nn v PyTorch
18) pochodeň.nn.TripletMarginLoss Slouží k vytvoření kritéria, které měří tripletovou ztrátu daného vstupního tenzoru x1, x2, x3 a marže s hodnotou větší než 0. Slouží k měření relativní podobnosti mezi vzorky. Trojice se skládá z kotvy, pozitivního příkladu a negativního příkladu.
L(a,p,n)=max{d(ai,stri)-d(ai,ni)+marže,0}
patnáct. Vrstvy vidění
1) baterka.nn.PixelShuffle Používá se k přeuspořádání prvků v tenzoru tvaru (*,C×r2,H,W) na tenzor tvaru (*,C,H×r,W,r)
2) baterka.nn.Upsample Používá se k převzorkování daných vícekanálových 1D, 2D nebo 3D dat.
3) torch.nn.upsamplingNearest2d Používá se k aplikaci 2D převzorkování nejbližšího souseda na vstupní signál, který se skládá z více vstupních kanálů.
4) torch.nn.UpsamplingBilinear2d Používá se k aplikaci 2D bilineárního převzorkování na vstupní signál, který se skládá z více vstupních kanálů.
16. DataParallel vrstvy (multi-GPU, distribuované)
1) torch.nn.DataParallel Používá se k implementaci datového paralelismu na úrovni modulu.
2) torch.nn.DistributedDataParallel Slouží k implementaci distribuovaného datového paralelismu, který je založen na balíčku torch.distributed na úrovni modulu.
3) torch.nn.DistributedDataParallelCPU Používá se k implementaci distribuovaného datového paralelismu pro CPU na úrovni modulu.
17. Utility
1) torch.nn.clip_grad_norm_ Používá se k oříznutí normy gradientu iterovatelných parametrů.
2) torch.nn.clip_grad_value_ Používá se k oříznutí normy gradientu iterovatelných parametrů na zadanou hodnotu.
3) torch.nn.parameters_to_vector Slouží k převodu parametrů na jeden vektor.
4) torch.nn.vector_to_parameters Slouží k převodu jednoho vektoru na parametry.
5) pochodeň.nn.norma hmotnosti Slouží k aplikaci váhové normalizace na parametr v daném modulu.
6) torch.nn.remove_weight_norm Používá se k odstranění normalizace hmotnosti a nové parametrizace z modulu.
7) pochodeň.nn.spektrální_norma Slouží k aplikaci spektrální normalizace na parametr v daném modulu.
8) torch.nn.PackedSequence Použije se k uložení dat a seznamu velikostí dávek sbalené sekvence.
9) torch.nn.pack_padded_sequence Používá se k balení tenzoru obsahujícího vycpané sekvence proměnné délky.
10) torch.nn.pad_packed_sequence Používá se k vycpání nabité dávky sekvencí s proměnnou délkou.
11) pochodeň.nn.pad_sequence Používá se k vyplnění seznamu tenzorů proměnné délky hodnotou vyplnění.
12) pochodeň.nn.pack_sequence Používá se k zabalení seznamu tenzorů proměnné délky
13) torch.nn.remove_spectral_norm Používá se k odstranění spektrální normalizace a přeparametrizace z modulu.

Odkaz:

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