Copy
tensorplay.autograd.functional.hessian
- tensorplay.autograd.functional.hessian(func, inputs, create_graph=False, strict=False, vectorize=False, outer_jacobian_strategy='reverse-mode')[source]
Compute the Hessian of a given scalar function.
- Parameters:
func (function) – a Python function that takes Tensor inputs and returns a Tensor with a single element.
inputs (tuple of Tensors or Tensor) – inputs to the function
func.create_graph (bool, optional) – If
True, the Hessian will be computed in a differentiable manner. Note that whenstrictisFalse, the result can not require gradients or be disconnected from the inputs. Defaults toFalse.strict (bool, optional) – If
True, an error will be raised when we detect that there exists an input such that all the outputs are independent of it. IfFalse, we return a Tensor of zeros as the hessian for said inputs, which is the expected mathematical value. Defaults toFalse.vectorize (bool, optional) – Not supported by this engine yet; passing
TrueraisesNotImplementedError.outer_jacobian_strategy (str, optional) – Only
"reverse-mode"is supported; forward-mode AD raisesNotImplementedError.
- Returns:
if there is a single input, this will be a single Tensor containing the Hessian for the input. If it is a tuple, then the Hessian will be a tuple of tuples where
Hessian[i][j]will contain the Hessian of theith input andjth input with size the sum of the size of theith input plus the size of thejth input.Hessian[i][j]will have the same dtype and device as the correspondingith input.- Return type:
Hessian (Tensor or a tuple of tuple of Tensors)
Example
>>> def pow_reducer(x): ... return x.pow(3).sum() >>> inputs = tensorplay.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]]]])
Help improve this page
Found an error, an unclear step, or a missing example?
tensorplay.autograd.function.once_differentiable
Decorator to make a custom autograd Function’s backward run once, with gradients detached and grad-mode disabled inside.
tensorplay.autograd.functional.hvp
Compute the dot product between the scalar function’s Hessian and a vector v at a specified point.
