Spec-Zone.ru › PyTorch 2

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

Spec-Zone.ru

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