logo

torch.nn у PyTorch

PyTorch надає модуль torch.nn, щоб допомогти нам у створенні та навчанні нейронної мережі. Спочатку ми навчимо базову нейронну мережу на наборі даних MNIST без використання будь-яких функцій із цих моделей. Ми будемо використовувати лише базову функціональність тензора PyTorch, а потім будемо поступово додавати одну функцію з torch.nn за раз.

torch.nn надає нам багато інших класів і модулів для реалізації та навчання нейронної мережі.

Пакет nn містить такі модулі та класи:

Так ні Клас і модуль опис
1. факел.нн.Параметр Це тип тензора, який слід розглядати як параметр модуля.
2. Контейнери
1) факел.нн.Модуль Це базовий клас для всіх модулів нейронної мережі.
2) факел.нн.Послідовний Це послідовний контейнер, до якого модулі додаватимуться в такому ж порядку, як вони передані в конструкторі.
3) torch.nn.ModuleList Це збереже підмодулі у списку.
4) torch.nn.ModuleDict Це дозволить зберігати підмодулі в каталозі.
5) torch.nn.ParameterList Це збереже параметри у списку.
6) torch.nn.parameterDict Це збереже параметри в каталозі.
3. Шари згортки
1) факел.nn.Conv1d Цей пакет використовуватиметься для застосування одновимірної згортки до вхідного сигналу, що складається з кількох вхідних площин.
2) torch.nn.Conv2d Цей пакет використовуватиметься для застосування двовимірної згортки до вхідного сигналу, що складається з кількох вхідних площин.
3) torch.nn.Conv3d Цей пакет використовуватиметься для застосування тривимірної згортки до вхідного сигналу, що складається з кількох вхідних площин.
4) torch.nn.ConvTranspose1d Цей пакет використовуватиметься для застосування оператора одновимірної транспонованої згортки до вхідного зображення, що складається з кількох вхідних площин.
5) torch.nn.ConvTranspose2d Цей пакет використовуватиметься для застосування оператора двовимірної транспонованої згортки до вхідного зображення, що складається з кількох вхідних площин.
6) torch.nn.ConvTranspose3d Цей пакет використовуватиметься для застосування оператора тривимірної транспонованої згортки до вхідного зображення, що складається з кількох вхідних площин.
7) смолоскип.нн.Розгорнути Він використовується для виділення ковзних локальних блоків із пакетного вхідного тензора.
8) факел.нн.Склад Він використовується для об’єднання масиву ковзних локальних блоків у великий місткий тензор.
4. Об'єднання шарів
1) torch.nn.MaxPool1d Він використовується для застосування 1D максимального об’єднання до вхідного сигналу, що складається з кількох вхідних площин.
2) torch.nn.MaxPool2d Він використовується для застосування 2D максимального об’єднання до вхідного сигналу, що складається з кількох вхідних площин.
3) torch.nn.MaxPool3d Він використовується для застосування максимального об’єднання 3D до вхідного сигналу, що складається з кількох вхідних площин.
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 Він використовується для застосування тривимірного усередненого об’єднання до вхідного сигналу, що складається з кількох вхідних площин.
10) torch.nn.FractionalMaxPool2d Він використовується для застосування двовимірного дробового максимального об’єднання до вхідного сигналу, що складається з кількох вхідних площин.
11) torch.nn.LPPool1d Він використовується для застосування одновимірного об’єднання середньої потужності до вхідного сигналу, що складається з кількох вхідних площин.
12) torch.nn.LPPool2d Він використовується для застосування двовимірного об’єднання середньої потужності до вхідного сигналу, що складається з кількох вхідних площин.
13) torch.nn.AdavtiveMaxPool1d Він використовується для застосування одновимірного адаптивного максимального об’єднання до вхідного сигналу, що складається з кількох вхідних площин.
14) torch.nn.AdavtiveMaxPool2d Він використовується для застосування двовимірного адаптивного максимального об’єднання до вхідного сигналу, що складається з кількох вхідних площин.
15) torch.nn.AdavtiveMaxPool3d Він використовується для застосування тривимірного адаптивного максимального об’єднання до вхідного сигналу, що складається з кількох вхідних площин.
16) torch.nn.AdavtiveAvgPool1d Він використовується для застосування одновимірного адаптивного середнього об’єднання до вхідного сигналу, що складається з кількох вхідних площин.
17) torch.nn.AdavtiveAvgPool2d Він використовується для застосування двовимірного адаптивного середнього об’єднання до вхідного сигналу, що складається з кількох вхідних площин.
18) torch.nn.AdavtiveAvgPool3d Він використовується для застосування тривимірного адаптивного середнього об’єднання до вхідного сигналу, що складається з кількох вхідних площин.
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) факел.нн.ЕЛУ Він використовуватиметься для застосування поелементної функції:
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) смолоскип.нн.БагатоголоваУвага Він використовується, щоб дозволити моделі звертати увагу на інформацію з різних підпросторів представлення
6) факел.нн.ПРеЛУ Він використовуватиметься для застосування поелементної функції:
PReLU(x)=max(0,x)+a*min(0,x)
7) факел.нн.РеЛУ Він використовуватиметься для застосування функції випрямленої лінійної одиниці поелементно:
ReLU(x)=max(0,x)
8) факел.нн.РеЛУ6 Він використовуватиметься для застосування поелементної функції:
ReLU6(x)=min(max(0,x),6)
9) факел.нн.РРеЛУ Він використовуватиметься для застосування рандомізованої випрямленої лінійної одиничної функції, поелементно, як описано в статті:
torch.nn у PyTorch
10) факел.нн.СЕЛУ Він використовуватиметься для застосування поелементної функції як:
SELU(x)=scale*(max(0,x)+ min(0,a*(exp(x)-1)))

