Spec-Zone.ru › PyTorch 2.14

torch.autograd.functional.hessian

torch.autograd.functional.hessian(func, inputs, create_graph=False, strict=False, vectorize=False, outer_jacobian_strategy='reverse-mode') [source]

Вычисляет матрицу Гессе заданной скалярной функции.

Параметры:
  • func (function) – функция Python, принимающая на вход тензоры и возвращающая тензор с одним элементом.
  • inputs (tuple of Tensors or Tensor) – входные данные функции func.
  • create_graph (bool, optional) – Если True, матрица Гессе будет вычислена дифференцируемым способом. Обратите внимание: если strict равно False, результат может не требовать вычисления градиентов или быть не связанным с входными данными. По умолчанию — False.
  • strict (bool, optional) – Если True, будет вызвана ошибка, если мы обнаружим входные данные, от которых не зависят все выходные данные. Если False, для таких входных данных в качестве матрицы Гессе возвращается тензор из нулей — ожидаемое математическое значение. По умолчанию — False.
  • vectorize (bool, optional) – Эта возможность является экспериментальной. Если вам нужен менее экспериментальный и более производительный вариант, рассмотрите возможность использования torch.func.hessian(). При вычислении матрицы Гессе обычно мы вызываем autograd.grad один раз для каждой строки матрицы. Если этот флаг установлен в True, для векторизации вызовов autograd.grad в качестве бэкенда используется прототипная функция vmap, поэтому вызов выполняется только один раз, а не по одному разу для каждой строки. Во многих случаях это должно повысить производительность, однако из-за незавершённости этой функции возможны резкие падения производительности. Используйте torch._C._debug_only_display_vmap_fallback_warnings(True) для отображения предупреждений о производительности и сообщайте нам о проблемах, если такие предупреждения возникают в вашем случае. По умолчанию — False.
  • outer_jacobian_strategy (str, optional) – Матрица Гессе вычисляется путём вычисления якобиана якобиана. Внутренний якобиан всегда вычисляется в обратном режиме автоматического дифференцирования. Выбор стратегии "forward-mode" или "reverse-mode" определяет, будет ли внешний якобиан вычисляться в прямом или обратном режиме автоматического дифференцирования. В настоящее время вычисление внешнего якобиана в режиме "forward-mode" требует vectorized=True. По умолчанию — "reverse-mode".
Возвращает:

Если входные данные представлены одним элементом, возвращается один тензор, содержащий матрицу Гессе для этих входных данных. Если это кортеж, матрица Гессе будет представлена кортежем кортежей, где Hessian[i][j] будет содержать матрицу Гессе для i-го и j-го входных данных, размер которой равен сумме размеров i-го и j-го входных данных. Hessian[i][j] будет иметь тот же тип данных и устройство, что и соответствующий i-й входной тензор.

Тип возвращаемого значения:

Матрица Гессе (Tensor или кортеж tuple из тензоров)

Пример

>>> def pow_reducer(x):
...     return x.pow(3).sum()
>>> inputs = torch.rand(2, 2)
>>> hessian(pow_reducer, inputs)
tensor([[[[5.2265, 0.0000],
          [0.0000, 0.0000]],
         [[0.0000, 4.8221],
          [0.0000, 0.0000]]],
        [[[0.0000, 0.0000],
          [1.9456, 0.0000]],
         [[0.0000, 0.0000],
          [0.0000, 3.2550]]]])
>>> hessian(pow_reducer, inputs, create_graph=True)
tensor([[[[5.2265, 0.0000],
          [0.0000, 0.0000]],
         [[0.0000, 4.8221],
          [0.0000, 0.0000]]],
        [[[0.0000, 0.0000],
          [1.9456, 0.0000]],
         [[0.0000, 0.0000],
          [0.0000, 3.2550]]]], grad_fn=<ViewBackward>)
>>> def pow_adder_reducer(x, y):
...     return (2 * x.pow(2) + 3 * y.pow(2)).sum()
>>> inputs = (torch.rand(2), torch.rand(2))
>>> hessian(pow_adder_reducer, inputs)
((tensor([[4., 0.],
          [0., 4.]]),
  tensor([[0., 0.],
          [0., 0.]])),
 (tensor([[0., 0.],
          [0., 0.]]),
  tensor([[6., 0.],
          [0., 6.]])))

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.autograd.functional.hessian.html

Spec-Zone.ru

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