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()