logo

torch.nn w PyTorch

PyTorch udostępnia moduł torch.nn, który pomaga nam w tworzeniu i szkoleniu sieci neuronowej. Najpierw przeszkolimy podstawową sieć neuronową na zbiorze danych MNIST, nie korzystając z żadnych funkcji z tych modeli. Będziemy używać tylko podstawowej funkcjonalności tensora PyTorch, a następnie stopniowo będziemy dodawać po jednej funkcji z torch.nn na raz.

torch.nn zapewnia nam znacznie więcej klas i modułów do wdrażania i uczenia sieci neuronowej.

Pakiet nn zawiera następujące moduły i klasy:

Tak nie Klasa i moduł Opis
1. palnik.nn.Parametr Jest to rodzaj tensora, który należy traktować jako parametr modułu.
2. Kontenery
1) palnik.nn.Moduł Jest to klasa bazowa dla wszystkich modułów sieci neuronowych.
2) palnik.nn.Sekwencyjny Jest to kontener sekwencyjny, w którym moduły będą dodawane w tej samej kolejności, w jakiej są przekazywane w konstruktorze.
3) latarka.nn.ModuleList Spowoduje to przechowywanie podmodułów na liście.
4) palnik.nn.ModuleDict Spowoduje to przechowywanie podmodułów w katalogu.
5) palnik.nn.Lista parametrów Spowoduje to przechowywanie parametrów na liście.
6) palnik.nn.parametrDict Spowoduje to przechowywanie parametrów w katalogu.
3. Warstwy splotu
1) palnik.nn.Conv1d Pakiet ten zostanie użyty do zastosowania splotu 1D na sygnale wejściowym złożonym z kilku płaszczyzn wejściowych.
2) palnik.nn.Conv2d Pakiet ten zostanie użyty do zastosowania splotu 2D na sygnale wejściowym złożonym z kilku płaszczyzn wejściowych.
3) palnik.nn.Conv3d Pakiet ten zostanie użyty do zastosowania splotu 3D na sygnale wejściowym złożonym z kilku płaszczyzn wejściowych.
4) palnik.nn.ConvTranspose1d Pakiet ten zostanie użyty do zastosowania operatora splotu transponowanego 1D na obrazie wejściowym złożonym z kilku płaszczyzn wejściowych.
5) torch.nn.ConvTranspose2d Ten pakiet zostanie użyty do zastosowania operatora splotu transponowanego 2D na obrazie wejściowym złożonym z kilku płaszczyzn wejściowych.
6) torch.nn.ConvTranspose3d Pakiet ten zostanie użyty do zastosowania operatora splotu transponowanego 3D do obrazu wejściowego składającego się z kilku płaszczyzn wejściowych.
7) palnik.nn.Rozłóż Służy do wyodrębniania przesuwnych bloków lokalnych z wsadowego tensora wejściowego.
8) palnik.nn.Złóż Służy do łączenia tablicy przesuwanych bloków lokalnych w duży tensor zawierający.
4. Łączenie warstw
1) palnik.nn.MaxPool1d Służy do stosowania maksymalnego łączenia 1D sygnału wejściowego składającego się z kilku płaszczyzn wejściowych.
2) palnik.nn.MaxPool2d Służy do stosowania maksymalnego łączenia 2D sygnału wejściowego składającego się z kilku płaszczyzn wejściowych.
3) latarka.nn.MaxPool3d Służy do stosowania maksymalnego łączenia 3D sygnału wejściowego składającego się z kilku płaszczyzn wejściowych.
4) palnik.nn.MaxUnpool1d Służy do obliczenia częściowej odwrotności MaxPool1d.
5) palnik.nn.MaxUnpool2d Służy do obliczenia częściowej odwrotności MaxPool2d.
6) palnik.nn.MaxUnpool3d Służy do obliczenia częściowej odwrotności MaxPool3d.
7) latarka.nn.AvgPool1d Służy do stosowania średniego łączenia 1D w sygnale wejściowym złożonym z kilku płaszczyzn wejściowych.
8) latarka.nn.AvgPool2d Służy do stosowania średniego łączenia 2D sygnału wejściowego składającego się z kilku płaszczyzn wejściowych.
9) torch.nn.AvgPool3d Służy do stosowania średniego łączenia 3D sygnału wejściowego składającego się z kilku płaszczyzn wejściowych.
10) torch.nn.FractionalMaxPool2d Służy do stosowania ułamkowego maksymalnego łączenia 2D sygnału wejściowego składającego się z kilku płaszczyzn wejściowych.
11) latarka.nn.LPPool1d Służy do stosowania 1D łączenia średniej mocy na sygnale wejściowym złożonym z kilku płaszczyzn wejściowych.
12) latarka.nn.LPPool2d Służy do stosowania łączenia średniej mocy 2D w sygnale wejściowym składającym się z kilku płaszczyzn wejściowych.
13) torch.nn.AdavtiveMaxPool1d Służy do zastosowania adaptacyjnego maksymalnego łączenia 1D sygnału wejściowego składającego się z kilku płaszczyzn wejściowych.
14) torch.nn.AdavtiveMaxPool2d Służy do zastosowania adaptacyjnego maksymalnego łączenia 2D sygnału wejściowego składającego się z kilku płaszczyzn wejściowych.
15) torch.nn.AdavtiveMaxPool3d Służy do zastosowania adaptacyjnego maksymalnego łączenia 3D sygnału wejściowego składającego się z kilku płaszczyzn wejściowych.
16) torch.nn.AdavtiveAvgPool1d Służy do stosowania adaptacyjnej średniej łączenia 1D dla sygnału wejściowego składającego się z kilku płaszczyzn wejściowych.
17) torch.nn.AdavtiveAvgPool2d Służy do stosowania adaptacyjnego łączenia średniej 2D dla sygnału wejściowego składającego się z kilku płaszczyzn wejściowych.
18) torch.nn.AdavtiveAvgPool3d Służy do stosowania adaptacyjnego łączenia średniej 3D dla sygnału wejściowego składającego się z kilku płaszczyzn wejściowych.
5. Warstwy wyściółki
1) latarka.nn.ReflectionPad1d Wypełni tensor wejściowy, korzystając z odbicia granicy wejściowej.
2) latarka.nn.ReflactionPad2d Wypełni tensor wejściowy, korzystając z odbicia granicy wejściowej.
3) latarka.nn.ReplicationPad1 Wypełni tensor wejściowy za pomocą replikacji granicy wejściowej.
4) latarka.nn.ReplicationPad2d Wypełni tensor wejściowy za pomocą replikacji granicy wejściowej.
5) torch.nn.ReplicationPad3d Wypełni tensor wejściowy za pomocą replikacji granicy wejściowej.
6) latarka.nn.ZeroPad2d Spowoduje to wypełnienie granic tensora wejściowego zerem.
7) latarka.nn.ConstantPad1d Wypełni granice tensora wejściowego stałą wartością.
8) latarka.nn.ConstantPad2d Wypełni granice tensora wejściowego stałą wartością.
9) latarka.nn.ConstantPad3d Wypełni granice tensora wejściowego stałą wartością.
6. Aktywacje nieliniowe (suma ważona, nieliniowość)
1) latarka.nn.ELU Będzie używany do zastosowania funkcji elementowej:
ELU(x)=max(0,x)+min(0,α*(exp(x)-1))
2) palnik.nn.Twardokurczliwy Będzie używany do zastosowania funkcji twardego skurczu elementarnie:
torch.nn w PyTorch
3) latarka.nn.LeakyReLU Będzie używany do zastosowania funkcji elementowej:
LeakyReLu(x)=max(0,x) +nachylenie_ujemne*min(0,x)
4) latarka.nn.LogSigmoid Będzie używany do zastosowania funkcji elementowej:
torch.nn w PyTorch
5) palnik.nn.MultiheadUwaga Służy do umożliwienia modelowi uwzględnienia informacji z różnych podprzestrzeni reprezentacji
6) palnik.nn.PReLU Będzie używany do zastosowania funkcji elementowej:
PRELU(x)=max(0,x)+a*min(0,x)
7) palnik.nn.ReLU Użyje elementu do zastosowania wyprostowanej funkcji jednostki liniowej:
ReLU(x)=max(0,x)
8) palnik.nn.ReLU6 Będzie używany do zastosowania funkcji elementowej:
ReLU6(x)=min(max(0,x),6)
9) latarka.nn.RReLU Zastosuje funkcję losowej, nieszczelnej, rektyfikowanej jednostki liniowej, elementarnie, jak opisano w artykule:
torch.nn w PyTorch
10) latarka.nn.SELU Będzie używany do zastosowania funkcji elementarnej jako:
SELU(x)=skala*(max(0,x)+ min(0,a*(exp(x)-1)))

