PyTorch — відкрита бібліотека машинного навчання на основі бібліотеки Torch , що застосовується для задач комп'ютерного бачення та обробки природної мови. Розробляє її переважно група дослідження штучного інтелекту компанії Facebook. Вона є вільним та відкритим програмним забезпеченням, що випускають під ліцензією Modified BSD. І хоча інтерфейс Python є більш відшліфованим, і головним зосередженням розробки, PyTorch також має зовнішній інтерфейс і для C++. Крім того, програмне забезпечення Pyro компанії Uber використовує PyTorch як внутрішній інтерфейс.

PyTorch забезпечує дві високорівневі функціональності:

Тензорні обчислення (як NumPy) із сильним прискоренням через графічні процесори (ГП) Глибокі нейронні мережі, побудовані на системі автоматичного диференціювання на основі плівки

Історія

Facebook використовував як PyTorch, так і Convolutional Architecture for Fast Feature Embedding (Caffe2), але моделі, визначені цими двома системами, були взаємно несумісними. Для перетворювання моделей між системами компаніями Facebook та Microsoft у вересні 2017 року було створено проєкт Open Neural Network Exchange (ONNX). Наприкінці березня 2018 року Caffe2 було влито до PyTorch.

Тензори PyTorch

Тензори, хоч вони й з математики, в програмуванні відрізняються, тут їх можливо розглядати як багатовимірні масиви. Тензори в PyTorch є подібними до масивів NumPy, але ними також можливо оперувати на ГП Nvidia з підтримкою CUDA. PyTorch підтримує різні типи тензорів.

Модулі

Модуль autograd

PyTorch використовує метод, званий автоматичним диференціюванням. Записувач записує, які дії було виконано, а потім програє їх назад, щоби обчислити градієнти. Цей метод є особливо потужним при будуванні нейронних мереж, щоби заощаджувати час на одній епосі, обчислюючи диференціювання параметрів на прямому проході.

Модуль optim

torch.optim — це модуль, що втілює різноманітні алгоритми оптимізації, які використовують для будування нейронних мереж. Більшість широко вживаних методів вже підтримувано, тож потреби будувати їх з нуля немає.

Модуль nn

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

Див. також

Порівняння програмного забезпечення глибокого навчання

Torch Тензор

Примітки

Посилання