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