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 Тензор
Примітки
Посилання