Spec-Zone.ru › PyTorch 2

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 после использования, чтобы разорвать цикл и избежать утечки.

Примечание

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

Примечание

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

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

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

Spec-Zone.ru

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