logo

torch.nn в PyTorch

PyTorch предоставя модула torch.nn, за да ни помогне при създаването и обучението на невронната мрежа. Първо ще обучим основната невронна мрежа върху набора от данни MNIST, без да използваме функции от тези модели. Ще използваме само основната тензорна функционалност на PyTorch и след това постепенно ще добавяме по една функция от torch.nn наведнъж.

torch.nn ни предоставя много повече класове и модули за внедряване и обучение на невронната мрежа.

Пакетът nn съдържа следните модули и класове:

Да не Клас и модул Описание
1. факел.nn.Параметър Това е вид тензор, който трябва да се разглежда като модулен параметър.
2. Контейнери
1) факел.nn.Модул Това е базов клас за всички модули на невронни мрежи.
2) факел.nn.Последователен Това е последователен контейнер, в който модулите ще се добавят в същия ред, в който са предадени в конструктора.
3) torch.nn.ModuleList Това ще съдържа подмодули в списък.
4) torch.nn.ModuleDict Това ще съдържа подмодули в директория.
5) torch.nn.ParameterList Това ще задържи параметрите в списък.
6) torch.nn.parameterDict Това ще задържи параметрите в директория.
3. Конволюционни слоеве
1) torch.nn.Conv1d Този пакет ще се използва за прилагане на 1D конволюция върху входен сигнал, съставен от няколко входни равнини.
2) torch.nn.Conv2d Този пакет ще се използва за прилагане на 2D конволюция върху входен сигнал, съставен от няколко входни равнини.
3) torch.nn.Conv3d Този пакет ще се използва за прилагане на 3D конволюция върху входен сигнал, съставен от няколко входни равнини.
4) torch.nn.ConvTranspose1d Този пакет ще се използва за прилагане на 1D транспониран конволюционен оператор върху входно изображение, съставено от няколко входни равнини.
5) torch.nn.ConvTranspose2d Този пакет ще се използва за прилагане на 2D транспониран конволюционен оператор върху входно изображение, съставено от няколко входни равнини.
6) torch.nn.ConvTranspose3d Този пакет ще се използва за прилагане на 3D транспониран оператор за навиване върху входно изображение, съставено от няколко входни равнини.
7) факла.nn.Разгънете Използва се за извличане на плъзгащи се локални блокове от пакетен входен тензор.
8) факла.nn.Сгъване Използва се за комбиниране на масив от плъзгащи се локални блокове в голям съдържащ тензор.
4. Обединяване на слоеве
1) torch.nn.MaxPool1d Използва се за прилагане на 1D max групиране върху входен сигнал, съставен от няколко входни равнини.
2) torch.nn.MaxPool2d Използва се за прилагане на 2D max групиране върху входен сигнал, съставен от няколко входни равнини.
3) torch.nn.MaxPool3d Използва се за прилагане на 3D max групиране върху входен сигнал, съставен от няколко входни равнини.
4) torch.nn.MaxUnpool1d Използва се за изчисляване на частичната обратна стойност на MaxPool1d.
5) torch.nn.MaxUnpool2d Използва се за изчисляване на частичната обратна стойност на MaxPool2d.
6) torch.nn.MaxUnpool3d Използва се за изчисляване на частичната обратна стойност на MaxPool3d.
7) torch.nn.AvgPool1d Използва се за прилагане на 1D средно обединяване върху входен сигнал, съставен от няколко входни равнини.
8) torch.nn.AvgPool2d Използва се за прилагане на 2D средно обединяване върху входен сигнал, съставен от няколко входни равнини.
9) torch.nn.AvgPool3d Използва се за прилагане на 3D средно обединяване върху входен сигнал, съставен от няколко входни равнини.
10) torch.nn.FractionalMaxPool2d Използва се за прилагане на 2D фракционно максимално обединяване върху входен сигнал, съставен от няколко входни равнини.
11) torch.nn.LPPool1d Използва се за прилагане на 1D обединяване на средна мощност върху входен сигнал, съставен от няколко входни равнини.
12) torch.nn.LPPool2d Използва се за прилагане на 2D обединяване на средната мощност върху входен сигнал, съставен от няколко входни равнини.
13) torch.nn.AdavtiveMaxPool1d Използва се за прилагане на 1D адаптивно максимално обединяване върху входен сигнал, съставен от няколко входни равнини.
14) torch.nn.AdavtiveMaxPool2d Използва се за прилагане на 2D адаптивно максимално обединяване върху входен сигнал, съставен от няколко входни равнини.
15) torch.nn.AdavtiveMaxPool3d Използва се за прилагане на 3D адаптивно максимално обединяване върху входен сигнал, съставен от няколко входни равнини.
16) torch.nn.AdavtiveAvgPool1d Използва се за прилагане на 1D адаптивно средно обединяване върху входен сигнал, съставен от няколко входни равнини.
17) torch.nn.AdavtiveAvgPool2d Използва се за прилагане на 2D адаптивно средно обединяване върху входен сигнал, съставен от няколко входни равнини.
18) torch.nn.AdavtiveAvgPool3d Използва се за прилагане на 3D адаптивно средно обединяване върху входен сигнал, съставен от няколко входни равнини.
5. Подложни слоеве
1) torch.nn.ReflectionPad1d Той ще подпълни входния тензор, използвайки отражението на входната граница.
2) torch.nn.ReflactionPad2d Той ще подпълни входния тензор, използвайки отражението на входната граница.
3) torch.nn.ReplicationPad1 Той ще подпълни входния тензор, като използва репликацията на входната граница.
4) torch.nn.ReplicationPad2d Той ще подпълни входния тензор, като използва репликацията на входната граница.
5) torch.nn.ReplicationPad3d Той ще подпълни входния тензор, като използва репликацията на входната граница.
6) torch.nn.ZeroPad2d Той ще подпълни границите на входния тензор с нула.
7) torch.nn.ConstantPad1d Той ще подпълни границите на входния тензор с постоянна стойност.
8) torch.nn.ConstantPad2d Той ще подпълни границите на входния тензор с постоянна стойност.
9) torch.nn.ConstantPad3d Той ще подпълни границите на входния тензор с постоянна стойност.
6. Нелинейни активации (претеглена сума, нелинейност)
1) факла.nn.ELU Той ще използва за прилагане на елементната функция:
ELU(x)=max(0,x)+min(0,α*(exp(x)-1))
2) факел.nn.Hardshrink Той ще използва за прилагане на функцията за твърдо свиване по елемент:
torch.nn в PyTorch
3) факла.nn.LeakyReLU Той ще използва за прилагане на елементната функция:
LeakyReLu(x)=max(0,x) +отрицателен_наклон*мин(0,x)
4) torch.nn.LogSigmoid Той ще използва за прилагане на елементната функция:
torch.nn в PyTorch
5) факла.nn.MultiheadAttention Използва се, за да позволи на модела да се грижи за информация от различни подпространства на представяне
6) факла.nn.PReLU Ще се използва за прилагане на функцията по елементи:
PReLU(x)=max(0,x)+a*min(0,x)
7) факла.nn.ReLU Той ще използва за прилагане на функцията на коригираната линейна единица по елемент:
ReLU(x)=max(0,x)
8) факла.nn.ReLU6 Ще се използва за прилагане на функцията по елементи:
ReLU6(x)=min(max(0,x),6)
9) факла.nn.RReLU Той ще се използва за прилагане на рандомизираната функция на течаща ректифицирана линейна единица, по елементи, както е описано в документа:
torch.nn в PyTorch
10) факла.nn.SELU Ще се използва за прилагане на функцията по елементи като:
SELU(x)=мащаб*(max(0,x)+ min(0,a*(exp(x)-1)))

