Spec-Zone.ru › PyTorch 2.14

torch.autograd.grad

torch.autograd.grad(outputs: _TensorOrTensorsOrGradEdge, inputs: _TensorOrTensorsOrGradEdge, grad_outputs: Tensor | Sequence[Tensor | None] | None = None, retain_graph: bool | None = None, create_graph: bool = False, only_inputs: bool = True, allow_unused: bool | None = None, is_grads_batched: bool = False, materialize_grads: bool = False) → tuple[Tensor, ...] [исходный код]
torch.autograd.grad(outputs:_TensorOrTensorsOrGradEdge, inputs:dict[str,Tensor], grad_outputs:Tensor|Sequence[Tensor|None]|None=None, retain_graph:bool|None=None, create_graph:bool=False, only_inputs:bool=True, allow_unused:bool|None=None, is_grads_batched:bool=False, materialize_grads:bool=False) → dict[str,Tensor]

Вычисляет и возвращает сумму градиентов выходных данных относительно входных данных.

grad_outputs должен быть последовательностью длины, соответствующей output, и содержать «вектор» в произведении вектор-Якобиан, обычно предварительно вычисленные градиенты относительно каждого выходного значения. Если для выходного значения не требуется вычисление градиента, градиент может быть None).

Примечание

Если вы выполняете какие-либо прямые операции, создаете grad_outputs и/или вызываете grad в контексте пользовательского потока CUDA, см. раздел Семантика потоков при обратном проходе.

Примечание

Аргумент only_inputs устарел и теперь игнорируется (по умолчанию используется True). Чтобы накапливать градиенты для других частей графа, используйте torch.autograd.backward.

Параметры:
  • outputs (последовательность значений типа Tensor или GradientEdge) – выходные данные дифференцируемой функции.
  • inputs (последовательность значений типа Tensor или GradientEdge или dict[str, Tensor]) – входные данные, относительно которых будут возвращены градиенты (без накопления в .grad). Если передан словарь (например, dict(model.named_parameters())), результат возвращается в виде словаря с соответствующими ключами.
  • grad_outputs (последовательность значений типа [Tensor или None] или Tensor, необязательный) – «вектор» в произведении вектор-Якобиан. Обычно это градиенты относительно каждого выходного значения. Значения None можно указывать для скалярных тензоров или тензоров, для которых не требуется вычисление градиента. Если для всех grad_tensors допустимо значение None, этот аргумент необязателен. По умолчанию: None.
  • retain_graph (bool, необязательный) – Если False, граф, используемый для вычисления градиента, будет освобожден. Обратите внимание, что почти во всех случаях устанавливать этот параметр в True не требуется, и часто этого можно добиться обходным путем, который будет гораздо эффективнее. По умолчанию используется значение create_graph.
  • create_graph (bool, необязательный) – Если True, будет построен граф производной, что позволит вычислять произведения производных более высоких порядков. По умолчанию: False.
  • allow_unused (Optional[bool], необязательный) – Если False, указание входных данных, которые не использовались при вычислении выходных данных (и поэтому их градиент всегда равен нулю), считается ошибкой. По умолчанию используется значение materialize_grads.
  • is_grads_batched (bool, необязательный) – Если True, первое измерение каждого тензора в grad_outputs будет интерпретироваться как измерение пакета. Вместо вычисления одного произведения вектор-Якобиан вычисляется пакет таких произведений для каждого «вектора» в пакете. В качестве бэкенда для векторизации вызовов движка autograd используется прототипная функция vmap, чтобы это вычисление можно было выполнить за один вызов. Это должно повысить производительность по сравнению с ручным циклом, в котором обратный проход выполняется несколько раз. Обратите внимание, что из-за экспериментального характера этой функции возможны резкие перепады производительности. Используйте torch._C._debug_only_display_vmap_fallback_warnings(True) для отображения предупреждений о производительности и создайте issue на GitHub, если такие предупреждения появляются в вашем случае использования. По умолчанию: False.
  • materialize_grads (bool, необязательный) – Если True, градиент для неиспользуемых входных данных устанавливается равным нулю вместо None. Это полезно при вычислении производных более высоких порядков. Если materialize_grads равно True, а allow_unused равно False, будет вызвана ошибка. По умолчанию: False.

© 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.grad.html

Spec-Zone.ru

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