Spec-Zone.ru › PyTorch 1

torch.autograd.functional.hessian

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

Функция, которая вычисляет гессиан заданной скалярной функции.

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

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

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

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

Пример

>>> 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.]])))

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

Spec-Zone.ru

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