torch.autograd.backward
-
torch.autograd.backward(tensors, grad_tensors=None, retain_graph=None, create_graph=False, grad_variables=None, inputs=None)[исходный код] -
Вычисляет сумму градиентов заданных тензоров относительно листьев графа.
Граф дифференцируется с использованием цепного правила. Если какие-либо из
tensorsне являются скалярами (то есть их данные содержат более одного элемента) и требуют вычисления градиента, будет вычислено произведение якобиана на вектор; в этом случае функция также требует указатьgrad_tensors. Это должна быть последовательность соответствующей длины, содержащая «вектор» в произведении якобиана на вектор, обычно градиент дифференцируемой функции относительно соответствующих тензоров (None— допустимое значение для всех тензоров, которым не требуются градиенты).Эта функция накапливает градиенты в листьях — возможно, перед вызовом функции потребуется обнулить атрибуты
.gradили присвоить им значениеNone. Подробную информацию о размещении накопленных градиентов в памяти см. в разделе Стандартные размещения градиентов.Примечание
Использование этого метода с
create_graph=Trueсоздаст цикл ссылок между параметром и его градиентом, что может привести к утечке памяти. Чтобы избежать этого, рекомендуем при создании графа использоватьautograd.grad. Если вам необходимо использовать эту функцию, обязательно сбросьте поля.gradпараметров в значениеNoneпосле использования, чтобы разорвать цикл и избежать утечки.Примечание
Если вы выполняете какие-либо операции прямого прохода, создаёте
grad_tensorsи/или вызываетеbackwardв контексте пользовательского потока CUDA, см. раздел Семантика потоков при обратном проходе.Примечание
Если заданы
inputsи заданный вход не является листом, текущая реализация вызовет его grad_fn (хотя для получения этих градиентов это строго не требуется). Это деталь реализации, на которую не следует полагаться. Подробнее см. pytorch/pytorch#60521.- Параметры:
-
- tensors (Sequence[Tensor] or Tensor or Sequence[GradientEdge] or GradientEdge) – Тензоры, производная которых будет вычислена.
- grad_tensors (Sequence[Tensor or None] or Tensor, необязательно) – «Вектор» в произведении якобиана на вектор, обычно градиенты относительно каждого элемента соответствующих тензоров. Для скалярных тензоров или тензоров, не требующих градиента, можно указать значения None. Если значение None допустимо для всех grad_tensors, этот аргумент необязателен.
-
retain_graph (bool, необязательно) – Если
False, граф, использованный для вычисления градиента, будет освобождён. Обратите внимание, что почти во всех случаях устанавливать этот параметр вTrueне требуется, а часто этой необходимости можно избежать гораздо более эффективным способом. По умолчанию используется значениеcreate_graph. -
create_graph (bool, необязательно) – Если
True, будет построен граф производной, что позволит вычислять произведения производных более высокого порядка. По умолчанию используется значениеFalse. -
inputs (Sequence[Tensor] or Tensor or Sequence[GradientEdge] or dict[str, Tensor], необязательно) – Входные данные, относительно которых градиент будет накапливаться в
.grad. Все остальные тензоры будут игнорироваться. Если аргумент не задан, градиент накапливается во всех листовых тензорах, использованных для вычисленияtensors. Также принимается словарь тензоров (например,dict(model.named_parameters())); в этом случае его значения используются как входные тензоры.
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.autograd.backward.html