qiskit.opflow.gradients.QFI
class QFI(qfi_method='lin_comb_full')
Compute the Quantum Fisher Information (QFI).
Computes the QFI given a pure, parameterized quantum state, where QFI is:
Parameters
qfi_method (Union
[str
, CircuitQFI
]) – The method used to compute the state/probability gradient. Can be either a CircuitQFI
instance or one of the following pre-defined strings 'lin_comb_full'
, 'overlap_diag'`
or 'overlap_block_diag'`
.
Raises
ValueError – if qfi_method
is neither a CircuitQFI
object nor one of the predefined strings.
__init__
__init__(qfi_method='lin_comb_full')
Parameters
qfi_method (Union
[str
, CircuitQFI
]) – The method used to compute the state/probability gradient. Can be either a CircuitQFI
instance or one of the following pre-defined strings 'lin_comb_full'
, 'overlap_diag'`
or 'overlap_block_diag'`
.
Raises
ValueError – if qfi_method
is neither a CircuitQFI
object nor one of the predefined strings.
Methods
__init__ ([qfi_method]) | type qfi_methodUnion [str , CircuitQFI ] |
convert (operator[, params]) | type operatorCircuitStateFn |
gradient_wrapper (operator, bind_params[, …]) | Get a callable function which provides the respective gradient, Hessian or QFI for given parameter values. |
parameter_expression_grad (param_expr, param) | Get the derivative of a parameter expression w.r.t. |
Attributes
qfi_method | Returns CircuitQFI . |
convert
convert(operator, params=None)
Parameters
- operator (
CircuitStateFn
) – The operator corresponding to the quantum state |ψ(ω)〉for which we compute the QFI - params (
Union
[ParameterVector
,ParameterExpression
,List
[ParameterExpression
],None
]) – The parameters we are computing the QFI wrt: ω If not explicitly passed, they are inferred from the operator and sorted by name.
Return type
ListOp
Returns
ListOp[ListOp] where the operator at position k,l corresponds to QFI_kl
Raises
ValueError – If operator is not parameterized.
gradient_wrapper
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)
parameter_expression_grad
static parameter_expression_grad(param_expr, param)
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
qfi_method
Returns CircuitQFI
.
Return type
CircuitQFI
Returns
CircuitQFI
.