Атрибут requires_grad
Атрибут requires_grad класса Tensor в PyTorch определяет,
будет ли тензор отслеживать операции для автоматического дифференцирования.
По умолчанию этот атрибут установлен в False.
Если установить requires_grad=True, то все операции с тензором будут запоминаться,
и впоследствии можно будет вычислить градиенты с помощью метода backward.
Это важно для обучения нейросетей, где нужно обновлять веса модели.
Синтаксис
tensor.requires_grad
Пример
Давайте создадим тензор и проверим значение атрибута requires_grad по умолчанию:
import torch
t = torch.tensor([1, 2, 3, 4, 5])
print(t.requires_grad)
Результат выполнения кода:
False
Пример
Теперь создадим тензор с включенным отслеживанием градиентов:
import torch
t = torch.tensor([1, 2, 3, 4, 5], requires_grad=True)
print(t.requires_grad)
Результат выполнения кода:
True
Пример
В этом примере мы создадим два тензора с включенным отслеживанием градиентов,
выполним сложение и вызовем backward для вычисления производных:
import torch
t1 = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
t2 = torch.tensor([4.0, 5.0, 6.0], requires_grad=True)
res = t1 + t2
res.mean().backward()
print(t1.grad)
print(t2.grad)
Результат выполнения кода:
tensor([0.3333, 0.3333, 0.3333])
tensor([0.3333, 0.3333, 0.3333])
Пример
Можно изменить значение requires_grad у уже существующего тензора с помощью метода requires_grad_:
import torch
t = torch.tensor([1, 2, 3, 4, 5])
print(t.requires_grad)
t.requires_grad_(True)
print(t.requires_grad)
Результат выполнения кода:
False
True
Пример
Если создать тензор с помощью операции над другим тензором,
то атрибут requires_grad наследуется автоматически:
import torch
t = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
res = t * 2
print(res.requires_grad)
Результат выполнения кода:
True
Смотрите также
-
атрибут
grad,
который хранит вычисленный градиент тензора -
метод
backward,
который выполняет обратное распространение градиента -
метод
detach,
который отключает тензор от графа вычислений -
метод
requires_grad_,
который изменяет значение атрибута на месте