Spec-Zone.ru › PyTorch 1

torch.autograd.backward

torch.autograd.backward(tensors, grad_tensors=None, retain_graph=None, create_graph=False, grad_variables=None, inputs=None) [source]

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

Граф дифференцируется с использованием правила цепи. Если какие-либо из tensors являются нескалярными (то есть их данные содержат более одного элемента) и требуют градиента, то вычисляется произведение Якобиана и вектора. В этом случае функция дополнительно требует указания grad_tensors. Это должна быть последовательность совпадающей длины, содержащая «вектор» в произведении Якобиана и вектора, обычно градиент дифференцируемой функции по отношению к соответствующим тензорам (None является допустимым значением для всех тензоров, которые не требуют тензоров градиента).

Эта функция накапливает градиенты в узлах – вам может потребоваться обнулить .grad атрибуты или установить их в None перед её вызовом. Подробности о расположении в памяти накапливаемых градиентов см. в Предпочтительные расположения градиентов.

Примечание

Использование этого метода с create_graph=True создаст цикл ссылок между параметром и его градиентом, что может привести к утечке памяти. Рекомендуется использовать autograd.grad при создании графа, чтобы избежать этого. Если вам необходимо использовать эту функцию, убедитесь, что вы сбросите .grad поля ваших параметров на None после использования, чтобы разорвать цикл и предотвратить утечку.

Примечание

Если вы выполняете любые операции forward, создаете grad_tensors, и/или вызываете backward в контексте потока CUDA, заданном пользователем, см. Семантика потоков обратных проходов.

Примечание

Когда inputs предоставлены, и данный вход не является листом, текущая реализация вызовет его grad_fn (хотя для получения этих градиентов это строго не нужно). Это деталь реализации, на которой пользователь не должен полагаться. См. https://github.com/pytorch/pytorch/pull/60521#issuecomment-867061780 для получения дополнительной информации.

Параметры:
  • tensors (Sequence[Tensor] or Tensor) – Тензоры, для которых будет вычисляться производная.
  • grad_tensors (Sequence[Tensor or None] or Tensor, optional) – «Вектор» в произведении Якобиана и вектора, обычно градиенты по отношению к каждому элементу соответствующих тензоров. Значение None может быть указано для скалярных тензоров или тензоров, не требующих градиента. Если значение None было бы приемлемо для всех grad_tensors, то этот аргумент является необязательным.
  • retain_graph (bool, optional) – Если False, граф, используемый для вычисления grad, будет освобожден. Обратите внимание, что в почти всех случаях установка этого параметра в True не требуется и часто может быть обойдена намного более эффективным способом. По умолчанию имеет значение create_graph.
  • create_graph (bool, optional) – Если True, будет построен граф производной, что позволит вычислить производные более высокого порядка. По умолчанию False.
  • inputs (Sequence[Tensor] or Tensor, optional) – Входы, относительно которых градиент будет накапливаться в .grad. Все остальные тензоры будут проигнорированы. Если не указано, градиент накапливается во все листовые тензоры, которые были использованы для вычисления attr::tensors.

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.autograd.backward.html

Spec-Zone.ru

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