qiskit.opflow.gradients.QFIBase
class QFIBase(qfi_method='lin_comb_full')
Base class for Quantum Fisher Information (QFI).
Compute the Quantum Fisher Information (QFI) given a pure, parameterized quantum state.
The QFI is:
[QFI]kl= Re[〈∂kψ|∂lψ〉−〈∂kψ|ψ〉〈ψ|∂lψ〉] * 4.
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 operatorOperatorBase |
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
abstract convert(operator, params=None)
Parameters
- operator (
OperatorBase
) – The operator we are taking the gradient, Hessian or QFI of - params (
Union
[ParameterVector
,ParameterExpression
,List
[ParameterExpression
],None
]) – The parameters we are taking the gradient, Hessian or QFI with respect to.
Return type
OperatorBase
Returns
An operator whose evaluation yields the gradient, Hessian or QFI.
Raises
ValueError – If params
contains a parameter not present in operator
.
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
.