qailab.gradient.gradient_calculation#
Gradient and partial derivative calculation methods for parameterized quantum circuits.
Summary#
Functions:
Calculate gradients for parameters in compatible gates. |
|
Calculate gradients for parameters in incompatible gates, e.g. amplitude encoding parameters. |
|
For each parameter calculate partial derivatives w.r.t to each output value (possible measurement). |
Reference#
- qailab.gradient.gradient_calculation.calculate_jacobian(circuit: QuantumCircuit, set_params: dict[Parameter, int | float], backend: Backend, method: Literal['param_shift', 'spsa', 'lin_comb'] = 'param_shift', shots: int = 1024) ndarray [source]#
For each parameter calculate partial derivatives w.r.t to each output value (possible measurement).
- Parameters:
circuit (QuantumCircuit) – Circuit to sample.
set_params (dict[Parameter, int | float]) – Parameters for which to calculate derivatives and their current values.
backend (Backend) – Backend to use.
method (Literal['param_shift', 'spsa', 'lin_comb'], optional)
'param_shift'. (Gradient algorithm to use. Defaults to)
shots (int) – How many shots to use for Sampler.
- Raises:
ValueError – For unsupported method or backend.
- Returns:
len(set_params) x 2^measured_qubits matrix of partial derivatives.
- Return type:
np.ndarray
- qailab.gradient.gradient_calculation.calculate_gradients_compatible(circuit: QuantumCircuit, set_params: dict[Parameter, int | float], backend: QiskitBackend, method: Literal['param_shift', 'spsa', 'lin_comb'] = 'param_shift', shots: int = 1024)[source]#
Calculate gradients for parameters in compatible gates.
- Parameters:
circuit (QuantumCircuit) – Circuit to sample.
set_params (dict[Parameter, int | float]) – Parameters for which to calculate derivatives and their current values.
backend (QiskitBackend) – Backend to use.
method (Literal['param_shift', 'spsa', 'lin_comb'], optional)
'param_shift'. (Gradient algorithm to use. Defaults to)
shots (int) – How many shots to use for Sampler.
- Raises:
ValueError – For unsupported method or backend.
- Returns:
len(set_params) x 2^measured_qubits matrix of partial derivatives.
- Return type:
np.ndarray
- qailab.gradient.gradient_calculation.calculate_gradients_incompatible(circuit: QuantumCircuit, set_params: dict[Parameter, int | float], backend: QiskitBackend, shots: int = 1024, epsilon: float = 0.01)[source]#
Calculate gradients for parameters in incompatible gates, e.g. amplitude encoding parameters. Calculation is done using the standard derivative formula (f(x+h) - f(x))/h
- Parameters:
circuit (QuantumCircuit) – Circuit to sample.
set_params (dict[Parameter, int | float]) – Parameters for which to calculate derivatives and their current values.
backend (QiskitBackend) – Backend to use.
shots (int) – How many shots to use for Sampler.
epsilon (float) – How much to shift the parameter.
- Raises:
ValueError – For unsupported method or backend.
- Returns:
len(set_params) x 2^measured_qubits matrix of partial derivatives.
- Return type:
np.ndarray