Spec-Zone.ru › PyTorch 2.14

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API