---
title: NaturalGradient (v0.46)
description: API reference for qiskit.opflow.gradients.NaturalGradient in qiskit v0.46
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/0.46/qiskit.opflow.gradients.NaturalGradient
---

# NaturalGradient

*class* `qiskit.opflow.gradients.NaturalGradient(grad_method='lin_comb', qfi_method='lin_comb_full', regularization=None, **kwargs)`

[GitHub](https://github.com/qiskit/qiskit/tree/stable/0.46/qiskit/opflow/gradients/natural_gradient.py)

Bases: [`GradientBase`](/docs/api/qiskit/0.46/qiskit.opflow.gradients.GradientBase "qiskit.opflow.gradients.gradient_base.GradientBase")

Deprecated: 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.

> **Deprecated since version 0.24.0**
>
> The class `qiskit.opflow.gradients.natural_gradient.NaturalGradient` is deprecated as of qiskit-terra 0.24.0. It will be removed in the Qiskit 1.0 release. For code migration guidelines, visit [https://qisk.it/opflow\_migration](https://qisk.it/opflow_migration).

**Parameters**

- **grad\_method** ([*str*](https://docs.python.org/3/library/stdtypes.html#str)  *|*[*CircuitGradient*](/docs/api/qiskit/0.46/qiskit.opflow.gradients.CircuitGradient "qiskit.opflow.gradients.circuit_gradients.circuit_gradient.CircuitGradient")) – The method used to compute the state gradient. Can be either `'param_shift'` or `'lin_comb'` or `'fin_diff'`.
- **qfi\_method** ([*str*](https://docs.python.org/3/library/stdtypes.html#str)  *|*[*CircuitQFI*](/docs/api/qiskit/0.46/qiskit.opflow.gradients.CircuitQFI "qiskit.opflow.gradients.circuit_qfis.circuit_qfi.CircuitQFI")) – The method used to compute the QFI. Can be either `'lin_comb_full'` or `'overlap_block_diag'` or `'overlap_diag'`.
- **regularization** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – 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*](https://docs.python.org/3/library/stdtypes.html#dict)) – Optional parameters for a CircuitGradient

## Attributes

### grad\_method

Returns `CircuitGradient`.

**Returns**

`CircuitGradient`.

### qfi\_method

Returns `CircuitQFI`.

Returns: `CircuitQFI`.

### regularization

Returns the regularization option.

Returns: the regularization option.

## Methods

### convert

`convert(operator, params=None)`

**Parameters**

- **operator** ([*OperatorBase*](/docs/api/qiskit/0.46/qiskit.opflow.OperatorBase "qiskit.opflow.operator_base.OperatorBase")) – The operator we are taking the gradient of.
- **params** ([*ParameterVector*](/docs/api/qiskit/0.46/qiskit.circuit.ParameterVector "qiskit.circuit.parametervector.ParameterVector")  *|*[*ParameterExpression*](/docs/api/qiskit/0.46/qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression")  *|*[*List*](https://docs.python.org/3/library/typing.html#typing.List)*\[*[*ParameterExpression*](/docs/api/qiskit/0.46/qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.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.

**Returns**

An operator whose evaluation yields the NaturalGradient.

**Raises**

- [**TypeError**](https://docs.python.org/3/library/exceptions.html#TypeError) – If `operator` does not represent an expectation value or the quantum state is not `CircuitStateFn`.
- [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError) – If `params` contains a parameter not present in `operator`.
- [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError) – If `operator` is not parameterized.

**Return type**

[*OperatorBase*](/docs/api/qiskit/0.46/qiskit.opflow.OperatorBase "qiskit.opflow.operator_base.OperatorBase")

### nat\_grad\_combo\_fn

*static* `nat_grad_combo_fn(x, regularization=None)`

Natural Gradient Function Implementation.

**Parameters**

- **x** ([*tuple*](https://docs.python.org/3/library/stdtypes.html#tuple)) – Iterable consisting of Gradient, Quantum Fisher Information.
- **regularization** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*) – Regularization method.

**Returns**

Natural Gradient.

**Raises**

[**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError) – If the gradient has imaginary components that are non-negligible.

**Return type**

[*ndarray*](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray)
