torch.autograd.grad
-
torch.autograd.grad(outputs, inputs, grad_outputs=None, retain_graph=None, create_graph=False, only_inputs=True, allow_unused=None, is_grads_batched=False, materialize_grads=False)[source] -
Вычисляет и возвращает сумму градиентов выходов по отношению к входным данным.
grad_outputsдолжно быть последовательностью длиной, соответствующейoutput, содержащей «вектор» в векторно-якобианном произведении, обычно предварительно вычисленные градиенты по отношению к каждому из выходов. Если выход не требует_grad, то градиент может бытьNone).Примечание
Если вы выполняете какие-либо операции прямого прохода, создаёте
grad_outputs, и/или вызываетеgradв контексте потока CUDA, заданном пользователем, см. Семантика потоков обратного прохода.Примечание
Аргумент
only_inputsустарел и теперь игнорируется (по умолчаниюTrue). Для накопления градиента для других частей графа используйтеtorch.autograd.backward.- Параметры
-
- outputs (последовательность из Тензор) – выходы дифференцируемой функции.
-
inputs (последовательность из Тензор) – Входные данные по отношению к которым будет возвращён градиент (а не накапливается в
.grad). - grad_outputs (последовательность из Тензор) – «Вектор» в векторно-якобианном произведении. Обычно градиенты по отношению к каждому выходу. Значения None могут быть указаны для скалярных тензоров или тензоров, которые не требуют градиента. Если значение None было бы приемлемым для всех grad_tensors, то этот аргумент является необязательным. По умолчанию: None.
-
retain_graph (bool, необязательно) – Если
False, граф, используемый для вычисления grad, будет освобождён. Обратите внимание, что почти во всех случаях установка этого параметра вTrueне требуется и часто может быть обойдена гораздо более эффективным способом. По умолчанию принимает значениеcreate_graph. -
create_graph (bool, необязательно) – Если
True, будет построен граф производной, что позволит вычислить производные высших порядков. По умолчанию:False. -
allow_unused (необязательно[bool], необязательно) – Если
False, указание входов, которые не использовались при вычислении выходов (а следовательно, их grad всегда равен нулю), является ошибкой. По умолчанию принимает значениеmaterialize_grads. -
is_grads_batched (bool, необязательно) – Если
True, первое измерение каждого тензора вgrad_outputsбудет интерпретироваться как размерность пакета. Вместо вычисления одного векторно-якобианного произведения, мы вычисляем пакет векторно-якобианных произведений для каждого «вектора» в пакете. Мы используем прототип функции vmap в качестве бэкэнда для векторизации вызовов двигателя автоградиента, чтобы это вычисление можно было выполнить в одном вызове. Это должно привести к улучшению производительности по сравнению с ручным циклом и многократным выполнением обратного прохода. Обратите внимание, что из-за экспериментального характера этой функции могут быть скачки производительности. Пожалуйста, используйтеtorch._C._debug_only_display_vmap_fallback_warnings(True)для отображения любых предупреждений о производительности и отправьте вопрос на github, если предупреждения существуют для вашего случая использования. По умолчаниюFalse. -
materialize_grads (bool, необязательно) – Если
True, установите градиент для неиспользуемых входов в ноль вместо None. Это полезно при вычислении производных высших порядков. Еслиmaterialize_gradsравноTrueиallow_unusedравноFalse, будет выброшено исключение. По умолчаниюFalse.
- Тип возвращаемого значения
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.autograd.grad.html