squlearn 0.7.1__tar.gz → 0.7.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {squlearn-0.7.1 → squlearn-0.7.2}/PKG-INFO +3 -1
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/conf.py +3 -3
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/modules/classes.rst +1 -0
- squlearn-0.7.2/examples/encoding_circuits/pruning_example.ipynb +261 -0
- squlearn-0.7.2/examples/qnn/example_qcnn_encoding_circuit.ipynb +662 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/pyproject.toml +2 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/__init__.py +1 -1
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/matrix/fidelity_kernel.py +4 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/matrix/fidelity_kernel_pennylane.py +1 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/optimizers/__init__.py +2 -0
- squlearn-0.7.2/src/squlearn/optimizers/sglbo.py +276 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/qnn/base_qnn.py +49 -58
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/qnn/lowlevel_qnn_base.py +2 -2
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/qnn/training.py +3 -3
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/util/data_preprocessing.py +23 -1
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/util/executor.py +1 -1
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/util/pennylane/pennylane_circuit.py +52 -25
- squlearn-0.7.2/src/squlearn/util/qfi.py +232 -0
- squlearn-0.7.2/tests/optimizers/test_sglbo.py +40 -0
- squlearn-0.7.1/examples/encoding_circuits/pruning_example.ipynb +0 -253
- squlearn-0.7.1/examples/qnn/example_qcnn_encoding_circuit.ipynb +0 -549
- squlearn-0.7.1/src/squlearn/util/qfi.py +0 -215
- {squlearn-0.7.1 → squlearn-0.7.2}/.github/CODE_OF_CONDUCT.md +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/.github/CONTRIBUTING.md +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/.github/workflows/doc_checks.yml +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/.github/workflows/format.yml +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/.github/workflows/publish.yml +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/.github/workflows/publish_docs.yml +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/.github/workflows/tests.yaml +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/.gitignore +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/CITATION.cff +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/LICENSE.txt +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/README.md +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/Makefile +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/README.md +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/_static/css/custom.css +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/_static/favicon.png +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/_static/logo.png +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/_static/qnn/qnn.svg +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/_static/schematic.png +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/_static/util/executor.png +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/_templates/class.rst +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/_templates/class_with_call.rst +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/_templates/function.rst +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/examples/example_kernel_digit_classification.nblink +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/examples/example_kernel_grid_search.nblink +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/examples/example_qnn_backend_mitigation.nblink +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/examples/example_quantum_bayesian_optimization.nblink +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/examples/examples_index.rst +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/index.rst +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/install/install.rst +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/make.bat +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/qiskit_settings.conf +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/requirements.txt +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/spelling_wordlist.txt +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/user_guide/encoding_circuits.rst +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/user_guide/executor.rst +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/user_guide/kernel_methods.rst +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/user_guide/observables.rst +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/user_guide/quantum_neural_networks.rst +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/docs/user_guide/user_guide_index.rst +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/encoding_circuits/layered_encoding_circuit.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/encoding_circuits/various_encoding_circuit.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/executor/example_executor_qiskit.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/integration/mlflow.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/kernel/example_fidelity_kernel.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/kernel/example_projected_kernel.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/kernel/example_regularization_mitigation.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/kernel/qgpc_workflow.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/kernel/qgpr_optimization_workflow.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/kernel/qgpr_workflow.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/qnn/classification_example.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/qnn/example_adam.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/qnn/example_minibatch.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/qnn/regression_example.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/qnn/regression_with_variance.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/tutorials/images/encoding_circuit.png +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/tutorials/images/pipeline.png +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/tutorials/images/projected_quantum_kernel.png +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/tutorials/images/quantum_bo.png +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/tutorials/kernel_digit_classification.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/tutorials/kernel_grid_search.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/tutorials/kernel_regression.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/tutorials/qnn_backend_mitigation.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/examples/tutorials/quantum_bayesian_optimization.ipynb +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/__init__.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/circuit_library/__init__.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/circuit_library/chebyshev_pqc.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/circuit_library/chebyshev_rx.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/circuit_library/chebyshev_tower.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/circuit_library/highdim_encoding_circuit.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/circuit_library/hubregtsen_encoding_circuit.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/circuit_library/multi_control_encoding_circuit.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/circuit_library/param_z_feature_map.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/circuit_library/qcnn_encoding_circuit.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/circuit_library/qiskit_encoding_circuit.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/circuit_library/yz_cx_encoding_circuit.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/encoding_circuit_base.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/encoding_circuit_derivatives.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/layered_encoding_circuit.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/pruned_encoding_circuit.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/encoding_circuit/transpiled_encoding_circuit.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/__init__.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/matrix/__init__.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/matrix/kernel_matrix_base.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/matrix/kernel_util.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/matrix/projected_quantum_kernel.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/matrix/regularization.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/ml/__init__.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/ml/qgpc.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/ml/qgpr.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/ml/qkrr.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/ml/qsvc.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/ml/qsvr.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/optimization/__init__.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/optimization/kernel_loss_base.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/optimization/kernel_optimization_base.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/optimization/kernel_optimizer.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/optimization/negative_log_likelihood.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/kernel/optimization/target_alignment.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/observables/__init__.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/observables/observable_base.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/observables/observable_derivatives.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/observables/observable_implemented/__init__.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/observables/observable_implemented/custom_observable.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/observables/observable_implemented/ising_hamiltonian.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/observables/observable_implemented/single_pauli.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/observables/observable_implemented/single_probability.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/observables/observable_implemented/summed_paulis.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/observables/observable_implemented/summed_probabilities.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/optimizers/adam.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/optimizers/approximated_gradients.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/optimizers/optimizer_base.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/optimizers/optimizers_wrapper.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/qnn/__init__.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/qnn/barren_plateau_analysis.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/qnn/loss.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/qnn/lowlevel_qnn.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/qnn/lowlevel_qnn_pennylane.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/qnn/lowlevel_qnn_qiskit.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/qnn/qnnc.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/qnn/qnnr.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/util/__init__.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/util/optree/__init__.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/util/optree/optree.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/util/optree/optree_derivative.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/util/optree/optree_evaluate.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/util/pennylane/__init__.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/src/squlearn/util/pennylane/pennylane_gates.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/encoding_circuit/test_layered_encoding_circuit.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/kernel/ml/test_qgpc.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/kernel/ml/test_qgpr.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/kernel/ml/test_qkrr.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/kernel/ml/test_qsvc.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/kernel/ml/test_qsvr.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/qnn/test_base_qnn.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/qnn/test_qnnc.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/qnn/test_qnnr.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/qnn/test_training.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/util/optree/test_optree_derivative.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/util/optree/test_optree_evaluate.py +0 -0
- {squlearn-0.7.1 → squlearn-0.7.2}/tests/util/test_executor.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: squlearn
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.2
|
|
4
4
|
Summary: A library for quantum machine learning following the scikit-learnstandard.
|
|
5
5
|
Keywords: quantum,machine learning,qml
|
|
6
6
|
Author-email: David Kreplin <david.kreplin@ipa.fraunhofer.de>, Frederic Rapp <frederic.rapp@ipa.fraunhofer.de>, Marco Roth <marco.roth@ipa.fraunhofer.de>, Jan Schnabel <jan.schnabel@ipa.fraunhofer.de>, Moritz Willmann <moritz.willmann@ipa.fraunhofer.de>
|
|
@@ -20,6 +20,7 @@ Requires-Dist: qiskit-machine-learning>=0.6.1
|
|
|
20
20
|
Requires-Dist: pennylane>=0.34.0
|
|
21
21
|
Requires-Dist: scipy>=1.5
|
|
22
22
|
Requires-Dist: scikit-learn>=1.0
|
|
23
|
+
Requires-Dist: scikit-optimize>=0.8
|
|
23
24
|
Requires-Dist: tqdm>=4.0
|
|
24
25
|
Requires-Dist: black ; extra == "dev"
|
|
25
26
|
Requires-Dist: flit ; extra == "dev"
|
|
@@ -32,6 +33,7 @@ Requires-Dist: pytest ; extra == "dev"
|
|
|
32
33
|
Requires-Dist: sphinx ; extra == "dev"
|
|
33
34
|
Requires-Dist: sphinxcontrib-spelling ; extra == "dev"
|
|
34
35
|
Requires-Dist: sphinx-rtd-theme ; extra == "dev"
|
|
36
|
+
Requires-Dist: sphinx-sitemap ; extra == "dev"
|
|
35
37
|
Requires-Dist: jupyter-sphinx ; extra == "dev"
|
|
36
38
|
Requires-Dist: jupyter ; extra == "examples"
|
|
37
39
|
Requires-Dist: matplotlib>=3.5 ; extra == "examples"
|
|
@@ -106,13 +106,13 @@ latex_elements = {
|
|
|
106
106
|
|
|
107
107
|
# intersphinx
|
|
108
108
|
intersphinx_mapping = {
|
|
109
|
-
"qiskit": ("https://
|
|
110
|
-
"qiskit-aer": ("https://qiskit.
|
|
109
|
+
"qiskit": ("https://docs.quantum.ibm.com/api/qiskit/", None),
|
|
110
|
+
"qiskit-aer": ("https://qiskit.github.io/qiskit-aer/", None),
|
|
111
111
|
"scipy": ("https://docs.scipy.org/doc/scipy/", None),
|
|
112
112
|
"sklearn": ("https://scikit-learn.org/stable/", None),
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
suppress_warnings = ["myst.header"]
|
|
115
|
+
suppress_warnings = ["myst.header", "config.cache"]
|
|
116
116
|
|
|
117
117
|
# base URL for sphinx_sitemap
|
|
118
118
|
html_baseurl = "https://squlearn.github.io/"
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"metadata": {},
|
|
6
|
+
"source": [
|
|
7
|
+
"## Example: Pruning of encoding circuits\n",
|
|
8
|
+
"\n",
|
|
9
|
+
"This examples displays how redundant parameters can be (automatically) removed from encoding circuits."
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"cell_type": "code",
|
|
14
|
+
"execution_count": 1,
|
|
15
|
+
"metadata": {},
|
|
16
|
+
"outputs": [],
|
|
17
|
+
"source": [
|
|
18
|
+
"import numpy as np\n",
|
|
19
|
+
"\n",
|
|
20
|
+
"from squlearn.encoding_circuit import (\n",
|
|
21
|
+
" PrunedEncodingCircuit,\n",
|
|
22
|
+
" pruning_from_QFI,\n",
|
|
23
|
+
" automated_pruning,\n",
|
|
24
|
+
")\n",
|
|
25
|
+
"from squlearn.encoding_circuit import LayeredEncodingCircuit\n",
|
|
26
|
+
"from squlearn.util.qfi import get_quantum_fisher\n",
|
|
27
|
+
"from squlearn.util.executor import Executor"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"cell_type": "markdown",
|
|
32
|
+
"metadata": {},
|
|
33
|
+
"source": [
|
|
34
|
+
"Create a encoding circuit with redundant parameters.\n",
|
|
35
|
+
"The first two Rz rotations are redundant, since they are applied to the 0 state.\n",
|
|
36
|
+
"The second Ry gates are redundant, since they commutate with the Z gates and two consecutive Ry gates can be replaced by a single Ry gate with the sum of the angles."
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"cell_type": "code",
|
|
41
|
+
"execution_count": 2,
|
|
42
|
+
"metadata": {},
|
|
43
|
+
"outputs": [
|
|
44
|
+
{
|
|
45
|
+
"name": "stderr",
|
|
46
|
+
"output_type": "stream",
|
|
47
|
+
"text": [
|
|
48
|
+
"C:\\Users\\DKR\\AppData\\Roaming\\Python\\Python310\\site-packages\\qiskit\\visualization\\circuit\\matplotlib.py:266: FutureWarning: The default matplotlib drawer scheme will be changed to \"iqp\" in a following release. To silence this warning, specify the current default explicitly as style=\"clifford\", or the new default as style=\"iqp\".\n",
|
|
49
|
+
" self._style, def_font_ratio = load_style(self._style)\n"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"data": {
|
|
54
|
+
"image/png": "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",
|
|
55
|
+
"text/plain": [
|
|
56
|
+
"<Figure size 538.128x200.667 with 1 Axes>"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
"execution_count": 2,
|
|
60
|
+
"metadata": {},
|
|
61
|
+
"output_type": "execute_result"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"source": [
|
|
65
|
+
"# Example for two qubits\n",
|
|
66
|
+
"nqubit = 2\n",
|
|
67
|
+
"\n",
|
|
68
|
+
"# Generate and print the example pqc\n",
|
|
69
|
+
"pqc = LayeredEncodingCircuit.from_string(\"Rz(p)-Ry(p)-Z-Ry(p)-Rz(p)\", nqubit, num_features=0)\n",
|
|
70
|
+
"pqc.draw(\"mpl\")"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"cell_type": "markdown",
|
|
75
|
+
"metadata": {},
|
|
76
|
+
"source": [
|
|
77
|
+
"Evaluate the quantum fisher matrix of the parameterized circuit for random parameters."
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"cell_type": "code",
|
|
82
|
+
"execution_count": 9,
|
|
83
|
+
"metadata": {},
|
|
84
|
+
"outputs": [
|
|
85
|
+
{
|
|
86
|
+
"name": "stdout",
|
|
87
|
+
"output_type": "stream",
|
|
88
|
+
"text": [
|
|
89
|
+
"[[ 0. 0. -0. -0. -0. 0. 0. 0. ]\n",
|
|
90
|
+
" [ 0. 0. -0. -0. 0. 0. 0. 0. ]\n",
|
|
91
|
+
" [-0. -0. 1. 0. -1. -0. -0. -0. ]\n",
|
|
92
|
+
" [-0. -0. 0. 1. -0. -1. -0. 0. ]\n",
|
|
93
|
+
" [-0. 0. -1. -0. 1. 0. 0. 0. ]\n",
|
|
94
|
+
" [ 0. 0. -0. -1. 0. 1. 0. 0. ]\n",
|
|
95
|
+
" [ 0. 0. -0. -0. 0. 0. 0.032 0. ]\n",
|
|
96
|
+
" [ 0. 0. -0. 0. 0. 0. 0. 0.01 ]]\n"
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"source": [
|
|
101
|
+
"# Generate random parameters\n",
|
|
102
|
+
"np.random.seed(0)\n",
|
|
103
|
+
"param = np.random.rand(pqc.num_parameters)\n",
|
|
104
|
+
"\n",
|
|
105
|
+
"# Nicer numpy output\n",
|
|
106
|
+
"np.set_printoptions(precision=3)\n",
|
|
107
|
+
"np.set_printoptions(suppress=True)\n",
|
|
108
|
+
"\n",
|
|
109
|
+
"# Evaluate and print the Quantum Fisher Information Matrix\n",
|
|
110
|
+
"executor = Executor()\n",
|
|
111
|
+
"QFIM = get_quantum_fisher(pqc, [], param, executor)\n",
|
|
112
|
+
"print(QFIM)"
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"cell_type": "markdown",
|
|
117
|
+
"metadata": {},
|
|
118
|
+
"source": [
|
|
119
|
+
"Calculate and print the spectrum of the Quantum Fisher Information Matrix. Zero eigenvalues indicate redundant parameters."
|
|
120
|
+
]
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"cell_type": "code",
|
|
124
|
+
"execution_count": 4,
|
|
125
|
+
"metadata": {},
|
|
126
|
+
"outputs": [
|
|
127
|
+
{
|
|
128
|
+
"name": "stdout",
|
|
129
|
+
"output_type": "stream",
|
|
130
|
+
"text": [
|
|
131
|
+
"[-0. 0. 0. 0. 0.01 0.032 2. 2. ]\n"
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"source": [
|
|
136
|
+
"V, D = np.linalg.eig(QFIM)\n",
|
|
137
|
+
"print(np.sort(V))"
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"cell_type": "markdown",
|
|
142
|
+
"metadata": {},
|
|
143
|
+
"source": [
|
|
144
|
+
"Function that computes the indices of the redundant parameters from the Quantum Fisher Information Matrix.\n",
|
|
145
|
+
"The algorthims follows https://doi.org/10.1103/PRXQuantum.2.040309"
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"cell_type": "code",
|
|
150
|
+
"execution_count": 5,
|
|
151
|
+
"metadata": {},
|
|
152
|
+
"outputs": [
|
|
153
|
+
{
|
|
154
|
+
"name": "stdout",
|
|
155
|
+
"output_type": "stream",
|
|
156
|
+
"text": [
|
|
157
|
+
"[0 1 4 5]\n"
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
],
|
|
161
|
+
"source": [
|
|
162
|
+
"red_gate = pruning_from_QFI(QFIM)\n",
|
|
163
|
+
"print(np.sort(red_gate))"
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"cell_type": "markdown",
|
|
168
|
+
"metadata": {},
|
|
169
|
+
"source": [
|
|
170
|
+
"Create a new circuit in which the redundant parameters are removed from the circuit."
|
|
171
|
+
]
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"cell_type": "code",
|
|
175
|
+
"execution_count": 6,
|
|
176
|
+
"metadata": {},
|
|
177
|
+
"outputs": [
|
|
178
|
+
{
|
|
179
|
+
"data": {
|
|
180
|
+
"image/png": "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",
|
|
181
|
+
"text/plain": [
|
|
182
|
+
"<Figure size 370.906x200.667 with 1 Axes>"
|
|
183
|
+
]
|
|
184
|
+
},
|
|
185
|
+
"execution_count": 6,
|
|
186
|
+
"metadata": {},
|
|
187
|
+
"output_type": "execute_result"
|
|
188
|
+
}
|
|
189
|
+
],
|
|
190
|
+
"source": [
|
|
191
|
+
"# Construct and print the pruned PQC\n",
|
|
192
|
+
"pruned_pqc = PrunedEncodingCircuit(pqc, red_gate)\n",
|
|
193
|
+
"pruned_pqc.draw(\"mpl\")"
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"cell_type": "markdown",
|
|
198
|
+
"metadata": {},
|
|
199
|
+
"source": [
|
|
200
|
+
"In sQUlearn, there is also an automatic pruning function that removes redundant parameters from the circuit.\n",
|
|
201
|
+
"The resulting circuit is equivalent to the manually pruned circuit, since the Ry and Z gates commute."
|
|
202
|
+
]
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"cell_type": "code",
|
|
206
|
+
"execution_count": 7,
|
|
207
|
+
"metadata": {},
|
|
208
|
+
"outputs": [
|
|
209
|
+
{
|
|
210
|
+
"name": "stdout",
|
|
211
|
+
"output_type": "stream",
|
|
212
|
+
"text": [
|
|
213
|
+
"Pruned parameters: [0 1 3 4]\n"
|
|
214
|
+
]
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"data": {
|
|
218
|
+
"image/png": "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",
|
|
219
|
+
"text/plain": [
|
|
220
|
+
"<Figure size 370.906x200.667 with 1 Axes>"
|
|
221
|
+
]
|
|
222
|
+
},
|
|
223
|
+
"execution_count": 7,
|
|
224
|
+
"metadata": {},
|
|
225
|
+
"output_type": "execute_result"
|
|
226
|
+
}
|
|
227
|
+
],
|
|
228
|
+
"source": [
|
|
229
|
+
"pruned_pqc_auto = automated_pruning(pqc, executor)\n",
|
|
230
|
+
"pruned_pqc_auto.draw(\"mpl\")"
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
],
|
|
234
|
+
"metadata": {
|
|
235
|
+
"kernelspec": {
|
|
236
|
+
"display_name": "Python 3.10.2 64-bit",
|
|
237
|
+
"language": "python",
|
|
238
|
+
"name": "python3"
|
|
239
|
+
},
|
|
240
|
+
"language_info": {
|
|
241
|
+
"codemirror_mode": {
|
|
242
|
+
"name": "ipython",
|
|
243
|
+
"version": 3
|
|
244
|
+
},
|
|
245
|
+
"file_extension": ".py",
|
|
246
|
+
"mimetype": "text/x-python",
|
|
247
|
+
"name": "python",
|
|
248
|
+
"nbconvert_exporter": "python",
|
|
249
|
+
"pygments_lexer": "ipython3",
|
|
250
|
+
"version": "3.10.2"
|
|
251
|
+
},
|
|
252
|
+
"orig_nbformat": 4,
|
|
253
|
+
"vscode": {
|
|
254
|
+
"interpreter": {
|
|
255
|
+
"hash": "26de051ba29f2982a8de78e945f0abaf191376122a1563185a90213a26c5da77"
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
"nbformat": 4,
|
|
260
|
+
"nbformat_minor": 2
|
|
261
|
+
}
|