Тензоры не представляют собой чего-либо особенного, просто являясь многомерными массивами. Тензоры PyTorch (Tensors) похожи на массивы пакета NumPy, но дополнительно могут обрабатываться на видеоускорителях. PyTorch поддерживает различные типы тензоров.[15]
Модули
Модуль Autograd
PyTorch использует метод автоматической дифференциации. Производится запись вычислений, произведенных в прямом направлении, затем производится воспроизведение в обратном порядке для вычисления градиентов (backpropagation). Этот метод особенно полезен при построении нейронных сетей, так как позволяет рассчитывать дифференциальные поправки параметров одновременно с прямым проходом.
Модуль Optim
torch.optim — модуль, реализующий несколько алгоритмов оптимизации, используемых при построении нейронных сетей. Реализовано большинство наиболее часто используемых методов.
Модуль nn
Модуль PyTorch autograd позволяет легко определять вычислительные графы и работать с градиентами, однако может быть слишком низкоуровневой для определения сложных нейронных сетей. Более высокоуровневой абстракцией для таких применений является модуль nn.
Пример
Следующий код демонстрирует функциональность библиотеки на простом примере:[16][17]
importtorchdtype=torch.floatdevice=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 numbersa=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 numbersb=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)
↑Mannes, John. "Facebook and Microsoft collaborate to simplify conversions from PyTorch to Caffe2". TechCrunch (англ.). Архивировано 6 июля 2020. Дата обращения: 30 сентября 2018. FAIR is accustomed to working with PyTorch — a deep learning framework optimized for achieving state of the art results in research, regardless of resource constraints. Unfortunately in the real world, most of us are limited by the computational capabilities of our smartphones and computers.
Макмахан Б., Рао Д. Знакомство с PyTorch: глубокое обучение при обработке естественного языка = Natural Language Processing with PyTorch. Build Intelligent Language Applications Using Deep Learning. — Питер, 2020. — 256 с. — ISBN 978-5-4461-1241-8.