161 lines
9.1 KiB
Plaintext
161 lines
9.1 KiB
Plaintext
---
|
||
title: NaturalGradient
|
||
description: API reference for qiskit.opflow.gradients.NaturalGradient
|
||
in_page_toc_min_heading_level: 1
|
||
python_api_type: class
|
||
python_api_name: qiskit.opflow.gradients.NaturalGradient
|
||
---
|
||
|
||
# qiskit.opflow\.gradients.NaturalGradient
|
||
|
||
<Class id="qiskit.opflow.gradients.NaturalGradient" isDedicatedPage={true} github="https://github.com/qiskit/qiskit/tree/stable/0.17/qiskit/opflow/gradients/natural_gradient.py" signature="NaturalGradient(grad_method='lin_comb', qfi_method='lin_comb_full', regularization=None, **kwargs)" modifiers="class">
|
||
Convert an operator expression to the first-order gradient.
|
||
|
||
Given an ill-posed inverse problem
|
||
|
||
> x = arg min\{||Ax-C||^2} (1)
|
||
|
||
one can use regularization schemes can be used to stabilize the system and find a numerical solution
|
||
|
||
> x\_lambda = arg min\{||Ax-C||^2 + lambda\*R(x)} (2)
|
||
|
||
where R(x) represents the penalization term.
|
||
|
||
**Parameters**
|
||
|
||
* **grad\_method** (`Union`\[`str`, `CircuitGradient`]) – The method used to compute the state gradient. Can be either `'param_shift'` or `'lin_comb'` or `'fin_diff'`.
|
||
* **qfi\_method** (`Union`\[`str`, `CircuitQFI`]) – The method used to compute the QFI. Can be either `'lin_comb_full'` or `'overlap_block_diag'` or `'overlap_diag'`.
|
||
* **regularization** (`Optional`\[`str`]) – Use the following regularization with a least square method to solve the underlying system of linear equations Can be either None or `'ridge'` or `'lasso'` or `'perturb_diag'` `'ridge'` and `'lasso'` use an automatic optimal parameter search If regularization is None but the metric is ill-conditioned or singular then a least square solver is used without regularization
|
||
* **kwargs** (*dict*) – Optional parameters for a CircuitGradient
|
||
|
||
### \_\_init\_\_
|
||
|
||
<Function id="qiskit.opflow.gradients.NaturalGradient.__init__" signature="__init__(grad_method='lin_comb', qfi_method='lin_comb_full', regularization=None, **kwargs)">
|
||
**Parameters**
|
||
|
||
* **grad\_method** (`Union`\[`str`, `CircuitGradient`]) – The method used to compute the state gradient. Can be either `'param_shift'` or `'lin_comb'` or `'fin_diff'`.
|
||
* **qfi\_method** (`Union`\[`str`, `CircuitQFI`]) – The method used to compute the QFI. Can be either `'lin_comb_full'` or `'overlap_block_diag'` or `'overlap_diag'`.
|
||
* **regularization** (`Optional`\[`str`]) – Use the following regularization with a least square method to solve the underlying system of linear equations Can be either None or `'ridge'` or `'lasso'` or `'perturb_diag'` `'ridge'` and `'lasso'` use an automatic optimal parameter search If regularization is None but the metric is ill-conditioned or singular then a least square solver is used without regularization
|
||
* **kwargs** (*dict*) – Optional parameters for a CircuitGradient
|
||
</Function>
|
||
|
||
## Methods
|
||
|
||
| | |
|
||
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
|
||
| [`__init__`](#qiskit.opflow.gradients.NaturalGradient.__init__ "qiskit.opflow.gradients.NaturalGradient.__init__")(\[grad\_method, qfi\_method, …]) | **type grad\_method**`Union`\[`str`, `CircuitGradient`] |
|
||
| [`convert`](#qiskit.opflow.gradients.NaturalGradient.convert "qiskit.opflow.gradients.NaturalGradient.convert")(operator\[, params]) | **type operator**`OperatorBase` |
|
||
| [`gradient_wrapper`](#qiskit.opflow.gradients.NaturalGradient.gradient_wrapper "qiskit.opflow.gradients.NaturalGradient.gradient_wrapper")(operator, bind\_params\[, …]) | Get a callable function which provides the respective gradient, Hessian or QFI for given parameter values. |
|
||
| [`parameter_expression_grad`](#qiskit.opflow.gradients.NaturalGradient.parameter_expression_grad "qiskit.opflow.gradients.NaturalGradient.parameter_expression_grad")(param\_expr, param) | Get the derivative of a parameter expression w\.r.t. |
|
||
|
||
## Attributes
|
||
|
||
| | |
|
||
| ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------- |
|
||
| [`grad_method`](#qiskit.opflow.gradients.NaturalGradient.grad_method "qiskit.opflow.gradients.NaturalGradient.grad_method") | Returns `CircuitGradient`. |
|
||
| [`qfi_method`](#qiskit.opflow.gradients.NaturalGradient.qfi_method "qiskit.opflow.gradients.NaturalGradient.qfi_method") | Returns `CircuitQFI`. |
|
||
| [`regularization`](#qiskit.opflow.gradients.NaturalGradient.regularization "qiskit.opflow.gradients.NaturalGradient.regularization") | Returns the regularization option. |
|
||
|
||
### convert
|
||
|
||
<Function id="qiskit.opflow.gradients.NaturalGradient.convert" signature="convert(operator, params=None)">
|
||
**Parameters**
|
||
|
||
* **operator** (`OperatorBase`) – The operator we are taking the gradient of.
|
||
* **params** (`Union`\[`ParameterVector`, `ParameterExpression`, `List`\[`ParameterExpression`], `None`]) – The parameters we are taking the gradient with respect to. If not explicitly passed, they are inferred from the operator and sorted by name.
|
||
|
||
**Return type**
|
||
|
||
`OperatorBase`
|
||
|
||
**Returns**
|
||
|
||
An operator whose evaluation yields the NaturalGradient.
|
||
|
||
**Raises**
|
||
|
||
* **TypeError** – If `operator` does not represent an expectation value or the quantum state is not `CircuitStateFn`.
|
||
* **ValueError** – If `params` contains a parameter not present in `operator`.
|
||
* **ValueError** – If `operator` is not parameterized.
|
||
</Function>
|
||
|
||
### grad\_method
|
||
|
||
<Attribute id="qiskit.opflow.gradients.NaturalGradient.grad_method">
|
||
Returns `CircuitGradient`.
|
||
|
||
**Return type**
|
||
|
||
`CircuitGradient`
|
||
|
||
**Returns**
|
||
|
||
`CircuitGradient`.
|
||
</Attribute>
|
||
|
||
### gradient\_wrapper
|
||
|
||
<Function id="qiskit.opflow.gradients.NaturalGradient.gradient_wrapper" signature="gradient_wrapper(operator, bind_params, grad_params=None, backend=None)">
|
||
Get a callable function which provides the respective gradient, Hessian or QFI for given parameter values. This callable can be used as gradient function for optimizers.
|
||
|
||
**Parameters**
|
||
|
||
* **operator** (`OperatorBase`) – The operator for which we want to get the gradient, Hessian or QFI.
|
||
* **bind\_params** (`Union`\[`ParameterExpression`, `ParameterVector`, `List`\[`ParameterExpression`]]) – The operator parameters to which the parameter values are assigned.
|
||
* **grad\_params** (`Union`\[`ParameterExpression`, `ParameterVector`, `List`\[`ParameterExpression`], `Tuple`\[`ParameterExpression`, `ParameterExpression`], `List`\[`Tuple`\[`ParameterExpression`, `ParameterExpression`]], `None`]) – The parameters with respect to which we are taking the gradient, Hessian or QFI. If grad\_params = None, then grad\_params = bind\_params
|
||
* **backend** (`Union`\[`BaseBackend`, `QuantumInstance`, `None`]) – The quantum backend or QuantumInstance to use to evaluate the gradient, Hessian or QFI.
|
||
|
||
**Returns**
|
||
|
||
Function to compute a gradient, Hessian or QFI. The function takes an iterable as argument which holds the parameter values.
|
||
|
||
**Return type**
|
||
|
||
callable(param\_values)
|
||
</Function>
|
||
|
||
### parameter\_expression\_grad
|
||
|
||
<Function id="qiskit.opflow.gradients.NaturalGradient.parameter_expression_grad" signature="parameter_expression_grad(param_expr, param)" modifiers="static">
|
||
Get the derivative of a parameter expression w\.r.t. the given parameter.
|
||
|
||
**Parameters**
|
||
|
||
* **param\_expr** (`ParameterExpression`) – The Parameter Expression for which we compute the derivative
|
||
* **param** (`ParameterExpression`) – Parameter w\.r.t. which we want to take the derivative
|
||
|
||
**Return type**
|
||
|
||
`Union`\[`ParameterExpression`, `float`]
|
||
|
||
**Returns**
|
||
|
||
ParameterExpression representing the gradient of param\_expr w\.r.t. param
|
||
</Function>
|
||
|
||
### qfi\_method
|
||
|
||
<Attribute id="qiskit.opflow.gradients.NaturalGradient.qfi_method">
|
||
Returns `CircuitQFI`.
|
||
|
||
Returns: `CircuitQFI`
|
||
|
||
**Return type**
|
||
|
||
`CircuitQFI`
|
||
</Attribute>
|
||
|
||
### regularization
|
||
|
||
<Attribute id="qiskit.opflow.gradients.NaturalGradient.regularization">
|
||
Returns the regularization option.
|
||
|
||
Returns: the regularization option.
|
||
|
||
**Return type**
|
||
|
||
`Optional`\[`str`]
|
||
</Attribute>
|
||
</Class>
|
||
|