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: | |
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: | |
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: | |
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: | |
12) pochodeň.nn.Sigmoid | Použije se k použití funkce po prvcích jako: | |
13) hořák.nn.Softplus | Použije se k použití funkce po prvcích jako: | |
14) baterka.nn.Softshrink | Použije se k aplikaci funkce měkkého smrštění po jednotlivých prvcích jako: | |
15) pochodeň.nn.Softsign | Použije se k použití funkce po prvcích jako: | |
16) pochodeň.nn.Tanh | Použije se k použití funkce po prvcích jako: | |
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: | |
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: | |
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: | |
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: | |
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. | |
2) torch.nn.BatchNorm2d | Používá se k aplikaci dávkové normalizace přes 4D. | |
3) torch.nn.BatchNorm3d | Používá se k aplikaci dávkové normalizace na 5D vstupy. | |
4) baterka.nn.GroupNorm | Používá se k aplikaci skupinové normalizace na minidávku vstupů. | |
5) torch.nn.SyncBatchNorm | Používá se k aplikaci dávkové normalizace na n-rozměrné vstupy. | |
6) hořák.nn.InstanceNorm1d | Používá se k aplikaci normalizace instance na 3D vstup. | |
7) pochodeň.nn.InstanceNorm2d | Používá se k aplikaci normalizace instance na 4D vstup. | |
8) pochodeň.nn.InstanceNorm3d | Používá se k aplikaci normalizace instance na 5D vstup. | |
9) hořák.nn.LayerNorm | Používá se k aplikaci normalizace vrstev na minidávku vstupů. | |
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: | |
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: | |
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: 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: | |
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 bě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. | |
2) pochodeň.nn.PairwiseDistance | Vypočítává dávkově párovou vzdálenost mezi vektory v1, v2 pomocí p-normy: | |
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: | |
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. | |
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: | |
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. | |
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). | |
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. | |
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. | |
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