Класс Tensor
Класс Tensor является основным строительным блоком в PyTorch.
Он представляет собой многомерную матрицу, содержащую элементы
одного типа данных (dtype). Тензоры можно создавать различными
способами: из списков, массивов NumPy или с помощью фабричных
функций, таких как zeros и ones.
Ключевой особенностью является поддержка автоматического
дифференцирования (autograd), что делает их идеальными для
обучения нейронных сетей.
При создании тензора можно указать тип данных (dtype), устройство
(device) и флаг requires_grad для отслеживания операций
вычисления градиента. Тензоры поддерживают множество математических
операций, индексацию, срезы и изменение формы.
Синтаксис
# Создание из данных
torch.tensor(data, dtype=None, device=None, requires_grad=False)
Основные атрибуты
Каждый тензор имеет несколько важных атрибутов, которые определяют его свойства:
import torch
t = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Форма тензора
print(t.shape)
# Тип данных
print(t.dtype)
# Устройство (CPU или GPU)
print(t.device)
# Количество измерений
print(t.ndim)
# Общее количество элементов
print(t.numel())
Результат выполнения кода:
torch.Size([2, 3])
torch.int64
device(type='cpu')
2
6
Создание тензора из списка
Самый простой способ создать тензор - передать список
в функцию torch.tensor:
import torch
# Одномерный тензор
t1 = torch.tensor([1, 2, 3, 4, 5])
print(t1)
# Двумерный тензор
t2 = torch.tensor([[1, 2, 3], [4, 5, 6]])
print(t2)
Результат выполнения кода:
tensor([1, 2, 3, 4, 5])
tensor([
[1, 2, 3],
[4, 5, 6],
])
Указание типа данных
Тип данных элементов задается параметром dtype.
Например, создадим тензор с типом float32:
import torch
t = torch.tensor([1, 2, 3, 4, 5], dtype=torch.float32)
print(t)
print(t.dtype)
Результат выполнения кода:
tensor([1., 2., 3., 4., 5.])
torch.float32
Создание с отслеживанием градиента
Параметр requires_grad включает автоматическое
дифференцирование для тензора:
import torch
t = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
print(t)
print(t.requires_grad)
Результат выполнения кода:
tensor([1., 2., 3.], requires_grad=True)
True
Размещение на устройстве
Тензор можно разместить на GPU с помощью параметра device.
Для примера создадим тензор на CPU (стандартное поведение):
import torch
t = torch.tensor([1, 2, 3], device='cpu')
print(t.device)
Результат выполнения кода:
device(type='cpu')
Пример с тензорами разных типов
Создадим тензоры с различными типами данных и выведем их свойства:
import torch
t_int = torch.tensor([1, 2, 3], dtype=torch.int32)
t_float = torch.tensor([1.5, 2.5, 3.5], dtype=torch.float64)
print(t_int.dtype)
print(t_float.dtype)
Результат выполнения кода:
torch.int32
torch.float64