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 | Він використовуватиметься для застосування функції жорсткого скорочення поелементно: | |
3) факел.nn.LeakyReLU | Він використовуватиметься для застосування поелементної функції: LeakyReLu(x)=max(0,x) +негативний_нахил*мін(0,x) | |
4) torch.nn.LogSigmoid | Він використовуватиметься для застосування поелементної функції: | |
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) факел.нн.РРеЛУ | Він використовуватиметься для застосування рандомізованої випрямленої лінійної одиничної функції, поелементно, як описано в статті: | |
10) факел.нн.СЕЛУ | Він використовуватиметься для застосування поелементної функції як: SELU(x)=scale*(max(0,x)+ min(0,a*(exp(x)-1))) Тут α= 1,6732632423543772848170429916717 і масштаб = 1,0507009873554804934193349852946. | |
11) факел.нн.ЦІЛЬ | Він використовуватиметься для застосування поелементної функції як: | |
12) смолоскип.nn.Сигмовидна | Він використовуватиметься для застосування поелементної функції як: | |
13) факел.nn.Softplus | Він використовуватиметься для застосування поелементної функції як: | |
14) факел.нн.Мягкоусадочний | Він використовуватиметься для застосування функції м’якого усадки поелементно, як: | |
15) факел.nn.Softsign | Він використовуватиметься для застосування поелементної функції як: | |
16) смолоскип.nn.Tanh | Він використовуватиметься для застосування поелементної функції як: | |
17) смолоскип.nn.Tanhshrink | Він використовуватиметься для застосування поелементної функції як: Tanhshrink(x)=x-Tanh(x) | |
18) факел.нн.Поріг | Він використовуватиме порогові значення для кожного елемента вхідного тензора. Поріг визначається як: | |
7. | Нелінійні активації (інше) | |
1) факел.nn.Softmin | Він використовується для застосування функції softmin до n-вимірного вхідного тензора для їх масштабування. Після цього елементи n-вимірного вихідного тензора знаходяться в діапазоні 0, 1 і сумі до 1. Softmin визначається як: | |
2) факел.nn.Softmax | Він використовується для застосування функції softmax до n-вимірного вхідного тензора для їх масштабування. Після цього елементи n-вимірного вихідного тензора знаходяться в діапазоні 0, 1 і сумі до 1. Softmax визначається як: | |
3) torch.nn.Softmax2d | Він використовується для застосування SoftMax над функціями до кожного просторового розташування. | |
4) torch.nn.LogSoftmax | Він використовується для застосування функції LogSoftmax до n-вимірного вхідного тензора. Функцію LofSoftmax можна визначити як: | |
5) torch.nn.AdaptiveLogSoftmaxWithLoss | Це стратегія для навчання моделей із великими вихідними просторами. Це дуже ефективно, коли розподіл етикеток дуже незбалансований | |
8. | Шари нормалізації | |
1) torch.nn.BatchNorm1d | Він використовується для застосування пакетної нормалізації до 2D або 3D входів. | |
2) torch.nn.BatchNorm2d | Він використовується для застосування пакетної нормалізації до 4D. | |
3) torch.nn.BatchNorm3d | Він використовується для застосування пакетної нормалізації до 5D-вхідних даних. | |
4) torch.nn.GroupNorm | Він використовується для застосування групової нормалізації до міні-пакета вхідних даних. | |
5) torch.nn.SyncBatchNorm | Він використовується для застосування пакетної нормалізації до n-вимірних вхідних даних. | |
6) torch.nn.InstanceNorm1d | Він використовується для застосування нормалізації екземпляра до 3D-введення. | |
7) torch.nn.InstanceNorm2d | Він використовується для застосування нормалізації екземпляра до 4D-введення. | |
8) torch.nn.InstanceNorm3d | Він використовується для застосування нормалізації екземпляра до вхідних даних 5D. | |
9) torch.nn.LayerNorm | Він використовується для застосування нормалізації шару до міні-пакета вхідних даних. | |
10) torch.nn.LocalResponseNorm | Він використовується для застосування локальної нормалізації відгуку до вхідного сигналу, який складається з кількох вхідних площин, де канал займає другий вимір. | |
9. | Повторювані шари | |
1) факел.нн.РНН | Він використовується для застосування багаторівневої RNN Елмана з нелінійністю tanh або ReLU до вхідної послідовності. Кожен рівень обчислює таку функцію для кожного елемента вхідної послідовності: чt=tanh(Wїххt+бїх+Wччtt-1+бчч) | |
2) факел.нн.ЛСТМ | Він використовується для застосування RNN багаторівневої довгострокової пам’яті (LSTM) до вхідної послідовності. Кожен рівень обчислює таку функцію для кожного елемента вхідної послідовності: | |
3) факел.нн.ГРУ | Він використовується для застосування багаторівневої стробованої рекурентної одиниці (GRU) RNN до вхідної послідовності. Кожен рівень обчислює таку функцію для кожного елемента вхідної послідовності: | |
4) факел.nn.RNNCell | Він використовується для застосування комірки Елмана RNN з нелінійністю tanh або ReLU до вхідної послідовності. Кожен рівень обчислює таку функцію для кожного елемента вхідної послідовності: h'=tanh(Wїхx+bїх+Wччh+bчч) ReLU використовується замість tanh | |
5) torch.nn.LSTMCell | Він використовується для застосування комірки довгострокової пам’яті (LSTM) до вхідної послідовності. Кожен рівень обчислює таку функцію для кожного елемента вхідної послідовності: Де σ – сигмоїдна функція, а * – добуток Адамара. | |
6) torch.nn.GRUCell | Він використовується для застосування комірки зі стробованим рекурентним блоком (GRU) до вхідної послідовності. Кожен рівень обчислює таку функцію для кожного елемента вхідної послідовності: | |
10. | Лінійні шари | |
1) факел.нн.Ідентичність | Це оператор ідентичності заповнювача, який не чутливий до аргументів. | |
2) факел.нн.Лінійний | Він використовується для застосування лінійного перетворення до вхідних даних: y=xAТ+б | |
3) факел.нн.Білінійний | Він використовується для застосування білінійного перетворення до вхідних даних: y=x1сокира2+б | |
одинадцять. | Випадаючі шари | |
1) факел.нн.Випадання | Використовується для регулярізації та запобігання коадаптації нейронів. Фактор під час навчання масштабує вихід. Це означає, що під час оцінювання модуль обчислює функцію ідентифікації. | |
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. | |
2) факел.нн.Попарнавідстань | Він обчислює групову попарну відстань між векторами v1, v2 за допомогою p-норми: | |
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. Він використовується для визначення того, чи є два входи подібними чи несхожими. Функція втрат визначається як: | |
12) torch.nn.MultiLabelMarginLoss | Він використовується для створення критерію, який оптимізує шарнірні втрати мультикласової мультикласифікації між входом x і виходом y. | |
13) torch.nn.SmoothL1Loss | Він використовується для створення критерію, який використовує квадратний термін, якщо абсолютна поелементна похибка падає нижче 1, і член L1 в іншому випадку. Це також відоме як втрата Губера: | |
14) torch.nn.SoftMarginLoss | Він використовується для створення критерію, який оптимізує логістичні втрати двокласової класифікації між вхідним тензором x і цільовим тензором y, які містять 1 або -1. | |
15) torch.nn.MultiLabelSoftMarginLoss | Він використовується для створення критерію, який оптимізує втрату з кількома мітками «один проти всіх» на основі максимальної ентропії між вхідним значенням x і цільовим розміром y (N, C). | |
16) torch.nn.CosineEmbeddingLoss | Він використовується для створення критерію, який вимірює втрати заданих вхідних тензорів x1, x2 і мітки тензора y зі значеннями 1 або -1. Він використовується для визначення того, чи є два вхідні дані подібними чи несхожими, використовуючи косинусну відстань. | |
17) torch.nn.MultiMarginLoss | Він використовується для створення критерію, який оптимізує шарнірні втрати мультикласової класифікації між входом x і виходом y. | |
18) torch.nn.TripletMarginLoss | Він використовується для створення критерію, який вимірює триплетні втрати заданих вхідних тензорів x1, x2, x3 і запасу зі значенням, більшим за 0. Він використовується для вимірювання відносної подібності між зразками. Триплет складається з якоря, позитивного прикладу та негативного прикладу. L(a,p,n)=max{d(ai,сторi)-d(ai,нi)+маржа,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