Тук α= 1.6732632423543772848170429916717 и мащаб = 1.0507009873554804934193349852946.
11) факла.nn.TARGET Ще се използва за прилагане на функцията по елементи като:
torch.nn в PyTorch
12) факла.nn.Sigmoid Ще се използва за прилагане на функцията по елементи като:
torch.nn в PyTorch
13) факел.nn.Softplus Ще се използва за прилагане на функцията по елементи като:
torch.nn в PyTorch
14) факел.nn.Softshrink Ще се използва за прилагане на функцията за меко свиване по елементи като:
torch.nn в PyTorch
15) torch.nn.Softsign Ще се използва за прилагане на функцията по елементи като:
torch.nn в PyTorch
16) факла.nn.Tanh Ще се използва за прилагане на функцията по елементи като:
torch.nn в PyTorch
17) факла.nn.Tanhshrink Ще се използва за прилагане на функцията по елементи като:
Tanhshrink(x)=x-Tanh(x)
18) факла.nn.Праг Той ще използва за прагове на всеки елемент от входния тензор. Прагът се определя като:
torch.nn в PyTorch
7. Нелинейни активации (други)
1) факел.nn.Softmin Използва се за прилагане на функцията softmin към n-измерен входен тензор, за да ги премащабира. След това елементите на n-мерния изходен тензор се намират в диапазона 0, 1 и сумата до 1. Softmin се определя като:
torch.nn в PyTorch
2) факел.nn.Softmax Използва се за прилагане на функцията softmax към n-измерен входен тензор, за да ги премащабира. След това елементите на n-мерния изходен тензор се намират в диапазона 0, 1 и сумата до 1. Softmax се дефинира като:
torch.nn в PyTorch
3) torch.nn.Softmax2d Използва се за прилагане на SoftMax върху функции към всяко пространствено местоположение.
4) torch.nn.LogSoftmax Използва се за прилагане на функцията LogSoftmax към n-измерен входен тензор. Функцията LofSoftmax може да се дефинира като:
torch.nn в PyTorch
5) torch.nn.AdaptiveLogSoftmaxWithLoss Това е стратегия за обучение на модели с големи изходни пространства. Той е много ефективен, когато разпределението на етикетите е силно небалансирано
8. Слоеве за нормализиране
1) torch.nn.BatchNorm1d Използва се за прилагане на пакетна нормализация върху 2D или 3D входове.
torch.nn в PyTorch
2) torch.nn.BatchNorm2d Използва се за прилагане на партидна нормализация върху 4D.
torch.nn в PyTorch
3) torch.nn.BatchNorm3d Използва се за прилагане на пакетна нормализация върху 5D входове.
torch.nn в PyTorch
4) torch.nn.GroupNorm Използва се за прилагане на групова нормализация върху мини-пакет от входове.
torch.nn в PyTorch
5) torch.nn.SyncBatchNorm Използва се за прилагане на пакетна нормализация върху n-измерни входове.
torch.nn в PyTorch
6) torch.nn.InstanceNorm1d Използва се за прилагане на нормализиране на екземпляр върху 3D вход.
torch.nn в PyTorch
7) torch.nn.InstanceNorm2d Използва се за прилагане на нормализиране на екземпляр върху 4D вход.
torch.nn в PyTorch
8) torch.nn.InstanceNorm3d Използва се за прилагане на нормализация на екземпляр върху 5D вход.
torch.nn в PyTorch
9) torch.nn.LayerNorm Използва се за прилагане на нормализиране на слоя върху мини-пакет от входове.
torch.nn в PyTorch
10) torch.nn.LocalResponseNorm Използва се за прилагане на локална нормализация на отговора върху входен сигнал, който е съставен от няколко входни равнини, където каналът заема второто измерение.
9. Повтарящи се слоеве
1) факла.nn.RNN Използва се за прилагане на многослоен Elman RNN с tanh или ReLU нелинейност към входна последователност. Всеки слой изчислява следната функция за всеки елемент във входната последователност:
чT=tanh(WтяххTтях+WччTt-1чч)
2) факла.nn.LSTM Използва се за прилагане на многослойна дългосрочна памет (LSTM) RNN към входна последователност. Всеки слой изчислява следната функция за всеки елемент във входната последователност:
torch.nn в PyTorch
3) факел.nn.GRU Използва се за прилагане на многослойна затворена рекурентна единица (GRU) RNN към входна последователност. Всеки слой изчислява следната функция за всеки елемент във входната последователност:
torch.nn в PyTorch
4) факла.nn.RNNCell Използва се за прилагане на RNN клетка на Elman с tanh или ReLU нелинейност към входна последователност. Всеки слой изчислява следната функция за всеки елемент във входната последователност:
h'=tanh(Wтяхx+bтях+Wччh+bчч)
ReLU се използва вместо tanh
5) torch.nn.LSTMCell Използва се за прилагане на клетка с дълга краткосрочна памет (LSTM) към входна последователност. Всеки слой изчислява следната функция за всеки елемент във входната последователност:
torch.nn в PyTorch
Където σ е сигмоидната функция, а * е произведението на Адамар.
6) факла.nn.GRUCell Използва се за прилагане на затворена рекурентна единица (GRU) клетка към входна последователност. Всеки слой изчислява следната функция за всеки елемент във входната последователност:
torch.nn в PyTorch
10. Линейни слоеве
1) факла.nn.Идентичност Това е оператор за самоличност на заместител, който не е чувствителен към аргументи.
2) факел.nn.Линеен Използва се за прилагане на линейна трансформация към входящите данни:
y=xAT
3) факел.nn.Bilinear Използва се за прилагане на билинейна трансформация към входящите данни:
y=x1брадва2
единадесет. Отпадащи слоеве
1) факла.nn.Отпадане Използва се за регулиране и предотвратяване на коадаптацията на невроните. Фактор на torch.nn в PyTorchпо време на обучение мащабира продукцията. Това означава, че модулът изчислява функция за идентичност по време на оценката.
2) torch.nn.Dropout2d Ако съседни пиксели в рамките на картите на характеристиките са корелирани, тогава torch.nn.Dropout няма да регулира активациите и ще намали ефективната скорост на обучение. В този случай torch.nn.Dropout2d() се използва за насърчаване на независимостта между картите на характеристиките.
3) torch.nn.Dropout3d Ако съседни пиксели в рамките на картите на характеристиките са корелирани, тогава torch.nn.Dropout няма да регулира активациите и ще намали ефективната скорост на обучение. В този случай torch.nn.Dropout2d () се използва за насърчаване на независимостта между картите на характеристиките.
4) torch.nn.AlphaDropout Използва се за прилагане на Alpha Dropout върху входа. Alpha Dropout е тип Dropout, който поддържа свойството за самонормализиране.
12. Редки слоеве
1) факел.nn.Вграждане Използва се за съхраняване на вградени думи и извличането им с помощта на индекси. Входът за модула е списък от индекси, а изходът е вграждането на съответната дума.
2) torch.nn.EmbeddingBag Използва се за изчисляване на суми или средни стойности на „торби“ на вграждане, без да се инстанцира междинното вграждане.
13. Функция за разстояние
1) torch.nn.CosineSimilarity Той ще върне косинусното сходство между x1 и x2, изчислено по dim.
torch.nn в PyTorch
2) torch.nn.PairwiseDistance Той изчислява груповото разстояние по двойки между вектори v1, v2, използвайки p-нормата:
torch.nn в PyTorch
14. Функция на загуба
1) факел.nn.L1Загуба Използва се за критерий, който измерва средната абсолютна грешка между всеки елемент във входа x и целта y. Ненамалената загуба може да се опише като:
l(x,y)=L={l1,...,лн},lн=|xнн|,
Където N е размерът на партидата.
2) факел.nn.MSELoss Използва се за критерий, който измерва средната квадратна грешка между всеки елемент във входа x и целта y. Ненамалената загуба може да се опише като:
l(x,y)=L={l1,...,лн},lн=(xнн)2,
Където N е размерът на партидата.
3) torch.nn.CrossEntropyLoss Този критерий съчетава nn.LogSoftmax() и nn.NLLLoss() в един единствен клас. Полезно е, когато обучаваме класификационен проблем с C класове.
4) torch.nn.CTCLoss Загубата на Connectionist Temporal Classification изчислява загубата между непрекъснат времеви ред и целева последователност.
5) torch.nn.NLLLoss Загубата на отрицателна логаритмична вероятност се използва за обучение на класификационен проблем с C класове.
6) факла.nn.PoissonNLLLoss Отрицателната загуба на логаритмична вероятност с разпределението на Поасон на t
target~Poisson(input)loss(input,target)=input-target*log(target!)he target.
7) torch.nn.KLDivLoss Това е полезна мярка за разстояние за непрекъснато разпределение и също така е полезно, когато извършваме директна регресия върху пространството на непрекъснато разпределение на изхода.
8) факел.nn.BCELoss Използва се за създаване на критерий, който измерва двоичната кръстосана ентропия между целта и изхода. Ненамалената загуба може да се опише като:
l(x,y)=L={l1,...,лн},lн=-vнн*logxн+ (1-гн)*log(1-xн)],
Където N е размерът на партидата.
9) torch.nn.BCEWithLogitsLoss Той комбинира сигмоидния слой и BCELoss в един единствен клас. Можем да се възползваме от трика log-sum-exp за числена стабилност, като комбинираме операцията в един слой.
10) torch.nn.MarginRankingLoss Той създава критерий, който измерва загубата на дадени входове x1, x2, два 1D мини-партиден тензора и етикет 1D мини-партиден тензор y, които съдържат 1 или -1. Функцията на загубите за всяка проба в минипартидата е както следва:
загуба(x,y)=max(0,-y*(x12)+марж
11) torch.nn.HingeEmbeddingLoss HingeEmbeddingLoss измерва загубата на даден входен тензор x и тензор на етикети y, които съдържат 1 или -1. Използва се за измерване дали два входа са сходни или различни. Функцията на загубата се определя като:
torch.nn в PyTorch
12) torch.nn.MultiLabelMarginLoss Използва се за създаване на критерий, който оптимизира загубата на панта за многокласова мултикласификация между вход x и изход y.
torch.nn в PyTorch
13) torch.nn.SmoothL1Loss Използва се за създаване на критерий, който използва член на квадрат, ако абсолютната елементна грешка падне под 1, и термин L1 в противен случай. Известна е също като загуба на Huber:
torch.nn в PyTorch
14) torch.nn.SoftMarginLoss Използва се за създаване на критерий, който оптимизира логистичната загуба на двукласова класификация между входния тензор x и целевия тензор y, които съдържат 1 или -1.
torch.nn в PyTorch
15) torch.nn.MultiLabelSoftMarginLoss Използва се за създаване на критерий, който оптимизира загубата с множество етикети едно срещу всички въз основа на максимална ентропия между вход x и целеви y с размер (N, C).
torch.nn в PyTorch
16) torch.nn.CosineEmbeddingLoss Използва се за създаване на критерий, който измерва загубата на дадени входни тензори x1, x2 и етикет на тензор y със стойности 1 или -1. Използва се за измерване дали два входа са подобни или различни, като се използва косинусното разстояние.
torch.nn в PyTorch
17) torch.nn.MultiMarginLoss Използва се за създаване на критерий, който оптимизира загуба на шарнирна шарнирна класификация между вход x и изход y.
torch.nn в PyTorch
18) torch.nn.TripletMarginLoss Използва се за създаване на критерий, който измерва триплетната загуба на дадени входни тензори x1, x2, x3 и марж със стойност, по-голяма от 0. Използва се за измерване на относително сходство между проби. Триплетът се състои от котва, положителен пример и отрицателен пример.
L(a,p,n)=max{d(aаз,страз)-d(aазаз)+марж,0}
петнадесет. Слоеве на зрението
1) torch.nn.PixelShuffle Използва се за пренареждане на елементите в тензор с форма (*,C×r2,H,W) към тензор с форма (*,C,H×r,W,r)
2) факла.nn.Upsample Използва се за преобразуване на дадени многоканални 1D, 2D или 3D данни.
3) torch.nn.upsamplingNearest2d Използва се за прилагане на 2D дискретизация на най-близкия съсед към входен сигнал, който е съставен от множество входни канали.
4) torch.nn.UpsamplingBilinear2d Използва се за прилагане на 2D билинеарно повишаване на дискретизацията към входен сигнал, който е съставен с множество входни канали.
16. DataParallel слоеве (мулти-GPU, разпределен)
1) torch.nn.DataParallel Използва се за реализиране на паралелизъм на данните на ниво модул.
2) torch.nn.DistributedDataParallel Използва се за реализиране на паралелизъм на разпределени данни, който се основава на пакета torch.distributed на ниво модул.
3) torch.nn.DistributedDataParallelCPU Използва се за реализиране на паралелизъм на разпределени данни за процесора на ниво модул.
17. Помощни програми
1) torch.nn.clip_grad_norm_ Използва се за изрязване на нормата на градиента на итерируем от параметри.
2) torch.nn.clip_grad_value_ Използва се за изрязване на нормата на градиента на итерируем от параметри при определената стойност.
3) torch.nn.parameters_to_vector Използва се за преобразуване на параметри в един вектор.
4) torch.nn.vector_to_parameters Използва се за преобразуване на един вектор в параметрите.
5) горелка.nn.тегло_норма Използва се за прилагане на нормализиране на теглото към параметър в дадения модул.
6) torch.nn.remove_weight_norm Използва се за премахване на нормализирането на теглото и повторното параметризиране от модул.
7) факел.nn.спектрална_норма Използва се за прилагане на спектрална нормализация към параметър в дадения модул.
8) torch.nn.PackedSequence Той ще използва за съхранение на данните и списъка с batch_sizes на пакетирана последователност.
9) torch.nn.pack_padded_sequence Използва се за пакетиране на тензор, съдържащ подплатени последователности с променлива дължина.
10) torch.nn.pad_packed_sequence Използва се за допълване на опакована партида от последователности с променлива дължина.
11) torch.nn.pad_sequence Използва се за допълване на списък с тензори с променлива дължина със стойност за допълване.
12) torch.nn.pack_sequence Използва се за пакетиране на списък с тензори с променлива дължина
13) torch.nn.remove_spectral_norm Използва се за премахване на спектралната нормализация и повторна параметризация от модул.

Справка:

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