Centralized Learning – Variational Quantum Circuits

Examples of centralized machine learning with variational quantum circuits.


Iris Dataset

iris_vqc_example.py
 1import torch
 2
 3from kosmos.ml.cl_manager import CLManager
 4from kosmos.ml.config.factories.encoding import AngleEmbeddingConfig
 5from kosmos.ml.config.factories.loss import CrossEntropyLossConfig
 6from kosmos.ml.config.factories.model import VQCConfig
 7from kosmos.ml.config.factories.optimizer import AdamOptimizerConfig
 8from kosmos.ml.config.sl_train import SLTrainConfig
 9from kosmos.ml.datasets.iris_dataset import IrisDataset
10from kosmos.utils.rng import RNG
11
12
13def iris_vqc_example() -> None:
14    """Run example of training and testing on the Iris dataset using a VQC."""
15    RNG.initialize(seed=1)
16
17    iris_dataset = IrisDataset()
18
19    vqc_config = VQCConfig(
20        num_layers=2,
21        encoding_config=AngleEmbeddingConfig(rotation="X"),
22        weight_mapping_func=lambda x: torch.pi * torch.tanh(x),
23        input_mapping_func=lambda x: torch.pi * x,
24        weight_init_range=(-1, 1),
25        bias_init_range=(-0.001, 0.001),
26        data_reuploading=True,
27        output_scaling=True,
28    )
29
30    config = SLTrainConfig(
31        dataset=iris_dataset,
32        train_split=0.7,
33        batch_size=8,
34        num_epochs=50,
35        model_config=vqc_config,
36        optimizer_config=AdamOptimizerConfig(lr=0.01),
37        lr_scheduler_config=None,
38        max_grad_norm=1.0,
39        loss_config=CrossEntropyLossConfig(),
40    )
41
42    manager = CLManager(config)
43
44    for epoch_result in manager.train():
45        print(epoch_result)  # noqa: T201
46    print(manager.test())  # noqa: T201
47
48
49if __name__ == "__main__":
50    iris_vqc_example()