squlearn.qnn.lowlevel_qnn_pennylane
.LowLevelQNNPennyLane
- class squlearn.qnn.lowlevel_qnn_pennylane.LowLevelQNNPennyLane(parameterized_quantum_circuit: EncodingCircuitBase, observable: ObservableBase | list, executor: Executor, caching: bool = True)
Low level implementation of QNNs and its derivatives based on PennyLane.
- Parameters:
pqc (EncodingCircuitBase) – parameterized quantum circuit in encoding circuit format
operator (Union[ObservableBase,list]) – Operator that is used in the expectation value of the QNN. Can be a list for multiple outputs.
executor (Executor) – Executor that is used for the evaluation of the QNN
caching – Caching of the result for each x, param, param_op combination (default = True)
Attributes:
- num_qubits
Number of qubits of the QNN
- Type:
int
- num_features
Dimension of the features of the PQC
- Type:
int
- num_parameters
Number of trainable parameters of the PQC
- Type:
int
- num_operator
Number of outputs
- Type:
int
- num_parameters_observable
Number of trainable parameters of the expectation value operator
- Type:
int
- multiple_output
True if multiple outputs are used
- Type:
bool
- parameters
Parameter vector of the PQC
- Type:
ParameterVector
- features
Feature vector of the PQC
- Type:
ParameterVector
- parameters_operator
Parameter vector of the cost operator
- Type:
ParameterVector
Methods:
- evaluate(x: float | ndarray, param: float | ndarray, param_obs: float | ndarray, *values: str | DirectEvaluation | PostProcessingEvaluation | ParameterVector | ParameterVectorElement | tuple) dict
General function for evaluating the output of derivatives of the QNN.
Evaluation works for given combination of input features x and parameters param and param_op. The function includes caching of results
If x, param, and/or param_op are given as a nested list (for example multiple sets of parameters), the values are returned in a nested list.
- Parameters:
x (np.ndarray) – Values of the input feature data.
param (np.ndarray) – Parameter values of the PQC parameters
param_op (np.ndarray) – Parameter values of the operator parameters
values – Derivatives (or values) of the QNN that are evaluated. Higher order derivatives are given as tuples of parameters or vectors.
- Results:
Returns a dictionary with the computed values. The keys of the dictionary are given by the entries in the values tuple
- get_params(deep: bool = True) dict
Returns the dictionary of the hyper-parameters of the QNN.
In case of multiple outputs, the hyper-parameters of the operator are prefixed with
op0__
,op1__
, etc.
- gradient(x: float | ndarray, param: float | ndarray, param_obs: float | ndarray)
Return the gradient wrt. trainable parameters of the QNN.
- Parameters:
x (Union[float, np.ndarray]) – Input data.
param (Union[float, np.ndarray]) – Parameters of the PQC.
param_obs (Union[float, np.ndarray]) – Parameters of the observable.
- Returns:
Gradient of the QNN.
- Return type:
np.ndarray
- set_params(**params) None
Sets the hyper-parameters of the QNN
In case of multiple outputs, the hyper-parameters of the operator are prefixed with
op0__
,op1__
, etc.- Parameters:
params – Hyper-parameters that are adjusted, e.g.
num_qubits=4