Skip to main content

Modular PennyLane-based quantum machine learning suite for classification, regression, and quantum kernel methods.

Project description

Quantum Machine Learning

PyPI version Version Python Tests License datasets

Modular PennyLane-based quantum machine learning library implementing reusable workflows for:

• Variational quantum classification (VQC)
• Variational quantum regression (VQR)
• Quantum kernel methods
• Trainable quantum kernels (kernel-target alignment)
• Quantum metric learning (trainable embedding geometry)
• Classical baseline models
• Deterministic benchmark utilities

The repository follows a package-first design:

• algorithms implemented in qml/
• notebooks act as thin clients
• experiments produce reproducible outputs
• consistent plotting and result structures
• deterministic execution via explicit seeds


Installation

Clone and install in editable mode:

pip install -e .

Install development tools:

pip install -e ".[dev]"

Requirements:

• Python ≥ 3.10 • PennyLane ≥ 0.34 • NumPy ≥ 1.24 • scikit-learn ≥ 1.3 • matplotlib ≥ 3.7


Quick start

Variational quantum classifier

from qml.classifiers import run_vqc

result = run_vqc(
    n_samples=200,
    n_layers=2,
    steps=50,
    plot=True,
)

Variational quantum regression

from qml.regression import run_vqr

result = run_vqr(
    n_samples=200,
    n_layers=2,
    steps=50,
    plot=True,
)

Quantum kernel classifier

from qml.kernel_methods import run_quantum_kernel_classifier

result = run_quantum_kernel_classifier(
    n_samples=200,
    plot=True,
)

Trainable quantum kernel (kernel-target alignment)

from qml.trainable_kernels import run_trainable_quantum_kernel_classifier

result = run_trainable_quantum_kernel_classifier(
    n_samples=200,
    steps=50,
    plot=True,
)

Quantum metric learning

from qml.metric_learning import run_quantum_metric_learner

result = run_quantum_metric_learner(
    samples=200,
    layers=2,
    steps=50,
    plot=True,
)

Learns a trainable embedding circuit using contrastive supervision:

• same-class samples mapped closer together
• different-class samples separated in feature space

Classification is performed via nearest-centroid prediction in the learned embedding.


All workflows return structured dictionaries containing:

• training metrics • predictions • learned parameters • configuration metadata


Noise-aware execution (finite shots)

Quantum circuits can be evaluated either analytically or with finite sampling.

Finite-shot execution uses:

qml.set_shots(qnode, shots)

Example:

result = run_vqc(
    n_samples=200,
    n_layers=2,
    steps=50,
    shots=128,
)

Trainable kernel workflows support separate shot settings:

result = run_trainable_quantum_kernel_classifier(
    n_samples=200,
    shots_train=64,
    shots_kernel=256,
)

All workflows remain deterministic when a fixed seed is provided.


Benchmark framework

Benchmark utilities compare quantum and classical models across multiple seeds.

Example:

from qml.benchmarks import compare_classification_models

result = compare_classification_models(
    models=[
        "vqc",
        "quantum_kernel",
        "trainable_quantum_kernel",
        "logistic_regression",
        "svm_classifier",
    ],
    seeds=[123, 456],
)

Model-specific configuration

Benchmarks accept per-model kwargs:

result = compare_classification_models(
    models=[
        "vqc",
        "quantum_kernel",
        "trainable_quantum_kernel",
    ],
    seeds=[123],
    model_kwargs={
        "vqc": {"shots": 128},

        "quantum_kernel": {"shots": 256},

        "trainable_quantum_kernel": {
            "shots_train": 64,
            "shots_kernel": 256,
        },
    },
)

Result structure remains consistent across models.


Classical baselines

Included reference models:

• logistic regression • ridge regression • support vector machine • multilayer perceptron

These provide performance context for quantum models.


Command line interface

Run workflows directly:

python -m qml vqc --steps 50 --plot
python -m qml regression --steps 50 --plot
python -m qml kernel --plot
python -m qml trainable-kernel --steps 50 --plot
python -m qml metric-learning --steps 50 --plot

Run benchmarks:

python -m qml benchmark classification \
    --models vqc quantum_kernel svm_classifier logistic_regression \
    --seeds 123 456
python -m qml benchmark regression \
    --models vqr ridge_regression mlp_regressor \
    --seeds 123 456

CLI outputs include:

• training metrics • test metrics • final loss • saved plots (optional)


Documentation

Core documentation:

THEORY.md — mathematical background • USAGE.md — API examples

