{ "cells": [ { "cell_type": "markdown", "id": "6a93387b", "metadata": {}, "source": [ "# Neural Quantum Embedding: Pushing the Limits of Quantum Supervised Learning (nn_embedding)\n", "\n", "\n", "\n", "This implementation is based on prior work by [Hur *et al.*](https://arxiv.org/abs/2311.11412).\n", "\n", "\n", "\n", "\n", "\n", "The NQE model is composed of three submodels:\n", "\n", "1. The classical model: Takes the input data and transforms it into the phases used by the the quantum embedder.\n", "\n", "2. The quantum embedder: Encodes quantum states in respect to the output of the classical model.\n", "\n", "3. The quantum classifier: Classifies the states generated by the quantum embedder.\n", "\n", "\n", "\n", "The pipeline is separated into two phases.\n", "\n", "\n", "\n", "**Phase 1**: The classical model is trained so that the quantum embedder generates states of different classes that are maximally distant.\n", "\n", "![](../../_static/reproduced_papers/nqe/phase_1_paper.png)\n", "\n", "\n", "\n", "**Phase 2**: The quantum classifier is trained to classify the states generated by the classical model and quantum embedder.\n", "\n", "![](../../_static/reproduced_papers/nqe/phase_2_paper.png)\n", "\n", "\n", "\n", "\n", "\n", "This notebook will demonstrate the usage of a Neural Quantum Embedding as presented in the paper.\n" ] }, { "cell_type": "markdown", "id": "b7982352", "metadata": {}, "source": [ "## 0. Setup and imports" ] }, { "cell_type": "code", "execution_count": null, "id": "7f544f58", "metadata": {}, "outputs": [], "source": [ "import sys\n", "import warnings\n", "from pathlib import Path\n", "\n", "import merlin as ml\n", "import perceval as pcvl\n", "import torch.nn as nn\n", "\n", "REPO_ROOT = Path.cwd().resolve().parents[1]\n", "sys.path.insert(0, str(REPO_ROOT))\n", "\n", "warnings.filterwarnings(\"ignore\")\n", "\n", "from papers.nn_embedding.lib.merlin_based_model import ( # noqa: E402\n", " NeuralEmbeddingMerLinModel\n", ")\n", "from papers.nn_embedding.utils.data import ( # noqa: E402\n", " data_load_and_process\n", ")\n", "from papers.nn_embedding.utils.plotting import ( # noqa: E402\n", " plot_trace_distance,quick_loss_plot,plot_accuracies\n", ")" ] }, { "cell_type": "markdown", "id": "916651ee", "metadata": {}, "source": [ "## 1. Loading the Dataset To Classify (MNIST)\n", "\n", "For the purpose of this tutorial, just like in the paper, we will classify the MNIST dataset restricted to the 0 and 1 digits. We will also apply PCA to this dataset to only have 8 features per image. We will use 300 samples per class." ] }, { "cell_type": "code", "execution_count": 2, "id": "866c9a58", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1,\n", " 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1,\n", " 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0,\n", " 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0,\n", " 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1,\n", " 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0,\n", " 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1,\n", " 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1,\n", " 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0,\n", " 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0,\n", " 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1,\n", " 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,\n", " 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,\n", " 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1,\n", " 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0,\n", " 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0,\n", " 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,\n", " 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0,\n", " 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1,\n", " 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1,\n", " 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,\n", " 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,\n", " 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1,\n", " 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,\n", " 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x_train, x_test, y_train, y_test = data_load_and_process(\n", " dataset=\"mnist\",\n", " feature_reduction=8,\n", " classes=[0, 1],\n", " samples_per_class=300,\n", " )\n", "y_test" ] }, { "cell_type": "markdown", "id": "9a5f5a89", "metadata": {}, "source": [ "## 2. Create the models\n", "\n", "In the nn_embedding pipeline, three models are needed.\n", "1. An untrainable quantum embedder that takes for input the output of the classical model and prepares a state.\n", "2. A trainable classical model that assigns parameters to the quantum embedder for a classical input.\n", "3. A trainable quantum model that takes the encoded state and classifies the data.\n", "\n", "Lets define these models." ] }, { "cell_type": "markdown", "id": "88a95c1d", "metadata": {}, "source": [ "### 2.1 Quantum embedder\n", "This layer will receive its parameter values from the classical model. It encodes the features into quantum states via the classical model.\n", "\n", "\n", "In this repository, for the MerLin based method, a universal unitary was given as the quantum embedder.\n", "\n", "For MerLin models, the quantum embedder must be a MerLin ``QuantumLayer`` with ``input_size=0``. The modifiable parameters will be the trainable ones that will be changed by the classical model. The embedder must not have amplitude encoding on and must return amplitudes." ] }, { "cell_type": "code", "execution_count": null, "id": "b28a6efa", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "QuantumLayer(\n", " (_photon_loss_transform): PhotonLossTransform()\n", " (_detector_transform): DetectorTransform()\n", " (measurement_mapping): Amplitudes()\n", ")" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "circ = ml.CircuitBuilder(n_modes=8)\n", "circ.add_entangling_layer()\n", "embedder = ml.QuantumLayer(\n", " input_size=0,\n", " builder=circ,\n", " n_photons=4,\n", " measurement_strategy=ml.MeasurementStrategy.amplitudes(),\n", ")\n", "pcvl.pdisplay(circ.to_pcvl_circuit())" ] }, { "cell_type": "markdown", "id": "d27e3e39", "metadata": {}, "source": [ "### 2.2 Classical model\n", "This model will be trained to give the quantum embedder its optimal parameters for the classical input x.\n", "\n", "Lets create a simple model with three linear layers. We need to match the last layer with the number of parameters in the quantum embedder." ] }, { "cell_type": "code", "execution_count": 4, "id": "8b99ca6b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Sequential(\n", " (0): Linear(in_features=8, out_features=10, bias=True)\n", " (1): ReLU()\n", " (2): Linear(in_features=10, out_features=10, bias=True)\n", " (3): ReLU()\n", " (4): Linear(in_features=10, out_features=56, bias=True)\n", ")" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "classical_model = nn.Sequential(\n", " nn.Linear(8, 10),\n", " nn.ReLU(),\n", " nn.Linear(10, 10),\n", " nn.ReLU(),\n", " nn.Linear(10,sum([i.numel() for i in embedder.parameters()])),\n", " )\n", "classical_model" ] }, { "cell_type": "markdown", "id": "55691ce5", "metadata": {}, "source": [ "### 2.3 Quantum classifier\n", "\n", "This layer takes the encoded states and does the classification of the dataset.\n", "\n", "We will once again use a universal unitary to train.\n", "\n", "This model must be a ``QuantumLayer`` with amplitude encoding on and the probabilities measurement strategy." ] }, { "cell_type": "code", "execution_count": null, "id": "19aecd7b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "QuantumLayer(\n", " (_photon_loss_transform): PhotonLossTransform()\n", " (_detector_transform): DetectorTransform()\n", " (measurement_mapping): Probabilities()\n", ")" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "circ = ml.CircuitBuilder(n_modes=8)\n", "circ.add_entangling_layer()\n", "classifier = ml.QuantumLayer(\n", " builder=circ,\n", " n_photons=4,\n", " measurement_strategy=ml.MeasurementStrategy.probs(),\n", ")\n", "pcvl.pdisplay(circ.to_pcvl_circuit())" ] }, { "cell_type": "markdown", "id": "a588ba45", "metadata": {}, "source": [ "## 3. Create the main module\n", "\n", "With those models created, we can combine them into the main module that executes the nn_embedding pipeline." ] }, { "cell_type": "code", "execution_count": 6, "id": "b16f75ed", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "NeuralEmbeddingMerLinModel(\n", " (classical_encoder): Sequential(\n", " (0): Linear(in_features=8, out_features=10, bias=True)\n", " (1): ReLU()\n", " (2): Linear(in_features=10, out_features=10, bias=True)\n", " (3): ReLU()\n", " (4): Linear(in_features=10, out_features=56, bias=True)\n", " )\n", " (quantum_embedding_layer): QuantumLayer(\n", " (_photon_loss_transform): PhotonLossTransform()\n", " (_detector_transform): DetectorTransform()\n", " (measurement_mapping): Amplitudes()\n", " )\n", " (quantum_classifier): QuantumLayer(\n", " (_photon_loss_transform): PhotonLossTransform()\n", " (_detector_transform): DetectorTransform()\n", " (measurement_mapping): Probabilities()\n", " )\n", " (output_grouper): LexGrouping()\n", " (similarity_layer): _SimilarityLayer(\n", " (fidelity_layer): QuantumLayer(\n", " (_photon_loss_transform): PhotonLossTransform()\n", " (_detector_transform): DetectorTransform()\n", " (measurement_mapping): Probabilities()\n", " )\n", " )\n", " (embedding_training_model): _TrainingModule()\n", " (model): _TrainedEmbeddingModel(\n", " (quantum_classifier): QuantumLayer(\n", " (_photon_loss_transform): PhotonLossTransform()\n", " (_detector_transform): DetectorTransform()\n", " (measurement_mapping): Probabilities()\n", " )\n", " )\n", ")" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model=NeuralEmbeddingMerLinModel(classical_model=classical_model,quantum_embedding_layer=embedder,quantum_classifier=classifier,num_classes=2)\n", "model" ] }, { "cell_type": "markdown", "id": "73ea7447", "metadata": {}, "source": [ "## 4. Train the embedding\n", "\n", "The first part of the NQE pipeline is to train the embedding. To do so, you just need to call the ``train_embedding`` method of the object. \n", "\n", "We will use the Adam optimiser with a 0.01 learning rate, the default optimizing procedure. We will also return the data which returns:\n", "- The loss per epoch\n", "- The trace distance between the average encoded state of each class for the train dataset.\n", "- The trace distance between the average encoded state of each class for the test dataset.\n", "- The loss lower bound generated by the encoded states of the training dataset.\n", "- The loss lower bound generated by the encoded states of the test dataset." ] }, { "cell_type": "code", "execution_count": 7, "id": "3ce9312c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1 had a loss of 0.4416828453540802\n", "Epoch 2 had a loss of 0.390857994556427\n", "Epoch 3 had a loss of 0.3884666860103607\n", "Epoch 4 had a loss of 0.28700536489486694\n", "Epoch 5 had a loss of 0.24372565746307373\n", "Epoch 6 had a loss of 0.1811673790216446\n", "Epoch 7 had a loss of 0.12644872069358826\n", "Epoch 8 had a loss of 0.09891556203365326\n", "Epoch 9 had a loss of 0.07766833901405334\n", "Epoch 10 had a loss of 0.0867651179432869\n", "Epoch 11 had a loss of 0.0554957389831543\n", "Epoch 12 had a loss of 0.04730817675590515\n", "Epoch 13 had a loss of 0.05040502920746803\n", "Epoch 14 had a loss of 0.04477526992559433\n", "Epoch 15 had a loss of 0.03405756130814552\n", "Epoch 16 had a loss of 0.027140477672219276\n", "Epoch 17 had a loss of 0.037694141268730164\n", "Epoch 18 had a loss of 0.04017558693885803\n", "Epoch 19 had a loss of 0.04074986279010773\n", "Epoch 20 had a loss of 0.0309336856007576\n", "Epoch 21 had a loss of 0.021078528836369514\n", "Epoch 22 had a loss of 0.04064815863966942\n", "Epoch 23 had a loss of 0.04140010476112366\n", "Epoch 24 had a loss of 0.01260322518646717\n", "Epoch 25 had a loss of 0.01936456374824047\n", "Epoch 26 had a loss of 0.020762905478477478\n", "Epoch 27 had a loss of 0.01334301009774208\n", "Epoch 28 had a loss of 0.020360765978693962\n", "Epoch 29 had a loss of 0.020514748990535736\n", "Epoch 30 had a loss of 0.01743766851723194\n", "Epoch 31 had a loss of 0.012271538376808167\n", "Epoch 32 had a loss of 0.015978697687387466\n", "Epoch 33 had a loss of 0.013272665441036224\n", "Epoch 34 had a loss of 0.014014815911650658\n", "Epoch 35 had a loss of 0.011378418654203415\n", "Epoch 36 had a loss of 0.005064515862613916\n", "Epoch 37 had a loss of 0.015523694455623627\n", "Epoch 38 had a loss of 0.007607364561408758\n", "Epoch 39 had a loss of 0.015855232253670692\n", "Epoch 40 had a loss of 0.013120574876666069\n", "Epoch 41 had a loss of 0.014058787375688553\n", "Epoch 42 had a loss of 0.020451905205845833\n", "Epoch 43 had a loss of 0.011434332467615604\n", "Epoch 44 had a loss of 0.007109335158020258\n", "Epoch 45 had a loss of 0.004934689030051231\n", "Epoch 46 had a loss of 0.014345008879899979\n", "Epoch 47 had a loss of 0.003958116285502911\n", "Epoch 48 had a loss of 0.013487202115356922\n", "Epoch 49 had a loss of 0.0028921132907271385\n", "Epoch 50 had a loss of 0.004696195479482412\n" ] }, { "data": { "text/plain": [ "[tensor(0.2484),\n", " tensor(0.3307),\n", " tensor(0.4248),\n", " tensor(0.5226),\n", " tensor(0.6157),\n", " tensor(0.7027),\n", " tensor(0.7797),\n", " tensor(0.8397),\n", " tensor(0.8823),\n", " tensor(0.9081),\n", " tensor(0.9241),\n", " tensor(0.9325),\n", " tensor(0.9363),\n", " tensor(0.9343),\n", " tensor(0.9300),\n", " tensor(0.9231),\n", " tensor(0.9171),\n", " tensor(0.9114),\n", " tensor(0.9065),\n", " tensor(0.9035),\n", " tensor(0.9045),\n", " tensor(0.9086),\n", " tensor(0.9164),\n", " tensor(0.9254),\n", " tensor(0.9357),\n", " tensor(0.9435),\n", " tensor(0.9504),\n", " tensor(0.9567),\n", " tensor(0.9609),\n", " tensor(0.9629),\n", " tensor(0.9644),\n", " tensor(0.9659),\n", " tensor(0.9674),\n", " tensor(0.9688),\n", " tensor(0.9699),\n", " tensor(0.9706),\n", " tensor(0.9715),\n", " tensor(0.9726),\n", " tensor(0.9738),\n", " tensor(0.9747),\n", " tensor(0.9756),\n", " tensor(0.9763),\n", " tensor(0.9768),\n", " tensor(0.9772),\n", " tensor(0.9775),\n", " tensor(0.9775),\n", " tensor(0.9776),\n", " tensor(0.9776),\n", " tensor(0.9775),\n", " tensor(0.9774)]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "losses_embedding,train_distances,test_distances,loss_lb_train,loss_lb_test=model.train_embedding(x_train=x_train,y_train=y_train,x_test=x_test,y_test=y_test,num_epochs=50,batch_size=150,return_data=True)\n", "train_distances" ] }, { "cell_type": "markdown", "id": "1a0382cf", "metadata": {}, "source": [ "### 5. Train the classifier\n", "The second step of the nn_embedding pipeline is to train the quantum classifier. To do so, you just need to call the ``train_classifier`` method of the object. \n", "\n", "We will use the Adam optimiser with a 0.01 learning rate, the default optimizing procedure. We will also return the data which returns:\n", "- The loss per epoch\n", "- The training accuracy per epoch\n", "- The test accuracy per epoch" ] }, { "cell_type": "code", "execution_count": 8, "id": "ff555789", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1 had a loss of 0.5375056862831116\n", "Epoch 2 had a loss of 0.5156368017196655\n", "Epoch 3 had a loss of 0.5049517750740051\n", "Epoch 4 had a loss of 0.486937016248703\n", "Epoch 5 had a loss of 0.4807802736759186\n", "Epoch 6 had a loss of 0.47028741240501404\n", "Epoch 7 had a loss of 0.4555568993091583\n", "Epoch 8 had a loss of 0.4455704689025879\n", "Epoch 9 had a loss of 0.4213404953479767\n", "Epoch 10 had a loss of 0.4204605519771576\n", "Epoch 11 had a loss of 0.41078123450279236\n", "Epoch 12 had a loss of 0.3885246813297272\n", "Epoch 13 had a loss of 0.37565353512763977\n", "Epoch 14 had a loss of 0.3763737380504608\n", "Epoch 15 had a loss of 0.35390350222587585\n", "Epoch 16 had a loss of 0.3487565517425537\n", "Epoch 17 had a loss of 0.3409189283847809\n", "Epoch 18 had a loss of 0.3226906955242157\n", "Epoch 19 had a loss of 0.33411839604377747\n", "Epoch 20 had a loss of 0.3156631290912628\n", "Epoch 21 had a loss of 0.2979927659034729\n", "Epoch 22 had a loss of 0.3003526031970978\n", "Epoch 23 had a loss of 0.2885584533214569\n", "Epoch 24 had a loss of 0.29112765192985535\n", "Epoch 25 had a loss of 0.2562635540962219\n", "Epoch 26 had a loss of 0.2651691138744354\n", "Epoch 27 had a loss of 0.25815922021865845\n", "Epoch 28 had a loss of 0.27444612979888916\n", "Epoch 29 had a loss of 0.25244835019111633\n", "Epoch 30 had a loss of 0.26817208528518677\n", "Epoch 31 had a loss of 0.2758482098579407\n", "Epoch 32 had a loss of 0.24227823317050934\n", "Epoch 33 had a loss of 0.2306373119354248\n", "Epoch 34 had a loss of 0.22668609023094177\n", "Epoch 35 had a loss of 0.23772113025188446\n", "Epoch 36 had a loss of 0.23967570066452026\n", "Epoch 37 had a loss of 0.23423919081687927\n", "Epoch 38 had a loss of 0.2541167140007019\n", "Epoch 39 had a loss of 0.23082056641578674\n", "Epoch 40 had a loss of 0.24062933027744293\n", "Epoch 41 had a loss of 0.24220959842205048\n", "Epoch 42 had a loss of 0.2155659794807434\n", "Epoch 43 had a loss of 0.23781944811344147\n", "Epoch 44 had a loss of 0.20480646193027496\n", "Epoch 45 had a loss of 0.20538975298404694\n", "Epoch 46 had a loss of 0.2209600806236267\n", "Epoch 47 had a loss of 0.21725797653198242\n", "Epoch 48 had a loss of 0.22399577498435974\n", "Epoch 49 had a loss of 0.23558670282363892\n", "Epoch 50 had a loss of 0.21998827159404755\n" ] }, { "data": { "text/plain": [ "[42.833333333333336,\n", " 50.166666666666664,\n", " 51.333333333333336,\n", " 54.333333333333336,\n", " 60.0,\n", " 67.0,\n", " 76.16666666666667,\n", " 80.83333333333333,\n", " 84.66666666666667,\n", " 85.83333333333333,\n", " 88.16666666666667,\n", " 89.5,\n", " 90.16666666666667,\n", " 90.33333333333333,\n", " 90.83333333333333,\n", " 91.16666666666667,\n", " 91.33333333333333,\n", " 91.33333333333333,\n", " 91.5,\n", " 91.66666666666667,\n", " 91.83333333333333,\n", " 91.83333333333333,\n", " 92.66666666666667,\n", " 93.83333333333333,\n", " 94.16666666666667,\n", " 94.66666666666667,\n", " 94.83333333333333,\n", " 95.33333333333333,\n", " 95.83333333333333,\n", " 96.5,\n", " 96.66666666666667,\n", " 97.0,\n", " 97.83333333333333,\n", " 98.33333333333333,\n", " 98.5,\n", " 98.5,\n", " 98.5,\n", " 98.5,\n", " 98.5,\n", " 98.66666666666667,\n", " 98.83333333333333,\n", " 99.0,\n", " 99.16666666666667,\n", " 99.16666666666667,\n", " 99.16666666666667,\n", " 99.16666666666667,\n", " 99.33333333333333,\n", " 99.33333333333333,\n", " 99.33333333333333,\n", " 99.33333333333333]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "losses_classifier, train_accs, test_accs=model.train_classifier(x_train=x_train,y_train=y_train,x_test=x_test,y_test=y_test,batch_size=150,num_epochs=50,return_data=True)\n", "test_accs" ] }, { "cell_type": "markdown", "id": "89dbc64d", "metadata": {}, "source": [ "## 6. Plot the results\n", "We will take the results and plot the training distance per embedding training epoch, the loss per classifier training epoch and the accuracies per classifier training epoch." ] }, { "cell_type": "markdown", "id": "0d7dedc5", "metadata": {}, "source": [ "### 6.1. Trace distance plot" ] }, { "cell_type": "code", "execution_count": 9, "id": "d5da2182", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAGZCAYAAAAUx6eDAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAATeFJREFUeJzt3Ql4U2X2+PGT0qbsRdk3RQFFBNnBIlKUTUEUnQX9O4KozKCiKDoMjD9ARMUVQQVxVEQdZ8QF0REFsVAQQdlcUAEXVBDZla0IKe39P+ctCU17kzZN2iz3+3meWHKz3V7wnpz3nPe9LsuyLAEAAACAMCSF82IAAAAAILEAAAAAEBFULAAAAACEjcQCAAAAQNhILAAAAACEjcQCAAAAQNhILAAAAACEjcQCAAAAQNhILAAAAACEjcQCcevaa6+VJk2alOq1d999t7hcLoklPXr0MDevH3/80ezj7Nmzo7pfAJDoiAlAZJBYIOL0y3BJbllZWRz9MjBjxgySEQBxoTzjxeHDh00C4bTYQ0xAeXJZlmWV6yci4f373//2u//iiy/KokWL5KWXXvLb3rt3b6lbt26pPycnJ0fy8vIkNTU15NceO3bM3CpWrCixwlut8AY9/V/z6NGjkpKSIhUqVCjx+7Rq1Upq1arluOAJIP6UV7xQe/bskdq1a8uECRNMglEQMQGIjOQIvQ/g85e//MXvaHz88ccmUBTebjeaVLly5RIfSf3CXVrJycnmFst0lC6WEh8AiJV4EWnEBCAyaIVC1EbndWR97dq10r17d5NQ/POf/zSPvfXWW9K/f39p0KCBqUY0bdpUJk2aJLm5uUHnWHjnJDzyyCPyr3/9y7xOX9+pUydZvXp1sf20en/EiBEyb948s2/62rPPPlsWLFhQZP+1GtCxY0fzxV8/5+mnnw6pR9e7f5UqVZLOnTvLhx9+WOQ5dnMsduzYIUOHDpVGjRqZ/atfv75cdtll5rlKj8dXX30lS5cu9bUQeCshv/76q9x5553SunVrqVq1qlSvXl0uvvhi+fzzz4v8bvq6V199Ve677z7zWfp79uzZU7777rsi+/nJJ59Iv3795KSTTpIqVarIOeecI9OmTfN7zsaNG+WPf/yjnHzyyea99Ni9/fbbRSpQEydOlObNm5vn1KxZU7p162a+ZABwLq1MT5061ZyP9dyglYu//e1v8ttvv/k9b82aNdK3b19TsdVz62mnnSbXXXedeUzPkVqtUHqe8Z4fvZULYgIxAZER20O2SGh79+41X2yvvPJKMzrlLXPrF2n94jtq1Cjzc/HixTJ+/Hg5cOCAPPzww8W+73/+8x85ePCgCTwaOB566CG54oorZPPmzcVWOZYvXy5z586Vm266SapVqyaPP/64/OEPf5AtW7aYL7rq008/lYsuush8qdcApQnPPffc4wtaxXnuuefMvnXt2lVuu+02s1+XXnqp+dLduHHjoK/VfdHE4ZZbbjFJxK5du8wXb90/va/BVx/T43bXXXeZ13iPq36OJk1/+tOfTMDduXOnSYgyMjLk66+/NolcQQ888IAkJSWZZGT//v3mOF599dUmkfDSz77kkkvMsRg5cqTUq1dPNmzYIO+88465r3R/zzvvPGnYsKGMGTPGJB+atAwcOFDeeOMNufzyy32BffLkyXLDDTeYZEv/vvWLwrp160wbBABn0vOlxgUdVLn11lvlhx9+kCeffNKciz/66CNzXtdzYZ8+fcx5WM8zNWrUMMmEns+Vbn/qqafkxhtvNOccjQlKB0KCISacQExAiegcC6As3XzzzTqPx29bRkaG2TZz5swizz98+HCRbX/729+sypUrW0eOHPFtGzJkiHXqqaf67v/www/mPWvWrGn9+uuvvu1vvfWW2f6///3Pt23ChAlF9knvu91u67vvvvNt+/zzz832J554wrdtwIABZl+2bdvm2/btt99aycnJRd6zMI/HY9WpU8dq27atdfToUd/2f/3rX+a1elwK/z7PP/+8uf/bb7+Z+w8//HDQzzj77LP93sdLj11ubq7fNv2M1NRU65577vFtW7Jkifmcs846y28fp02bZravX7/e3D927Jh12mmnmb8D3beC8vLyfH/u2bOn1bp1a7+/O328a9euVvPmzX3b2rRpY/Xv3z/o7wbAWfHiww8/NPdffvllv+ctWLDAb/ubb75p7q9evTrge+/evds8R8//hRET8hETEC5aoRA12sqjI1CFaQnbSysPOuHu/PPPN3MwtKWmOIMGDTJtOV76Wu+IfXF69eplWpS8dDRLW4a8r9XqxAcffGBG2wuO8Ddr1sxUX4qjI/A6sjZ8+HBxu91+bV1paWlBX6vHRV+jrUqFWwBKery1AuH9PbRipJWNM88801QFCtO/m4L7WPg46mihjhxq1UVHBwvytoRp+5VWnP785z/7/i71pp+tLQvffvutbNu2zTxX30OrG7oNANRrr71mzo1atfSeP/TWoUMHc/5asmSJ7/yhtFqqbZWRQkwgJiA0JBaIGm2NKfjF1Uu/XGqpWoOJfqnXErZ3Ip+25BTnlFNO8bvvTTJK8mW88Gu9r/e+VpOC33//3SQShdltK+ynn34yP3UeQUFayj/99NOLTQwefPBBee+990x7k85N0fYknXdR0j7lxx57zHy2vpf2Ieux/eKLL2yPa3HH8fvvvzc/dT5KIDonQ4tB48aNM59V8KYrs3iPqdJ2sn379skZZ5xh5oH8/e9/N/sGwLl0oEHPT3Xq1ClyDjl06JDv/KEtndoqqu2pem7TuWfPP/+8WVkvHMSEwMeCmAA7zLFA1BSsTHjpF0sNEJpQ6BdNrR7oZD0dUf/HP/5hvhwXJ9DSrCVZWTmc15YHrQ4MGDDAzJVYuHCh+cKu8xK0KtCuXbugr73//vvN83Uyo06G1zkdWsHQ97Q7rpE4Ft731XkaWqGw403INFHSZEUn77///vvy7LPPmkRo5syZZt4FAOfRc4gmFS+//LLt4965bVolff31182qUv/73//M+VHPdY8++qjZptWN0iAmRPZYEBMSH4kFYoq2+WibjE640y+aXtpyEws0wGmiY7c6kt22wk499VTfKNyFF17o266le/0d27RpU+x7aLJ1xx13mJu+T9u2bU3w9K4HH2hlKg26F1xwgZk8XjiZ0xG+UHlbxr788kvTLmDHW4XRikyg5xSkyY62YOlNRyP134BO6iaxAJxJzzPafqoLQNgNRhV27rnnmpuuaKcLeeiCE6+88oo5h5R01b5QEBP8/64UMcHZaIVCTPGOiBQcAfF4PObKobGyf/oFWSsGv/zyi19SoS1KxdFlVnWETUfh9ffy0hVP9At+MDrH5MiRI0VO5Lp6VcFyv666ZPdeuu+FR5a0f9k7xyFU7du3N6tL6UpUhT/P+zkadHW5W119avv27UXeY/fu3b4/a0JZkI4wajUj3FYGAPFL52fpnDCtshamF7Xznnu0RbPw+U0HXZT3HOK9TlJx59pQEBNOICZAUbFATNElWLVvc8iQIWZZQR1h0iuwxkorktIRdG3V0RE0XbpQg54ufahzDT777LOgr9WR+3vvvdcsn6gVC51orpUK7QUubo7FN998Y64loYG2ZcuW5oJOb775plk2Vpfs9dJJjbqson6OfjHXL/f6WbosrLaXaTVAj/P69etNe0FxnxuItlHp52hrlgZwfV9ddlYn2Os8GW1FUNOnTzfXo9B5E8OGDTOfp/u8cuVK+fnnn33X0dDfSZMQ3X+tXOhEd62y6LVFADiTtsbq+VJbPvX8qkvK6nlUq7U6MKLXzNFr5LzwwgtmAErn5+mAiy4W8cwzz5i2Wr3OjtKKh55n5syZY+Zy6XlGz9vB5omVBDEhHzEBRtjrSgGlXG5Wl0W189FHH1nnnnuuValSJatBgwbW6NGjrYULF5r30KVQi1tu1m451sJLDAZaWlD3tTD9DP2sgjIzM6127dqZ5WmbNm1qPfvss9Ydd9xhVaxYsUT/HmbMmGGWatWlXjt27GgtW7bMHJNgy83u2bPH7F+LFi2sKlWqWGlpaVaXLl2sV1991e+9d+zYYZZtrVatmt8Strrcq+5j/fr1zbE977zzrJUrVxb5XO9ys6+99prf+xbeH6/ly5dbvXv3Np+n+3XOOef4Lc+rvv/+e2vw4MFWvXr1rJSUFKthw4bWJZdcYr3++uu+59x7771W586drRo1apj909/zvvvuM0v0AnBuvPAuyd2hQwdzbtBzjS5hrbHhl19+MY+vW7fOuuqqq6xTTjnFnFd1WW89x6xZs8bvfVasWGHeR8/dBeMCMYGYgMhw6X/IsYDw6RK0LJcKACAmwKmYYwGUgi45W5CW5d99913TygMAcBZiApCPigVQCjqXQC9qp/MF9NoUOtdAJwjqReMKX6MCAJDYiAlAPiZvA6Vw0UUXyX//+19zcTq92Fx6erq5TgRJBQA4DzEByEfFAgAAAEDYmGMBAAAAIGyOa4XSy8nrhc30omJlcRVOAIhHukCgrv3foEEDsx69UxEjAKD08cFxiYUmFY0bN472bgBATNq6das0atRInIoYAQCljw+OSyy0UuE9OHpFTgCAyIEDB8ygi/cc6VTECAAofXxwXGLhbX/SpILEAgDsz5FORYwAgNLHh6g20i5btkwGDBhgerZ0Z+fNm1fsa7KysqR9+/Zmic9mzZrJ7Nmzy2VfAQAAAMRoYpGdnS1t2rSR6dOnl+j5P/zwg/Tv318uuOAC+eyzz+S2226TG264QRYuXFjm+woAKF8MPgFAfIlqK9TFF19sbiU1c+ZMOe200+TRRx8198866yxZvny5PPbYY9K3b1/b1+jVkPVWsE8MABD7vINP1113nVxxxRUlHnwaPny4vPzyy5KZmWkGn/SqyIFiBAAgcuJqjsXKlSulV69efts0WGjlIpDJkyfLxIkTy2HvAACRxOATAMSXuFqsfMeOHVK3bl2/bXpfqxC///677WvGjh0r+/fv9910NSgAQOIJNPik24MNPqWlpfluLEcOAA5JLEpDJ3l7V4BiJSgASFwMPgFAdMVVK1S9evVk586dftv0viYMlSpVitp+AQDid/BJbwAAh1Us0tPTzWS8ghYtWmS2AwCcjcEnAHBwYnHo0CGzbKzevCt66J+3bNnimx8xePBg3/N1pY/NmzfL6NGjZePGjTJjxgx59dVX5fbbb4/a7wAAlidH8vbuMz9Lsj3WXxOvGHwCEK7SnE+DPWbF8GsSrhVqzZo15poUXqNGjTI/hwwZYi58t337dl+SoXSp2fnz55tEYtq0adKoUSN59tlnWUYQQEj05GodzBZXtSricqeU6DG77VZennjeWy6erFUiOcdEUpLF3aOzpPTtKjkLVxTZ7r64m3ldLL5Gzjsn5v4V6eDTd99957vvHXw6+eST5ZRTTjGDT9u2bZMXX3zRN/j05JNPmsEnXaJ28eLFZvBJ4waAxBXKeTvQY4HO58HOp7F8TncXs9+upKQSH59QuCzLssRBdAUpXflDV4jSuRkA4lskEoHSnrTN8xetKLJPSac1krwffi6y3d27a/7nxOBrrO4dJO0PfWLq3JiVleU3+OTlHXy69tpr5ccffzTPK/gaHXz6+uuvzeDTuHHjzPNKihgBOHNwR78O53ywMqTzaSyf091BXpPSK11cLleJj4+V3kZO+mNf+W3fvmLjA4kFAMcElECJQGlO2ikXdpGcD9fmf0ZJpRwvEsfga6yUZKn72FjZ+evemEksooHEAghNWVcFymtwR5KSRPLyQjufxvA5XYK9JsDvGuj4aAXikVWL5c4Fr5NYFEbQAJwZUIImAqU9aYfy/DjQ+vmH5IutP5JYUNWGQ5X1Ob00VYGoD+44SUrg45PtOSqVH7i92PgQV8vNAkiggJJzzC+I+AWU448d+26Lf0A5vt3Kzc0PKDbsApB5abAAVJogc/x3i7uRqiAVi53ZB0v+GQDiVrTO6Wak3IZ57wBKdU4PpDTn+kSsWAQS5LlV3KmmclEcEgvAYRwdUAIlAqU5AbtTJKVbe8lZ/EnJy/A6STrUPtlyeo2kt5EjjzCKBySyQOf78jqn27YaHX/PqA/uBGoPCnI+jeVzujvIa0rT9mUqFlI8EgsgAYUyJ8ExASVIIlCqk3ZGp/yVNSpUEM/S1SK6jJ87xWz3tXAV2u5N1sxnxdhrjsbgqlAAIhsHirSQxso5PQYGd7S1ykxoDuF8GsvndHeQ1wRsSQtwfLRSMeOzj+ROKf7yDkzeBhJIsOpDoDkJpZqwFknlFVB6dz1xHAKcgO0eC3bS1uX6IrXUYbRfw/yzfBwHxLuAC1v07CLZ456I7jk9xEnDpT2nF/dlO1AcCGUJ1lg/p5eoU6GEx8c69xxWhQqEoIFEUvhkcXT+soAjMaVqH0qwgFJcIhDssWCvSQScGzkOSAwB44AOxixfF9Vzum+Z0xge3HESq4TH5+CR30t8qQYqFkCCjEilnN8h+KpHoSYVCRxQUBSJBccB8anwhcwO3TUt9Llk5XROD6cqwDk9PuIDiQUQ4+xOpoFGpIIKlFwQUEBi4UOChbgeYOpyTtCqRKCqRXknCUjc8yKTt4E47JMNOqEuxDkJpZ2wpgHF3TvdNmik9u8e8DH9s6tmDdvdDPRYsNcAgBPZTcQ2SUOgeXN6/r4kQ1yVKkb9nI7ERWIBxKhAq3dYvx8Jua0p2ApGBBQAiG1FJt96ckIeYNLzfVLFVJIElCkSCyBG+2QDBY2cT74Iej0GM9dCR61skgdGnQCUNdpfyr5yndy5VeABpry8/Ar1qvUBq9BUElBWSCyAGO2TDXaV6EB9shpwNHlIvahbwL5WAgqA8r7YpnexBUSocp2bG3iAyZ0iqZdeYG7Mb0B5I7EAEqxPVpE8ACgrpbnYpg54mNcymbfkxzlIu5PGCFOdtrvgZ0Yn34AS8xtQ3kgsUCoEh9jukwWAshLy1ZuXrjaLTuRkfkI1I4QYoT8DVq49OZKS3ibgvDkgWkgsEFLyUFypm4QjwLGkTxZAog+G2FVYlb7mnaX+7Zs21QwnC3RtomDtTklp1RhgQswhsUARwZKHgP2elpW/ZGmQ3lonJx30yQJI+MGQQFKS8xedsKGj7Vp5NZ/p0PgQsCV28SeSdFojyfvh5+DtTizpihhCYoGQvgSbKzvbMH2eBUerCoxG+RISh07oo08WgCMGQwLMCwt60TZPjhx9e0l+4uHA+FBcjMj7eYe51pDdSn9ALCKxQMm/BGtSEWR5u0CjUSYhKTjBzAElcPpkAThtMCTQxTbN/Apv4lBYUpLjWqSKtJcFm0uRc0zc57ULutIfEEtILFDyL8HHR5NCKoN7cgJWORKxBE6fLIB4F86k4UBXb9YqhF8FpBje+OCd15EIMSJQe5kmXsHmUnh/b1Z4QjwgsXCw0nwJNtdPsBmpCrg0arBEJAFL4PTJAoh35iKdYUwatvsS7G3dKZiMpHRuHbRFKm//QTm26suEaaMNuJpWkMSr4FwKIB6QWDhYab4EmxO6zUhVkfXLjzMl80AtVAlWAqdPFkC8KlwVKMkX3VBG0TURKJyMqIAtUu4UyVn5ecK00QaLDxpPq9wzwvdn5lIgnpFYOFRpvwTbBQfvFVftemt9iUgClsDpkwUQ7wK25/TtWiZfdAsnI4ESGFMdj/M22lDm2kn27ywdi4RAYuFQ4U4WKxwcAiUciVgCp08WQKII1p5THhfhtIsPmsDosra2bbdx0EZbmjZjbwWHuRSIdyQWDlVcD21pJ4vZvaYsSuDRrGTQJwsgERTXnuOtHJflpOGAVXBNMoIsaxvLbbThzLUD4l30U3uUCz1J5+3dl3+yPp4A6AiPnbI6yel7JtWskR+ognx+0BJ41io58vYSOXTXNMmeNNP8PDp/mRkhKo9jV1wg1tU93L27muTI0N+zd1fWHAcQc4przzGPl5OC8cF7P1CMCMQsb348xhWOebHUZkx8QCKjYuHgq2gHKkGX14V3SlUCPz7yE2ykKlLVDNtydpdz6JMF4JjKdTTFQxstc+0AfyQWDu+fLY8e2oiWwAPwVgtyMj8JGlACJR12223L2RrQAi2tS58sgDhS0tWfoiWW22iZawfYI7FIYCXun43yhXeKTAQPEuwC0t/1naUB+241uQi08knOwhW2FywKdOwCiYVADAChiHblutxWkspaJVZu7onlz0MYeLJ7jLl2QIwmFtOnT5eHH35YduzYIW3atJEnnnhCOne276vMycmRyZMnywsvvCDbtm2TM888Ux588EG56KKLyn2/E6V/Nlav5GlbAvcGDbvfKSU5fxQrUN+tBhSbUaxj323xn0x3fLv1+5HAxy4vL39fVq2P2UAMACURbEW/WBXpNtpAA0++z7FZ4SnYUrhckwJOFtXEYs6cOTJq1CiZOXOmdOnSRaZOnSp9+/aVTZs2SZ06dYo8///+7//k3//+tzzzzDPSokULWbhwoVx++eWyYsUKadeuXVR+h1gW6/2zpQl2ga6JoXMfgvXdBgoCdit0KJOkBDl2qZdeYG7xEoiBeMXgU/mIduU6mm20gQaefM+xWeEp8BtyTQo4W1RXhZoyZYoMGzZMhg4dKi1btjQJRuXKlWXWrFm2z3/ppZfkn//8p/Tr109OP/10ufHGG82fH3300YCfcfToUTlw4IDfzSmisfJTWa8UYiad2626dElGfkCxE2KgMXKO5U/UDnLsCu8bgLIZfJowYYKsW7fOVLV18GnXrl22z9fBp6efftpUvr/++msZPny4GXz69NNP+atJQJFYSSrYwJNWKUJtiS08144YAaeJWmLh8Xhk7dq10qtXrxM7k5Rk7q9cuTJgklCxYkW/bZUqVZLly5cH/BxtnUpLS/PdGjduLE4S8It4nLbteEeqqt57q1QZN9z81PtJFVMDL1/rvTBRKPQ4XZKRUMcOiDflMfjkJNFagjXaMc8s8VqagSfdHuKgVLwM2gEJ1wq1Z88eyc3Nlbp16/pt1/sbN260fY2OVGmg6d69uzRt2lQyMzNl7ty55n0CGTt2rBnx8tKKhZOSi3jsny1t2T7YJMRALVTBLlikyUoiHjsgHngHn/QcXpaDT/oavXklYlU72LLjsXCl6qi20XrnSwSYu2cEeMy8VltwmWsHxM7k7VBMmzbNjF7p/AqXy2WSCx3JCjR6pVJTU83N6eKpf7YskqhASYdvVaggK6I44dgBsaa8Bp+0qj1x4kRx8rLjiajISlKlGHjyVsEDPWaWbL+oGwNPQCwkFrVq1ZIKFSrIzp07/bbr/Xr16tm+pnbt2jJv3jw5cuSI7N27Vxo0aCBjxowxJW8gWCIQLOmgKgEkhtIMPiV6Vbuky44nutIMPBUcYAr0GANPQIwkFm63Wzp06GBGlAYOHGi25eXlmfsjRowI+lotdTds2NAsP/vGG2/In//853La69gXqYv/JKpAQYDgAMSW8hp8SvSqdjwvOx4LA0+KwScgTlqhdJRoyJAh0rFjR3PtCl1uNjs724wwqcGDB5sEQkvV6pNPPjHXr2jbtq35effdd5tkZPTo0eJ0TuqhBZD4GHyKjHhedry8BRtgYvAJiIPEYtCgQbJ7924ZP368uUCeJgwLFizw9dRu2bLFTNbz0lEoXU5w8+bNUrVqVbPah64CUqOGc0ZbAnFiDy2AxMbgU/i8S7DazhNgBSMAiTZ5W9ueArU+ZWVl+d3PyMgwa5PDHz20ABIRg0+RUZI5BAAQCS7LsixxEJ2Yp9ez2L9/v1SvXl0Sga5Lnj1pZsDH9XoPepEeAHDSubE0Evk4MAcPQFmfF6NesUD46KEFABQbK1g6G0AZY1ZvAvXQ2qGHFgAAAOWBikWCoIcWAAAA0URikSCKW4cbAAAAKEskFgmGHloAAABEA3MsAAAAAISNxAIAAABA2EgsAAAAAISNxAIAgAS7EJ5eOFV/AkB5YvI2AAAJwMrLE897y8WTtUok55hISrK5xpEuR64rBwJAWSOxAAAgAZikYtGKExtyjvnu63LkAFDWGMIAACDOaduTqVTY8CxdTVsUgHJBYhGH6J8FAPjFhYPZ+e1Pdjw5+Y8DQBmjFSqO0D8LALDjqlbFzKmwTS7cKfmPA0AZo2IRj/2z3sBxvH9WtwMAnMvlTjETte24MzqZxwGgrJFYxAn6ZwEAwejqT+7eXU2FIn9Dirmv2wGgPNAKlUD9s66aNcp7twAAMUKXlNXVn9y90/NjQrUqVCoAlCsSizhB/ywAoETxQudUMNAEIApohYoT9M8CAAAgllGxiCPePlldk1zbn0z/bEYn+mcBAAAQdSQWcYT+WQAAAMQqEos4RP8sAAAAYg1zLAAAAACEjcQCAAAAQNhILAAAAACEjcQCAAAAQNhILAAAAACEjcQCAAAAQPwnFtOnT5cmTZpIxYoVpUuXLrJq1aqgz586daqceeaZUqlSJWncuLHcfvvtcuTIkXLbXwAAAAAxlljMmTNHRo0aJRMmTJB169ZJmzZtpG/fvrJr1y7b5//nP/+RMWPGmOdv2LBBnnvuOfMe//znP8t93wEAAADESGIxZcoUGTZsmAwdOlRatmwpM2fOlMqVK8usWbNsn79ixQo577zz5P/9v/9nqhx9+vSRq666qtgqBwAgPlHVBoD4EbXEwuPxyNq1a6VXr14ndiYpydxfuXKl7Wu6du1qXuNNJDZv3izvvvuu9OvXL+DnHD16VA4cOOB3AwDEPqraABBfopZY7NmzR3Jzc6Vu3bp+2/X+jh07bF+jlYp77rlHunXrJikpKdK0aVPp0aNH0FaoyZMnS1pamu+m8zIAALGPqjYAxJeoT94ORVZWltx///0yY8YMMydj7ty5Mn/+fJk0aVLA14wdO1b279/vu23durVc9xkAEDqq2sFZnhzJ27vP/ASAWJEcrQ+uVauWVKhQQXbu3Om3Xe/Xq1fP9jXjxo2Ta665Rm644QZzv3Xr1pKdnS1//etf5a677jKtVIWlpqaaGwAgfgSram/cuDFgVVtfp1Vty7Lk2LFjMnz48GKr2hMnTpR4YeXliee95eLJWiWSc0wkJVncPTqL++Ju4rKJgQBQnqJ2FnK73dKhQwfJzMz0bcvLyzP309PTbV9z+PDhIsmDJidKgwgAwLmcUNU2ScWiFflJhco5Zu7rdgBwbMVC6VKzQ4YMkY4dO0rnzp3NNSq0AqGrRKnBgwdLw4YNzYiSGjBggOm5bdeunbnmxXfffWeqGLrdm2AkEi1xWwezxVWtirjcKdHeHQAoN1S17WOCqVTY8CxdLe7e6cQKAM5NLAYNGiS7d++W8ePHmwnbbdu2lQULFvhK31u2bPGrUPzf//2fuFwu83Pbtm1Su3Ztk1Tcd999kkgodQNwuoJV7YEDB/pVtUeMGOHIqrYONPkqFYV5B6Jq1ijv3QKA2EgslAaIQEFCy9oFJScnm4vj6S2R+UrdXsdL3Sq1f/fo7RgAlCOq2v60eq1zKmyTC3dK/uMA4OTEAv4odQNAPqra/rQlVidq+w08HefO6EQbFICoc1mJUB8OgV4gT69noZP0qlevLrFGlw/MnjQz4ONVxg2XJErdABx2biwvsX4cfK2yS1eb9ietVGhSwapQAGLhvEjFIsZQ6gYABIwRSUmmJVYnarO4B4BYw6LXMVrqtkOpGwDgjRVavWbFQACxhIpFDNKStrIrdQMAAACxiMQiBlHqBgAAQLwhsYhhWuJmTXIAAADEA+ZYAAAAAAgbiQUAAACAsJFYAAAAAAgbiQUAAACAsJFYAAAAAAgbiQUAAACAsJFYAAAAAAgbiQUAAACAsJFYAAAAAAgbiQUAAACAsJFYAAAAAAgbiQUAAACAsJFYAAAAAIhOYnHs2DH54IMP5Omnn5aDBw+abb/88oscOnQo/D0CAMQ1YgQAOFNyqC/46aef5KKLLpItW7bI0aNHpXfv3lKtWjV58MEHzf2ZM2eWzZ4CAGIeMQIAnCvkisXIkSOlY8eO8ttvv0mlSpV82y+//HLJzMyM9P4BAOIIMQIAnCvkisWHH34oK1asELfb7be9SZMmsm3btkjuGwAgzhAjAMC5Qq5Y5OXlSW5ubpHtP//8s2mJAgA4FzECAJwr5MSiT58+MnXqVN99l8tlJm1PmDBB+vXrF+n9AwDEEWJEZFmeHMnbu8/8BIBY57IsywrlBVqZ6Nu3r+jLvv32WzPfQn/WqlVLli1bJnXq1JFYduDAAUlLS5P9+/dL9erVo707AJBQ50ZiRGRYeXnieW+5eLJWieQcE0lJFnePzuK+uJu4klgpHkBsxoeQEwvvUoJz5syRzz//3FQr2rdvL1dffbXfZO5YRWIBAGV7biRGhO/o/GXiWbSiyHZ3766S2r97BD4BAGIksYhnsZZYaHnbOpgtrmpVxOVOifbuAHCoWDs3Ovk4aFw4dNe0/EpFYe4UqXrvrcQLADF5Xgx5VajJkydL3bp15brrrvPbPmvWLNm9e7f84x//CH2PHYgyN4BERIwInw422SYVyjsYVbNGBD4JACIr5EZNvdp2ixYtimw/++yzS31xvOnTp5vlaitWrChdunSRVatWBXxujx49zITxwrf+/ftLPDG9s1rm9gaPnGPmvm4HgHhVFjHCabSCrXMqbLlT8h8HgERILHbs2CH169cvsr127dqyffv2kHdA52qMGjXKrCq1bt06adOmjZkcvmvXLtvnz50713yO9/bll19KhQoV5E9/+pPECy1zmwl5NjxLV7P6B4C4FekY4UTaFqsTte24MzrRBgUgcRKLxo0by0cffVRku25r0KBByDswZcoUGTZsmAwdOlRatmxpRrQqV65sWqvsnHzyyVKvXj3fbdGiReb5gRKLo0ePmt6wgrd4KHMDQDyKdIxwYkVb6epPOlFbKxT5G1LMfd0OALEq5DkWmgTcdtttkpOTIxdeeKHZlpmZKaNHj5Y77rgjpPfyeDyydu1aGTt2rG9bUlKS9OrVS1auXFmi93juuefkyiuvlCpVqgTs9504caLEZJk7wMQ8ytwA4lUkY4S3oq0DTppU6DWUtKK9adMm26XNtaKtccVr7969pgoeTxVtL11SVld/cvdOZ4EPAImbWPz97383J+ubbrrJdwLXkSSdtF0wQSiJPXv2mKt462TwgvT+xo0bi329jlxpK5QmF4HoPmlg8tKKhY6oxUKZ23YpQcrcAOJYJGNEwYq20gRj/vz5pqI9ZswY24p2Qa+88krQinY80HjBRG0ACZtYaFn5wQcflHHjxsmGDRvMtSuaN28uqampUt40oWjdurV07mzfi6p0v6Kxb8XxlrN1ToW2P5kyd0YnytwA4lqkYkR5VLS97bJ684qFdlkAcExi4VW1alXp1KlTWB+uV+vWidc7d+702673df5EMNnZ2WY06p577pF4RJkbQCILN0aUR0U7VttlAcAxiYV+oX/ggQdMz6yu3JSXl+f3+ObNm0v8Xm63Wzp06GDea+DAgWabvp/eHzFiRNDXvvbaa2aU6S9/+YvEM8rcABJJJGNEWVe0Y7VdFgAck1jccMMNsnTpUrnmmmvMkoJa9g6HntCHDBkiHTt2NAFAJ+dpYPL21A4ePFgaNmxoRpUKBw1NRmrWrBnW5wMAIidSMaK8Ktqx2i4LAI5ILN577z0zee68886LyA4MGjTIXLF7/PjxZv3ztm3byoIFC3zl7y1btpi+2oJ0RZDly5fL+++/H5F9AABERqRiBBVtAHBAYnHSSScVWXkjXNr2FKj1KSsrq8i2M888UyzLiug+AADCF8kYQUUbABL8AnmTJk0y1YXDhw+XzR4BAOJWJGOEVrQfeeQR835azf7ss8+KVLQLX83bW9G+/vrrw/58AEBoXFaIQ//t2rWT77//3lQM9GqoKSnHrwp63Lp16ySW6cS8tLQ02b9/v1SvXj3auwMACXVuJEYAgHPjQ8itUN7VmwAAIEYAAEpdsYh3VCwAgHMjMQIAIv/dOeQ5FgAAAAAQdiuUXgn1sccek1dffdVMnPN4PH6P//rrr6G+JQAgQRAjAMC5Qq5YTJw4UaZMmWJW69CSiC4HeMUVV5hrTdx9991ls5cAgLhAjAAA5wo5sXj55ZflmWeekTvuuEOSk5PlqquukmeffdYsB/jxxx+XzV4CAOICMQIAnCvkxEKvjt26dWvz56pVq5qqhbrkkkvM1VYBAM5FjAAA5wo5sWjUqJHvgkRNmzaV999/3/x59erVkpqaGvk9BADEDWIEADhXyInF5ZdfLpmZmebPt9xyi4wbN06aN28ugwcPluuuu64s9hEAECeIEQDgXGFfx0LnVaxYscIkFwMGDJBYx3UsAKD8zo3ECACIb2V65e1ly5ZJ165dzcRtde6555rbsWPHzGPdu3cv/Z4DAOIaMQIAnCvkVqgLLrjA9loVmsXoYwAA5yJGAIBzhZxYaOeUy+Uqsn3v3r1SpUqVSO0XACAOESMAwLlK3AqlF8FTmlRce+21fitA6ZVWv/jiC9MiBQBwHmIEAKDEiYVO2vCORlWrVk0qVarke8ztdpt5FsOGDeOIAoADESMAACVOLJ5//nnzs0mTJnLnnXfS9gQAIEYAAEo/x2L06NF+cyx++uknmTp1qu9CeQAA5yJGAIBzhZxYXHbZZfLiiy+aP+/bt086d+4sjz76qNn+1FNPlcU+AgDiBDECAJwr5MRi3bp1cv7555s/v/7661KvXj1TtdBk4/HHHy+LfQQAxAliROgsT47k7d1nfgJAPAv5AnmHDx82k7eVtj/pSiBJSUlm8rYmGAAA5yJGlJyVlyee95aLJ2uVSM4xkZRkcffoLO6Lu4krKeRxPwCIupDPXM2aNZN58+bJ1q1bZeHChdKnTx+zfdeuXcVe5tvJGJEC4ATEiJIzScWiFflJhco5Zu7rdgBwRGIxfvx4syqUrg7VpUsXSU9P91Uv2rVrVxb7GPcjUkfnL5NDd02T7EkzzU+9r9sBINEQI0o+2GQqFTY8S1fTFgXAGa1Qf/zjH6Vbt26yfft2adOmjW97z5495fLLL4/0/iXOiJTX8REpldq/e/R2DADKADGiZKyD2ScqFYV5cszjrpo1IvlXAwCxl1gonbCtt4J0dSiENiLl7p0uLncKhw1AQiFGFM9VrYqZU2GbXLhT8h8HgERMLHSC9uzZs80cCv1zMHPnzo3UvsU9RqQAOAExInQ6qKQTtf0q2se5Mzox6AQgcROLtLQ030Xx9M8oGUakADgBMaJ0dPUnbwVb25+0UqFJhXc7AMQbl2VZljjIgQMHTBDcv39/uaxipRO1bUekendljgUAx54bY1U0joPlnVNRrQqVCgBxfV4s1ULZe/bskTVr1sjatWtl7969Eo7p06ebFaYqVqxoVplatcp+ToKXXu375ptvlvr160tqaqqcccYZ8u6770qs0pEnTSJ0JCp/Q4q5z4gUgEQVyRjhlLaopJo1SCoAOGvy9ldffSU33nijfPTRR37bMzIyZMaMGdKiRYuQPnzOnDkyatQomTlzpkkqpk6dKn379pVNmzZJnTp1ijzf4/FI7969zWN61e+GDRuai/LVqBG7K2foRY509SedqM2IFIBEFukYAQBI0FaoHTt2SKtWraR27doyfPhwEyD0pV9//bU888wzZlTqyy+/tE0IAtFkolOnTvLkk0+a+3l5edK4cWO55ZZbZMyYMUWerwnIww8/LBs3bpSUlNKtpkS5HwAif24sixgRDcQIACiHVqjHHntMTj31VPn0009l5MiRprJw0UUXmYrDunXrTEKgzykprT5ombxXr14ndiYpydxfuXKl7Wvefvttc0E+bYWqW7euCWL333+/5ObmBvyco0ePmgNS8AYAiKxIxwintMsCQCIpcWKxaNEi+cc//mFO7oVVqlRJ/v73v8vChQtD6sHVhEAThIL0vo582dm8ebNpgdLXaaAYN26cPProo3LvvfcG/JzJkyebLMt70+AGAIisSMeIgu2yEyZMMMmJXpRVE5Zdu3bZPt/bLvvjjz+aWKFttVot0bZZAEAMJRb6pb59+/YBH+/YsaN5TlnSVikto//rX/+SDh06yKBBg+Suu+4yLVKBjB071pRuvLetW7eW6T4CgBOVRYyYMmWKDBs2TIYOHSotW7Y05/rKlSvLrFmzbJ+v23/99VeZN2+enHfeeabSofM7NCEBAMRQYnHw4MGgfVXVqlWTQ4cOlfiDa9WqJRUqVJCdO3f6bdf7ha/q7aWlbS1r6+u8zjrrLFPh0JEqO1oK1/0ueAMARFakYwTtsgAQf5JCDRyF5ysUvIVySQy3222qDpmZmX4VCb2v8yjs6AjUd999Z57n9c0335iEQ98PABA9kYwRtMsCQAIvN6sBQasFwR73Xp27pLR3dsiQIaZE3rlzZ7PcbHZ2til7q8GDB5veWJ0noXQZQ11BSicG6spR3377rZm8feutt4b0uQCAyCqLGBFOu6xWtnXwatu2bWY1QZ2nEahdVmORlyZAzMUDgDJOLJYsWSKRpnMkdu/eLePHjzftTG3btpUFCxb4JnRv2bLFrBTlpSd7nfx3++23yznnnGOSDk0ydMIgACB6Ih0jStsuq0uRB2qXtatsa7us3gAA5ZhY6AS4sjBixAhzs5OVlVVkm7ZJffzxx2WyLwCA0ol0jCjYLjtw4EC/dtlAMUPbZf/zn/+Y53kHpWiXBYAYnWMBAEB50RYlXS72hRdekA0bNph22MLtstrK5KWP66pQWsnWhGL+/PmmXVavawEAiKGKBQAA5Yl2WQCILy4rlGU6HHZZcgBwCs6NHAcACDc+0AoFAAAAIGylTiz0ehK6QtPvv/9u7jus8AEACIIYAQDOE3JisXfvXunVq5dZr7xfv36yfft2s/3666+XO+64oyz2EQAQJ4gRAOBcIScWeg2J5ORkc42JypUr+02y02tQAACcixgBAM4V8qpQ77//vmmBatSokd/25s2by08//RTJfQMAxBliBAA4V8gVC11DvGClwkvXDufqpQDgbMQIAHCukBOL888/X1588UXffZfLZa5y+tBDD8kFF1wQ6f0DAMQRYgQAOFfIrVCaQPTs2VPWrFkjHo9HRo8eLV999ZWpWHz00Udls5cAgLhAjAAA5wq5YtGqVSv55ptvpFu3bnLZZZeZsvcVV1whn376qTRt2rRs9hIAEBeIEQDgXFx5GwDAlbeP4wrkAFCOV95+/vnn5bXXXiuyXbe98MILob4dACCBECMAwLlCTiwmT54stWrVKrK9Tp06cv/990dqvwAAcYgYAQDOFXJioRfGO+2004psP/XUU81jAADnIkYAgHOFnFhoZeKLL74osv3zzz+XmjVrRmq/AABxiBgBAM4VcmJx1VVXya233ipLliyR3Nxcc1u8eLGMHDlSrrzyyrLZSwBAXCBGAIBzhXwdi0mTJsmPP/5ormWRnJz/cr1A3uDBg5ljAQAOR4wIzPLkiHUwW1zVqojLnVKOfysAEOPLzeq1LLT9qVKlStK6dWszxyIesJQgAJT9uZEYcYKVlyee95aLJ2uVSM4xkZRkcffoLO6Lu4krKeTGAQCI2fgQcsXC64wzzjA3nMBoFAAQIwozScWiFSc25Bzz3U/t351/MgASRqkSi59//lnefvtts/qHx+Pxe2zKlCniNIxGAcAJxIgC8cGTk1+psOFZulrcvdNpiwKQMEJOLDIzM+XSSy+V008/XTZu3CitWrUycy60o6p9+/biRIxGAUA+YoQ/nVNh2p9sg8fxORc1a/DPB0BCCLm5c+zYsXLnnXfK+vXrpWLFivLGG2/I1q1bJSMjQ/70pz+J0xQ3GqWPA4BTECP86URtnVNhy52S/zgAODWx2LBhg1kBSumqUL///rtUrVpV7rnnHnnwwQfFaUoyGgUATkGM8KerP+lEbTvujE60QQFwdmJRpUoV37yK+vXry/fff+97bM+ePeI0jEYBwAnEiKJ09Sd3766mQpG/IcXc1+0A4Og5Fueee64sX75czjrrLOnXr5/ccccdpi1q7ty55jGnjkb5rfhxHKNRAJyGGFGULimrqz/pRG2uYwEgkYWcWOiqT4cOHTJ/njhxovnznDlzpHnz5o5cEUp5R510ToW2P5nRqIxOjEYBcBxiRPCBKCZqA0hkISUWubm5ZhnBc845x1fynjlzpjgdo1EAQIwAAKcLaY5FhQoVpE+fPvLbb7+V3R7F+WhUUs0aTMYD4EjECABwtpAnb+t1KzZv3hzRnZg+fbo0adLELF/bpUsXWbXKfvlWNXv2bHG5XH43fR0AIPrKIkYAABI0sbj33nvNdSzeeecd2b59uxw4cMDvFiqdnzFq1CiZMGGCrFu3Ttq0aSN9+/aVXbt2BXxN9erVzWd7bz/99FPInwsAiLxIxwgAQPxwWXrJ7BLQ61ToClDVqlU78WKXy/dnfRu9r/MwQqEVik6dOsmTTz5p7ufl5Unjxo3llltukTFjxthWLG677TbZt29fid7/6NGj5ualgU3ff//+/SZBAQDknxvT0tJKfW4sqxgRb8cBABJNKOfFEk/e1hWghg8fLkuWLJFI0ethrF271lyp1SspKUl69eolK1euDPg6XYnq1FNPNUlI+/bt5f7775ezzz7b9rmTJ082+w4AKDtlESO8rbIPP/yw7Nixw1S0n3jiCenc2f6CczrwNHToUL9tqampcuTIkYjuEwAgzMTCW9jIyMiQSNEL6unoVd26df226/2NGzfavubMM8+UWbNmmZWpNHN65JFHpGvXrvLVV19Jo0aNijxfkxZttSpcsQAARE5ZxAhvq6yuPqjV7alTp5pW2U2bNkmdOnVsX6Ojafq4XdUEABBDy83Gwgk6PT3d3Lw0qdCL9T399NMyadKkIs/X0Sq9AQDKVqRjhF4TY9iwYb4qhCYY8+fPN4NLdq2y3n2oV69eiT/Drl0WAFAOicUZZ5xRbOD49ddfS/x+tWrVMssT7ty502+73i9pYEhJSZF27drJd999V+LPBQBEXiRjRHm0yiraZQEgSomF9tDq5I1Icbvd0qFDB8nMzJSBAweabRoM9P6IESNK9B7aSrV+/Xrp169fxPYLABC6SMaI8miVVbTLAkCUEosrr7wyYF9raWn/7JAhQ6Rjx45mQp720GZnZ/tK34MHD5aGDRuaUSXvyiPnnnuuNGvWzKwMpZP6dLnZG264IaL7BQAITVnEiLJslVW0ywJAFBKLsppfMWjQINm9e7eMHz/erPrRtm1bWbBggW+UasuWLab87aVX/daeW33uSSedZCoeK1askJYtW5bJ/gEAyj9G0CoLAA5YFaosaNtToNanrKwsv/uPPfaYuQEAYkekYwStsgCQwImFzn0AAKC8YgStsgCQwHMsAAAoL7TKAkB8cVll2eMU55clBwCn4NzIcQCAcOPDiVnRAAAAAFBKJBYAAAAAwkZiAQAAACBsJBYAAAAAwkZiAQAAACBsJBYAAAAAwkZiAQAAACBsJBYAAAAAwkZiAQAAACBsJBYAAAAAwkZiAQAAACBsJBYAAAAAwkZiAQAAACBsJBYAAAAAwkZiAQBAhFieHMnbu8/8BACnSY72DgAAEO+svDzxvLdcPFmrRHKOiaQki7tHZ3Ff3E1cSYzhAXAGznalwIgUAKAgk1QsWpGfVKicY+a+bgcAp6BiEQJGpAAARWKDJye/UmHDs3S1uHuni8udwoEDkPCoWISAESkAQGHWwewTlYoigSMn/3EAcAASiwiNSDFRDwCcyVWtiplTYcudkv84ADgAiUUJMSIFALCjbU46UduOO6MTbVAAHIM5FqGOSNmVuxmRAgBH09WfvBVsbX/SuKBJhXc7ADgBiUWII1Jm1Y9CGJECAGfTJWVT+3c3E7W1wq2DUUzYBuA0JBYhYEQKABCMJhOumjU4SAAcicQiBIxIAQAAAPZILEqBESkAAAAgBleFmj59ujRp0kQqVqwoXbp0kVWr7Jd1LeyVV14Rl8slAwcOLPN9BAAAABDDicWcOXNk1KhRMmHCBFm3bp20adNG+vbtK7t27Qr6uh9//FHuvPNOOf/888ttXwEAAADEaGIxZcoUGTZsmAwdOlRatmwpM2fOlMqVK8usWbMCviY3N1euvvpqmThxopx++unlur8AAAAAYiyx8Hg8snbtWunVq9eJHUpKMvdXrlwZ8HX33HOP1KlTR66//vpiP+Po0aNy4MABvxsAAACABEos9uzZY6oPdevW9duu93fs2GH7muXLl8tzzz0nzzzzTIk+Y/LkyZKWlua7NW7cOCL7DgAoe8zBA4D4EfVWqFAcPHhQrrnmGpNU1KpVq0SvGTt2rOzfv99327p1a5nvJwAgfMzBA4D4EtXlZjU5qFChguzcudNvu96vV69eked///33ZtL2gAEDfNvy8vLMz+TkZNm0aZM0bdrU7zWpqanmBgCILwXn4Cmdgzd//nwzB2/MmDHFzsH78MMPZd++fcW2y+rNi3ZZAIjTioXb7ZYOHTpIZmamX6Kg99PT04s8v0WLFrJ+/Xr57LPPfLdLL71ULrjgAvNn2pwAIDGUxxw8RbssACTQBfJ0qdkhQ4ZIx44dpXPnzjJ16lTJzs72jVANHjxYGjZsaE7+ep2LVq1a+b2+Ro0a5mfh7QCA+BVsDt7GjRuDzsHTgaaS0nZZjUMFKxYMUgFAnCYWgwYNkt27d8v48ePNhO22bdvKggULfMFky5YtZpQKAIBIzsFTtMsCQAIlFmrEiBHmZicrKyvoa2fPnl1GewUASOQ5eACAyKIUAACIOczBA4D4ExMVCwAACmMOHgDEFxILAEBMYg4eAMQXl2VZljiIrvihV+DWi+VVr1492rsDADGBcyPHAQDCjQ/MsQAAAAAQNhILAAAAAGEjsQAAAAAQNhILAAAAAGEjsQAAAAAQNhILAAAAAGEjsQAAAAAQNhILAAAAAGEjsQAAAAAQNhILAAAAAGEjsQAAAAAQNhILAAAAAGEjsQAAIESWJ0fy9u4zPwEA+ZKP/0QhGiysg9niqlZFXO4Ujg8AQKy8PPG8t1w8WatEco6JpCSLu0dncV/cTVxJjNUBcDYSi0IIGgCAQExSsWjFiQ05x3z3U/t358ABcDSGVwIFDR2JKhA0dDsAwNmVbFOpsOFZupq2KACOR2JRAEEDABCItsf6Bp0KO94+CwBORmJRAEEDABCIzrnTORW23Cn5jwOAg5FYFEDQAAAEogt56ERtO+6MTiz0AcDxSCwKIGgAAILR1Z/cvbuaCkX+hhRzX7cDgNOxKlQh3uCgE/G0Z9YEjYxOBA0AgFlSVld/cvdOZ0lyACiExKIQggYAoCQVblfNGhwoACiAxCIAggYAAABQcsyxAAAAABA2EgsAAAAAYSOxAAAAAJAYicX06dOlSZMmUrFiRenSpYusWrUq4HPnzp0rHTt2lBo1akiVKlWkbdu28tJLL5Xr/gIAAACIscRizpw5MmrUKJkwYYKsW7dO2rRpI3379pVdu3bZPv/kk0+Wu+66S1auXClffPGFDB061NwWLlxY7vsOAAAAIJ/LsixLokgrFJ06dZInn3zS3M/Ly5PGjRvLLbfcImPGjCnRe7Rv31769+8vkyZNKvLY0aNHzc3rwIED5v33798v1atXj+BvAgDxS8+NaWlpjj83chwAoPTnxahWLDwej6xdu1Z69ep1YoeSksx9rUgUR3OizMxM2bRpk3Tv3t32OZMnTzYHw3vTpAIAAABAZEU1sdizZ4/k5uZK3bp1/bbr/R07dgR8nWZMVatWFbfbbSoVTzzxhPTu3dv2uWPHjjXP9962bt0a8d8DAFA2mIMHAPEjLi+QV61aNfnss8/k0KFDpmKhczROP/106dGjR5HnpqammhsAIL545+DNnDnTtM1OnTrVzMHTKnWdOnUCzsFr0aKFGXh65513zBw8fa6+DgCQwIlFrVq1pEKFCrJz506/7Xq/Xr16AV+n7VLNmjUzf9ZVoTZs2GBanuwSCwBAfJoyZYoMGzbMJAdKE4z58+fLrFmzbOfgFY4BI0eOlBdeeEGWL18eMLGwm4cHAIjDVigdUerQoYOpOnjp5G29n56eXuL30dcUDAwAgPhWHnPwFPPwACCBWqG0zD1kyBBzbYrOnTubUnd2drZvhGrw4MHSsGFDc/JX+lOf27RpU5NMvPvuu+Y6Fk899VSUfxMAQHnMwdu4cWPA1+lcOo0ZGh+0Ij5jxoyAc/C88/A0DhVeORAAEIeJxaBBg2T37t0yfvx4M2FbW5sWLFjgCyZbtmwxo1RemnTcdNNN8vPPP0ulSpVML+2///1v8z4AAGcLZQ6eYh4eACTQdSzKG2uUA0Dsnxu1Fapy5cry+uuvy8CBA33btcK9b98+eeutt0r0PjfccINZDbCkF1GNteMAANEWN9exAADADnPwACD+RL0VCgAAO8zBA4D4QmIBAIhJzMEDgPjCHAsAAHMLjmOOBQD4Y44FAAAAgHLF5G0AAAAAYSOxAAAAABA2EgsAAAAAYSOxAAAAABA2xycWlidH8vbuMz8BAPAiPgBAaJx7HYu8PDk6f5l4slaJ5BwTSUkWd4/O4r64m7iSHJ9vAYBjJblcIh98IodWfk58AIAQODexWLxaPMvWnrifc0w8i1aYP6b27x69/QIARNVd5/YSIT4AQMgcOTRfsUKyiI5E2fAsXU1bFAA42E3tuonLZjvxAQCCc2RiUbdKNXFp+5MdT45YB7PLe5cAADGiSorb/gHiAwAE5cjEYmf2QbFSAnSBuVPEVa1Kee8SACBGZOd47B8gPgBAUI5MLI7kHhNJb2P7mDujk7jcKeW+TwCA2DDj0+Vi2WwnPgBAcI5MLIwLO4m7d1czAmW4U8x9XRUKAOBc9338gUj3DsQHAAiRc1eFSkoyqz+5e6ebORXa/kSlAgCQZ1kivbpI1Ut6EB8AIATOTSyO02TCVbNGtHcDABBjiA8AEBrntkIBAAAAiBgSCwAAAABhI7EAAAAAEDYSCwAAAABhI7EAAAAAEDYSCwAAAABhI7EAAAAAEDYSCwAAAABhc9wF8iy9oqqIHDhwINq7AgAxw3tO9J4jnYoYAQCljw+OSywOHjxofjZu3DjauwIAMXmOTEtLE6ciRgBA6eODy3LY8FReXp788ssvUq1aNXG5XCYL0yRj69atUr16dXEijgHHgH8H/P+goUCDRoMGDSQpybldsgVjhB4P4gMxUhEnOQZO/ndghRAfHFex0APSqFGjItv1H4iT/pHY4RhwDPh34Oz/H5xcqbCLETr45NR/C4VxDDgO/Ftw9v8PaSWMD84dlgIAAAAQMSQWAAAAAMLm+MQiNTVVJkyYYH46FceAY8C/A/5/AOdG4gNxku8KfF8Kl+MmbwMAAACIPMdXLAAAAACEj8QCAAAAQNhILAAAAACEjcQCAAAAQNgcnVhMnz5dmjRpIhUrVpQuXbrIqlWrJJEtW7ZMBgwYYK6cqBd+mjdvnt/jOo9//PjxUr9+falUqZL06tVLvv32W0kUkydPlk6dOpkr6tapU0cGDhwomzZt8nvOkSNH5Oabb5aaNWtK1apV5Q9/+IPs3LlTEslTTz0l55xzju8CP+np6fLee+856hgU9MADD5j/H2677TbHHgPYc1KMcHp8UMQI4oMdYkRoHJtYzJkzR0aNGmWWml23bp20adNG+vbtK7t27ZJElZ2dbX5PDZZ2HnroIXn88cdl5syZ8sknn0iVKlXMMdEvWYlg6dKl5svixx9/LIsWLZKcnBzp06ePOS5et99+u/zvf/+T1157zTz/l19+kSuuuEISiV5VWE+Ua9eulTVr1siFF14ol112mXz11VeOOQZeq1evlqefftokWgU56RjAntNihNPjgyJGEB8KI0aUguVQnTt3tm6++Wbf/dzcXKtBgwbW5MmTLSfQv/o333zTdz8vL8+qV6+e9fDDD/u27du3z0pNTbX++9//Wolo165d5jgsXbrU9/umpKRYr732mu85GzZsMM9ZuXKllchOOukk69lnn3XUMTh48KDVvHlza9GiRVZGRoY1cuRIs91JxwCBOTlGEB/yESOcGx8UMaJ0HFmx8Hg8ZrRWS7leSUlJ5v7KlSvFiX744QfZsWOH3zFJS0sz5f9EPSb79+83P08++WTzU/9NaBWj4DFo0aKFnHLKKQl7DHJzc+WVV14xo5XaEuWkY6DVq/79+/v9rspJxwD2iBH+nBgflNNjhJPjgyJGlE6yONCePXvM/zB169b12673N27cKE6kQUPZHRPvY4kkLy/P9NSfd9550qpVK7NNf0+32y01atRI+GOwfv16Eyi0jUHnELz55pvSsmVL+eyzzxxxDDRYanuLlrkLc9K/A9gjRjg7Pjg9Rjg9PihiROk5MrEAdCTiyy+/lOXLlzvyYJx55pkmSOiI3Ouvvy5Dhgwx/cVOsHXrVhk5cqSZZ6OTcgGgMCfHCCfHB0WMCI8jW6Fq1aolFSpUKLLKi96vV69e1PYrmry/txOOyYgRI+Sdd96RJUuWmInMXvp7agvEvn37Ev4Y6KhTs2bNpEOHDmYlFJ20OW3aNEccAy3n6wTc9u3bS3Jysrlp0NSJqfpnHX1L9GOA4IgRzo0PyukxwsnxQREjwuPIxEL/p9H/YTIzM/3Knnpfy39OdNppp5kTQ8FjcuDAAbP6R6IcE52TqAFDy7qLFy82v3NB+m8iJSXF7xjocrRbtmxJmGMQiP77P3r0qCOOQc+ePU2pX0fkvLeOHTvK1Vdf7ftzoh8DBEeMcF58UMQIe06KD4oYESbLoV555RWz4tHs2bOtr7/+2vrrX/9q1ahRw9qxY4eVqHSFg08//dTc9K9+ypQp5s8//fSTefyBBx4wx+Ctt96yvvjiC+uyyy6zTjvtNOv333+3EsGNN95opaWlWVlZWdb27dt9t8OHD/ueM3z4cOuUU06xFi9ebK1Zs8ZKT083t0QyZswYsxLWDz/8YP6e9b7L5bLef/99xxyDwgquCuXUYwBnxwinxwdFjCA+BEKMKDnHJhbqiSeeMF8e3G63WVrw448/thLZkiVLTMAofBsyZIhvydlx48ZZdevWNQG1Z8+e1qZNm6xEYfe76+3555/3PUeD5E033WSW16tcubJ1+eWXm+QjkVx33XXWqaeeav7d165d2/w9e5MKpxyD4oKGE48BnB0jnB4fFDGC+BAIMaLkXPqfcKseAAAAAJzNkXMsAAAAAEQWiQUAAACAsJFYAAAAAAgbiQUAAACAsJFYAAAAAAgbiQUAAACAsJFYAAAAAAgbiQUAAACAsJFYADGuSZMmMnXq1GjvBgAgBhEjEEtILIACrr32Whk4cKD5c48ePeS2224rt+Mze/ZsqVGjRpHtq1evlr/+9a/8PQFAlBEjgOCSi3kcQJg8Ho+43e5Sv7527dr8HQBAgiJGIJFQsQACjEotXbpUpk2bJi6Xy9x+/PFH89iXX34pF198sVStWlXq1q0r11xzjezZs8f3Wq10jBgxwlQ7atWqJX379jXbp0yZIq1bt5YqVapI48aN5aabbpJDhw6Zx7KysmTo0KGyf/9+3+fdfffdtmXuLVu2yGWXXWY+v3r16vLnP/9Zdu7c6XtcX9e2bVt56aWXzGvT0tLkyiuvlIMHD/J3DQARQIwA7JFYADY0oUhPT5dhw4bJ9u3bzU2TgX379smFF14o7dq1kzVr1siCBQvMl3r9cl/QCy+8YKoUH330kcycOTP/f7akJHn88cflq6++Mo8vXrxYRo8ebR7r2rWrSR40UfB+3p133llkv/Ly8kxS8euvv5rEZ9GiRbJ582YZNGiQ3/O+//57mTdvnrzzzjvmps994IEH+LsGgAggRgD2aIUCbOgovyYGlStXlnr16vm2P/nkkyapuP/++33bZs2aZZKOb775Rs444wyzrXnz5vLQQw/5vWfB+RpaSbj33ntl+PDhMmPGDPNZ+plaqSj4eYVlZmbK+vXr5YcffjCfqV588UU5++yzzVyMTp06+RIQnbNRrVo1c1+rKvra++67j79vAAgTMQKwR8UCCMHnn38uS5YsMW1I3luLFi18VQKvDh06FHntBx98ID179pSGDRuaL/z6ZX/v3r1y+PDhEn/+hg0bTELhTSpUy5YtzaRvfaxg4uJNKlT9+vVl165d/F0DQBkiRsDpqFgAIdA5EQMGDJAHH3ywyGP65d1L51EUpPMzLrnkErnxxhtN1eDkk0+W5cuXy/XXX28m7mllJJJSUlL87mslRKsYAICyQ4yA05FYAAFoe1Jubq7ftvbt28sbb7xhKgLJySX/32ft2rXmi/2jjz5q5lqoV199tdjPK+yss86SrVu3mpu3avH111+buR9auQAAlA9iBFAUrVBAAJo8fPLJJ6baoKs+aWJw8803m4nTV111lZnToO1PCxcuNCs6BUsKmjVrJjk5OfLEE0+Yyda6YpN3UnfBz9PRLp0LoZ9n1yLVq1cvs7LU1VdfLevWrZNVq1bJ4MGDJSMjQzp27MjfJQCUE2IEUBSJBRCArspUoUIFUwnQa0noMq8NGjQwKz1pEtGnTx/zJV8nZescB28lwk6bNm3McrPaQtWqVSt5+eWXZfLkyX7P0ZWhdDK3rvCkn1d48re3pemtt96Sk046Sbp3724SjdNPP13mzJnD3yMAlCNiBFCUy7Isy2Y7AAAAAJQYFQsAAAAAYSOxAAAAABA2EgsAAAAAYSOxAAAAABA2EgsAAAAAYSOxAAAAABA2EgsAAAAAYSOxAAAAABA2EgsAAAAAYSOxAAAAABA2EgsAAAAAEq7/DxDjqFQAk3gxAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_trace_distance(train_distances,test_distances,show=True)" ] }, { "cell_type": "markdown", "id": "4e439544", "metadata": {}, "source": [ "### 6.2. Loss plot" ] }, { "cell_type": "code", "execution_count": 10, "id": "18be4c97", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "quick_loss_plot(losses_classifier,show=True)" ] }, { "cell_type": "markdown", "id": "84f2c8b1", "metadata": {}, "source": [ "### 6.3. Accuracy plot" ] }, { "cell_type": "code", "execution_count": 11, "id": "2c5199f5", "metadata": {}, "outputs": [ { "data": { "image/png": "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3Llz5Y033pC1a9dKQECAPj7qS5NZrVixQn8hXLNmjSxdulRKS0tl1KhR+ljZ3XPPPfL111/LwoUL9etTUlLk6quvFrNq27at7lg3btwoGzZskOHDh8v48eNlx44dljwe1a1fv17+9a9/6cCrOisfE1dCH08ffyr6+Jro38+OPr4BbBZ2zjnn2KZPn+54XF5ebouNjbXNnj3bZjXqn8KiRYscjysqKmzR0dG2Z555xrEvKyvL5uPjY/v4449tVpGenq6PzYoVKxzHwMvLy7Zw4ULHa3bt2qVfs3r1aptVhIWF2f79739b+njk5ubaOnfubFu6dKntoosust199916v5WPiauhjz+JPr529PGno3+vRB/fMJYdsSgpKdFXYNX0Hjt3d3f9ePXq1WJ1iYmJkpqaWuP4hISE6OliVjo+2dnZ+j48PFzfq38zahSj+nHp1q2bxMfHW+K4lJeXy4IFC/QIjpoSZeXjoUa2xo4dW+N3V6x8TFwJffzZ0cdXoo8/if69Jvr4hvEUi8rIyND/E0VFRdXYrx7/+uuvYnUqqFBqOz7258yuoqJCz5s/77zzpFevXnqf+t29vb0lNDTUUsdl27ZtOpBQ0+BUzsCiRYukR48esnnzZkseDxVcqemTapj8VFb9N+Jq6OPPjj6ePt6O/v109PENZ9nAAqjL1Yrt27fLqlWrLH+wunbtqoMIdXXv008/lalTp+q5ylaUnJwsd999t87BUUUfALRM9PGV6N9roo9vHMtOhWrVqpV4eHicVqlFPY6OjjasXa7CfgysenzuuOMO+eabb2T58uU6uc1O/e5qikVWVpaljou6At+pUycZOHCgrqqikv5feuklSx4PNdVJFXgYMGCAeHp66psKslShA7WtRiasdkxcEX382dHH08fb0b/XRB/fOJYNLNT/SOpL0rJly2pMfVGP1ZQPq0tISNAnnurHJycnR1eHMvPxUTmOKqhQU31++OEHfRyqU/9mvLy8ahwXVY42KSnJ1MflVOr/leLiYksejxEjRuipA2oEx34bNGiQTJkyxbFttWPiiujjz44+nj7+TKzcvyv08Y1ks7AFCxboKkfvvvuubefOnbZp06bZQkNDbampqTYrUBUPfvnlF31T/xSef/55vX3o0CH9/FNPPaWPx5dffmnbunWrbfz48baEhARbYWGhzaxuv/12W0hIiO3HH3+0HT161HErKChwvOa2226zxcfH23744Qfbhg0bbMOGDdM3s/rb3/6mq2IlJibqfwfqsZubm+27776z5PGoTfWqUArHxDXQx9PHn4o+vib697qhj687SwcWyssvv6y/FHl7e+vShGvWrLFZxfLly3VAcept6tSpjpKzs2bNskVFRekAbMSIEbbdu3fbzKy246Fu8+bNc7xGBVZ//vOfdUk+f39/21VXXaWDD7O6+eabbe3atdP/j7Ru3Vr/O7AHFVY8HnU56XBMXAd9PH18dfTxNdG/1w19fN25qf80dtQDAAAAgLVZNscCAAAAgPMQWAAAAABoNAILAAAAAI1GYAEAAACg0QgsAAAAADQagQUAAACARiOwAAAAANBoBBYAAAAAGo3AAjCJ9u3by4svvmh0MwAATYA+Hi0BgQXQADfeeKNMmDBBb1988cUyY8aMZjuO7777roSGhp62f/369TJt2rRmawcAmBV9PNAwng38OQBOVlJSIt7e3g3++datWzu1PQAA56GPhxUwYgE08qrWihUr5KWXXhI3Nzd9O3jwoH5u+/btMmbMGAkMDJSoqCj5wx/+IBkZGY6fVSMdd9xxhx7taNWqlYwePVrvf/7556V3794SEBAgcXFx8uc//1ny8vL0cz/++KPcdNNNkp2d7fi8Rx55pNZh8qSkJBk/frz+/ODgYLn22mslLS3N8bz6uX79+skHH3ygfzYkJEQmTZokubm5/JsAAPp4oN4ILIBGUAHFsGHD5E9/+pMcPXpU31QwkJWVJcOHD5f+/fvLhg0bZPHixfpLvfpyX917772nRyl++ukneeONNyr/p3R3l7lz58qOHTv08z/88IM88MAD+rlzzz1XBw8qULB/3v33339auyoqKnRQcfz4cR34LF26VA4cOCDXXXddjdft379fvvjiC/nmm2/0Tb32qaee4t8EANDHA/XGVCigEdRVfhUY+Pv7S3R0tGP/K6+8ooOKJ5980rHvnXfe0UHHnj17pEuXLnpf586dZc6cOTXes3q+hhpJePzxx+W2226T1157TX+W+kw1UlH98061bNky2bZtmyQmJurPVN5//33p2bOnzsUYPHiwIwBRORtBQUH6sRpVUT/7xBNP8O8CgOXRxwP1w4gF0AS2bNkiy5cv19OQ7Ldu3bo5RgnsBg4ceNrPfv/99zJixAhp06aN/sKvvuxnZmZKQUFBnT9/165dOqCwBxVKjx49dNK3eq564GIPKpSYmBhJT09v0O8MAFZBHw/UjhELoAmonIhx48bJ008/fdpz6su7ncqjqE7lZ1xxxRVy++2361GD8PBwWbVqldxyyy068U+NjDiTl5dXjcdqJESNYgAAzow+HqgdgQXQSGp6Unl5eY19AwYMkM8++0yPCHh61v1/s40bN+ov9s8995zOtVD+85///Obnnap79+6SnJysb/ZRi507d+rcDzVyAQCoG/p4oO6YCgU0kgoe1q5dq0cbVNUnFRhMnz5dJ05PnjxZ5zSo6U9LlizRFZ3OFhR06tRJSktL5eWXX9bJ1qpikz2pu/rnqatlKhdCfV5tU6RGjhypK0tNmTJFNm3aJOvWrZMbbrhBLrroIhk0aBB/cwCgjwecjsACaCRVlcnDw0OPBKi1JFSZ19jYWF3pSQURo0aN0l/yVVK2ynGwj0TUpm/fvrrcrJpC1atXL5k/f77Mnj27xmtUZSiVzK0qPKnPOzX52z6l6csvv5SwsDC58MILdaDRoUMH+eSTT/h7AwB9PNAk3Gw2m61p3hoAAACAVTBiAQAAAKDRCCwAAAAANBqBBQAAAIBGI7AAAAAA0GgEFgAAAAAajcACAAAAQKMRWAAAAABoNAILAAAAAI1GYAEAAACg0QgsAAAAADQagQUAAAAAaaz/Bz2djdvOmEuHAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_accuracies(train_accs,test_accs,show=True)" ] }, { "cell_type": "markdown", "id": "c1da3ee6", "metadata": {}, "source": [ "The same pipeline is used for the gate-based versions of this model (a few different technical details can be found in the docstrings of the objects). To reproduce the figure of the experiments, follow the steps in [section 5](https://github.com/merlinquantum/reproduced_papers/blob/main/papers/nn_embedding/README.md#5-results) of the README.\n" ] } ], "metadata": { "kernelspec": { "display_name": "reproduce", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.12" } }, "nbformat": 4, "nbformat_minor": 5 }