Тензоры не представляют собой чего-либо особенного, просто являясь многомерными массивами. Тензоры PyTorch (Tensors) похожи на массивы пакета NumPy, но дополнительно могут обрабатываться на видеоускорителях. PyTorch поддерживает различные типы тензоров.[15]
Модули
Модуль Autograd
PyTorch использует метод автоматической дифференциации. Производится запись вычислений, произведенных в прямом направлении, затем производится воспроизведение в обратном порядке для вычисления градиентов (backpropagation). Этот метод особенно полезен при построении нейронных сетей, так как позволяет рассчитывать дифференциальные поправки параметров одновременно с прямым проходом.
Модуль Optim
torch.optim — модуль, реализующий несколько алгоритмов оптимизации, используемых при построении нейронных сетей. Реализовано большинство наиболее часто используемых методов.
Модуль nn
Модуль PyTorch autograd позволяет легко определять вычислительные графы и работать с градиентами, однако может быть слишком низкоуровневой для определения сложных нейронных сетей. Более высокоуровневой абстракцией для таких применений является модуль nn.
Пример
Следующий код демонстрирует функциональность библиотеки на простом примере:[16][17]
importtorchdtype=torch.floatdevice=torch.device("cpu")# Выполнение всех вычислений на центральном процессоре# device = torch.device("cuda:0") # Выполнение всех вычислений на графическом процессоре# Создание тензора и заполнение тензора случайными числамиa=torch.randn(2,3,device=device,dtype=dtype)print(a)# Вывод тензора A# Вывод: tensor([[-1.1884, 0.8498, -1.7129],# [-0.8816, 0.1944, 0.5847]])# Создание тензора и заполнение тензора случайными числамиb=torch.randn(2,3,device=device,dtype=dtype)print(b)# Вывод тензора B# Вывод: tensor([[ 0.7178, -0.8453, -1.3403],# [ 1.3262, 1.1512, -1.7070]])print(a*b)# Вывод произведения двух тензоров# Вывод: tensor([[-0.8530, -0.7183, 2.58],# [-1.1692, 0.2238, -0.9981]])print(a.sum())# Вывод суммы всех элементов тензора A# Вывод: tensor(-2.1540)print(a[1,2])# Вывод элемента в третьем столбце второй строки# Вывод: tensor(0.5847)print(a.min())# Вывод минимального значения в тензоре A# Вывод: 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.