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