Tutaj α= 1,6732632423543772848170429916717 i skala = 1,0507009873554804934193349852946.
11) torch.nn.CELU Będzie używany do zastosowania funkcji elementarnej jako:
torch.nn w PyTorch
12) pochodnia.nn.Sigmoid Będzie używany do zastosowania funkcji elementarnej jako:
torch.nn w PyTorch
13) latarka.nn.Softplus Będzie używany do zastosowania funkcji elementarnej jako:
torch.nn w PyTorch
14) palnik.nn.Softshrink Użyje elementarnego zastosowania funkcji miękkiego skurczu jako:
torch.nn w PyTorch
15) latarka.nn.Softsign Będzie używany do zastosowania funkcji elementarnej jako:
torch.nn w PyTorch
16) latarka.nn.Tanh Będzie używany do zastosowania funkcji elementarnej jako:
torch.nn w PyTorch
17) latarka.nn.Tanhshrink Będzie używany do zastosowania funkcji elementarnej jako:
Tanhshrink(x)=x-Tanh(x)
18) latarka.nn.Próg Będzie używany do progowania każdego elementu tensora wejściowego. Próg definiuje się jako:
torch.nn w PyTorch
7. Aktywacje nieliniowe (inne)
1) palnik.nn.Softmin Służy do zastosowania funkcji softmin do n-wymiarowego tensora wejściowego w celu ich przeskalowania. Następnie elementy n-wymiarowego Tensora wyjściowego mieszczą się w zakresie 0, 1 i sumują się do 1. Softmin definiuje się jako:
torch.nn w PyTorch
2) palnik.nn.Softmax Służy do zastosowania funkcji softmax do n-wymiarowego tensora wejściowego w celu ich przeskalowania. Następnie elementy n-wymiarowego Tensora wyjściowego mieszczą się w zakresie 0, 1 i sumują się do 1. Softmax definiuje się jako:
torch.nn w PyTorch
3) palnik.nn.Softmax2d Służy do stosowania SoftMax na funkcjach do każdej lokalizacji przestrzennej.
4) palnik.nn.LogSoftmax Służy do zastosowania funkcji LogSoftmax do n-wymiarowego tensora wejściowego. Funkcję LofSoftmax można zdefiniować jako:
torch.nn w PyTorch
5) torch.nn.AdaptiveLogSoftmaxWithLoss Jest to strategia uczenia modeli z dużymi przestrzeniami wyjściowymi. Jest bardzo skuteczny, gdy rozkład etykiet jest bardzo niezrównoważony
8. Warstwy normalizacyjne
1) palnik.nn.BatchNorm1d Służy do stosowania normalizacji wsadowej na wejściach 2D lub 3D.
torch.nn w PyTorch
2) palnik.nn.BatchNorm2d Służy do stosowania normalizacji wsadowej w 4D.
torch.nn w PyTorch
3) palnik.nn.BatchNorm3d Służy do stosowania normalizacji wsadowej na wejściach 5D.
torch.nn w PyTorch
4) palnik.nn.GroupNorm Służy do stosowania normalizacji grupowej na mini-partii danych wejściowych.
torch.nn w PyTorch
5) torch.nn.SyncBatchNorm Służy do stosowania normalizacji wsadowej na danych wejściowych n-wymiarowych.
torch.nn w PyTorch
6) palnik.nn.InstanceNorm1d Służy do stosowania normalizacji instancji na wejściu 3D.
torch.nn w PyTorch
7) palnik.nn.InstanceNorm2d Służy do stosowania normalizacji instancji na wejściu 4D.
torch.nn w PyTorch
8) latarka.nn.InstanceNorm3d Służy do stosowania normalizacji instancji na wejściu 5D.
torch.nn w PyTorch
9) palnik.nn.LayerNorm Służy do stosowania normalizacji warstw w mini-partii danych wejściowych.
torch.nn w PyTorch
10) latarka.nn.LocalResponseNorm Służy do stosowania normalizacji odpowiedzi lokalnej na sygnał wejściowy składający się z kilku płaszczyzn wejściowych, gdzie kanał zajmuje drugi wymiar.
9. Powtarzające się warstwy
1) latarka.nn.RNN Służy do zastosowania wielowarstwowego Elmana RNN z nieliniowością tanh lub ReLU do sekwencji wejściowej. Każda warstwa oblicza następującą funkcję dla każdego elementu w sekwencji wejściowej:
HT=tanh(WichXT+bich+WggTt-1+bgg)
2) latarka.nn.LSTM Służy do zastosowania wielowarstwowej pamięci długoterminowej (LSTM) RNN do sekwencji wejściowej. Każda warstwa oblicza następującą funkcję dla każdego elementu w sekwencji wejściowej:
torch.nn w PyTorch
3) latarka.nn.GRU Służy do zastosowania wielowarstwowej bramkowanej jednostki rekurencyjnej (GRU) RNN do sekwencji wejściowej. Każda warstwa oblicza następującą funkcję dla każdego elementu w sekwencji wejściowej:
torch.nn w PyTorch
4) latarka.nn.RNN Cell Służy do zastosowania komórki Elmana RNN z nieliniowością tanh lub ReLU do sekwencji wejściowej. Każda warstwa oblicza następującą funkcję dla każdego elementu w sekwencji wejściowej:
h'=tanh(Wichx+bich+Wggh+bgg)
Zamiast tanh stosuje się ReLU
5) palnik.nn.LSTMCell Służy do zastosowania komórki pamięci długoterminowej (LSTM) do sekwencji wejściowej. Każda warstwa oblicza następującą funkcję dla każdego elementu w sekwencji wejściowej:
torch.nn w PyTorch
Gdzie σ jest funkcją sigmoidalną, a * jest iloczynem Hadamarda.
6) latarka.nn.GRUCell Służy do zastosowania bramkowanej komórki rekurencyjnej (GRU) do sekwencji wejściowej. Każda warstwa oblicza następującą funkcję dla każdego elementu w sekwencji wejściowej:
torch.nn w PyTorch
10. Warstwy liniowe
1) latarka.nn.Tożsamość Jest to operator tożsamości zastępczy, który nie uwzględnia argumentów.
2) palnik.nn.Liniowy Służy do zastosowania transformacji liniowej do przychodzących danych:
y=xAT+b
3) palnik.nn.Dwuliniowy Służy do zastosowania transformacji dwuliniowej do przychodzących danych:
y=x1Topór2+b
jedenaście. Warstwy opuszczania
1) latarka.nn.Wyrzut Służy do regularyzacji i zapobiegania koadaptacji neuronów. Czynnik torch.nn w PyTorchpodczas treningu skaluje wynik. Oznacza to, że moduł oblicza funkcję tożsamości podczas oceny.
2) latarka.nn.Dropout2d Jeśli sąsiednie piksele na mapach obiektów są skorelowane, torch.nn.Dropout nie ureguluje aktywacji i zmniejszy efektywną szybkość uczenia się. W tym przypadku torch.nn.Dropout2d() służy do wspierania niezależności pomiędzy mapami obiektów.
3) latarka.nn.Dropout3d Jeśli sąsiednie piksele na mapach obiektów są skorelowane, torch.nn.Dropout nie ureguluje aktywacji i zmniejszy efektywną szybkość uczenia się. W tym przypadku torch.nn.Dropout2d () służy do wspierania niezależności pomiędzy mapami obiektów.
4) latarka.nn.AlphaDropout Służy do stosowania funkcji Alpha Dropout na wejściu. Alpha Dropout to rodzaj rezygnacji, który zachowuje właściwość samonormalizacji.
12. Rzadkie warstwy
1) palnik.nn.Osadzanie Służy do przechowywania osadzonych słów i pobierania ich za pomocą indeksów. Dane wejściowe modułu to lista indeksów, a wyjściem jest osadzanie odpowiedniego słowa.
2) Torch.nn.EmbeddingBag Służy do obliczania sum lub średniej „torby” osadzania bez tworzenia instancji osadzania pośredniego.
13. Funkcja odległości
1) latarka.nn.CosinusPodobieństwo Zwróci cosinus podobieństwa między x1 i x2, obliczone wzdłuż dim.
torch.nn w PyTorch
2) latarka.nn.PairwiseDistance Oblicza wsadową odległość parami między wektorami v1, v2 przy użyciu normy p:
torch.nn w PyTorch
14. Funkcja straty
1) palnik.nn.L1Strata Służy do kryterium, które mierzy średni błąd bezwzględny pomiędzy każdym elementem na wejściu x i docelowym y. Niezmniejszoną stratę można opisać jako:
l(x,y)=L={l1,..., lN},lN=|xN-IN|,
Gdzie N jest wielkością partii.
2) latarka.nn.MSELStrata Służy do kryterium, które mierzy średni błąd kwadratowy pomiędzy każdym elementem na wejściu x i docelowym y. Niezmniejszoną stratę można opisać jako:
l(x,y)=L={l1,...,lN},lN=(xN-IN)2,
Gdzie N jest wielkością partii.
3) torch.nn.CrossEntropyLoss Kryterium to łączy nn.LogSoftmax() i nn.NLLLoss() w jedną klasę. Jest to pomocne, gdy uczymy problem klasyfikacji z klasami C.
4) latarka.nn.CTCLStrata Koneksjonistyczna klasyfikacja czasowa strat oblicza stratę pomiędzy ciągłym szeregiem czasowym a sekwencją docelową.
5) latarka.nn.NLLLoss Ujemna utrata logarytmu wiarygodności jest wykorzystywana do uczenia problemu klasyfikacji z klasami C.
6) latarka.nn.PoissonNLLLoss Ujemna logarytmiczna strata wiarygodności z rozkładem Poissona t
target~Poisson(input)loss(input,target)=input-target*log(target!)on jest celem.
7) latarka.nn.KLDivLoss Jest to przydatna miara odległości w przypadku dystrybucji ciągłej, a także przydaje się, gdy przeprowadzamy bezpośrednią regresję po przestrzeni ciągłej dystrybucji wyjściowej.
8) latarka.nn.BCELutrata Służy do tworzenia kryterium mierzącego binarną entropię krzyżową między celem a wyjściem. Niezmniejszoną stratę można opisać jako:
l(x,y)=L={l1,...,lN},lN=-wN[IN*logxN+ (1-latN)*log(1-xN)],
Gdzie N jest wielkością partii.
9) latarka.nn.BCEWithLogitsLoss Łączy warstwę sigmoidalną i BCELoss w jednej klasie. Możemy skorzystać ze sztuczki log-suma-exp dla stabilności numerycznej, łącząc operację w jedną warstwę.
10) torch.nn.MarginRankingLoss Tworzy kryterium mierzące utratę danych wejściowych x1, x2, dwa tensory mini-wsadowe 1D i tensor mini-wsadowy 1D, które zawierają 1 lub -1. Funkcja straty dla każdej próbki w minipartii jest następująca:
strata(x,y)=max(0,-y*(x1-X2)+margines
11) palnik.nn.ZawiasUtrata osadzania HingeEmbeddingLoss mierzy utratę danego tensora wejściowego x i tensora etykiet y, które zawierają 1 lub -1. Służy do pomiaru, czy dwa wejścia są podobne, czy różne. Funkcja straty jest zdefiniowana jako:
torch.nn w PyTorch
12) torch.nn.MultiLabelMarginLoss Służy do stworzenia kryterium optymalizującego wieloklasową, wieloklasyczną utratę zawiasów pomiędzy wejściem x i wyjściem y.
torch.nn w PyTorch
13) palnik.nn.SmoothL1Strata Służy do tworzenia kryterium, które wykorzystuje składnik kwadratowy, jeśli bezwzględny błąd elementarny spadnie poniżej 1, lub składnik L1 w przeciwnym razie. Nazywa się to również stratą Hubera:
torch.nn w PyTorch
14) torch.nn.SoftMarginLoss Służy do stworzenia kryterium optymalizującego straty logistyczne klasyfikacji dwuklasowej pomiędzy tensorem wejściowym x i tensorem docelowym y, które zawierają 1 lub -1.
torch.nn w PyTorch
15) torch.nn.MultiLabelSoftMarginLoss Służy do tworzenia kryterium optymalizującego stratę typu „jeden do wszystkiego” w przypadku wielu etykiet w oparciu o maksymalną entropię między wejściowym x a docelowym y o rozmiarze (N, C).
torch.nn w PyTorch
16) latarka.nn.CosinusEmbeddingLoss Służy do tworzenia kryterium mierzącego utratę zadanych tensorów wejściowych x1, x2 oraz etykiety tensora y o wartościach 1 lub -1. Służy do pomiaru, czy dwa wejścia są podobne, czy różne, przy użyciu odległości cosinus.
torch.nn w PyTorch
17) torch.nn.MultiMarginLoss Służy do stworzenia kryterium optymalizującego utratę zawiasu klasyfikacji wieloklasowej pomiędzy wejściem x i wyjściem y.
torch.nn w PyTorch
18) torch.nn.TripletMarginLoss Służy do tworzenia kryterium mierzącego utratę trójki zadanych tensorów wejściowych x1, x2, x3 i marginesu o wartości większej niż 0. Służy do pomiaru względnego podobieństwa pomiędzy próbkami. Trójka składa się z kotwicy, pozytywnego przykładu i negatywnego przykładu.
L(a,p,n)=max{d(aI,PI)-d(aI,NI)+margines,0}
piętnaście. Warstwy widzenia
1) latarka.nn.PixelShuffle Służy do ponownego ułożenia elementów w tensorze kształtu (*, C×r2,H,W) na tensor kształtu (*,C,H×r,W,r)
2) latarka.nn.Upsample Służy do upsamplingu danych wielokanałowych 1D, 2D lub 3D.
3) torch.nn.upsamplingNearest2d Służy do stosowania upsamplingu najbliższego sąsiada 2D do sygnału wejściowego składającego się z wielu kanałów wejściowych.
4) torch.nn.UpsamplingBilinear2d Służy do stosowania dwuliniowego upsamplingu 2D do sygnału wejściowego składającego się z wielu kanałów wejściowych.
16. Warstwy DataParallel (wiele procesorów graficznych, rozproszone)
1) palnik.nn.DataParallel Służy do implementacji równoległości danych na poziomie modułu.
2) torch.nn.DistributedDataParallel Służy do implementacji rozproszonej równoległości danych, która opiera się na pakiecie torch.distributed na poziomie modułu.
3) torch.nn.DistributedDataParallelCPU Służy do implementacji rozproszonej równoległości danych dla procesora na poziomie modułu.
17. Narzędzia
1) latarka.nn.clip_grad_norm_ Służy do obcięcia normy gradientu iterowalnego parametru.
2) latarka.nn.clip_grad_value_ Służy do obcięcia normy gradientu iterowalnego parametru o określonej wartości.
3) palnik.nn.parameters_to_vector Służy do konwersji parametrów na jeden wektor.
4) palnik.nn.vector_to_parameters Służy do konwersji jednego wektora na parametry.
5) palnik.nn.weight_norm Służy do normalizacji wag parametru w danym module.
6) palnik.nn.remove_weight_norm Służy do usunięcia normalizacji wagi i ponownej parametryzacji z modułu.
7) latarka.nn.spectral_norm Służy do zastosowania normalizacji widmowej parametru w danym module.
8) torch.nn.PackedSequence Będzie używany do przechowywania danych i listy rozmiarów partii spakowanej sekwencji.
9) torch.nn.pack_padded_sequence Służy do pakowania Tensora zawierającego wyściełane sekwencje o zmiennej długości.
10) torch.nn.pad_packed_sequence Służy do wypełniania spakowanej partii sekwencji o zmiennej długości.
11) torch.nn.pad_sequence Służy do wypełniania listy tensorów o zmiennej długości wartością dopełnienia.
12) torch.nn.pack_sequence Służy do pakowania listy tensorów o zmiennej długości
13) latarka.nn.remove_spectral_norm Służy do usuwania normalizacji widmowej i ponownej parametryzacji z modułu.

Odniesienie:

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