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