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