Algorithm notes:

• docs/qml/variational_quantum_classifier.md • docs/qml/variational_regression.md • docs/qml/quantum_kernels.md

Example notebooks:

• quantum_variational_classifier.ipynb • quantum_regressor.ipynb • quantum_kernel_classifier.ipynb • classical_vs_quantum_classifier.ipynb


Repository structure

qml/

    ansatz.py
        parameterised circuit templates

    embeddings.py
        feature encoding circuits

    classifiers.py
        variational quantum classification workflows

    regression.py
        variational quantum regression workflows

    kernel_methods.py
        quantum kernel workflows

    trainable_kernels.py
        kernel-target alignment optimisation

    metric_learning.py
        contrastive quantum embedding optimisation

    classical_baselines.py
        logistic, ridge, svm, mlp

    benchmarks.py
        multi-seed benchmark utilities

    training.py
        hybrid optimisation loops

    metrics.py
        evaluation metrics

    losses.py
        objective functions

    data.py
        dataset generation utilities

    visualize.py
        plotting utilities

    io_utils.py
        reproducible saving utilities


notebooks/

    examples implemented as thin package clients


tests/

    smoke tests
    deterministic benchmarks


docs/

    theory notes and algorithm descriptions


results/

    saved experiment outputs (gitignored)


images/

    generated plots (gitignored)

Design principles

Package-first architecture

Core implementations live in:

qml.*

Notebooks import public APIs rather than defining circuits inline.


Deterministic workflows

Reproducibility is prioritised:

• explicit random seeds • deterministic dataset generation • reproducible optimisation • consistent JSON outputs • deterministic finite-shot execution


Minimal abstractions

Shared infrastructure intentionally remains lightweight:

• small set of embeddings • hardware-efficient ansatz • simple optimisation loops • consistent plotting utilities


Current algorithms

Variational quantum classifier

Binary classification using:

• angle embedding • hardware-efficient ansatz • cross-entropy loss


Variational quantum regression

Continuous prediction using:

• angle embedding • expectation-value outputs • mean squared error


Quantum kernel classifier

Support vector machine using quantum feature maps:

$$ K(x_i, x_j)

|\langle \phi(x_i) | \phi(x_j) \rangle|^2 $$


Trainable quantum kernel

Kernel alignment objective:

$$ \max_\theta ; \frac{ \langle K_\theta, Y \rangle_F }{ |K_\theta|_F |Y|_F } $$

where:

• $K_\theta$ is the quantum kernel matrix • $Y$ is the label similarity matrix


Quantum metric learning

Supervised embedding optimisation using contrastive loss:

$$ L = y d^2 + (1 - y)\max(0, m - d)^2 $$

where:

• $d$ is distance between learned embeddings
• $y \in {0,1}$ indicates whether samples share a class
• $m$ is a separation margin

The learned embedding is used for classification via nearest-centroid prediction in feature space.

Supports:

• trainable data re-uploading embeddings
• stochastic pair sampling
• deterministic optimisation via fixed seeds
• consistent evaluation pipeline with other models


Development workflow

Run tests:

pytest

Format code:

black .
ruff check .

Run module:

python -m qml

Author

Sid Richards

LinkedIn: https://www.linkedin.com/in/sid-richards-21374b30b/

GitHub: https://github.com/SidRichardsQuantum


License

MIT License — see LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qml_pennylane-0.1.8.tar.gz (35.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qml_pennylane-0.1.8-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

Details for the file qml_pennylane-0.1.8.tar.gz.

File metadata

  • Download URL: qml_pennylane-0.1.8.tar.gz
  • Upload date:
  • Size: 35.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for qml_pennylane-0.1.8.tar.gz
Algorithm Hash digest
SHA256 e482fed69cc794a357c1da033e2d960223aeda3b6742bc0e42f5627dc67901bd
MD5 2a23bc7dbf54fabc303bc6ad946a68c1
BLAKE2b-256 aedb5bfbaf2d8e5cff4c8efb89fa46b47eca9fe5cbda1e9cc8b00b6dc86429be

See more details on using hashes here.

File details

Details for the file qml_pennylane-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: qml_pennylane-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 39.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for qml_pennylane-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 fc21f68d098445986a0a1e782a7684ea5348c60593cba30aa7de2288bc8a6a78
MD5 caa05a6874b4f4c8402c88c55245ba8d
BLAKE2b-256 ab4d2b6844ed2e69c2f7ce91f86a1f295e4418aacf1cb12ccf2f4241ceb331c6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page