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