Русская Википедия:PyTorch

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Карточка программы PyTorch — фреймворк машинного обучения для языка Python с открытым исходным кодом, созданный на базе Torch[1][2][3]. Используется для решения различных задач: компьютерное зрение, обработка естественного языка.[4] Разрабатывается преимущественно группой искусственного интеллекта Facebook[5][6][7]. Также вокруг этого фреймворка выстроена экосистема[8], состоящая из различных библиотек, разрабатываемых сторонними командами: PyTorch Lightning и Fast.ai[9], упрощающие процесс обучения моделей, Pyro, модуль для Шаблон:Нп5, от Uber[10], Flair[11], для обработки естественного языка и Catalyst[12], для обучения DL и RL моделей.

PyTorch предоставляет две основные высокоуровневые модели:[13]

  • Тензорные вычисления (по аналогии с NumPy) с развитой поддержкой ускорения на GPU
  • Глубокие нейронные сети на базе системы autodiff

Тензоры PyTorch

Тензоры не представляют собой чего-либо особенного, просто являясь многомерными массивами. Тензоры PyTorch (Tensors) похожи на массивы пакета NumPy, но дополнительно могут обрабатываться на видеоускорителях. PyTorch поддерживает различные типы тензоров.[14]

Модули

Модуль Autograd

PyTorch использует метод автоматической дифференциации. Производится запись вычислений, произведенных в прямом направлении, затем производится воспроизведение в обратном порядке для вычисления градиентов (backpropagation). Этот метод особенно полезен при построении нейронных сетей, так как позволяет рассчитывать дифференциальные поправки параметров одновременно с прямым проходом.

Модуль Optim

torch.optim — модуль, реализующий несколько алгоритмов оптимизации, используемых при построении нейронных сетей. Реализовано большинство наиболее часто используемых методов.

Модуль nn

Модуль PyTorch autograd позволяет легко определять вычислительные графы и работать с градиентами, однако может быть слишком низким уровнем для определения сложных нейронных сетей. Более высокоуровневой абстракцией для таких применений является модуль nn.

Пример

Следующий код демонстрирует функциональность библиотеки на простом примере:[15][16]

import torch
dtype = torch.float
device = torch.device("cpu") # This executes all calculations on the CPU
# device = torch.device("cuda:0") # This executes all calculations on the GPU

# Creation of a tensor and filling of a tensor with random numbers
a = torch.randn(2, 3, device=device, dtype=dtype)
print(a) # Output of tensor A
# Output: tensor([[-1.1884,  0.8498, -1.7129],
#                  [-0.8816,  0.1944,  0.5847]])

# Creation of a tensor and filling of a tensor with random numbers
b = torch.randn(2, 3, device=device, dtype=dtype)
print(b) # Output of tensor B
# Output: tensor([[ 0.7178, -0.8453, -1.3403],
#                  [ 1.3262,  1.1512, -1.7070]])

print(a*b) # Output of a multiplication of the two tensors
# Output: tensor([[-0.8530, -0.7183,  2.58],
#                  [-1.1692,  0.2238, -0.9981]])

print(a.sum()) # Output of the sum of all elements in tensor A
# Output: tensor(-2.1540)

print(a[1,2]) # Output of the element in the third column of the second row
# Output: tensor(0.5847)

print(a.min()) # Output of the minimum value in tensor A
# Output: tensor(-1.7129)

См. также

Примечания

Шаблон:Примечания

Литература

Ссылки

Шаблон:Вс Шаблон:Программы глубинного обучения Шаблон:Научное программное обеспечение на Python