Тут α= 1,6732632423543772848170429916717 і масштаб = 1,0507009873554804934193349852946.
11) факел.нн.ЦІЛЬ Він використовуватиметься для застосування поелементної функції як:
torch.nn у PyTorch
12) смолоскип.nn.Сигмовидна Він використовуватиметься для застосування поелементної функції як:
torch.nn у PyTorch
13) факел.nn.Softplus Він використовуватиметься для застосування поелементної функції як:
torch.nn у PyTorch
14) факел.нн.Мягкоусадочний Він використовуватиметься для застосування функції м’якого усадки поелементно, як:
torch.nn у PyTorch
15) факел.nn.Softsign Він використовуватиметься для застосування поелементної функції як:
torch.nn у PyTorch
16) смолоскип.nn.Tanh Він використовуватиметься для застосування поелементної функції як:
torch.nn у PyTorch
17) смолоскип.nn.Tanhshrink Він використовуватиметься для застосування поелементної функції як:
Tanhshrink(x)=x-Tanh(x)
18) факел.нн.Поріг Він використовуватиме порогові значення для кожного елемента вхідного тензора. Поріг визначається як:
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) факел.нн.РНН Він використовується для застосування багаторівневої RNN Елмана з нелінійністю tanh або ReLU до вхідної послідовності. Кожен рівень обчислює таку функцію для кожного елемента вхідної послідовності:
чt=tanh(Wїххtїх+Wччtt-1чч)
2) факел.нн.ЛСТМ Він використовується для застосування RNN багаторівневої довгострокової пам’яті (LSTM) до вхідної послідовності. Кожен рівень обчислює таку функцію для кожного елемента вхідної послідовності:
torch.nn у PyTorch
3) факел.нн.ГРУ Він використовується для застосування багаторівневої стробованої рекурентної одиниці (GRU) RNN до вхідної послідовності. Кожен рівень обчислює таку функцію для кожного елемента вхідної послідовності:
torch.nn у PyTorch
4) факел.nn.RNNCell Він використовується для застосування комірки Елмана RNN з нелінійністю tanh або ReLU до вхідної послідовності. Кожен рівень обчислює таку функцію для кожного елемента вхідної послідовності:
h'=tanh(Wїхx+bїх+Wччh+bчч)
ReLU використовується замість tanh
5) torch.nn.LSTMCell Він використовується для застосування комірки довгострокової пам’яті (LSTM) до вхідної послідовності. Кожен рівень обчислює таку функцію для кожного елемента вхідної послідовності:
torch.nn у PyTorch
Де σ – сигмоїдна функція, а * – добуток Адамара.
6) torch.nn.GRUCell Він використовується для застосування комірки зі стробованим рекурентним блоком (GRU) до вхідної послідовності. Кожен рівень обчислює таку функцію для кожного елемента вхідної послідовності:
torch.nn у PyTorch
10. Лінійні шари
1) факел.нн.Ідентичність Це оператор ідентичності заповнювача, який не чутливий до аргументів.
2) факел.нн.Лінійний Він використовується для застосування лінійного перетворення до вхідних даних:
y=xAТ
3) факел.нн.Білінійний Він використовується для застосування білінійного перетворення до вхідних даних:
y=x1сокира2
одинадцять. Випадаючі шари
1) факел.нн.Випадання Використовується для регулярізації та запобігання коадаптації нейронів. Фактор 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) факел.нн.Вбудовування Він використовується для зберігання вбудованих слів і отримання їх за допомогою індексів. Входом для модуля є список індексів, а виходом – відповідне вбудовування слів.
2) torch.nn.EmbeddingBag Він використовується для обчислення сум або середнього значення «мішків» вбудовування без створення екземпляра проміжного вбудовування.
13. Функція відстані
1) факел.nn.КосинусПодібність Він поверне косинусну подібність між x1 і x2, обчислену вздовж dim.
torch.nn у PyTorch
2) факел.нн.Попарнавідстань Він обчислює групову попарну відстань між векторами v1, v2 за допомогою p-норми:
torch.nn у PyTorch
14. Функція втрат
1) факел.nn.L1Loss Він використовується для критерію, який вимірює середню абсолютну похибку між кожним елементом у вхідному значенні x і цілі y. Незменшені втрати можна описати так:
l(x,y)=L={l1,...,лп},lп=|xпп|,
Де N — розмір партії.
2) факел.nn.MSELloss Він використовується для критерію, який вимірює середню квадратичну помилку між кожним елементом у вхідних даних 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 обчислюють втрати між безперервним часовим рядом і цільовою послідовністю.
5) факел.нн.НЛЛлосс Втрата негативної логарифмічної ймовірності використовується для навчання проблеми класифікації з класами C.
6) факел.nn.PoissonNLLLoss Негативні втрати логарифмічної ймовірності з розподілом Пуассона t
target~Poisson(input)loss(input,target)=input-target*log(target!)the 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 Він поєднує в собі шар Sigmoid і BCELoss в одному класі. Ми можемо скористатися трюком log-sum-exp для чисельної стабільності, об’єднавши операцію в один шар.
10) torch.nn.MarginRankingLoss Він створює критерій, який вимірює втрату заданих вхідних даних x1, x2, двох одновимірних міні-пакетних тензорів і одновимірного міні-пакетного тензора y з міткою, які містять 1 або -1. Функція втрат для кожного зразка в міні-серії виглядає наступним чином:
втрата(x,y)=max(0,-y*(x1-x2)+маржа
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 в іншому випадку. Це також відоме як втрата Губера:
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(ai,сторi)-d(aii)+маржа,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 Він використовується для застосування двовимірної білінійної дискретизації до вхідного сигналу, який складається з кількох вхідних каналів.
16. Паралельні рівні даних (багато графічних процесорів, розподілений)
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) факел.нн.норма_ваги Він використовується для застосування нормалізації ваги до параметра в заданому модулі.
6) факел.нн.зняти_норма_ваги Він використовується для видалення нормалізації ваги та повторної параметризації з модуля.
7) факел.нн.спектральна_норма Він використовується для застосування спектральної нормалізації до параметра в заданому модулі.
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