{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Quantum Classifier\n",
"## Quantum Fashionista\n",
"### How to train a hybrid-quantum neural network to classify images of clothes.\n",
"\n",
"In this tutorial you will learn how to create and train a hybrid Convolutional Neural Network (CNN), which uses a Quantum Neural Network (QNN) layer as the final output layer. \n",
"As our training dataset we will use a smaller version of the well known [Fashion MNIST](https://github.com/zalandoresearch/fashion-mnist) dataset.\n",
"\n",
"## Table of contents:\n",
"- [Dataset preparation and exploration](#dataset-preparation)\n",
"- [Model creation](#model-building)\n",
"- [Model training and evaluation](#model-training-and-results)\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import warnings\n",
"warnings.simplefilter('ignore')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dataset Preparation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Dataset loading"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Fashion MNIST dataset contains a total of 10 different classes of clothes, but to make our network a bit smaller we will only use 4 of these classes. \n",
"In the cells below we will filter the dataset so that it only contains images of classes: 't-shirt','trousers','sneakers' and 'bag'"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import torchvision # Provides the dataset\n",
"import numpy as np #For efficient processing of large number matrices and more advanced math.\n",
"\n",
"interesting_labels = [0,1,7,8]\n",
"label_names = ['t-shirt','trousers','sneakers','bag']\n",
"\n",
"fashion_mnist = torchvision.datasets.FashionMNIST('./fmnist',download=True)\n",
"dset = [\n",
" (\n",
" np.array(x).astype(np.float32),\n",
" interesting_labels.index(y)\n",
" )\n",
" for x,y in fashion_mnist if y in interesting_labels\n",
" ]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To make our training faster we will only use 100 samples for training and another 100 samples to test our model in the end."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((200, 1, 28, 28), (200,))"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X,y = zip(*dset)\n",
"X = np.array(X)[:200]\n",
"y = np.array(y)[:200]\n",
"\n",
"X = X[:,np.newaxis,...] #Add a dimension to X.\n",
"X.shape,y.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you look closely at the code above you might notice that we added a new dimension to X. \n",
"This is because in PyTorch images fed into neural networks are expected to have a shape of $[\\text{channels}, \\text{width}, \\text{height}]$ (e.g $[3, 512, 512]$ for an RGB image of size $512\\times512$) and since our images were in grayscale they only had $[\\text{width}, \\text{height}]$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Dataset transformation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Input transformation\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Neural networks usually work better with smaller inputs centered around 0. \n",
"Since our inputs were images, any pixel can have a value in range $[0, 255]$, which can negatively affect training. \n",
"One common fix for this issue is *standarization*, which makes our data normally distributed with mean $0$ and standard deviation $1$."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Before transform: X values in range 0.0 - 255.0 with mean 66.94508361816406 and standard deviation 88.08759307861328\n",
"After transform: X values in range -0.7599831223487854 - 2.1348626613616943 with mean -7.785096456380813e-10 and standard deviation 1.0\n"
]
}
],
"source": [
"X_mean, X_std = X.mean(), X.std()\n",
"print(f\"Before transform: X values in range {X.min()} - {X.max()} with mean {X_mean} and standard deviation {X_std}\")\n",
"\n",
"X = (X - X_mean)/X_std\n",
"\n",
"print(f\"After transform: X values in range {X.min()} - {X.max()} with mean {X.mean()} and standard deviation {X.std()}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Target transformation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The output of single class *(input can be only one of n classes)* classifier neural networks is a probability distribution. \n",
"This clashes with our current form of the target variable, which is a whole number in range $[0,3]$. \n",
"To fix this issue we need to represent our target as a probability distribution, which is what **one-hot encoding** is all about. \n",
"\n",
"#### One-hot encoding\n",
"In general when we need to classify $n$ classes, one-hot encoding converts each target variable into a vector of length $n$ with $1$ at the index specified by the target and $0$ everywhere else. \n",
"Examples (assuming 4 classes):\n",
"- $0 \\rightarrow [1,0,0,0]$\n",
"- $1 \\rightarrow [0,1,0,0]$\n",
"- $2 \\rightarrow [0,0,1,0]$\n",
"- $3 \\rightarrow [0,0,0,1]$\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Before transform: [0 0 0 2]\n",
"After transform:\n",
"[[1. 0. 0. 0.]\n",
" [1. 0. 0. 0.]\n",
" [1. 0. 0. 0.]\n",
" [0. 0. 1. 0.]]\n"
]
}
],
"source": [
"y_onehot = np.zeros((len(y),y.max()+1),dtype=np.float32)\n",
"np.put_along_axis(y_onehot,y[np.newaxis].T,1,1)\n",
"\n",
"print(f\"Before transform: {y[:4]}\")\n",
"print(f\"After transform:\\n{y_onehot[:4]}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Target classes distribution"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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3q2hQ4fmmxh8qduVi/LcL4z5ySef6Ny5cwWOExoaqlOnTmnRokXFqn3+/Pny8fHRX//6V1dbhQoVNGjQoEtue6Gujz/+uMQTYx0Oh3r37l3k/j179lRwcLBr+d5771VERITmz59fov0X1fz581WhQgUNHjzYrf3xxx+XMUafffaZW3tCQoLq1KnjWo6Li5PT6dQPP/xQpnUCF0OQAcrIypUrlZCQoMDAQIWGhqpatWquuRIFBZnfy8jIUJ06dfKFhrp167ot79ixQ5KUlJSkatWquT3eeust5eTk5NtfUezatUuSdO211xZ726I899atW6tr164aNWqUqlatqs6dOys1NVU5OTmucR577DHVr19fHTp0UK1atfTwww8XaU5GRkaGIiIiFBQU5NYeGxt7yW27deumVq1aqW/fvgoPD9f999+vDz74oFihpmbNmsWa2FuvXj23ZS8vL9WtW/eS85cuV0ZGhmrUqOEWoqT/u9suIyPDrT0qKirfGJUqVdLPP/9cdkUCl8AcGaAM7Nq1S+3atVODBg00btw4RUZGys/PT/Pnz9f48ePzfShezh1KF8YaO3ZsobcC//4DvSwV9blf+CK4NWvWaN68eVq4cKEefvhhvfrqq1qzZo2CgoIUFham9PR0LVy4UJ999pk+++wzpaamqmfPnvr3v/9dJvUHBARo+fLlWrJkiT799FMtWLBA77//vtq2bavPP/9cFSpUKNIYpa2ws2C5ublFqqk0FLYf87uJwcCVRJABysC8efOUk5OjuXPnuv0WW9BE3cJER0fr+++/lzHG7UNs586dbv0unOp3Op1KSEi46JjF+QbbC+Nu2rTpkuP+VnGfe8uWLdWyZUu99NJLmjFjhh588EG999576tu3ryTJz89PnTp1UqdOnZSXl6fHHntM//rXv/Tcc8/lOzt1QXR0tBYvXqyTJ0+6hbht27YV6Tl4e3urXbt2ateuncaNG6e///3veuaZZ7RkyRIlJCSU+jcBXzirdoExRjt37lRcXJyrrVKlSgXedZWRkaFrrrnGtVyc2qKjo/XFF1/oxIkTbmdltm7d6loPlHdcWgLKwIXfXH/7m2pWVpZSU1OLPEZiYqL279+vuXPnutrOnDmjqVOnuvVr1qyZ6tSpo1deeUUnT57MN85PP/3k+ndgYKAkFembfW+44QbVrl1bEyZMyNf/Yr+BF/W5//zzz/nGuXBG6cLlpaNHj7qt9/b2dn24//YS1O/deeedOn/+vNst37m5uZo0aVKh21xw7NixfG2/r6s4r2NRvPvuuzpx4oRredasWTp48KA6dOjgaqtTp47WrFmjs2fPuto++eSTfLdpF6e2O++8U7m5uXr99dfd2sePHy8vLy+3/QPlFWdkgDJw++23u84k9O/fXydPntTUqVMVFhamgwcPFmmM/v376/XXX1f37t01ZMgQRUREaPr06fL395f0f795e3t766233lKHDh3UuHFj9e7dWzVr1tT+/fu1ZMkSOZ1OzZs3T9KvoUeSnnnmGd1///3y9fVVp06dXB9+v+Xt7a0pU6aoU6dOatq0qXr37q2IiAht3bpVmzdv1sKFCy/ruf/73//W5MmT9ec//1l16tTRiRMnNHXqVDmdTt15552SpL59++rYsWNq27atatWqpYyMDE2aNElNmza96Lcmd+rUSa1atdLf/vY37dmzR40aNdJHH31UpLlCo0eP1vLly9WxY0dFR0fr8OHDmjx5smrVqqVbbrlF0q+hIjQ0VG+88YaCg4MVGBioFi1aFDjXqSgqV66sW265Rb1791ZmZqYmTJigunXruk3s7tu3r2bNmqU77rhD9913n3bt2qX//ve/bpNvi1tbp06ddNttt+mZZ57Rnj17dN111+nzzz/Xxx9/rKFDh+YbGyiXPHfDFHD1KOj267lz55q4uDjj7+9vYmJizD/+8Q/zzjvv5Lv9OTo62nTs2LHAcX/44QfTsWNHExAQYKpVq2Yef/xx87///c9IMmvWrHHr+80335guXbqYKlWqGIfDYaKjo819991nFi9e7NbvhRdeMDVr1jTe3t5FuhV7xYoVpn379iY4ONgEBgaauLg4t9ttC7r9uijPfcOGDaZ79+4mKirKOBwOExYWZu666y6zfv161zizZs0yt99+uwkLCzN+fn4mKirK9O/f3xw8ePCiNRtjzNGjR02PHj2M0+k0ISEhpkePHuabb7655O3XixcvNp07dzY1atQwfn5+pkaNGqZ79+5m+/btbuN//PHHplGjRsbHx8dtzNatW5vGjRsXWFNht1/PnDnTDB8+3ISFhZmAgADTsWNHk5GRkW/7V1991dSsWdM4HA7TqlUrs379+nxjXqy2399+bYwxJ06cMMOGDTM1atQwvr6+pl69embs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LDGSTIsWLczSpUvN5s2bza233mpuvvlm1/YjRoww1113nWs5KSnJBAUFmR49ephNmzaZTZs2maNHj5patWqZ0aNHu2r5Iztw4IDx8fEx48aNM7t37zYbN240KSkp5sSJEyYpKck4nU7z6KOPmi1btph58+aZihUrmjfffNO1fd++fc3NN99sli9fbnbu3GnGjh1rHA6H2b59uzHGmB9//NGMHTvWfPPNN2bXrl3mtddeMxUqVDBr1651jdG6dWszZMgQY4wx06dPN8HBwWbevHnGGGPOnj1rGjZsaB5++GGzceNG8/3335sHHnjAxMbGmpycHGNMwcd53bp1pkKFCmbGjBlmz549ZsOGDWbixIlX6FX1jILeZ1988YWRZOLi4sznn39udu7caY4ePWoGDx5satSoYebPn282b95skpKSTKVKlczRo0eNMcakpqaakJAQt/Fnz55tfvtfc+PGjc1DDz1ktmzZYrZv324++OADk56ebowxZufOnSYwMNCMHz/ebN++3axcudJcf/31plevXq7to6OjjdPpNK+88orZuXOn6+cnMjLSLF++3OzZs8d89dVXZsaMGWX/4l0lWrdubYKCgsyQIUPM1q1bzX//+1+39+zbb79t5s+fb3bt2mVWr15t4uPjTYcOHVzb//DDD8bX19c88cQTZuvWrWbmzJmmZs2aRpL5+eefPfSs7EWQucr89sOqME2aNDEjR44scN2FIPPFF1+42j799FMjyZw+fdoYU3CQCQ8Pd33gXRAdHW3Gjx9foudxtUlLSzOSzJ49e/KtS0pKMtHR0W6h8y9/+Yvp1q2bMcaYjIwMU6FCBbN//3637dq1a2eGDx9e6D47duxoHn/8cdfyhZ+N119/3YSEhJilS5e61v3nP/8xsbGxJi8vz9WWk5NjAgICzMKFC111/v44/+9//zNOp9NkZ2cX9aW4Kvz+fXbhfTNnzhxX28mTJ42vr6+ZPn26q+3s2bOmRo0a5p///KcxpmhBJjg42EybNq3AOvr06WMeeeQRt7avvvrKeHt7u96v0dHR5p577nHrM2jQINO2bVu3442ia926tWnYsKHb6/fUU0+Zhg0bFth/3bp1RpI5ceKEq++1117r1ueZZ54hyJQQl5auco0bN1ZQUJCCgoLUoUMHSdLgwYP14osvqlWrVhoxYoQ2btyYb7u4uDjXvyMiIiQp36nR32rSpIn8/PxKufqrx3XXXad27dqpSZMm+stf/qKpU6fq559/dq1v3LixKlSo4FqOiIhwvd7fffedcnNzVb9+fdexDAoK0rJly7Rr1y5JUm5url544QU1adJElStXVlBQkBYuXKi9e/e61TFr1iwNGzZMixYtUuvWrV3t3377rXbu3Kng4GDX+JUrV9aZM2dc+5DyH+f27dsrOjpa11xzjXr06KHp06frl19+Kd0XzyLNmzd3/XvXrl06d+6cWrVq5Wrz9fXVTTfdpC1bthR5zOTkZPXt21cJCQl6+eWX3Y7Ht99+q2nTprn9XCQmJiovL0+7d+8usC7p18tj6enpio2N1eDBg/X555+X5On+obVs2dLtEmB8fLx27Nih3NxcpaWlqVOnToqKilJwcLDrvXbh/bht2zbdeOONbuPddNNNV674qwxB5io3f/58paenKz09XW+99ZYkqW/fvvrhhx/Uo0cPfffdd2revLkmTZrktp2vr6/r3xferHl5eYXuJzAwsAyqv3pUqFBBixYt0meffaZGjRpp0qRJio2NdX3Y/Pb1ln59zS+83idPnlSFChWUlpbmOpbp6enasmWLJk6cKEkaO3asJk6cqKeeekpLlixRenq6EhMT803svP7661WtWjW98847ruv5F/bRrFkzt/HT09O1fft2PfDAA65+vz/OwcHB2rBhg2bOnKmIiAg9//zzuu666/6w1/mL+z7w9vZ2Ow6S3OZGSb/OSdu8ebM6duyoL7/8Uo0aNdLs2bMl/Xrc+vfv73bMvv32W+3YsUN16tQptK4bbrhBu3fv1gsvvKDTp0/rvvvuu+rnNl0pZ86cUWJiopxOp6ZPn65169a5jhcTrctGuf/r1ygePz8/5ebmupajo6ML7BcZGalHH31Ujz76qIYPH66pU6dq0KBBZVrLH52Xl5datWqlVq1a6fnnn1d0dLTrP7iLuf7665Wbm6vDhw/r1ltvLbDPypUr1blzZz300EOSfg2d27dvV6NGjdz61alTR6+++qratGmjChUq6PXXX5f06wfb+++/r7CwMDmdzmI9Lx8fHyUkJCghIUEjRoxQaGiovvzyS3Xp0qVY49ikKD/bderUkZ+fn1auXOl6H547d07r1q1z3bpdrVo1nThxQqdOnXKFjfT09Hxj1a9fX/Xr19ewYcPUvXt3paam6s9//rNuuOEGff/996pbt26xn4PT6VS3bt3UrVs33Xvvvbrjjjt07NgxVa5cudhj/RGtXbvWbXnNmjWqV6+etm7dqqNHj+rll19WZGSkJLlNzpak2NjYfDdY/HYSOIqHMzJXmZiYGK1du1Z79uzRkSNHCjyLMnToUC1cuFC7d+/Whg0btGTJEjVs2LBMalm+fLn279+vI0eOlPr4Nlm7dq3+/ve/a/369dq7d68++ugj/fTTT0V63evXr68HH3xQPXv21EcffaTdu3fr66+/1pgxY/Tpp59KkurVq6dFixZp1apV2rJli/r376/MzMxCx1uyZIn+97//uT5QH3zwQVWtWlWdO3fWV199pd27d2vp0qUaPHiwfvzxx0Jr++STT/Taa68pPT1dGRkZevfdd5WXl+e6o+lqVZT3WWBgoP7617/qySef1IIFC/T999+rX79++uWXX9SnTx9JUosWLVSxYkU9/fTT2rVrl2bMmKFp06a5xjh9+rQGDhyopUuXKiMjQytXrtS6detcPzdPPfWUVq1apYEDByo9PV07duzQxx9/rIEDB160/nHjxmnmzJnaunWrtm/frg8//FDVq1fPdwcVCrd3714lJydr27ZtmjlzpiZNmqQhQ4YoKipKfn5+mjRpkn744QfNnTtXL7zwgtu2/fv319atW/XUU09p+/bt+uCDD1zHnTs8S8DTk3RQurZt22ZatmxpAgICjCSze/fufH0GDhxo6tSpYxwOh6lWrZrp0aOHOXLkiDHm/yYt/nbC2TfffOM2VkGTfTt37pxvP6tXrzZxcXHG4XCYP/qP2vfff28SExNNtWrVjMPhMPXr1zeTJk0yxhT8+g0ZMsS0bt3atXz27Fnz/PPPm5iYGOPr62siIiLMn//8Z7Nx40ZjjDFHjx41nTt3NkFBQSYsLMw8++yzpmfPnm7j/n6C6vfff2/CwsJMcnKyMcaYgwcPmp49e5qqVasah8NhrrnmGtOvXz+TlZVVaJ1fffWVad26talUqZIJCAgwcXFx5v333y+dF60c+/37LDU1tcCJmqdPnzaDBg1yvaatWrUyX3/9tVuf2bNnm7p165qAgABz1113mTfffNP1fsnJyTH333+/iYyMNH5+fqZGjRpm4MCBrom8xhjz9ddfm/bt25ugoCATGBho4uLizEsvveRaX9Ck+zfffNM0bdrUBAYGGqfTadq1a2c2bNhQui/SVax169bmscceM48++qhxOp2mUqVK5umnn3ZN/p0xY4aJiYkxDofDxMfHm7lz5xpJ5ptvvnGN8fHHH5u6desah8Nh2rRpY6ZMmeJ2UwWKzsuY312gBQAAV9RLL72kN954Q/v27fN0KdZhjgwAAFfY5MmTdeONN6pKlSpauXKlxo4de8lLgigYQQYAgCtsx44devHFF3Xs2DFFRUXp8ccf1/Dhwz1dlpW4tAQAAKzFXUsAAMBaBBkAAGAtggwAALAWQQYAAFiLIAMAAKxFkAEAANYiyAAAAGsRZAAAgLX+P6OymTLjSlodAAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#For creating charts from data.\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"sns.histplot([label_names[y_single] for y_single in y])\n",
"plt.title('Target class distribution')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As you can see the distribution of target classes is roughly equal and there are no imbalances. \n",
"This means that the minimum goal of our neural network is to beat the accuracy of $25\\%$ (we would get this accuracy by simply picking a random answer each time)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sample inputs visualization\n",
"\n",
"Below you can see one example of each class with a corresponding label"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABiIAAAFeCAYAAAAIZQePAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPFFJREFUeJzt3XmUXnWZ4PGn9qqkUtkrCQlJSMIaEyDhABokJJFEUBAREHBsWkeFQZTudoQZkQMIygEHUaGxEUaWFpGlRZtGdkECCA2yiEmAGAIEyL4vlUotd/5wKDsENA96UwE+n3M43Sm/detX73KX96m3qqIoiiIAAAAAAABKUNndCwAAAAAAAN69DCIAAAAAAIDSGEQAAAAAAAClMYgAAAAAAABKYxABAAAAAACUxiACAAAAAAAojUEEAAAAAABQGoMIAAAAAACgNAYRAAAAAABAaQwieMe6+uqro6KiIh5//PG/2B500EFx0EEHlb8oAACANzFy5Mj46Ec/2t3LAKCbnH322VFRURHLli3r7qVAtzCIYJt5+OGH4+yzz45Vq1Z191L+rNmzZ8fZZ58dL774YncvBeA9551yrAAAAAC2nkEE28zDDz8c55xzTre8uHTXXXfFXXfdtVXt7Nmz45xzzjGIAOgG3XmsAAAAAMphEMF7Qm1tbdTW1v7ZZuPGjdHZ2bmNVgTAX6OzszM2btzY3ctIK4oiWlpaunsZALwLrV+/vruXAADwlgwi2CbOPvvs+OpXvxoRETvttFNUVFRERUXFn33XwU9/+tOYOHFi9OrVK5qammLcuHHxve99b4uutbU1/umf/ikGDhwYPXv2jI9//OOxdOnSzZo3/o2I+++/PyoqKuKnP/1pfP3rX4+hQ4dGjx494vvf/34cffTRERExZcqUrnXef//9f/VtAMCf9+eOFRUVFXHKKafEddddF2PHjo26urq44447IiLiySefjEMOOSSampqisbExpk2bFo888sgW266oqNjia77+94b+6/Ho8ccfjxkzZsSAAQOioaEhdtppp/jsZz+72ed1dnbGd7/73Rg7dmzU19fHoEGD4sQTT4yVK1du1r3++8DvvPPO2GeffaKhoSEuv/zyiIi4++6744ADDog+ffpEY2Nj7LrrrvG1r33tr74dAd7L1q5dG//wD/8QI0eOjLq6umhubo6DDz44nnjiiYj443XB+973vpg9e3ZMmTIlevToEUOHDo0LL7xwi221trbGWWedFWPGjIm6urrYcccd47TTTovW1tbNuquuuiqmTp0azc3NUVdXF3vssUf84Ac/2Kr1XnPNNVFdXd11/IuIePTRR+PDH/5w9O7dO3r06BGTJ0+Ohx56aLPPe/24Nnv27Dj++OOjb9++ccABB0RExKJFi+Izn/lMDBs2LOrq6mLIkCHxsY99zDu+AbYTy5Yti2OOOSaampqif//+ceqpp272Q1Zbe1zp7OyMs88+O3bYYYfo0aNHTJkyJWbPnh0jR46Mv//7v9+G3xFsneruXgDvDUceeWQ8//zzcf3118fFF18cAwYMiIiIgQMHvml/9913x3HHHRfTpk2LCy64ICIi5syZEw899FCceuqpm7Vf+tKXom/fvnHWWWfFiy++GN/97nfjlFNOiRtuuOEvruvcc8+N2tra+J//839Ga2trTJ8+Pb785S/H97///fja174Wu+++e0RE1/8FoDx/6Vjxq1/9Km688cY45ZRTYsCAATFy5MiYNWtWfPCDH4ympqY47bTToqamJi6//PI46KCD4te//nXst99+qTUsWbIkpk+fHgMHDoz/9b/+V/Tp0ydefPHF+NnPfrZZd+KJJ8bVV18dn/nMZ+LLX/5yzJ8/Py699NJ48skn46GHHoqampqu9rnnnovjjjsuTjzxxPj85z8fu+66a8yaNSs++tGPxvjx4+Mb3/hG1NXVxR/+8IctXmgCIOekk06Km2++OU455ZTYY489Yvny5fHggw/GnDlzYsKECRERsXLlyvjwhz8cRx55ZBxzzDFx8803x+mnnx7jxo2LQw45JCL++OLO4YcfHg8++GB84QtfiN133z2eeeaZuPjii+P555+Pn//8511f8wc/+EGMHTs2Dj/88Kiuro5bb701Tj755Ojs7IwvfvGLb7nWH/7wh3HSSSfF1772tTjvvPMi4o/HukMOOSQmTpwYZ511VlRWVna9IDVz5szYd999N9vG0UcfHTvvvHN861vfiqIoIiLiE5/4RMyaNSu+9KUvxciRI2PJkiVx9913x8svvxwjR478G97aALwdxxxzTIwcOTLOP//8eOSRR+L73/9+rFy5Mq699tqI2Prjyv/+3/87LrzwwjjssMNixowZ8fTTT8eMGTPeke8c5z2igG3k29/+dhERxfz58/9ie+qppxZNTU1Fe3v7WzZXXXVVERHFhz70oaKzs7Pr4//4j/9YVFVVFatWrer62OTJk4vJkyd3/fu+++4rIqIYNWpUsWHDhs22e9NNNxURUdx3331b/b0B8LfxVseKiCgqKyuLWbNmbfbxI444oqitrS3mzZvX9bHXXnut6NWrV3HggQd2feyss84q3uy05/Vjyetf75Zbbikionjsscfeco0zZ84sIqK47rrrNvv4HXfcscXHR4wYUUREcccdd2zWXnzxxUVEFEuXLn3LrwNAXu/evYsvfvGLb/m/T548uYiI4tprr+36WGtrazF48ODiE5/4RNfH/vVf/7WorKwsZs6cudnn/8u//EsREcVDDz3U9bE3Xk8URVHMmDGjGDVq1GYfGzFiRPGRj3ykKIqi+N73vldUVFQU5557btf/3tnZWey8887FjBkzNru+2bBhQ7HTTjsVBx98cNfHXj+uHXfccZt9jZUrVxYRUXz7299+y9sAgO7x+r778MMP3+zjJ598chERxdNPP10UxdYdVxYtWlRUV1cXRxxxxGbd2WefXUREccIJJ/ztvwH4K/nVTGyX+vTpE+vXr4+77777L7Zf+MIXNvt1Gx/84Aejo6MjXnrppb/4uSeccEI0NDT8VWsFYNuYPHly7LHHHl3/7ujoiLvuuiuOOOKIGDVqVNfHhwwZEscff3w8+OCDsWbNmtTX6NOnT0RE/Md//Ee0tbW9aXPTTTdF79694+CDD45ly5Z1/Tdx4sRobGyM++67b7N+p512ihkzZrzp1/nFL37h7xMB/A316dMnHn300XjttdfesmlsbIz/9t/+W9e/a2trY999940XXnih62M33XRT7L777rHbbrtttq+fOnVqRMRm+/r/ej2xevXqWLZsWUyePDleeOGFWL169RZf/8ILL4xTTz01Lrjggvj617/e9fGnnnoq5s6dG8cff3wsX76862uuX78+pk2bFg888MAWx4yTTjpps383NDREbW1t3H///Vv8ukAAtg9vfLfcl770pYiI+OUvfxkRW3dcuffee6O9vT1OPvnkN90WbI8MIuhWK1asiEWLFnX99/oO9eSTT45ddtklDjnkkBg2bFh89rOf7fpd4G80fPjwzf7dt2/fiIitOvHeaaed/srvAIBt5Y377KVLl8aGDRti11133aLdfffdo7OzMxYsWJD6GpMnT45PfOITcc4558SAAQPiYx/7WFx11VWb/T7wuXPnxurVq6O5uTkGDhy42X/r1q2LJUuW/Nl1R0R88pOfjEmTJsXnPve5GDRoUBx77LFx4403GkoA/JUuvPDC+P3vfx877rhj7LvvvnH22WdvNmCIiBg2bNgWfzeob9++m10/zJ07N2bNmrXFfn6XXXaJiNhsX//QQw/Fhz70oejZs2f06dMnBg4c2PU3f944iPj1r38dp59+epx++umb/V2I179mxB9/WOqNX/fKK6+M1tbWLbb3xmNMXV1dXHDBBXH77bfHoEGD4sADD4wLL7wwFi1atNW3IQDl2nnnnTf79+jRo6OysrLrb/lszXHl9R++HTNmzGbb6tevX9frYrC98Tci6FZHHnlk/PrXv+769wknnBBXX311NDc3x1NPPRV33nln3H777XH77bfHVVddFX/3d38X11xzzWbbqKqqetNtF///d6T+Od4NAfDO8dfss9/sD1VH/PFdFW/sbr755njkkUfi1ltvjTvvvDM++9nPxkUXXRSPPPJINDY2RmdnZzQ3N8d11133ptt8498/erN1NzQ0xAMPPBD33Xdf3HbbbXHHHXfEDTfcEFOnTo277rrrLY9tAPx5xxxzTHzwgx+MW265Je6666749re/HRdccEH87Gc/6/r7D1tz/dDZ2Rnjxo2L73znO2/a7rjjjhERMW/evJg2bVrstttu8Z3vfCd23HHHqK2tjV/+8pdx8cUXbzFgHjt2bKxatSr+9V//NU488cTNBgmvt9/+9rdjr732etOv29jYuNm/3+wY8w//8A9x2GGHxc9//vO4884748wzz4zzzz8/fvWrX8Xee+/9ptsFoPv812uV7HEF3kkMIthm3uxFoIsuumiznzzaYYcduv7/2traOOyww+Kwww6Lzs7OOPnkk+Pyyy+PM888c4uJb9nrBGDbyOyDBw4cGD169Ijnnntui//t2WefjcrKyq4Xil7/qaBVq1Z1/VqkiHjLX+O3//77x/777x/f/OY34yc/+Ul86lOfip/+9Kfxuc99LkaPHh333HNPTJo06a8ajlRWVsa0adNi2rRp8Z3vfCe+9a1vxRlnnBH33XdffOhDH3rb2wV4rxsyZEicfPLJcfLJJ8eSJUtiwoQJ8c1vfrNrELE1Ro8eHU8//XRMmzbtzx6bbr311mhtbY1///d/3+yd2m/8NX2vGzBgQNx8881xwAEHxLRp0+LBBx/sugYaPXp0REQ0NTX91ceB0aNHx1e+8pX4yle+EnPnzo299torLrroovjxj3/8V20XgL/e3LlzNxtE/+EPf4jOzs4YOXLkVh9XRowY0fW5/3Vby5cv96v52G751UxsMz179oyIP74I9LqJEyfGhz70oa7/Xv/d38uXL9/scysrK2P8+PEREZv9eoxttU4Ato3MPriqqiqmT58ev/jFL7rexhwRsXjx4vjJT34SBxxwQDQ1NUXEn17ceeCBB7q69evXb/Euu5UrV27xjrrXfyr19ePPMcccEx0dHXHuuedusab29vatWvuKFSu2+Ngbvw4AOR0dHVv86qLm5ubYYYcd0vvWY445Jl599dW44oortvjfWlpaYv369RHxp3dX/Ndjx+rVq+Oqq656y20PGzYs7rnnnmhpaYmDDz6469pn4sSJMXr06Pg//+f/xLp167b4vKVLl/7FdW/YsCE2bty42cdGjx4dvXr1cnwB2E788z//82b/vuSSSyIi4pBDDtnq48q0adOiuro6fvCDH2z28UsvvbSMJcPfhHdEsM1MnDgxIiLOOOOMOPbYY6OmpiYOO+ywrhed/qvPfe5zsWLFipg6dWoMGzYsXnrppbjkkktir732it13373Ude61115RVVUVF1xwQaxevTrq6upi6tSp0dzcXOrXBeCtjxVv5bzzzou77747DjjggDj55JOjuro6Lr/88mhtbY0LL7ywq5s+fXoMHz48/vt//+/x1a9+NaqqquJHP/pRDBw4MF5++eWu7pprronLLrssPv7xj8fo0aNj7dq1ccUVV0RTU1MceuihEfHHvyNx4oknxvnnnx9PPfVUTJ8+PWpqamLu3Llx0003xfe+97046qij/uz3+Y1vfCMeeOCB+MhHPhIjRoyIJUuWxGWXXRbDhg2LAw444K+5CQHes9auXRvDhg2Lo446Kvbcc89obGyMe+65Jx577LG46KKLUtv69Kc/HTfeeGOcdNJJcd9998WkSZOio6Mjnn322bjxxhvjzjvvjH322SemT5/e9U7uE088MdatWxdXXHFFNDc3x8KFC99y+2PGjIm77rorDjrooJgxY0b86le/iqamprjyyivjkEMOibFjx8ZnPvOZGDp0aLz66qtx3333RVNTU9x6661/dt3PP/98TJs2LY455pjYY489orq6Om655ZZYvHhxHHvssanbAIByzJ8/Pw4//PD48Ic/HL/5zW/ixz/+cRx//PGx5557Rn19/VYdVwYNGhSnnnpqXHTRRV3bevrpp+P222+PAQMG+G0fbJ8K2IbOPffcYujQoUVlZWUREcX8+fPftLv55puL6dOnF83NzUVtbW0xfPjw4sQTTywWLlzY1Vx11VVFRBSPPfbYZp973333FRFR3HfffV0fmzx5cjF58uQtmptuuulNv/4VV1xRjBo1qqiqqtpiWwCU682OFRFRfPGLX3zT/oknnihmzJhRNDY2Fj169CimTJlSPPzww1t0v/3tb4v99tuv67jyne98p+tY8vrx6IknniiOO+64Yvjw4UVdXV3R3NxcfPSjHy0ef/zxLbb3wx/+sJg4cWLR0NBQ9OrVqxg3blxx2mmnFa+99lpXM2LEiOIjH/nIFp977733Fh/72MeKHXbYoaitrS122GGH4rjjjiuef/75t3mrAdDa2lp89atfLfbcc8+iV69eRc+ePYs999yzuOyyy7qayZMnF2PHjt3ic0844YRixIgRm31s06ZNxQUXXFCMHTu2qKurK/r27VtMnDixOOecc4rVq1d3df/+7/9ejB8/vqivry9GjhxZXHDBBcWPfvSjLa533uyY8Oijjxa9evUqDjzwwGLDhg1FURTFk08+WRx55JFF//79i7q6umLEiBHFMcccU9x7771dn3fWWWcVEVEsXbp0s+0tW7as+OIXv1jstttuRc+ePYvevXsX++23X3HjjTemb08A/rZe33fPnj27OOqoo4pevXoVffv2LU455ZSipaWlq9va40p7e3tx5plnFoMHDy4aGhqKqVOnFnPmzCn69+9fnHTSSd3wHcKfV1EUW/EXfQEAAAAA2G6tWrUq+vbtG+edd16cccYZ3b0c2Iy/EQEAAAAA8A7S0tKyxce++93vRkTEQQcdtG0XA1vB34gAAAAAAHgHueGGG+Lqq6+OQw89NBobG+PBBx+M66+/PqZPnx6TJk3q7uXBFgwiAAAAAADeQcaPHx/V1dVx4YUXxpo1a7r+gPV5553X3UuDN+VvRAAAAAAAAKXxNyIAAAAAAIDSGEQAAAAAAAClMYgAAAAAAABK449VExERS5YsSfWnnHJKqj/hhBNS/fve975UX12dfyhnP2fevHmp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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(20,4))\n",
"for i in range(4):\n",
" ax = fig.add_subplot(1,4,i+1)\n",
" first_index = np.where(y == i)[0][0]\n",
" sns.heatmap(X[first_index][0], cmap='Greys',cbar=False,xticklabels=False,yticklabels=False,ax=ax)\n",
" ax.set_title(label_names[y[first_index]])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Dataset split\n",
"\n",
"Our final action is to split the dataset into 2 subsets: train and test. Our model will only learn from the train dataset and we will evaluate its performance on unseen data with the test dataset. "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X_train,X_test,y_train,y_test = train_test_split(X,y_onehot,test_size=0.5,shuffle=True,stratify=y_onehot) #Half to train, half to test. Keep the distribution the same with stratification."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Model building"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Quantum neural network for the quantum layer"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In hybrid neural networks, a quantum layer is a pure quantum neural network with its own set of weights, receiving input from the layer above. \n",
"The architectures of QNNs are still heavily researched and an example network is provided below. "
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABXgAAAEvCAYAAAD/z6lrAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWxlJREFUeJzt3Xd4FNX+x/HPpndqIEAgtAQIXZoU6dKLCgqKXcGG7Spg+Sl49QIXu9ivIjYQBBSQjqH3Ir0noYQkQGghIX3390fMknXTIdlMeL+ehwd2Zs7Md5ezZ85898wZk8VisQgAAAAAAAAAYDhOjg4AAAAAAAAAAFA0JHgBAAAAAAAAwKBI8AIAAAAAAACAQZHgBQAAAAAAAACDIsELAAAAAAAAAAZFghcAAAAAAAAADIoELwAAAAAAAAAYFAleAAAAAAAAADAoErwAAAAAAAAAYFAkeAEAAAAAAADAoEjwAgAAAAAAAIBBkeAFAAAAAAAAAIMiwQsAAAAAAAAABkWCFwAAAAAAAAAMigQvAAAAAAAAABgUCV4AAAAAAAAAMCgSvAAAAAAAAABgUCR4AQAAAAAAAMCgSPACAAAAAAAAgEGR4AUAAAAAAAAAgyLBCwAAAAAAAAAGRYIXAAAAAAAAAAyKBC8AAAAAAAAAGBQJXgAAAAAAAAAwKBK8AAAAAAAAAGBQJHgBAAAAAAAAwKBI8AIAAAAAAACAQZHgBQAAAAAAAACDIsELAAAAAAAAAAZFghcAAAAAAAAADIoELwAAAAAAAAAYFAleAAAAAAAAADAoErwAAAAAAAAAYFAkeAEAAAAAAADAoEjwAgAAAAAAAIBBkeAFAAAAAAAAAIMiwQsAAAAAAAAABuXi6ABudhaLRelJKY4OA8XExdNdJpPJoTFQx5Af6imA4lLQ9oU2oGxz9HmG+oX8OLqOStRToCwrahtjsViUkZFRDBEVH2dnZ4e3pzcrErwOlp6Uop/r3e/oMFBMRoT/JFcvD4fGQB1DfqinAIpLQdsX2oCyzdHnGeoX8uPoOipRT4GyrKhtTEZGhubOnVsMERWfIUOGyMWFVKMjMEUDAAAAAAAAABgUCV4AAAAAAAAAMCgSvAAAAAAAAABgUCR4AQAAAAAAAMCgSPACAAAAAAAAgEGR4AUAAAAAAAAAgyLBCwAAAAAAAAAGRYIXAAAAAAAAAAyKBC8AAAAAAAAAGBQJXgAAAAAAAAAwKBK8AAAAAAAAAPJkNptlNpsdHQZy4OLoAAAAAAAAAAAUj+TkZJ04cUKRkZG6cuWK0tPT5ebmpsqVK6tu3bqqXr26nJ2d89yH2WzWN998I5PJpMcee0xOTowZLU1I8AIAAAAAAABlSGpqqjZu3KiVK1cqPDxcFosl123d3NzUsmVL9erVS6GhoTKZTDbrs5K7YWFhkiRnZ2c9+uijxRo/CuemSLfHxcVp7Nixql+/vjw8PFSzZk09//zzSkxM1GOPPSaTyaRPP/3U0WECAAAAAAAARZaRkaHff/9dTz31lL788ksdO3Ysz+SulJkM3rJli95++229/PLL2r17t3XdP5O7Tk5OatiwYbG+BxRemR/Bu2vXLvXt21exsbHy9vZWaGiooqOj9cknnyg8PFwXLlyQJLVo0cKxgebFZFLoyP5q8MDt8gn0V/L5eEUu3KhdU2YpPSnF0dHB6KhfMALqKXBzow1AcaOOwQiopwDycerUKX3xxReKiIiwWR4YGKiQkBDVqVNHVapUkbOzs1JSUhQVFaXIyEgdOHBA8fHxkqTTp09r0qRJ6tatm0aMGKEZM2bYJHdHjx6tDh06lPh7Q97KdII3Li5OAwcOVGxsrF566SWNHz9evr6+kqQpU6Zo3LhxcnFxkclkUrNmzRwcbe7a/vthhT7eXycWb9G+LxeqfHANhT7WT5Wa1NGye/4t5fNLDJAX6heMgHoK3NxoA1DcqGMwAuopgLxs27ZNn3zyidLS0iRJJpNJnTp1Uq9evVS/fn27aRckqVWrVpKk9PR0bd26VUuWLNHRo0clSatWrdLmzZuVlJQkieRuaVemE7zPPfecoqKiNHr0aL333ns268aOHasZM2Zo9+7dqlOnjvz8/BwUZd7KhwSq0aN9dXzRZq1+/Np7uHLyrG79z2Oqc0dHRf623oERwsioXzAC6ilwc6MNQHGjjsEIqKcA8rJ161Z99NFHMpvNkqQaNWroqaeeUv369QtU3sXFRR06dFD79u0VFhamH3/8UcnJySR3DaTMzsF78OBBzZo1S5UrV9akSZNy3Cbrl4rmzZvbLI+MjNSgQYPk6+urChUq6MEHH9T58+eLPeac1Lmzk0xOTjrwv0U2y4/+vFJpV5NVb0hnh8SFsoH6BSOgngI3N9oAFDfqGIyAegogN+Hh4frkk0+syd1OnTpp0qRJBU7uZmcymdStWze1bNnSZnm5cuWsOTSUTmU2wTtz5kyZzWaNGDFCPj4+OW7j6ekpyTbBe+XKFXXr1k1RUVGaOXOmvv76a61bt04DBgywfllKUuUW9WXOyFDcX0dtlmekpOnCvuOq3KJeiceEsoP6BSOgngI3N9oAFDfqGIyAegogJ6mpqfr888+Vnp4uSercubOefvppubm5FWl/WQ9U27Rpk83yixcv6pdffrnueFF8ymyCN2sC6G7duuW6TVRUlCTbBO/XX3+t06dP6/fff9eAAQN09913a8aMGdq8ebMWLFhQvEHnwKtqBaVcuCJzarrduquxF+RRqZycXMv0TBsoRtQvGAH1FLi50QaguFHHYATUUwA5mTt3rk6fPi1Jqlu3rkaNGiUnp6Kl+rKSu9kfqPbAAw/I1dVVkrR06VIdPHjwxgSOG67MngFOnDghSQoKCspxfXp6ujZs2CDJNsH7xx9/qFOnTqpVq5Z1Wfv27VW3bl0tXLhQd9xxR6Fjad26tWJjY3Nc52px0ni1zbWss6e7MlLTclyXkZK53MXTTalp9id6OF5IcIjSTCU/8ju7vOoY9QsS9RRA8Slo+0IbULY5+jxDfxv5cXQdlainQFlW1DbGzc0t1ylHJeny5ctatChz2hZnZ2c99dRTcnEpWpovp+Ru1py7FotFP/30kywWi2bPnq3x48fnup+QkBClpqYWKQZIAQEB2r59e5HKltkEb2JioiRZJ4T+p1mzZikuLk6+vr6qU6eOdfmBAwd09913223fuHFjHThwoEixxMbGWn9R+Sc3k7NUNfeyGUkpcvUul+M6Z/fMX1HSk/jylFbRMdFKtWQ4NIa86hj1CxL1FEDxKWj7QhtQtjn6PEN/G/lxdB2VqKdAWVbUNsbd3T3P9atXr7ZOzdCnTx/VrFmzSPHlldyVpH79+iksLEzR0dE6ePCgTp06leuxoqOjlZKSUqQ4cH3KbII3ICBAFy9e1M6dO9W+fXubdTExMRozZowkqVmzZjKZTNZ1Fy9eVPny5e32V7FiRR0+fLjIseTG1eIk5fFDztUzF1UuJFBObi52t+N4BVRU8vnLMvMrbalVvVr1UjEaILc6Rv2CRD0FUHwK2r7QBpRtjj7P0N9GfhxdRyXqKVCWFbWNyWseXbPZrBUrVkjKfDDa7bffXqTY8kvuZi3r1auXpk+fLklasWKFHn300Rz3V716dUbwXoe88of5KbMJ3p49e+rgwYP673//q9tvv10hISGSpG3btumBBx5QXFycJKlFixbFHktew6vTribr53r357o+btcx1ejaQpVbBuvslmtznTi7u6pik9o6s5n5T0qzI0ePyNXLw6Ex5FXHqF+QqKcAik9B2xfagLLN0ecZ+tvIj6PrqEQ9BcqyorYx6enpmjt3bo7rYmJirHmtJk2aFCkxWJDkbpbOnTvr559/Vlpamvbs2ZPrPo8cOVLkaSJwfcrsQ9bGjh2rSpUq6dSpU2rcuLGaNm2q4OBgtW3bVnXr1lX37t0l2c6/K0kVKlTQpUuX7PZ34cIFVaxYsSRCtxE5f6MsZrNCR/a3WR48oqdcvTwUMW9ticeEsoP6BSOgngI3N9oAFDfqGIyAegogu8jISOu/Q0NDC12+MMldSfLy8rI+4yo2NlZXr14tQtQoTmU2rR4YGKh169ZpzJgxWrNmjY4fP67Q0FB99dVXGjlypOrVqyfJPsHbqFGjHOfaPXDggDp37lwisWd36dBJHfpuqRo91k/dvh2jqD93qlxwDYU+1k+xG/crYt76Eo8JZQf1C0ZAPQVubrQBKG7UMRgB9RRAdhEREdZ/Z3+uVEEUNrmbpW7dujp27JikzARz48aNCxk1ilOZTfBKmcnaP/74w255QkKCjh8/LicnJzVp0sRm3YABA/Taa68pKipKgYGBkqQtW7YoPDxc7777bonE/U9b35yuhFPnFHJ/TwX2uEXJF+J1cNoS/TVllmSxOCQmlB3ULxgB9RS4udEGoLhRx2AE1FMAWS5evGj9d7Vq1QpcrqjJ3X8eJ/vxUTqU6QRvbvbv3y+LxaKQkBB5eXnZrBs1apSmTp2qwYMH66233lJycrLGjh2rtm3bavDgwQ6J12I2a/9XC7X/q4UOOT7KNuoXjIB6CtzcaANQ3KhjMALqKYAs7du3tz7QzNfXt8Dl1q9fX6TkriTVq1dPgwcPlpubm2rWrFmkuFF8bsoE7969eyXZT88gSX5+fgoLC9Pzzz+v4cOHy8XFRQMGDNCHH34oJ6cyO2UxAAAAAAAADKBt27Zq27Ztoct16tRJBw4c0Nq1awuV3JWkkJAQhYSEFPqYKBkkeHNQr169HKd2AAAAAAAAAIzIyclJo0aNUo8ePRQcHOzocHAD3ZRDUvNL8AIAAAAAAABljZOTE8ndMuimHMGbNd8IAAAAAAAAABjZTTmCFwAAAAAAAADKAhK8AAAAAAAAAGBQJHgBAAAAAAAAwKBI8AIAAAAAAACAQZHgBQAAAAAAAACDIsELAAAAAAAAAAZFghcAAAAAAAAADIoELwAAAAAAAAAYFAleAAAAAAAAADAoErwAAAAAAAAAYFAkeAEAAAAAAADAoFwcHQAAAAAAAACAa5ydnTVkyJAbtr93v5qlK4mJ8vX21pgnhtm9vhGcnZ1vyH5QeCR4AQAAAAAAgFLEZDLJxeXGpe0sksyWzL9dXFzsXsPYmKIBAAAAAAAAAAyKBC8AAAAAAAAAGBQJXgAAAAAAAAAwKBK8AAAAAAAAAGBQJHgBAAAAAAAAwKBI8AIAAAAAAACAQZHgBQAAAAAAAACDIsELAAAAAAAAAAZFghcAAAAAAAAADIoELwAAAAAAAAAYFAleAAAAAAAAADAoErwAAAAAAAAAYFAkeAEAAAAAAADAoEjwAgAAAAAAAIBBkeAFAAAAAAAAAIMiwQsAAAAAAAAABkWCFwAAAAAAAAAMigQvAAAAAAAAABiUi6MDAAAAAAAAAIDsLBaLMjIyHB1GoTg7O8tkMpX4cUnwAgAAAAAAAChVMjIyNHfuXEeHUShDhgyRi0vJp1uZogEAAAAAAAAADIoELwAAAAAAAAAYFAleAAAAAAAAADAoErwAAAAAAAAAYFAkeAEAAAAAAADAoEjwAgAAAAAAAIBBkeAFAAAAAAAAAIMiwQsAAAAAAAAABkWCFzedgPaN9XDMHNW/p6ujQwFwEzJyG9Rn7lsauvVzm2WdPnpGD8fMKRWxIGf17+mqh2PmKKB9Y0eHglLEyG0RAGMzcvtDX8iY6AvhZuDi6ABw4wW0b6w+896yWZaWmKT4iBiFz1mrg98uliXDXOj9+gT6a+i2L/LcZvYto3Q15kKh9w0AJaG42scbyeTkpKHbv5B3tUraOeUX7fmw5C8YrletPm1UsXEd7Xp/tqNDuS451ZfszOkZ+qHmsBKMCIVBfwgA7NEXKhn0hQCUNBK8ZVjEvHWKCtspmUzy9C+v+nd3Udu3Hla54BraNOarIu/39JrdCv91dY7rUi4lFHm/AFBSiqt9vBFqdG8p72qVFB8Zo/r3dC31FzUbXv5Sm8Z9bbOsVp+2qj+sm+EvarJY68s/WMwWB0SDwqI/BAD26AvdOPSFAOPIyMjQpUuXlJaWJicnJ/n4+MjLy6vA5RMTE/Xnn39qwIABcnIqXZMikOAtw87vjVTE3HXW14enL9Od6z5WyH09tHPyTKWcjy/SfuPDo232i0wuXh5Kv5rs6DAAFEBxtY83QvB93RUfGaNtE75Xj+9fUUCHxorduN9h8eTHkp6hjPQMR4dRrP5ZX5A5usrJ3UUZSamODiVf9IdKFv0hwBjoC9049IVuTkbqC93MLBaLDhw4oK1btyoiIkInTpxQaqrt/1mVKlVUp04dNWzYULfddpt8fHxy3FdiYqImTpyo8PBwnT17Vo8++mipSvLeFAneuLg4TZkyRfPmzVNUVJT8/f111113aeLEiXruuec0bdo0TZ06VaNHj3Z0qMUqPSlF53YeVe2B7eUXVFXnzscrsMct6vHDKzr6yyptfOna7YYuXh4auOy/civnrQU9XlbSuUuFPt7DMXN0bNYqHf5xhVq9PkKVmtdTRnKaTi7Zoq1vTrfr/Hv6l1fT5+5SzdtbySugolKvXNXF/ce19/P5ilm7x7pd1VsbqfkLQ1W5ZX05ubro8rHTOvTdUh2dGWYXQ83ebdTipXtUPriGks/H69js1YrdfCDHeJ3cXNT4yUGqe9dt8guqqoyUNJ3ZclB/vTtLF/ZFWrfLuk1l/fOfysXLQw0f6S3foADtnfpbmfmFFo43dOvnSjh1TkuHjHd0KDeFnNpHSfKsUl7N/3W3AnveIk//8kq5cEWnVu7QX5NnKjnbhY9n1Qpq/ORAVe/UVN6B/nLxcNOVk2d0bPYa7f9igSzmgt3q6FG5nGr2bKXdH85R1J87lXTukoLv65HjRU1WHdnyxjS1Gf+Q/FsFKz0pVeFz1mjHOz/JycVZLcfdqzp3dJRHBV+d23VMm8Z+pctHT1v3Uf+erur08Wgtu+ctVW3bSPWHd5Onf3ldDo/W3k/mKXL+hnxj7vTRM6o/rJumVxsqKXM+uIAOmfObZZ+Pbv3zn+rY7NXqM/ct+dT015y2T9vsJ+u2913vzbZpS93Keav1Gw+oVt+2cvZw0/ld4dr21ve5xlOpeT01e/4uVW3XSK7enko4dVbhc9Zo76e/29xyWj4kUC1eHib/1iHyqOin1MsJunT0tPZ/sUBRf9qPUMlP9vjjdoerxUt3q0LDWkq5nKiIuWu1Y+LPdre8+tYOULPn71L1zs3lUdlPKReuKG5XuHZ/+KvO74mwblerTxs1fmqwKjapLVksurD/hPZ9Pl+nlm2ziyN4RE81eXKgfGpWUWJ0nA59t1Sp8VdzjNnV10vNnrtLQf3bybt6ZaUlXFX02r3aOXmGEk6etW6XvZ74t26g+vd0lU+Nytr48pc6Nnt1oT8rR6M/RH8IxkBfqGTRF6IvRF/o5ukL3QzS09O1cuVKLV++XNHR0Xlue/bsWZ09e1ZbtmzRjBkz1LFjRw0YMECBgYHWbbIndyVp69atuuOOO1S5cuVifR+FUeYTvLt27VLfvn0VGxsrb29vhYaGKjo6Wp988onCw8N14ULm/GgtWrRwbKB5aPrsnarUtK4qNasr36CqSjh11u5kUFC+tatKunbrYNSfO3Xgf4vU+ImBilm7x3oCu3XySPnVraaV90+0u5hxdneVe0Vfu31b0jPsGs6KjWurxw+v6tisVYr4bb0C2jdWyIieslgsNrf++AT6q++Cd+TpX17hv65R3O5wuXi5y79ViKrf1sx6QRN4eyt1nzZWSWcvaf+XC5WWmKw6gzuq4wdPyyeoqv6aPNO6z1p926rbNy8r4dQ57fpwjizpGao/vJsCe95iF7vJxVm3z/g/VWndQOFz1ujQtCVy8/NS8Iie6rfgHS25802d3x1uUyZ0ZH+5V/DVkZ9XKuncJSVGny/of0Opcj31y9nTTQ3uv11B/W9V+ZBAufp4KuVSgs7vidDxBRsVPnetLBlmefqX1+DVHyrlQrwW3D5GGcm2v5hV69RUvWa9oYjfN2jdMx9LunYSzU18ZIzmdXi2SO85dGR/pV5O5GRsIDeyHczNP9tH7xqV1W/hf+Ts5qKjM8IUf+KM/GoHqMFDvVStQxMt7DNOaVcy27yKoUEK6tdOJ5ds1ZXjZ+Tk6qwa3Vqo9f/dL9+gKto09utcj5tdvbu7yOTspPBf18iSYVbEvHVq8GAvbfb1sh4rO69qFdVr1ps6Pn+DTizarOpdmqvJk4NkSTerfIOacvZw095Pf5dHRV81fmqQuk8bq986vyBZbG+na/V/98vVy0OHpi+TJAUP76YuX74oZ3fXQn9Pdn88V3IyKeDWUK0d/bF1+dlthwu1H+nvtnnm/8m/ZbCO/bpG53YcUcUmtdVr1ptKuXjFbvvAHreo27djFH88Vvu/XKiUSwmq0ipELcYMU8XGdbR61PuSJPcKPuo9Z4Ik6fAPy5UQFSePir6q1LyeKt8SbHdR4+LpluN5z5yarrSEJJtlNXq0VIOHe+vwD8t1dGaYavVpoyZPD1bK5UTt/WSedbtKzeup9+w35eTqoqMz/tTFw6fkXt5HAe1D5d+6gfWipsFDvdV+8khdOhql3R9kXiTWH9ZVPaaP08YxX+rITyut+wwd2V9t//2ILuyL1M5JM+Ts5a7GTw5S8vnLdrG7+nqp38L/yKdGZR39JUyXDp+SZ5UKavhwbw1YPEkL+4xTYlScTZk2bz4ok6uLjv68UqlXknQ5PO/O8o10o9sA+kP0h/6pqHWMvhBKUnH3h+gL0ReiL1R6+0IouMjISH3xxRc6efKk3bqqVauqZs2a8vDwkNlsVlxcnE6cOKGUlBRJUlpamlavXq1169ZpyJAhGjRokFJSUmySu35+fnrjjTdKVXJXKuMJ3ri4OA0cOFCxsbF66aWXNH78ePn6ZjZKU6ZM0bhx4+Ti4iKTyaRmzZo5ONrctXpthJIvXNGFvRFy8yv43CDWRvjveZUaPNhLlZrW1bmdRxUfEWPdbsd/flbVW0PVfsoonfvrqKq0baj6d3fRvi8W6PSqXXb7DRnRUyEjetotv3jopOZ3+5fNsgqhQVo04HXF/XVUknTkxxVy9fVU8LBu2jb+e+uolVsnj5R3tUpafu/bil6923bHJlPmX05OunXi40pPTNYf/V5R0pmLkqRD3y1V7zkT1HT0HTo2a5WuRMbK5OSktm8/opRLCfqj3ytKuZB58jv84woNDnvfLvZGj/ZVtY5N7I5/aPoyDV79gdq8+aDd6AHvGpX1223P2/xybURFrV++tQPU88dXVa5+DUWv2a09U39TyoUr8qhcTtVva6pOH49WuZBA7XjnJyWdu6Qt//etunz+gm555V5tm3DtF2dXH091/PBpJZ29pC2vf2t3nAPfLFLcrmN2y9MSin77Z+jI/ko4dY6LGgMpaj3NTUHax3bvPCYnVxctuH2MzcOSjv+xSf3/mKjGowZYR1fEbjqgue2esTnGgf8t0m1Tn1XwfT20673ZSjp7Kd+4gu/trjObDyoh6pwk6djs1Wr8xEDVvbOTDv+w3G57vzrVtGrk+zrxxyZJmR30Acv+qyZPD9Kp5Tu0/J5rD8VIuZigdu88qupdmtm1sx4V/TS/+0vWC6fDPyzX4LD31WbCQ4pcsNEuEZGXmLV7VO+u26RbQ6/7Vr7g4d3k3zJYu96frV3vXRvJcvlIlNr++xElnLo2ssLZ3VUdP3hK5/46qmVDJ1hHiBz5cYUuHDihtm89rID2jRW7ab+qtGkoT//yWj3qfR1fuCnfOFqOHa6WY4fbLT+1Yof+fHCSzbLyDWpqfpcXrf+Hh39YrsGrPlCjR/vaXNR0+ugZObu56o9+r+riwRPW5Xun/mY972WO2Llf8ZExWtTvVesF1OHvl2nginfVZvxDOr5go1Ljr8rNz0stX7lXl46c0qJBr1tvFzz2S5juXHft4vLaexom31pVtGjAa7p44Nrxj81epcFhH6jly8O0/oXPbMo4e7hpQa8xDrkV8XraAPpD9IcKoih1jL4QStqN7A/RF6IvRF/IWH0h5M9isWjBggWaNWuWzNnuGmjUqJFuv/12NWvWLMfpF8xms06ePKk1a9ZozZo1unr1qjIyMjR79mxt3rxZJpNJJ05k1pGs5G7NmjVL7H0VVJlO8D733HOKiorS6NGj9d5779msGzt2rGbMmKHdu3erTp068vPzc1CU+ZvT7mnr7QGDV30gV2+PApXLqRE+vmiztrz6jc0yc1q61jzxgQaueFfdp42Vb1BVxe06ph0Tf85xvyeXbtXBaUvslqcn2ncyz24/Yr2YyRK7fp9q9mwln5r+unT4lNzK+6hGtxaKCvvL/mJGsv66WqlZXfkE+mv/VwutFzNZ8e/7fL56TB+nWr3bav+XCzK3reGvfZ/Pt17MSFLalas6/MNytXpthM0h6g65TZeORun8ngi7Xyaj1+xR/Xu6ytnDzebEHj5njeEvZqSi1S9nDzf1/PFV+QZVVdhj7+rk4i026/d99nvmr78t6luXRf62XkH9b1Wjx/vpxOItOrv1kCSp7duPyCfQXyvvn6jUHB5Kc2bzQZ1YtPl63iL+5uLtkeP31AiK2g7mJr/20dXXS4G336Jjv6xSRkqaTbuQcOqsrhyPVfUuza0XNdnbBidXF7l4e8jkZNLp1btUb2gXVWpeT1ErduQZk3/rBiofHKj1n823Lrt44ITO741U8L3dc7yoSYw+b72gyXJ26yFVblZPB6cttll+ZstBSZkXQv9saw9/v8xmVEz2tjKgQ2OdDvsrz9iLS60+bWVOz9D+LxfaLD/0/TK1ePkem2XVOjeTZ5UK2jFxhtzKedusi/pzp9q+9bCqd22u2E37lfr3e63RvaVOr9plN/Lknw7/uDzHi5+czgEnl26zXtBkid2wT40e62edm7Rikzqq0LCWDn2/zOaCxurv8171zs3k6u2pnd/OtIkxLSFJB79drHZvP6pqtzWzjlhy9fLQoe+W2Vx0XI25kDn66YFeNoeoe9dtOrPloK7GXrCp3+lXM2/Rrd6luf3n8MNyh13QXE8bQH+I/lBBFLaO0RcyJiP3haQb2x+iL0RfSKIvZKS+EPJmsVj0008/adGiRdZlQUFBeuKJJ1S3bt08yzo5Oal27dqqXbu2hg0bpt9++00LFiyQxWKxGQVcmpO7UhlO8B48eFCzZs1S5cqVNWnSpBy3adWqlXbv3q3mza99caOiojR58mRt3bpVu3fvVmpqqiwWxz4ZMvvcL4WR1Qg7ubqoQsNaavLMHfKuVkkZKfYN0pUTZ7Rtwvfq+P5TSk9K0ZqnPpIll4niE6PPK2bd3gLGfsZuWdatJFmNqF/tAJmcnGzmdcuJT60qkqRLh0/Zrcta5htU5e+/M28vunzstP22R6LslpUPDpSLp7vu3f9drsd3r+irq9luO7wcHpPrtkZSlPoVfF8PlatfQ3un/mZ3QZPl/O5wu9s4N4/7WgG3NlKnD5/R/J4vqVqnpgoe3l1HZ4YVaZ6nLNnnAZTJpMZPDZJf7QAlnbukQ98t1b7Pr3USs+bB8qlZxWZOrDltnlJC1DlV79Jcwfd2V+UW9eVZpbzMqek6t+uY9nw8V2c22c5XmDV/1qKBr6vN+IdUo1sLObu76syWg9ry+rc2I8OkzFtvW094SNU7Z94xELthv7a++Z36zJ1Q4DnmCjqnVlZsS4dOUOs3HlC1jk3kXsHXOjeY0RS1HcxNfu1juXrV5eTsnOsIPUmKPx5r/bfJ2UlNn71T9YZ2kV+dzDYtO/fyOU/Un13wvd2VkZqmC/si5Vs7wLo8evUuNX32TlVoFGTXAc4+aiNL6qXEzHX/+MyykgbuFexvr7t0NPe20rdW1XxjLy6+QVWVdOai3UWHOTVdV06clXv5axcv5YMz58jq9JHt6KHsPCqXkySd2XRAx2avVvDw7qp7122K2xWumHV7FLlgoy7ncI6Ij4gt+HnvRE7nvb8/+4o+Sr+aLL86mf+/+Z/3Mj/7vM97VW3+Lsh5z6OSnzwq+qlG1xa5nvfMGfZ9AEfehng9bQD9IfpDBVHYOkZfKBN9oZJ1I/tD9IVs0ReiL/RPpa0vhLzNmzfPJrl75513asiQIXJxKVza08PDQ/fee6+aNm2qyZMnKz09XZJkMpn0/PPPl9rkrlSGE7wzZ86U2WzWiBEjcn0CnqenpyTZJHiPHTumuXPnqk2bNnJzc9OGDflPql5aZW+ET4f9pTNbD6nf/LfV/r9PaM1TH9ptX/P21pIkF093latXXVeynbCL6p+TqGdnkum6938jXThwQtsmTM91/T+fJJuRlFLMEZVetQfcKkk6/NOKQpVLPh+vTa98o27/e0ntJ49S9S7NlXg6TlvHT8+1jKuPZ47zPWUkpSr9H/8HDR7sJQ//cjo6M0yplxNVb0hntX7jASXGnFfkb+slSWtHf6y2bz2s5AtXtOfjuTaxSZnz3bmX91H4r2uUGHNeXgEVFXJfD/WePV5Lh07Q2b9/+c/i4uWuvr/9W+d2HtXOSTPkU6uKQh/vr+7Tx2l+139ZHyjhXsFHfX9/Wx7+5XT4hxW6fDRKVds1Up+5E+Ti5V6gz6+gc2pZY/P2UN95/9bZbYe1c/JMa4cOBWgf/74tLHzOmlxvX80+UqXNhIcV+ng/Rf6+QXs+nqvk8/Eyp6WrUtO6av3GAzKZ8m7vXLw8VGdQBzm7uWrQyvdy3Cb43m7a+uZ0m2V5tbG5rcsvluKW24+mJhfn69vx3+9r21s/6ML+nC8WrmYb7bj++U+17/P5qtG9paq2a6TGTw5Us+eHaOub3+nQd0uLHIYhznt/f1bRa3Zr72e/F7iYUUes0B8qHPpDBUNf6Br6QsZEX8hx6AuVAjdZX6isO3jwoObMufaD5ahRo9S9e/ci7y8xMVEzZ860JnelzO/tkiVLFBoa6vA2JDdlNsEbFpb5BOFu3brluk1UVOavONkTvJ07d1ZMTOYvzRMmTDB0gvefzm0/rPA5a1X/nq468O1indt+bZL3ho/2Va0+bbRn6jwF9W2nTh8/o/ndXyrQPEnXK/54rCxmsyo2rp3ndlf+/iWwfAP7X0zKhwT+vc1Zm23L1a+R67Y2MUTGyqOSn2LW77ObcB/2yjeopdT4xCKNIjjxxyZFzt+g+vd0lSQtH/52jg9MyJLbL9AHpy2xm6fOu0Zl/db5Bev+jv4Spru3faFGj/a1XtREzF2nW8bdq+Rzl3OcE2vjy1/aXSwd/mG57ljzoZo9e6dW/uOixqNSOe37fIHNyJjk8/Fq8+aDqta5qfX2rybP3CHvGpW19pmPFTFvnXW/rf7vfjV95g5J9r+UZ1eYObWssVX00+6P5uiv//6S575h3z7Gh5+WxWyWk6tLgUYr1BvaWbGb9tsli/zqVCvQ8WsP6iBXH0/tmPiz3WgnSWr0eD/VHdJZ29/+Sea09Bz2cH3KB9ewewqxtV3NYeRhfvK68yXlUoIqNbO/TSpr1EV2V06cybzdzsfTZuSKk5uLfIOqKPVyonVZfGTm55Z+NbnAI0wuHT6lS4dPaf8XC+Tm56X+iyap1esjruuipiCy/o8Lc96LWW/7nsqH1LTZJvt5z35b2/Ne8vl4pVxKkKuvV4E/q7KE/pDttjYx0B8qMPpC19AXKhvoC9EXoi8EI0pJSdGXX35p/c4NHz78upO72R+oljVgNCEhQdu3b9eGDRvUqVOn6w+8GDjlv4kxZU2AHBQUlOP69PR0a/I2e4LXyanMfiSSpN0fzpE5PUMtxwyzLqsQGqQ2bzygmPV7tXPSTK156iO5+njptqnPWX/ZKk6plxIUFfaXAnvcomq3Nc11uwt7I5UQdU71h3WTp39563KTi7OaPD1YFrNZJ5dtlSSd3xOhxNNxqj+8m82IB1cfTzV4sNc/d63wX9fIq2oFNX5iYI7H5td+W26+ntf1YI+sESLJ5y/rbLYL65zsen+2lt3zlt2fnOY9PDprlc0FUkZSqs7tOCq/ugXrWEqyuaBx8fKQewUfWcxmndt5VJVbBtttb87I0MFvbef3it2wT5Jth7Zmr9a6GntBEX9fXGXZ/8WCAsWVNafWsV9Wya2ct9wr+lr/ZN3SWb2r/TxRBd0/bNvHlIsJivrzLwX1ayf/W+z/3yXJvdK1udstZrNde+ni6a7Qkf0LdOzge7sr+cIV7ft8vk4s2mz35+iMP+VR0U81e7cp+hvMQ4OHesvV99rDWlx9vdTgwV5KuZRgc6FcUFnzG7rlcDtmfES03Hy9bOallMmk0FED7LY9uWybnFyc1fhJ27a54UO95eZnO7dc9KpdSjp3SU2fvTPH4zp7uMnl77kK3cr72P1/pcZfVcKps3LxdJezh1vB3mgRXdh/XBcPnVTw8O45JtmyxKzdrbTEJDV6tK81dilzRFqjR/sqLSFJ0Wv3SJKi1+5RelKKGj7SW86e1+L3qlZRde+8zXbHFosi5q2T/y3BCup/a47H9qhUep9NcCPQH6I/dL3oC11DX6jsoC9EX4i+0DVlvS9UVixYsEBnzmQm9xs0aKBBgwYVeV//TO76+flp/PjxGjVqlHWb77//XsnJpXMu9zI7gjcxMfOXrKSknCcLnzVrluLi4uTr66s6deoUayytW7dWbGzOt/e5Wpw0Xm2L9fjZXTkeq8j5G1RvSGdVaddIF/ZEqMuXLyo1IUlrR38iWSy6sC9SO/7zk9r++xE1HX1H5lMss/GrV111h9yW4/5j1u5V0rlLhY5ry2vfqlLTurr959d1bPZqnd8TIWdPN/m3DFbCqXPa8Z+fZDGbtfm1b9R92lgNWDJZh39eqfSEJNUe1EFVWjfQ7o/n6kpk5udsMZu1dfx0df36XxqweLKO/LxS5vQMBd/bXSkXr8gn0N/m+Ae+WaTqXZqpzfgHVa1TE8Ws36e0hKvyrlFZ1To1VUZKmpYNnVDo9xUSHKI0U+63qJSE4qhjqVeS5OpTtIc6BHRsooYP99b5vZGq1LSO2ox/UJvGfp3r9hcPnrzO+Z6uyKNiwU/OvkFVdcsr96l61+Z2c4VZzPb/l0mxF5WRkmZ7zL8fZJN9fi/fmlV0btcxuxFRWb8e56cwc2pZY4u7rNT43EcEZSmr9bSw/tk+bnrla/Wb/476/PZvhf+6Rhf2HZecTPINqqpavdso/Nc11geLnPhjsxo82EtdvnxR0ev2ytO/nIKHd7fOsZmXcvWrq2rbhjr6S1iut7SdWr5dGalpCrmvu92DRG6E5AvxGrB4ko7+skpS5hObfQL9teFfnxfpVrRzO4+q0WNS+0kjderPHbKkZejczqNKOHVWR35cqcZPDFS3aWN08JvFMqelK2jArXJytr8t8dgvqxRyf0+1eOke+dSqqnPbD6ti0zqqPaC94iNj5JTtVsb0pBSte26quk8bq7vWf6yjM1cp/nis3Py8VK5+DQX1a6dVj76r2E37Vf/uLgodNUAnl2xRfGSszOkZCrg1VDW6tVTk/A12T8qu1LROrue9k0u2Kf1q4Tt561/4TL1/Ha/+Sybr6IwwXTp8Um5+3qraPlSnV+3SoWlLlBp/Vdvf/kntJ4/UgMWTdGzWaklS/WFd5Ve3mjaO+dKayEm9nKi//vuL2kx4SP0X/EfH5qyRi6e7GjzQS/GRMarU1Hak0M7JM1WlTUN1/fpfOr5gk87tPKKM1HT5BPorsEdLnd8TYffk6KIoaPtCfygT/aHiQV+IvlB+HF1HJfpC9IXoC5XVvpBUOtoYSbrzkRfk7eOnmNgYBQYG2r0ujdzc3HJ9rlZ6erpWrlwpSXJ2dtYTTzxR5EGbOSV3sx6oVrNmTbVr105btmzRlStXtHHjxjxHCYeEhCg1tWjTeQQEBGj79u1FKltmE7wBAQG6ePGidu7cqfbt29usi4mJ0ZgxYyRJzZo1K/b5M2JjY3X6tP1E35LkZnKWSnjO9j0fz1WdOzqq5ZhhSjh5VuXqVdfKBybZPIn5wP8WqdptzdRyzDDFrN9n8+TnGl2aq0YOT5SUpGX3vFWkC5qEU2f1R59xav7iUNXo0VL17u6i1MuJunDghKJ/WmndLmrFDi275y01f36Imjw1SM6uLrp09LQ2/OtzHZ0ZZrPPE4s2a9XI99XixaFq8dI9So67rGOzVyt28wH1nvWmzbaW9AytvH+iGj7cR/WGdlaLMZlPJE2Kvahzu44pPJd5p/ITHROtVEvOD2cpKcVRxy4dPqmA9o3lU6tKoW5NdPH2UKcPn1bSuctads9bavfOo2rwQC8dX7jphtwak9d8TwWKz8tDfX77t1y9PHTgf4t08dAJpSUky2I2q+mzd6l6DiOqcrrQyXJD25ZCzqklFXxexLJaT4sie/u4bOgELew9Vk2fuUM1e7dRvSGdlZGSpsToOJ1asV2RCzday22dMF1pfydYavVuo8To8zry0wrF7QpX71/zfmBM8L09JEkncnlIj5TZYY3duF/VOjeTV/VKNg84uhF2vPOTqrZrpIaP9JZn5fKKj4jWmqc/st7OW1gRv61XxSZ1VGdwRwUNzLxgWf/8pzp26qwSTp1V2CNT1OrV+9Ry7HClXLyi8DlrdfSXMN21/hOb/ZjT0rV82Ntq/cYDqtWnrYL6t9P5XeFaPvxttXnzQfnUtE1ORa/erT/6vqKmz96pukNuk0clP6VeTtSV42e0/+s/dOHvB7PEbtyvik3qKLBnK3lWrSBLhlkJJ89q24TvdfA7+xFxde+6TXXvyvmiZm770UWao/X87nD90fcVNX9xqOoMai+38rcr5cIVxe06prPbDlm3O/z9MiWdvagmTw1W85fuliRd3H9CYY/8VyeX2t5Kuv+rhUq7mqzGowao1asjlBgdp/1fLlBq/FW7hEjalataPPh1NX5ykOoMbK+avVvLkmFWYsx5nd16SEd+/rPQ7yknBW1f6A9loj9UPOgLFRx9IcehL0RfiL5Q2ewLSaWjjZGuPTjOnJGh06dP270ujdzdc5+jfcuWLbp8+bIkqU2bNqpevXqRjpFXcjfLoEGDtGVLZhu1fPlydevWLddzXHR0tFJSSv4ZBSZLXpPDGNhzzz2nqVOnqmbNmlq5cqVCQkIkSdu2bdMDDzygiIgIpaWl6ZlnntGnn36a4z4mTJigt956K8/5cwoi3xG85oL/Ujt41Qdy9fbQnLZPX1dMKBlvOW11+C91haljBa1fjR7rp3bvPKo9n8zTzkkzChxLh/eeVMiInvrzock6tXy73Mr76I7VH8qcmqbfu/3LeiuTlPmAj04fj9aqx9/TiUWb89xv9idH//MhEJ0+ekb1h3WzeWLykC2fKTEqzu5JzTV7t1GP6eO0/oXPdGzWKpt1/f+YKP9WITb7yXo68z8/L59Afw3d9oV2vTfbOqrhznUfy9XHU7NvecJm5IpHJT8N3zdNsRv328QzdOvnNk+TrtWvnbp/O0abxn2twz8sz/PzyCu2nJTVeor8ZX3Plt41vki3HwL5KWj7QhtQtjn6PFMc/W36QpnoC904XBc6Bn0hlITS0MZI10bwJibE67fvPrJ7XRrlNYL33Xff1Y4dOyRJb775pkJDQwu9/4Ikd7O8/vrr1u3ef/991ahh/4wDSXr11VcZwXsjjR07VjNmzNCpU6fUuHFjNWzYUMnJyTp27Jj69u2r2rVra9myZTbz7xaXvP5z0q4m6+d69xd7DHCMI0ePyNWraLfv3SjFUceOzFiphg/3VuMnB+rczqN2DySQpErN6qpyy2Ad/n6ZJKlGtxYKGdFTx35do1PLM78TqZcStGnc1+oxfVy+tyfeSOmJyTnOS2Ud9fKPX+Kqd2ku/1Yh13XMU8u3q8nTg1X3zk7WB4tIUuOnCjZHUPY5tSIXbFTqP25ldPZwk8nZyebCsKDKaj0F4HgFbV9oA8o2R59n6AvZoy9ky9F1VKIdBMqy0tDGSNLEz35WfEKiqgVUU1RUlN3r0ig9PV1z587NcV1ERIQkydvbW40aNSr0vguT3JUyB29mbRsREZFrgvfIkSNycSn5dGuZTfAGBgZq3bp1GjNmjNasWaPjx48rNDRUX331lUaOHKl69epJUokkeK9X3aGdrXOkeVTyk5Ori5q9MESSlBB1ThFz1joyPBhcUepXRlKqVj4wST1/fFU9po/T6dW7FL1mT+Ycb5X8FNCxiWp0ba59n2U+TdnNz0sd3ntKiTHntfX/bJ/2fGrZNoXPXZvr7YlVb20kZw/XHGPP6cnPBXFu51EF39tdLccO16WjUZLZolPLt+vs1oO6euai2ozPvN3pasx5VWxcW/WGdtGFAydUMTTnhzYWxN7PfledOzup44dPq3LL+rp89LSqtmukKm0aKPn85XzvFCjMnFplEe0gcHOjDUBxK2wdoy9UePSFrh9tIQBkunjxoi5ezJyWp06dOoWeEqiwyV1Jqlv32jzOERERuu22nKctcZQym+CVpEaNGumPP/6wW56QkKDjx4/LyclJTZo0cUBkhRNybw8FdGhss+yWcfdKypw7hxM5rkdR69eV47Fa0GuMGjzQS0H926nZ83fJ1dtDKZcSFLc7XOue/1SR8zLnrGr7zmPyrl5JK0b8J8cHXWz5v2mq1qmpOr7/lN3tiaGP5/7k3cjfNxRprrmdk2bIrbyPGj7cW27lvGVyctKcNk8pIeqcVtz7jlq/cb8aPdpXTi7OOr8nQivun6iQe7tf10VNyoUrWjL4DbWZ8JCCh3eXxWJR7Ib9WjpkggYsnWz3IIOcFHROrbKIdhC4udEGoLgVpY7RFyoc+kLXj7YQADJFR0db/x0UVLhzU1GSu/88TvbjlxZldg7evGzZskW33nqrGjRooEOHDtmtnzNnjiRp9uzZ+vXXX/Xrr79KkmrXrq3WrVvf0Fi4FadsGxH+k8NvxaCOlW7uFXx074HpOvzDcm0aVzK3Zf4T9RRAcSlo+0IbULY5+jxD/Srd6Atlop4CZVdpaGOka1M0+Pl467VnRti9Lo1ym6LhwIED+vLLL5WWlqZ+/fpp4MCBBdpfUlKS3nnnnUIndyVZn+Pl6uqqRo0aafTo0TluN2TIEKZoKCl792be9pTb9Ax33313jq8feughTZ8+vVhjA1B2OXu42Y1OaTr6TklS9NrdjggJAACgxNAXAgDcCKGhofrkk08KXc7d3V01a9ZUeHh4oZK7kuTq6qqvv3bMD5EFQYI3BzfhoGYAJaDnT68pMeqczu+NlMnJpGqdmqpmr9Y6s/WQTi6xfzgLAABAWUJfCADgSE5OTho1apS8vb3VtWvXAid3jYAELwCUkKgVO1Tv7i6q1betnD3cdDXmgvZ9sUC73p8ti7nw8+cBAAAYCX0hAICjOTk56YEHHnB0GDfcTZngDQsLc3QIAG5C+79aqP1fLXR0GAAAAA5BXwgAgOLh5OgAAAAAAAAAAABFQ4IXAAAAAAAAAAyKBC8AAAAAAAAAGBQJXgAAAAAAAAAwKBK8AAAAAAAAAGBQJHgBAAAAAAAAwKBI8AIAAAAAAACAQZHgBQAAAAAAAACDIsELAAAAAAAAAAZFghcAAAAAAAAADIoELwAAAAAAAAAYFAleAAAAAAAAADAoF0cHAAAAAAAAAADZOTs7a8iQITdsf+9+NUtXEhPl6+2tMU8Ms3t9Izg7O9+Q/RQWCV4AAAAAAAAApYrJZJKLy41LXVokmS2Zf7u4uNi9NjKmaAAAAAAAAAAAgzJ2ehqlStu3H1Wt3q3lU7OKFvR8WRf2H8+3jLO7q7p8+aLKBQcqIzlVyXGXtemV/+nK8dh8y3b88GlValZPMptlTs/Qjv/8rJj1e2/AOwGA61d/WDd1+ugZhT3yX51cui3f7Tt++LSqtGmojORUpSUma+ub3+n87vB8y93y6n0K6tdOGSlpMqdnaOfkGYpevTvfcoE9blGLscNUoUEtHf5hmba+Ob0gb0symdTu7UdUo8ctksWiA/9bpEPfLc23WMOH+6jBg7fLkmGWycVZR35aqYPfLs63nHslP3X64Gl5B/rLydVZcX8d06ZxXysjOTXPcrX6tlWLl4dJZrOc3Fx0YslW/TV5Zr7HK2q5Zs/fpdoD2ltf+wRV1dEZf2rbhO/zLFd/WDeFPt7P+tqreiWd2XxQqx57N99jeteorFsnPi6/utVkMZt16PvlOjRtSb7lULzoDwHANYXtD/VfNEnObplpCpOLsyo0rKX53V/SxYMn8izn7Ommju8/rcot6slitmjnpBk6sWhzgeMsF1xDA5dN0ZGfVhSoT9Ru4uOq2qbBtfL1a2j7Oz/l27cpan8hoH1j9fz5NcWHR1uXLRr4er79IUkq37CWbv3PY/LwLydJ2jl5pk4u3pJnGZ9Af3X6eLQqNqmthJNnteD2MfkeR7q+fk2WTh89o/rDumlGgweVGn813+27/u8lVWndQF4BFQtcBiiLSPDihjmxaJP2ff67+s1/p1DlDv+4QqfD/pIkNXykjzq+/5SWDhmfb7lt46dbG++KTeqo9+w3NbPxo5LFUvjgAeAG8gn0V8iInjq7/XCBy5xcslUbX/5SlgyzAnu2Urf/vaQ5bZ/Ot9yZLQe1+8M5ykhOVYXQIPX97d+a3WKU0pNS8iwXHxmjDS9+rtoD28vV26PAcdYb2lnlQmrqt47PydXPS4NWvKvYDft06UhUnuXC567VoemZiWBXH08NXv2Bzmw5qAv7IvMs1/z5uxQfGaM/H5osk5OTev70quoP66bD3y/Ls1z02j2ZF5IWi5xcXdR3/ts6vztcJ5dsLZZyez6epz0fz5MkObm56J6//qeIeevyLCNJx2at0rFZq6yvB6/6QBHz1uZbTpK6TRujvVN/14k/NkmSPCqXK1A5FC/6QwCQqSj9oUX9X7X+O6j/rWrx0t35JnclqcmTg2ROTdO8Ds/Kp2YV9V88SbEb9ynlYkK+ZU0uzurw7pM6kc+5Prstr31j/benf3kN2fKZji/YmG+5ovYXJCk+PLrAidYszp5u6jF9nNY9N1Vntx6SyclJbhV88i2XmpCknf+dKTdfL93yyr0FPt719GskqVa/djKnZxR4e0k6/MNybX7lfxq+b1qhygFlDVM04IY5s/mgrsZcKFSZjJQ068WMJJ3beVQ+Nf0LVDb7L3Nuvl6FOi4AFBuTSR3ef0pb/u9bmVPTC1zs1PLtsmSYJUnndh6RV0BFmZzzP02fDvvLOnrj4sGTkskkj0p++ZaLj4jRxQMnZEk3FzhGSao9qIOO/rxSFrNZqZcSFDl/g+rc2SnfcmlXrrXZLl7ucirgHFcWS2ZCWCaTnNxc5Ozprqsx5/Mtl56YbE1wObu7ytnNtUAJr6KWy65Wn7a6Gh2n83siClWucstgeVQup5PLtue7bbXbmsqckm5N7kpSctzlQh0PxYP+EACoyP2h7ILv66GjM8MKtG3twR11+IflkqSEU2cVu3G/avVtV6CyLf51t44v3KQrETFFirPePV0VvWa3ks5dKlS5ovYXCqPunbfp3I4jOrv1kCTJYjYr5Xx8vuVSLyXo7NZDSr+a94CBvBSmXyNl/lDd7Lm7tHX89EIdJ2bdXiUX4D0BZR0jeFGqhD7eTyeX5X/rTpZWr41Q0MD2ci/nrVWPv8doFQAO1/iJgTq77dB1ddZDH++vqD//siZ8Cyp4eDclnDijhKhzRT52fnxqVLbZf8Kpc/JvFVKgskH9b1WLMcPkVztAOyfNyHf0riTt/nCOun3zsobt+UYuHm6K+G2dTi0v2IWCf+sG6jBllPzqVNOhH5YX6NbQ6ymXJfi+HjpSwAtS23LdFT5njSwFGLlSPqSmks/Hq8sXL8qvXnUlRJ3VtgnfK+Hk2UIfF6UP/SEARne9/SGv6pUU0D5U6579pEDb2/dPzsq7RuV8y1VuGSz/ViFaPuzfavHSPUWKNXh4N2379w+FL1fI/oJv7QANXD5Flgyzjv6yKt+7mSSpfEigMlLT1OOHV+VdraIuHDypbW99X6Ak7/UqTL9Gkjq896S2v/1j5o/tAAqNEbwoNZo+d5d8awdox8SfC1xmx8SfNa/9aK1+4gO1fuMBObnymwUAxynfoKaC+rfT7o/mFnkfdYfcptoD22vjmC8LVa5ap6Zq/tLdWv3kh0U+dnE7sWiz5nd9Ub91ek51h3SWX73q+ZapM7ijLh2J0uzmIzWrxUj51a2u4Pt6FOh457Yf1vzuL2l26ydVqVldVb21UbGWkyTvwMqq2rZhgW+3zOLi6a46gzsWeKSSycVJ1To10e4Pf9XCXmMUvXq3un79UqGOidKJ/hAAo7sR/aH6w7rp1IodSrlw5QZGZsvZ0023Tn5cG18uXJ8ruyrtGsnVx1On//wr/42zKWx/4fzeCM2+5Qkt7DVWYY9OUYMHe6n2wPb5ljM5O6v6bc20aexXWnD7GF2NPa/2k0cWKtaiKGy/Jvi+Hko8HafYDfuKOTKg7CLBi1Kh8ZODFNSvnVaO+I8ykvKfKP6fYtbtlauPpyo0qlUM0QFAwVRt10g+NatoyMapGrr1c/nfEqz27z6pBg/2KlD52oM6qMW/7tHy4W8X6nb7qu1D1fGjp/Xng5NtHr5RHBJOx8kn8Nqt4z41/ZV4unAjhhOizinur6Oq2bNVvts2fLi3Iuatk8VsVnpisk78sVkBHZsU6ngp5+N1+s+dNg81Ka5ywcO66+TSbUq9lP+cf9nVHthelw6f0uV85jLOkhgVp/P7Iq1zH4f/ukaVmtaRycW5UMdF6UJ/CEBZcL39IUkKHtZNR2f+WeDt7fsnVZR4Oi7PMr5BAfKpUVl95k7Q0K2fK3Rkf9Uf3l2dPh5d4OOG3Ntdx35dLYu5kHddFbK/kJaQZJ3u6mrMBUX+vl5V2+X/A3Ti6TjFbNyvq7GZUwdFzFkr/1sKdufV9ShsvyagYxPV6t1GQ7d+rqFbP5ckDQp7XxWb1CnOMIEyhQQvSkSnT55Vrb5tc1wX+sQA1bmzo5YP+7fdEy9vee0+NXykj10Zk4uzfGsHWF9XblFfHpX8dOXEmRsbOAAUwuEflmt2i5Ga0/ZpzWn7tM7tPKpNY760zgmXW5smZXaEbxl3r5YNe8vugqThI310y2v35Viu6q2NdNvUZxX28BRdPGD7EJJafduq0yfPFvp95FXuxMJNCh7RM/MhHeV9VGdwR0XO35hvuXIhgdZ/u1fyU0DHJrrw90NT8ip35cQZ1ejWQlJm21+9a3NdOnRSUmbb32t2zg+hKle/umQySZJcvD0U2LOVLhwsvnKZAZpUf7j9BalXQEXdue7j3Msp93kG71z3sbwCKtotPx32l7yrVbKuq9HjFl06errAt0HCMegPAbgZXE9/SMq8K8nk4qToNXtslufVHzqxcJM1gexTs4oCOjTWyaVb8yx36dBJ/dLkMWucB/63SMd+CdP65z+VlH8/ytXHU0EDbrU7fxdHf8GzSnm7/sn5fcfzLXd84UZVblEv83kGyuwvXDiQf7m8FEe/Zt0zH+vX1k9a/y8kaUH3l6zTefWaPV6VW9QvdKzAzYT7t3DDtJ8ySoE9WsmzSnndPvP/lJaQpHkdMk+IlZvX1cFvF9uV8apWUW0nPKz447HqM2eCJCkjNd369NSKobV1frf9vE1Ors7q9PFoufl5yZKeobSrKVo18n2lXk4svjcIANcptzZNkjp/9rySzl5Sj+/GWZctu+ctpVxMUPmQQF05kfPcqh3ff1rObq7q9OHT1mVrn52qS4dOyq9ONZuHm2VXrVNTdfp4tFx9PWUymRTUv702v/o/nVq+Pc9y4XPWqlKL+rpr41RZLBbt/2qhNeGaV7nQx/upartGmQ9aMZl04H+LFLN2T77ltr7xndpPGaXBYe/L5Oyks9uP6MDXf0jKHD2c9YC5f6o9qKPqDO4gc1qGTM5OOvHHZh39eWWxlZOk6p2byWI2K2bdXpvlXgEV83witF+96qrYuLYi52+wWe5RyU/uFXyUksPonvSkFG0a97V6/viqZDIp9cpVrSnF03PcTOgPAUDe8uoPSVLwvd117JdVdvOJ59Uf2vf5fHX88GndtelTWTLM2vLaN9bpHfIql5e8+ieSVOeOjjq/J0JXImNtlhdHfyGo/61q8FBvWdIzZHJx1omFm3Tsl7B8yyWejtOeT+ap38L/yGK26GrsBes0YHmVc/Z0013rp8rZ3UWuvl66e8dXCp+7RjsnziiWfk1eTE5Oqtg4SIm5PGS3x4+vqmJobUnS4NUf6kpkrJYOySPBDpRRJHhxw2wa+3WOy90r+elqzAWd3x1ut+5qzAVNrzY0x3ImJyd5VPLTicVb7NZlJKVqyeD/u76AAaCYZe9c5tWmSdIPtYbnup8KoUHa/s5POa6b1zH3kSVV2jTQ1je+y3FdzPq9+rXVE4UuZzFnXjTl9C7yKpfbOSK/cgmnzmrFve/kuK5q+8ba++lvOa7b/cGv2v3BryVWTpKi1+zW3HbP5FAuNM9y8eHR+jn4gRyPd+CbxbleJEav2a0Fa3bnul84Bv0hALBVmP6QJK19JufRoXn1h9KTUnL9oTOvctnten+2zeu8+ieSdOSnlTry00q75cXRXzj03VId+m5pjuvy62dEzFmriDlrC1UuIyk1135icfVrsst+TqzYtI5OLtmqpDMXc9z2zwcm5bs/4GZgslh4zK4jpV1N1s/17nd0GCgmI8J/kquXh0NjoI4hP9RTAMWloO0LbUDZ5ujzDPUL+XF0HZWop0BZVhraGEma+NnPik9IlJ+Pt157ZoTd65tBWf4MmIMXAAAAAAAAAAyKBC8AAAAAAAAAGBQJXgAAAAAAAAAwKBK8AAAAAAAAAGBQJHgBAAAAAAAAwKBI8AIAAAAAAACAQZHgBQAAAAAAAACDIsELAAAAAAAAAAZFghcAAAAAAAAADIoELwAAAAAAAAAYFAleAAAAAAAAADAoErwAAAAAAAAAYFAkeAEAAAAAAADAoEjwAgAAAAAAAIBBkeAFAAAAAAAAAIMiwQsAAAAAAAAABkWCFwAAAAAAAAAMigQvAAAAAAAAABgUCV4AAAAAAAAAMCgSvAAAAAAAAABgUCR4AQAAAAAAAMCgXBwdQEmIi4vTlClTNG/ePEVFRcnf31933XWXJk6cqOeee07Tpk3T1KlTNXr0aEeHasevbjXVHdJZNbo0l2/tqnJ2d9OV47E6/scmHfh6kdKTUhwdIgyOOgYjoJ4CNy++/yhu1DEYAfUUAJCXMp/g3bVrl/r27avY2Fh5e3srNDRU0dHR+uSTTxQeHq4LFy5Iklq0aOHYQHMRPLy7Gj7SRyeXb1f4vHWypGcooENj3fLKfao9sIMWDXhNGcmpjg4TBkYdgxFQT4GbF99/FDfqGIyAegoAyEuZTvDGxcVp4MCBio2N1UsvvaTx48fL19dXkjRlyhSNGzdOLi4uMplMatasmYOjzdnxRZu1Z+pvSrty1brs8A/LFR8Zo+YvDFXwvd116LulDowQRkcdgxFQT4GbF99/FDfqGIyAegoAyEuZnoP3ueeeU1RUlEaPHq333nvPmtyVpLFjx6p58+ZKT09X7dq15efn58BIc3d+d7jNSTxL5PyNkqQKDWuVdEgoY6hjMALqKXDz4vuP4kYdgxFQTwEAeSmzCd6DBw9q1qxZqly5siZNmpTjNq1atZIkNW/e3Lpszpw5GjJkiIKCguTl5aWGDRvq9ddfV0JCQonEXVDe1StJkpLOXXJsICizqGMwAuopcPPi+4/iRh2DEVBPAQBSGU7wzpw5U2azWSNGjJCPj0+O23h6ekqyTfC+9957cnZ21sSJE7VkyRI99dRT+uKLL9SnTx+ZzeYSiT0/JicnNX9hqMxp6Yr4bb2jw0EZRB2DEVBPgZsX338UN+oYjIB6CgDIUmbn4A0LC5MkdevWLddtoqKiJNkmeBcuXCh/f3/r6y5dusjf318jRozQ+vXr1blz52KKuODa/vthVWnTQDsm/qz48GhHh4MyiDoGI6CeAjcvvv8obtQxGAH1FACQpcwmeE+cOCFJCgoKynF9enq6NmzYIMk2wZs9uZuldevWkqTTp08XKZbWrVsrNjY2x3WuFieNV9sC76vl2OFq9Fg/Hf5xufZO/a1I8aDkhASHKM3k2JHf1DHkh3oKoLgUtH0pTBvA9994HH2e4RyD/Di6jkrUU6AsKw1tjCTd+cgL8vbxU0xsjAIDA+1e3wxK+2cQEBCg7du3F6lsmU3wJiYmSpKSkpJyXD9r1izFxcXJ19dXderUyXNfq1atkiQ1atSoSLHExsbmmhx2MzlLVQu2nxYv3aPmLw7V0Zlh2jT26yLFgpIVHROtVEuGQ2OgjiE/1FMAxaWg7UtB2wC+/8bk6PMM5xjkx9F1VKKeAmVZaWhjJMmckWH9+/Tp03avbwZl+TMoswnegIAAXbx4UTt37lT79u1t1sXExGjMmDGSpGbNmslkMuW6n9OnT+uNN95Qnz591KJFiyLHkhtXi5NUgB9yWrx0j1q8fI+OzVqlDS99UaQ4UPKqV6vu8F/qqGPID/UUQHEpaPtSkDaA779xOfo8wzkG+XF0HZWop0BZVhraGElycna2/l2jRg271zeD0v4Z5JU/zE+ZTfD27NlTBw8e1H//+1/dfvvtCgkJkSRt27ZNDzzwgOLi4iQpz6RtQkKCBg8eLDc3N02bNq3IseQ1vDrtarJ+rnd/nuWbvzg08yT+6xqtf/FzyWIpciwoWUeOHpGrl4dDY6COIT/UUwDFpaDtS35tAN9/Y3P0eYZzDPLj6DoqUU+Bsqw0tDGSNPGznxWfkKhqAdUUFRVl9/pmUJY/gzKb4B07dqxmzJihU6dOqXHjxmrYsKGSk5N17Ngx9e3bV7Vr19ayZcts5t/NLikpSQMHDlRkZKTWrVunatWqlfA7yNTw4T5qOXa4EqLOKWbdHtW9q5NtnOcuK2btHofEhrKBOgYjoJ4CNy++/yhu1DEYAfUUAJCXMpvgDQwM1Lp16zRmzBitWbNGx48fV2hoqL766iuNHDlS9erVk6QcE7xpaWkaOnSotm/frj///FOhoaElHb5V5RaZcfoE+uu2T561Wx+7cT8nclwX6hiMgHoK3Lz4/qO4UcdgBNRTAEBeymyCV8p8KNoff/xhtzwhIUHHjx+Xk5OTmjRpYrPObDZrxIgR+vPPP7V48WK1bVvwJ5kWh/UvfKb1L3zm0BhQtlHHYATUU+DmxfcfxY06BiOgngIA8lKmE7y52b9/vywWi0JCQuTl5WWz7plnntGvv/6qV155RV5eXtq8ebN1Xb169eTv71/S4QIAAAAAAABAjpwcHYAj7N27V1LO0zMsWbJEkjR58mS1b9/e5s+iRYtKNE4AAAAAAAAAyMtNOYI3rwTv8ePHSzgaAAAAAAAAACgaRvACAAAAAAAAgEHdlCN4w8LCHB0CAAAAAAAAAFy3m3IELwAAAAAAAACUBSR4AQAAAAAAAMCgSPACAAAAAAAAgEGR4AUAAAAAAAAAgyLBCwAAAAAAAAAGRYIXAAAAAAAAAAyKBC8AAAAAAAAAGBQJXgAAAAAAAAAwKBK8AAAAAAAAAGBQJHgBAAAAAAAAwKBI8AIAAAAAAACAQbk4OoCbnYunu0aE/+ToMFBMXDzdHR0CdQz5op4CKC4FbV9oA8o2R59nqF/Ij6PraFYM1FOgbCoNbQzKPhK8DmYymeTq5eHoMFCGUcdgBNRT4OZGG4DiRP2CEVBPAQDXgykaAAAAAAAAAMCgSPACAAAAAAAAgEGR4AUAAAAAAAAAgyLBCwAAAAAAAAAGRYIXAAAAAAAAAAyKBC8AAAAAAAAAGBQJXgAAAAAAAAAwKBK8AAAAAAAAAGBQJHgBAAAAAAAAwKBI8AIAAAAAAACAQZHgBQAAAAAAAACDIsELAAAAAAAAAAZFghcAAAAAAAAADIoELwAAAAAAAAAYFAleAAAAAAAAADAoErwAAAAAAAAAYFAkeAEAAAAAAADAoEjwAgAAAAAAAIBBkeAFAAAAAAAAAIMiwQsAAAAAAAAABkWCFwAAAAAAAAAMigRvKfDuu++qffv2qlChgsqXL69OnTpp6dKljg4LAAAAAAAAyNHixYvVokULubu7q3bt2vrggw8cHVKJWrt2rQYPHqygoCCZTCa98847DouFBG8pEBYWpkcffVSrVq3S1q1b1aFDBw0YMEAbNmxwdGgAAAAAAACAje3bt2vw4MHq27evdu3apQkTJui1117Tl19+6ejQSkxCQoJCQ0M1ZcoUBQQEODQWF4ceHZKkJUuW2LyeMmWKli5dqnnz5qljx44OigoAAAAAAACw98EHH6hNmzaaNGmSJKlRo0bav3+/Jk+erCeffNLB0ZWMfv36qV+/fpKkcePGOTQWRvCWQmazWfHx8fL29nZ0KAAAAAAAAICNDRs2qE+fPjbL+vTpoxMnTigqKspBUd28GMFbCk2cOFGXLl3SqFGjHB0KAAAAAAAADMJisSjiZIwyzGab5ekZGda/j0RG2b3Ozs/HSwH+FfM8TkxMjN20BFmvY2JiFBgYeF3v43qcO39JF+MT7JYX9DMwSapXu4acTKYSifdGIMFbynz++eeaOHGiFixY4NAvAwAAAAAAAIzFZDLp+OlYrVi3Pcf1V5OSNW324lxfOzmZ9PT9dxR3mMXLJP04b5nS0jNyXJ3fZ9CxVRMF1zFWTo4pGkqR9957T2PGjNGCBQvUs2dPR4cDAAAAAAAAg+l6awvVql6lSGV7dGilwGr++W5XrVo1xcbG2iw7c+aMdZ0j+Vcsr/7d2xepbJVK5dWnS9sbHFHxI8FbSrz55pt66623tHjxYpK7AAAAAAAAKBJnJyfd07+bXF0Ld+N+zWpV1LV9iwJt27FjRy1btsxm2dKlSxUUFFQq7khv16KRQurULFQZJyeT7hlQ+M+tNCDBWwq88MILevfdd/Xjjz+qQYMGio2NVWxsrC5fvuzo0AAAAAAAAGAwlSuWU/9utxZ4e1dXF90zoKucnQqWKnzxxRe1detWvf766zp06JC+//57TZ06Va+88kpRQ76hTCaThvbtLC8P9wKX6dGxlQID8h+9nCUhIUG7du3Srl27lJqaqtjYWO3atUvHjh0rSsjXxWSxWCwlflTYMOUyafNDDz2k6dOnl2wwAAAAAAAAMDyLxaLpc5bqcMSpfLe9o1cn3doytFD7X7RokV577TUdOnRIAQEBev755/Wvf/2rqOEWiz2HIjRj/sp8t6tVvYqeGDGowAluSVq9erW6detmt7xLly5avXp1YcK8biR4AQAAAAAAgDIoPuGqPpr2q64mpeS6TUidmnrk7j65DkA0ull/hOmv/bmPqnV1ddHzjwxR5QrlSjCqG4spGgzmVMxZXU3O/UsJAAAAAAAASJKfj5fu7H1bruu9PNw1tF+XMpvclaRBPTuqnK93rusHdL/V0MldiQSvoaRnZOin31bov1/M0MnTZxwdDgAAAAAAAEq5pg3qqmXj4BzX3dn7Nvn5eJVwRCXL08Ndd/fvmuO6BnVrqm3zRiUbUDEgwfsPGRkZ+vHHH9WrVy/5+/vL3d1dtWrVUp8+ffTNN98oIyPDYbHt2HtYl68kys3NVdWqVHJYHAAAAAAAADCOwbd3VHk/H5tlLRvXV9OGdR0UUcmqH1RDHVs3sVnm5emuIX3LxuhlErzZxMfH6/bbb9eDDz6oFStWyM3NTc2bN5fZbNby5cs1cuRIXblyxSGxpWdkKGzjX5Kkru1ayNXVxSFxAAAAAAAAwFg83N10d7+u1tflfL01qGdHxwXkAH06t1WVShWsr8vS6GUSvNk89thjWrVqlQIDAxUWFqbTp09r69atioqKUkxMjP7zn//I1dXVIbFljd719fFS2+YNHRIDAAAAAAAAjKleUHV1atNUknR3/67y9HB3cEQly9XVRcMGdpOTk0m3NAlW0wZlZ/SyyWKxWBwdRGmwY8cOtW7dWi4uLvrrr7/UpEmT/AsV0NTv5+lKQtJ17MGiK4lJslgs8nB3k5uDkswAAAAAAAAwLovForT09Js6t5SaliZXF5dSNzWDr4+nnn3oriKV5T7/v/3++++SpP79+9/Q5K4kXUlIUnxC4g3ZV3JKqpJTUm/IvgAAAAAAAHDzudlzS2Xt/ZPg/duBAwckSe3bt7/h+/b18byO0ozeBQAAAAAAAMqy68kfkuD9W3x8vCSpXLlyN3zfRR1eLUlbdh3Ub8vWydfHS2NHDefhagAAAAAAAACsyBb+zc/PT5J0+fLlG77vos/Bmzl6V5LS0tL17tezbmxgAAAAAAAAAByOOXhvgMaNG2vevHnatGnTDd/3jZiDl7l3AQAAAAAAAPwTCd6/3XnnnXr77be1ePFiHThwQKGhoTds30WbQ4O5dwEAAAAAAICbwfXMwWuyWCyWGxiLoQ0bNkyzZ89WrVq19MMPP6hLly7WdWfOnNG0adP03HPPydvbu9hjYe5dAAAAAAAAAPkhwZtNfHy8Bg8erNWrV0uSatSooerVqysmJkanT5+WxWLRxYsXVb58+WKNIz0jQ+99PUuX4hM0sEcHdWzdpFiPBwAAAAAAAMCYnBwdQGni5+enlStX6ttvv1XXrl119epV7d69W05OTurdu7e+/fZb+fr6FnscO/Ye0aX4BPn6eKlt84bFfjwAAAAAAAAAxsQI3lLor/1HtWT1VnVp15zRuwAAAAAAAAByRYK3lEpLT5dJJrm4ODs6FAAAAAAAAAClFAleAAAAAAAAADAo5uAFAAAAAAAAAIMiwQsAAAAAAAAABkWCFwAAAAAAAAAMigQvAAAAAAAAABgUCV4AAAAAAAAAMCgSvAAAAAAAAABgUCR4AQAAAAAAAMCgSPACAAAAAAAAgEGR4AUAAAAAAAAAgyLBCwAAAAAAAAAGRYIXAAAAAAAAAAyKBC8AAAAAAAAAGBQJXgAAAAAAAAAwKBK8AAAAAAAAAGBQJHgBAAAAAAAAwKBI8AIAAAAAAACAQZHgBQAAAAAAAACDIsELAAAAAAAAAAZFghcAAAAAAAAADIoELwAAAAAAAAAYFAleAAAAAAAAADAoErwAAAAAAAAAYFAkeAEAAAAAAADAoEjwAgAAAAAAAIBBkeAFAAAAAAAAAIMiwQsAAAAAAAAABkWCFwAAAAAAAAAMigQvAAAAAAAAABgUCV4AAAAAAAAAMCgSvAAAAAAAAABgUCR4AQAAAAAAAMCgSPACAAAAAAAAgEGR4AUAAAAAAAAAgyLBCwAAAAAAAAAGRYIXAAAAAAAAAAyKBC8AAAAAAAAAGBQJXgAAAAAAAAAwKBK8AAAAAAAAAGBQJHgBAAAAAAAAwKD+H0DmXlrTnTyYAAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# QNN library integrating with PyTorch\n",
"from qailab.circuit import build_circuit, RotationalEncoder, CXEntangler, RealAmplitudesBlock\n",
"from qailab.circuit.utils import assign_input_weight\n",
"\n",
"input_encoder = RotationalEncoder('x','input')\n",
"qnn_circuit = build_circuit(\n",
" 3,\n",
" [\n",
" input_encoder,\n",
" CXEntangler(),\n",
" RealAmplitudesBlock('weight'),\n",
" input_encoder, #You can put the same block twice in different parts of the circuit. It will encode the same parameters\n",
" CXEntangler(),\n",
" RealAmplitudesBlock('weight')\n",
" ],\n",
" measure_qubits=[0,1]\n",
" )\n",
"\n",
"qnn_circuit.assign_parameters(assign_input_weight(qnn_circuit,[1,2,3],np.random.randint(0,9,24))).draw('mpl')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The network is composed of a total of 3 qubits, but measurement is done only on the first two, which gives us an output size of 4 (ideal for our classification task). \n",
"As you can see the network is composed of different blocks, all of which can be seen below in their decomposed form."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABL8AAAEFCAYAAAACFUUjAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAerVJREFUeJzt3XdYFFfbBvB76b2LHVDELvZescTeuwmxJbFFE1uMiS2Jb6LGEE3UmBhrml2xa1Cx9y42LCBiQTpIh/P94QcR2cXddXdny/27Lq+E2SnPwj7nzDw7c45MCCFARERERERERERkhMykDoCIiIiIiIiIiEhbWPwiIiIiIiIiIiKjxeIXEREREREREREZLRa/iIiIiIiIiIjIaLH4RURERERERERERovFLyIiIiIiIiIiMlosfhERERERERERkdFi8YuIiIiIiIiIiIwWi19ERERERERERGS0TLr4tWbNGshkMqxZs0bqUIrVpk0byGQyqcPQGZlMhjZt2kgdBhGpac6cOZDJZAgNDZU6FCIiMiLDhg2DTCZDRESE1KG8FUX9pNTnwIbw+9X1dZEh/E6ISDkqF78iIiIgk8kK/bO0tETZsmUxYMAAnD9//q0C0mQDkx/rsGHD3npf+iY0NLTI3+H1fywgEb104cIFjBw5En5+frC3t4etrS18fX0RGBiIf//9FwCQm5uLxo0bw8zMDAcPHpS7nw0bNkAmk6FDhw4QQgCQ3ya+/s/Hx+et4je1AjgREekHbZ/3a8OIESMgk8ng7u6OzMxMqcN5a8ZafFF0/mRvbw9/f3989dVXSE1NlTpMIjIiFupu6Ovri/feew8A8OLFC1y4cAGbNm3C9u3bERISglatWmksSG3p3bs3mjRpgtKlS0sditrq16+Pbt26yX3tbS+4iQxdXl4epkyZgh9//BEWFhZo27YtevToAUtLS9y/fx+7d+/Gn3/+ia+//hozZ87EmjVrUK9ePYwYMQLXrl2Dk5NTwb6ePHmCsWPHwtnZGatWrSpSjHq1TXydi4uLNt8mERGRVhnKeX9KSgo2btwImUyG+Ph4bN++HQMHDpQ6LKXdvHkTdnZ2UoehU69+toQQeP78Ofbu3Ys5c+Zg3759OH78OMzNzSWOkoiMgdrFr0qVKmHOnDmFls2bNw/Tp0/HzJkzceTIkbeNTeucnZ3h7OwsdRhvpUGDBkX+DkT00owZM/Djjz+iTp062Lx5M3x9fQu9np6ejiVLliAuLg4AUK1aNcydOxdTpkzBp59+ilWrVhWs++GHHyI+Ph5r1qxB+fLlixxLXptIRERkDAzlvH/Dhg148eIFJk2ahEWLFmHlypUGVfyqWrWq1CHonLzPVmZmJpo2bYrTp0/jyJEjaNu2rTTBEZFR0eiYXyNHjgTw8hGjV8XGxuLTTz9FhQoVYG1tDU9PTwwYMADXr18vtJ6Pjw/Wrl0LAKhQoYLcx/e2bduGwYMHo1KlSrCzs4OzszNatmyJLVu2FNrXmjVrUKFCBQDA2rVrC91Om/98fXFjfp04cQJdu3aFm5sbbGxsULVqVcyePRtpaWlF1s2P8dmzZxg6dCg8PDxga2uLJk2ayB3z5sKFC/j4449Rs2ZNODs7w9bWFrVq1cK8efOQnZ1d7O9YXa8+Anr37l307t0brq6usLe3R/v27XHlyhW528XExGDy5MmoUqUKbG1t4ebmhsaNG2PhwoVF1t25cycCAgIK3lPt2rURFBSEnJwcufv+/fffUbNmTdjY2KB8+fL47LPPkJGRofA9pKSkYPbs2ahRowZsbW3h4uKCjh074vjx40XWzX9MLCMjAzNmzICvry8sLS1ZnDAhd+/exYIFC+Du7o59+/YVKXwBgK2tLaZOnYqvvvqqYNnEiRPRokULrF69Grt37wYArFy5Ert370bPnj0xdOjQt45NlTZDJpMVXFS82o69+jj3qlWr0LNnT/j4+MDGxgZubm7o2LEjDh8+XOTY+Y9Mz5kzB+fPn0eHDh3g6OgIZ2dn9O7dW+FjFVu3bkWDBg1ga2uLkiVL4sMPP0RCQgJ8fHxUusv06tWrGDRoEEqXLg0rKyt4e3tj/PjxBQXIfK+2WTdv3kTv3r3h7u5ulI9+EBEZIkXn/VlZWQgKCkK9evVgb28PR0dHtGzZEjt27Ciyjzt37uCzzz5DvXr14O7uDhsbG1SuXBmff/65Wo+8rVy5EhYWFvjss88QEBCAgwcPIjIyUu66+f1XUlISxowZg9KlS8Pe3h6tWrXCxYsXAQCPHz/Ge++9B09PT9ja2uKdd95BeHh4kX3l9+uPHj3C4MGD4eHhATs7OzRv3hwhISFKx//6dc+bro3eNMSLomFQwsLC0K1bt4L+v0uXLkWuy14XHByMdu3awdXVFTY2NqhZsyYWLlyI3NzcQuvl5eXh999/R6NGjeDm5gZbW1uUK1cO3bt3V3osUGtrawQEBAB4eR2pjJycHAQFBaF27dqwtbWFs7MzAgICsHPnzmLf0zvvvFPw2fPx8UFgYOAbfxfAy/MpFxcXeHl54datW0rFSETSUvvOr2J3avHfbp8/f46mTZvi3r17aNOmDQYNGoQHDx5g8+bN2L17N/bv348WLVoAAD799FOsWbMGV65cwSeffFLwqNCrF1bTp0+HlZUVWrRogdKlS+P58+fYsWMH+vXrh59++gnjx48HANSpUweffPIJFi9ejNq1a6NXr14F+3jThdqmTZswePBgWFtbY+DAgfD09MSBAwfw9ddfY//+/QgNDYWNjU2hbRITE9GiRQs4OzsjMDAQMTEx2LBhAzp27IgLFy6gZs2aBeuuWLECO3fuRKtWrdClSxekpaUhNDQU06dPx7lz54oU8jQpIiICTZo0QY0aNTBixAjcu3cPwcHBCAgIwM2bN1GyZMmCdW/fvo2AgAA8efIELVq0QK9evfDixQuEhYXh22+/xZQpUwrWDQoKwuTJk+Hm5oYhQ4bA3t4eO3bswOTJk3Hs2DFs3bq10GNi33zzDWbNmlVwEW1paYkNGzbg5s2bcuOOj49Hq1atEBYWhubNm2P06NFITk4uiH3Tpk2F/sb5+vbtiytXrqBTp05wcXEpKIiS8VuzZg1yc3MxatSoQp9reaytrQv+38zMDGvWrEHt2rXx4YcfYvfu3Zg4cSI8PDzw66+/aiw+ZduM2bNnY82aNYiMjMTs2bMLtq9Tp07B/48bNw61a9dG+/btUaJECURHR2P79u1o3749tm7dip49exY5/rlz57BgwQIEBARg1KhRuHTpErZv345r167h+vXrhdq4VatWYeTIkXBycsL7778PZ2dn7NmzBx06dEB2djYsLS2Ves87duzAgAEDYGZmhp49e6J8+fK4ceMGlixZgv379+PMmTNwdXUttM3du3fRpEkT1KpVC8OGDUNcXBysrKxU+VUTEZEWvXren5mZiU6dOiE0NBR16tTByJEjkZ2dXfAF0s8//4yPP/64YP2tW7di5cqVCAgIQJs2bZCXl4fTp09j/vz5OHLkCI4ePap0H3Pjxg2cPn0aXbp0QcmSJfH+++/j4MGDWL16tcIvP7OystChQwdkZGRg4MCBePbsGTZu3Ij27dvj5MmT6NixI0qXLo333nsPd+/exc6dO9G1a1fcvHmzyKN4CQkJaN68OUqUKIEPPvgAz58/x4YNG9CpUyds3rxZ7nnqmyhzbaSq69evo3nz5khNTUWfPn3g5+eHs2fPonnz5qhdu7bcbaZPn4558+ahbNmy6NOnD5ydnXHs2DFMnToVZ86cwaZNmwqtu2DBAvj6+mLIkCFwdHREdHQ0jh8/jpCQEKXGJM7Kyir4su7V8x1FhBDo168fgoODUblyZYwbNw4vXrzAhg0b0KNHDwQFBWHixImFtpk8eTKCgoLg5uaGXr16wdPTE1FRUQgJCUH9+vULXbu9bsuWLXj33Xfh6+uL/fv3o1y5cm+MkYj0gFDRgwcPBADRsWPHIq99++23AoDo2rVrwbLhw4cLAGL69OmF1t29e7cAICpVqiRyc3MLlg8dOlQAEA8ePJB7/Hv37hVZlpKSImrVqiWcnZ3FixcvisQ6dOhQuftavXq1ACBWr15dsCwpKUk4OzsLa2trceXKlYLlubm5YuDAgQKA+PrrrwvtB4AAIMaOHVvovfz+++8CgBg1alSh9SMjI0VOTk6hZXl5eWLEiBECgDh+/Hih11q3bi1e/1MdPnxYABD169cXs2fPlvvv1KlTRX4XAMS8efMK7WvGjBkCgPjuu+8KLW/QoIEAIH777bciv7uoqKiC/797966wsLAQnp6e4uHDhwXLMzIyRIsWLQQAsW7duoLl4eHhwsLCQpQtW1Y8e/asYHlSUpKoUqWKACBat25d6HhDhgwRAMSKFSsKLX/27JkoX768KFGihEhPTy/yO6tTp46Ii4srEj8ZvzZt2ggAIiQkRK3tlyxZIgAIa2trAUBs2rRJ7nr5ueXr66swF/fu3VtoG1XbDHltwKvu379fZNnjx49FmTJlhJ+fX6Hl+W0HALF+/fpCrwUGBgoA4p9//ilYlpCQIBwcHIS9vb24c+dOwfLs7GzRtm1bAUB4e3sX2s/s2bMFAHH48OGCZbGxscLJyUmULVtWREREFFr/n3/+EQDExx9/XLDs1TZr1qxZCt87ERFpj6rn/V988YUAIGbOnCny8vIKlicnJ4sGDRoIKysrER0dXbD80aNHIjMzs8i+v/rqKwFA/Pnnn4WWF3edMGnSpEJ9WEpKirC3txdeXl6F+tp83t7eAoDo37+/yM7OLlg+f/58AUC4uLiIiRMnFnofY8aMEQDEli1bCu0rv78aMmRIofWvXLkirKysRIkSJURaWlrBcnn9ZP5+Xj8HLu49v+laR97+8s8pXv/dTp8+veB9vHqsAwcOFHwGUlNTC5bn5eWJ0aNHCwBi8+bNBcvd3NxEmTJlCl2T5Xv1nFze+dOsWbPE2LFjha+vr7CxsRHff/99kX3IOydau3ZtwXt99fMUGRkpPDw8hIWFRaFryJ07dwoAolatWiI2NrbQvrKzs8XTp08Lfn799//LL78IMzMz0axZMxEfH18kPiLSX2oXv15tqKZMmSICAgIEAFGyZElx48YNIYQQmZmZwsbGRri7u8ttADt06CAAiKNHjxYse1PxS5EffvhBABChoaFFYlWl+LVu3ToBQIwZM6bI+pGRkcLCwkJUrFix0HIAwt7eXqSkpBRanp2dLSwsLES9evWUeg8XLlwQAMScOXMKLS+u+FXcvx9//LFg/fzfRYUKFYqcAOS/1qdPn4JlZ86cEQBEq1at3hj3119/LQCI+fPnF3ntxIkTAoBo27ZtwbL8E5offvihyPp//PFHkY76+fPnwtzcvNA+XvXTTz8JAGLnzp0Fy/J/Z8HBwW+Mn4xT1apVBQBx69YttbbPy8sT5cuXFwBEt27dFK73apFG0b9PPvmk0DaqthlvKn4pMn78eAGgULEpv+2Ql9v5r02aNKlg2Zo1awQAMWHChCLrnzx5UuniV1BQUJFC+Kvq1asnPDw8Cn7O/72WKlVK7oURERFpnyrn/bm5ucLV1VX4+voWKgDl27FjhwAgfv755zceNy4uTgAQw4YNK7Rc0XVCVlaWKFGihHBycir0Zeh7770nAIj9+/cXOUZ+8SsyMrLQ8ocPHwoAwsHBocj1y9GjR+V+KQNAmJubF/lyRwghRo4cWaRAJFXxKzIyUgAQ/v7+RdZNSUkRLi4uRY7Vo0cPub8nIYRITEwUMplM9O3bt2CZm5ub8PHxERkZGXJjej12Rf+6desmLl26VGQ7eedE+V/GnTlzpsj6//vf/wRQ+OaFzp07CwDi0KFDxcYoROHf/5w5cwpie7WYSUSGQe3HHu/du1donBwAKFWqFI4dO4ZKlSoBAG7duoWMjAwEBATInbkkICAA//77Ly5fvoyWLVsqddyYmBjMmzcPe/fuRWRkJNLT0wu9/vjxYzXf0UuXLl0CALm35Hp5eaFixYq4c+cOUlJS4OjoWPBa5cqV4eDgUGh9CwsLlCxZEomJiYWWZ2VlYcmSJVi/fj1u3bqF1NRUCCHUeg+jRo3C8uXLlV6/Tp06MDMrPNRb/q26r8Z59uxZAMA777zzxn0W9ztr2rQpbGxscPny5YJl+eOLyfuby1t27tw55ObmIjMzU+5t6/ljL9y6davIzJeNGjV6Y/xE8qxZswZRUVEAgJMnT+Lp06coVaqUwvU7duyIffv2Kb1/VdqMN7l//z6+++47HDp0CNHR0UWmdn/8+DG8vb0LLatfv36R/chrC/LzNf/x9Fc1bty40OMuxTl9+jQA4MyZM7h3716R1zMyMhAbG4vY2Fh4eHgULK9duzYfcyQikpgy5/23b99GQkICypQpU2Rd4OVQKAAKjY8khMDq1auxZs0aXL9+HUlJScjLyyt4Xdlz4uDgYDx//hwjR44s9Nj++++/jz///BMrV66Ue07r6uoKLy+vQsvyZ4H38/Mrcv2S/5q8uLy8vIr0tcDLc9uVK1fi0qVL6Nu3r1LvR1uK69MdHBxQp06dIuNynT59Gvb29oUmAXqVra1tob/poEGDsGzZMtSsWRODBg1CQEAAmjZtCltbW7nbv37+FBcXhxMnTuCTTz5B8+bNcejQITRu3LjY93Xp0iXY2dnJPe/PHzvs1WuRs2fPwtraGq1bty52v6/69NNPERwcjGHDhmHFihVKn/8Qkf5QO2tfbaieP3+OtWvXYtq0aejRowfOnj0LBwcHJCcnA4DC8XbyO5D89d4kPj4eDRs2xMOHD9G8eXO0b98eLi4uMDc3x+XLlxEcHFzkok9VysR8584dJCcnFyp+OTk5yV3fwsKiyECQ/fr1w86dO1G5cuWCMcUsLS2RmJiIxYsXv/V7KI68OPMb71fjTEpKAgCULVv2jfss7ncmk8lQsmRJREdHF9m3p6dnkfXl7SM+Ph7Ay0kITpw4oTCOFy9eKLU/Mg2lSpXCrVu3EB0djSpVqqi0bVRUFD799FOUKFECkyZNwvTp0zF69Ghs375dY/Gp0mYU5+7du2jUqBGSk5MREBCA7t27w8nJCWZmZggNDcWRI0fktinKtgX5+S0vX83MzAoVqoqTn8dLly4tdr0XL14U2idzmIhIesqc9+e382FhYQgLC1O4r1fP1yZMmIAlS5agfPny6NGjB0qXLl0wDudXX32l9DnxypUrAbwsdr2qXbt2KFu2LIKDgxEfHw83N7dCrxfXFxb3mrwJqhT1V/nL889/pVTcOTig+Dw8JydHbkEz36t/08WLF6NChQpYvXo15s6di7lz58LGxgYDBgzADz/88MbzBnd3d/To0QN2dnbo0KEDZsyYgX///bfYbZKTk+XOxA3Iv95MSkpC2bJli9wQUJyjR48CALp3787CF5GB0kjmlihRAlOmTEFSUhLmzp2LGTNmYNGiRQWdxrNnz+Ru9/TpUwCKLwJft3LlSjx8+BDffPMNZsyYUei1efPmITg4+C3eBQrFoqmYX3fu3Dns3LkTHTt2xO7duwsNlnn69GksXrxYrf1qWv6Amq8WrRR59Xf2+jdeQgg8e/as0O/L2dkZwMu7+F5fX97vPX/byZMny51lsjivDrJPpqV58+YIDQ3FwYMHVZoiWwiBESNGIDk5GZs3b0bfvn1x9OhRBAcH488//8R7772nxahV9+OPPyIhIQF//PFHkdhGjx791tPP5+dfTExMkdfy8vIQGxurVJE8fz/Xrl0rdhDZ1zGHiYj0y5vO+/v27YvNmze/cT8xMTFYunQp/P39cerUqUJ3WT19+rTYYsuroqKicODAAQAo9k6eP//8ExMmTFBqn+pQdO2Qvzz//FeT8os38mZWl1dse/UcXB5F5+EymUzpWRctLCwwZcoUTJkyBY8fP8aRI0ewevVqrFu3Dk+fPsX+/fuV2k/+3V7nzp1747pOTk4K35O8azcXFxc8ffoUeXl5ShfAtm3bhuHDh2PQoEFYv349+vTpo9R2RKQ/lC93K+GLL75AmTJlsGzZMkRERKBq1aqwsbHBuXPnkJaWVmT9/NtqX53FI78YJO/Oh/xHZeTNXHbs2LEiy4rblyJ169YtFNuroqKicO/ePVSsWLHQXV+qyH8PXbt2LTJLjLz3IJX824bzTyaKU9zv7MyZM8jIyCj0N86fSUbe+5W3rGHDhpDJZDh16pQyoRMBAIYNGwZzc3P89ttvBY9aKPLqN8vLli1DSEgIBg8eXPB4wooVK+Di4oIJEybgyZMnWo1bHnXaRSFEsXdKKis/X+Xt6+zZs3JPuOXJP4llHhMRGYfXz/urVasGJycnnD9/Xu6dUa+7f/8+hBBo3759kccLVTknXrNmDfLy8tCiRQuMHDmyyL+hQ4cC+O/uMG15+PAhIiMjiyzPfy/558uqKu4coLgvq/OHJXlVfp9+/PjxIq+lpqYWejQwX+PGjREXF1cwzIgqypQpg8GDB2Pfvn2oVKkSQkJCigxZo0hCQgIAFHoMVpG6desiLS2tYNiWV8m73mzUqBEyMzNV+oLQ29sboaGhKF++PAYOHIgtW7YovS0R6QeNFr9sbW0xbdo0ZGdn45tvvoGVlRUGDx6M2NhYfPfdd4XW3bdvH/bv349KlSqhefPmBcvzb0fOH2vnVfl3Cb3eYP/999/Ys2dPkfVdXV0hk8nk7kuRnj17wtnZGatXry50y7YQAtOmTUNOTg6GDRum9P5ep+g9hIWFFfkdSalhw4Zo2LAhjh49ihUrVhR5/dVOdsiQIbCwsEBQUFChMRCysrIwbdo0ACj0OxsyZAjMzc0RFBRU6Fua5ORkzJ07t8ixSpUqhQEDBuDkyZP4/vvvC42Plu/MmTNyC6xkuipVqoTPPvsMsbGx6Ny5Mx48eFBknYyMDAQFBRWMJXfv3j1MmzYNpUuXxpIlSwrWK1u2LBYtWoSEhASMGjVKV2+hgDrt4rx583D9+vW3PnbPnj3h4OCAlStXFhqrKycnBzNnzlR6P8OHD4ejoyO+/PJLuY/DpKWlFYwLRkRE+u/1834LCwuMGTMGkZGRmDJlitwC2PXr1wvO/fL7r5MnTxYqcDx69AjTp09XKob8McNkMhnWrl2L33//vci/NWvWoGnTprh69SrOnz+vgXcuX25uLr744otC56lXr17FH3/8gRIlSqBLly5q7be4cwAnJydUqVIFx48fx927dwuWp6SkyP0denl5oVWrVrh69Sr++uuvQq99++23cscczb9bbsSIEYiLiyvy+tOnT3Hz5k0AL79MPHnyZJF1Xrx4gdTUVFhaWip9p1VQUBAAoFWrVm9cN7/AOX369EKfu6ioKAQFBcHCwgLvvvtuwfJx48YBAD755JOCx3Xz5eTkKLyLz8vLC6GhofD29sagQYOUusORiPSHxh9Y/uijjzB//nysW7cOX3zxBebPn48jR45g7ty5OHnyJBo3boyIiAhs2rQJdnZ2WL16daFGsG3btli4cCE++ugj9O3bF/b29vD29kZgYCACAwMxf/58jB8/HocPH4a3tzeuXLmCgwcPok+fPti6dWuhWBwcHAoKOIGBgfDz84OZmRkCAwPlDkgJvOxEVqxYgcGDB6Nx48YYOHAgSpQogZCQEFy4cAGNGjXC1KlT1f79NGrUCI0aNcLGjRvx5MkTNGnSBA8fPsSOHTvQtWtXlRvR8+fPyx0EHgBsbGzw+eefqx3rX3/9hTZt2uCjjz7CH3/8gaZNmyIjIwNhYWG4dOlSQQfo6+uL+fPnY/LkyfD398eAAQNgb2+PnTt34vbt2+jZs2ehx7EqVaqEWbNmYfbs2QXrW1hYYMuWLfD398ft27eLxLJs2TLcvn0bn332WUEsLi4uiIqKwvnz5xEeHo4nT57InViBTNfcuXORkZGBH3/8EVWqVEHbtm1Rs2ZNWFpa4sGDBwgJCUFcXBzmzp2LvLw8DB06FC9evMCGDRuKjAsydOhQbNmyBTt37sS6deuKjCty9+5dhbkIAJ9//nmhQXhV0bZt24JHMDt37gwbGxvUrl0b3bt3x+jRo7F69Wr07dsXAwYMgLu7O06fPo2LFy+ia9eu2L17t1rHzOfi4oKgoCB89NFHqF+/PgYNGgRnZ2fs2bMH1tbWKFOmjFInsiVKlMA///yD/v37o3bt2ujUqROqVq2KzMxMRERE4MiRI2jWrJlKkwYQEZG0Xj/v/+qrr3Dx4kX89NNP2L17N1q1agVPT09ER0fj2rVruHLlCk6dOgVPT0+ULl0affv2xZYtW9CgQQO0a9cOz549w65du9CuXTu5k6O87tChQ3jw4AFat26NihUrKlxv+PDhOHXqFFauXIkGDRpo8ldQwN/fH8ePH0fDhg3Rvn17PH/+HBs2bEBOTg5+++03hQO+v0lx10bAy2FBPvroIzRt2hT9+/dHXl4e9u7di4YNG8rd39KlS9G8eXO8//772L59O/z8/HD27FmcO3cOLVu2LHLXXadOnTBz5kx88803qFSpEjp16gRvb2/ExcXh7t27OHbsGObOnYtq1aohPT0dzZs3R+XKlVG/fn14eXkhNTUVu3btwtOnTzFlypSCMd3yvX7+FB8fjxMnTuDixYtwdXXF/Pnz3/g7CgwMxNatWxEcHAx/f39069at4HwuPj4eP/zwQ6HPR5cuXTBlyhQsXLgQfn5+6N27d8Hn9ODBg5gyZQo+/fRTuccqX748QkNDERAQgMGDB0MIgf79+78xRiLSA6pOD5k/LW3Hjh0VrvPzzz8LACIwMFAIIcTz58/FhAkThLe3t7C0tBQeHh6iX79+4tq1a3K3X7BggfDz8xOWlpZFpui9fPmyeOedd4Srq6twdHQUrVu3FiEhIWL16tUCgFi9enWhfd2+fVt06dJFuLi4CJlMVmhaYUXbCPFyKuPOnTsLFxcXYWVlJSpXrixmzpwpUlNTi6z7eoyv8vb2Ft7e3oWWxcTEiBEjRogyZcoIGxsbUatWLbF06VJx//59udMVy5vS9/Dhw8VODwxAODs7F6yv6lTI+Z4+fSo++eQTUbFiRWFlZSXc3NxE48aNRVBQUJF1g4ODRevWrYWjo6OwtrYWtWrVEj/88IPIzs6We8wVK1aI6tWrCysrK1GuXDkxZcoUkZaWpjCWtLQ0sWDBAlG/fn1hb28vbG1tRYUKFUSvXr3EunXrCh1H3u+MTNe5c+fEiBEjRKVKlYStra2wtrYWPj4+YsiQIeLff/8VQrxsdwCI4cOHK9zP48ePhZubm3BxcRHR0dFCiDdP1Z3/LyEhoWA/qrYZ2dnZ4rPPPhNeXl7CwsKiSC4fPnxYNG/eXDg6OgoXFxfRpUsXceHCBblTqee3HbNnzy5y7OLaiU2bNom6desKa2tr4enpKT744AMRFxcnHBwcRO3atQutq2gKdyGEuHXrlhg5cqTw9vYWVlZWwtXVVdSqVUtMmDBBnD17VqlYiIhIN9Q578/JyRG//vqraN68uXBychLW1tbCy8tLdOrUSfzyyy+FzqVTUlLE5MmThY+Pj7C2thZ+fn7im2++EVlZWXL7yqFDhwoA4sGDB0IIIQYPHqzwXP5VSUlJwtbWVjg7O4u0tDQhhPz+Np+iflpR35S/flRUlBg4cKBwc3MTNjY2omnTpuLAgQNF9qOon1R03OKujYQQYunSpQWve3l5iVmzZin8HQohxLVr10SXLl2Eg4ODcHR0FJ07dxbXrl0r8vt91b///iu6d+8uSpQoISwtLUWpUqVE06ZNxTfffCMePnwohBAiKytLzJ8/X7zzzjuiXLlywsrKSpQsWVK0atVK/P333yIvL6/I7/L1f9bW1sLX11eMGTNGREZGFolD0Tl+dna2WLhwoahVq5awtrYuuE4MDg4usm6+LVu2iICAAOHs7FxwbhgYGCiuX79esI6i38mjR4+En5+fsLCwEBs2bFB4DCLSHzIh5DxDRkRE9AZ3796Fn58fBgwYgA0bNkgdDhERkSRkMhlat24td/xbIiLSDxod84uIiIxPQkJCkenm09PTMXHiRABAr169JIiKiIiIiIhIORof84uIiIzLkSNHMHLkSLzzzjvw8vJCbGwsDh06hIiICLRt2xYDBw6UOkQiIiIiIiKFWPwiIqJi1ahRAx06dMCJEyewfft2AC8nrvjmm28wZcoUpWduIiIiIiIikgLH/CIiIiIiIiIiIqPFr+uJiIiIiIiIiMhosfhFRERERERERERGi8UvIiIiIiIiIiIyWix+ERERERERERGR0WLxi4iIiIiIiIiIjBaLX0REREREREREZLRY/CIiIiIiIiIiIqPF4hcRERERERERERktFr+IiIiIiIiIiMhosfhFRERERERERERGi8UvIiIiIiIiIiIyWix+ERERERERERGR0WLxi4iIiIiIiIiIjBaLX0REREREREREZLQspA6AyJidO3dOpfUTEhKwadMm9O/fH66urkpv17BhQ1VDIyI9wXaCiIiIiEi7eOcXkR5JSEjA77//joSEBKlDISI9xXaCiIiIiEg1LH4REREREREREZHRYvGLiIiIiIiIiIiMFotfRERERERERERktFj8ItIjHh4emD59Ojw8PKQOhYj0FNsJIiIiIiLVcLZHIj3i5OSE3r17Sx0GEekxthNERERERKrhnV9EeiQhIQGrVq3iLG5EpBDbCSIiIiIi1bD4RaRHEhISsHz5cl7UEpFCbCeIiIiIiFTD4hcRERERERERERktFr+IiIiIiIiIiMhoccB7UtrasgMghJA6DJXIZDIMjd4odRhERCaN/QeRYswPIsWYH0SKGVp+SJ0bLH6R0oQQgAElFwAYVrSAu7s7pk6dCnd3d6lDISI9ZYjtBPsPIsWYH0SKMT+IFDO0/JA6Uha/iPSIs7Mz+vfvL3UYRKTH2E4QEREREamGY34R6ZHExESsW7cOiYmJUodCRHqK7QQRERERkWpY/CLSI/Hx8ViyZAni4+OlDoWI9BTbCSIiIiIi1bD4RURERERERERERotjfhERkd5JTM7EqSsxuHAzFhduxOHJ8zRkZufCysIcnm42qF/dA/Wre6BpbU94uNpIHS4REREREekxFr+IiEhvnLv+HMs23MT6ffeRkZmrcL1dR6MAAJYWZujb3gdjB1ZDi3olIZPJdBUqEREREREZCBa/iPSIm5sbJk6cCDc3N6lDIdKph09S8dFXx7H/ZLRK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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Quantum circuit library\n",
"from qiskit import QuantumCircuit\n",
"\n",
"\n",
"circuit = QuantumCircuit(3)\n",
"RotationalEncoder('x',\"input\").add_to_circuit(circuit)\n",
"circuit.barrier()\n",
"CXEntangler().add_to_circuit(circuit)\n",
"circuit.barrier()\n",
"RealAmplitudesBlock('weight').add_to_circuit(circuit)\n",
"\n",
"fig = plt.figure(figsize=(15,10))\n",
"ax = fig.add_subplot()\n",
"height = 0.8\n",
"ax.text(-2.5, height, 'RotationalEncoder', size=14)\n",
"ax.text(2, height, 'CXEntangler', size=14)\n",
"ax.text(9, height, 'RealAmplitudesBlock', size=14)\n",
"\n",
"circuit.assign_parameters(assign_input_weight(circuit,[1,2,3],np.random.randint(0,9,12))).decompose().decompose().draw('mpl', ax=ax)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Hybrid neural network\n",
"\n",
"Our final network will first consist of a few convolutional and max-pooling layers, which will extract interesting features and reduce the size of the image. \n",
"After that, the input is fed into two linear layers, the second of which 'compresses' the shape of the values to fit into our QNN. \n",
"The last layer in our network is the quantum layer, which outputs a distribution of measurements from its quantum circuit. \n",
"After creating the entire network, it is fed into a `QModel` instance, which is a useful wrapper class for PyTorch networks and provides a scikit-learn predictor interface."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# Neural networks libraries\n",
"import torch.nn as nn \n",
"\n",
"from qailab.torch import QLayer,QModel\n",
"\n",
"qlayer = QLayer(qnn_circuit)\n",
"\n",
"sequential_net = nn.Sequential(\n",
" nn.Conv2d(in_channels=1,out_channels=8,kernel_size=3),\n",
" nn.ReLU(),\n",
" nn.MaxPool2d(2),\n",
" nn.Conv2d(in_channels=8,out_channels=32,kernel_size=3),\n",
" nn.ReLU(),\n",
" nn.MaxPool2d(2),\n",
" nn.Flatten(),\n",
" nn.Linear(800,128),\n",
" nn.ReLU(),\n",
" nn.Linear(128,qlayer.in_features), #QLayers have 2 useful attributes: in_features and out_features, which represent the needed input size and output size\n",
" qlayer\n",
" \n",
")\n",
"model = QModel(\n",
" module=sequential_net,\n",
" loss=nn.CrossEntropyLoss(), #Multi-class classification loss\n",
" optimizer_type='adam',\n",
" learning_rate=0.001,\n",
" batch_size=4,\n",
" validation_fraction=0.1,\n",
" epochs=10,\n",
" metric=\"accuracy\"\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Model training and results."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Training\n",
"\n",
"To train our model we can simply call `QModel.fit()`"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 10/10 [07:55<00:00, 47.53s/epochs, acc=1, epoch=10, loss=0.928] \n"
]
}
],
"source": [
"model.fit(X_train,y_train)\n",
"pass"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Below we can see how our model was performing during the 10 epochs of training."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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mc/08/M77zyAQYMGkZqayhdffFFyrLCwkNdffx1/f38uu+yyCtdy880388svvzBlyhRCQ0MZOHBgFX4iEfk9TQUXkT/0wQcf8PPPP593/IEHHuB///sf8+fPp0+fPtx77724u7vzzjvvkJeXx/PPP19ybrt27ejXrx9du3YlJCSEdevWlUzBBtizZw9XXHEFI0eOpF27dri7uzN79myOHj3KjTfeWC0/V1ZWFo0aNWLEiBHExsbi7+/PggULWLt2bZnWoq5du/LFF18wceJEunXrhr+/P0OHDuWuu+7inXfeYezYsaxfv56mTZvy1VdfsXz5cqZMmUJAQECFaxk1ahT//ve/mT17Nvfccw8eHh7V8SOL1D1mT9cSkdqleCr4hR5JSUmGYRjGhg0bjP79+xv+/v6Gr6+vcfnllxsrVqwoc6///e9/Rvfu3Y3g4GDDx8fHaNOmjfH0008b+fn5hmEYRlpamjFu3DijTZs2hp+fnxEUFGT06NHDmDVr1p/WOWbMGMPPz++844899pjx+7/aOGcqeF5envGvf/3LiI2NNQICAgw/Pz8jNjbWePPNN8tck52dbYwaNcoIDg42gDLTwo8ePWrceuutRv369Q1PT0+jY8eOxocffljm+uKp4H82zX3QoEEGcN4/OxGpOothGIY5sUpERIYPH87WrVvZt2+f2aWIuAyNuRERMUlKSgpz587VQGIRB9OYGxGRGpaYmMjy5ct577338PDw4O9//7vZJYm4FLXciIjUsMWLF3PzzTeTmJjIRx99REREhNklibgUjbkRERERl6KWGxEREXEpCjciIiLiUurcgGKbzUZycjIBAQEXXF5dREREahfDMMjKyiIqKuq8jWt/r86Fm+Tk5DL73oiIiIjzSEpKolGjRuWeU+fCTfHS6ElJSSX734iIiEjtlpmZSXR0dIW2OKlz4aa4KyowMFDhRkRExMlUZEiJBhSLiIiIS1G4EREREZeicCMiIiIupc6NuREREddhs9nIz883uwxxEE9Pzz+d5l0RCjciIuKU8vPzSUxMxGazmV2KOIjVaqVZs2Z4enpe1H0UbkRExOkYhkFKSgpubm5ER0c75P/2xVzFi+ympKTQuHHji1poV+FGREScTmFhITk5OURFReHr62t2OeIgYWFhJCcnU1hYiIeHR5Xvo6grIiJOp6ioCOCiuy+kdin+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2ck7d+6kZ8+eWCyWkmO9e/cmOzubw4cPlxzr1KlTmesiIyM5duxYpT6rstRyU0PiooNpGOzDkfQzLN5znP7tL5yGRUSkiv77J9vduJ0z8PYvj0K/yRc+13LO///7hv75vSto6NChGIbB3Llz6datG0uXLuWVV14B7F1C8+fP58UXX6RFixb4+PgwYsQI8vPzHfLZAJ9//jmTJk3ipZdeomfPngQEBPDCCy+wevVqh33GuTw8PMq8tlgs5405cjSFmxpisVgY1DGCd5cmMndLisKNiEh18PSr+LnunoBnxc61WCp373J4e3tz7bXXMmPGDPbt20fr1q3p0qULAMuXL2fs2LEMH27vOsvOzubAgQMVvnfbtm355JNPyM3NLWm9WbVqVZlzli9fTq9evbj33ntLjiUkJJQ5x9PTk6Ki8nsZ2rZty9dff41hGCWtN8uXLycgIIBGjRpVuObqoG6pGlS8oN+CnUc5k6+uKRGRumr06NHMnTuXDz74gNGjR5ccb9myJd988w2bNm1i8+bNjBo1qlKtHKNGjcJisXDnnXeyY8cOfvzxR1588cUy57Rs2ZJ169Yxb9489uzZwyOPPMLatWvLnNO0aVO2bNnC7t27SUtLo6Cg4LzPuvfee0lKSuK+++5j165dfPvttzz22GNMnDixZLyNWRRualBsoyAaBvuQk1/Eot3V298oIiK111/+8hdCQkLYvXs3o0aNKjn+8ssvU69ePXr16sXQoUPp379/SatORfj7+/P999+zdetW4uLieOihh3juuefKnPP3v/+da6+9lhtuuIEePXpw4sSJMq04AHfeeSetW7cmPj6esLAwli9fft5nNWzYkB9//JE1a9YQGxvL3Xffze23387DDz9cyX8ajmcxylsi2AVlZmYSFBRERkZGje4QXuzZH3fyzpL9DO4UyRujKv4vrIiIlMrNzSUxMZFmzZqVGTwrzq2832tlvr/VclPDhpztmvp15zFy8gv/5GwRERGpLIWbGtahYSCNQ3w5U1DEb7uOm12OiIiIy1G4qWEWi6VkzZu5Wx0zrVBERERKKdyYYPDZjTR/3XWM03nqmhIREXEkhRsTtI8KpGmoL7kFNhbu0qwpEZGqqmNzYlyeo36fCjcmKNM1tUVdUyIileXm5gbg0JV7xXzFv8/i329VaYVikwzuGMUbvyXw2+7jZOcV4u+l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xrRv356NGzfy8ssvc9ttt5ldmlPTVHAHmTp1Ki+88AKpqal07tyZ1157jR49ephdVp1ksVj+8PiHH37I2LFja7YY+UP9+vXTVHAT/fDDD0yePJm9e/fSrFkzJk6cyJ133ml2WXVSVlYWjzzyCLNnz+bYsWNERUVx00038eijj+Lp6Wl2eU5L4UZERERcisbciIiIiEtRuBERERGXonAjIiIiLkXhRkRERFyKwo2IiIi4FIUbERERcSkKNyIiIuJSFG5ERLAv/jhnzhyzyxARB1C4ERHTjR07FovFct5jwIABZpcmIk5Ie0uJSK0wYMAAPvzwwzLHvLy8TKpGRJyZWm5EpFbw8vIiIiKizKNevXqAvcvorbfeYuDAgfj4+NC8eXO++uqrMtdv3bqVv/zlL/j4+BAaGspdd91FdnZ2mXM++OAD2rdvj5eXF5GRkYwfP77M+2lpaQwfPhxfX19atmzJd999V70/tIhUC4UbEXEKjzzyCNdddx2bN29m9OjR3HjjjezcuROA06dP079/f+rVq8fatWv58ssvWbBgQZnw8tZbbzFu3Djuuusutm7dynfffUeLFi3KfMYTTzzByJEj2bJlC4MGDWL06NGcPHmyRn9OEXEAQ0TEZGPGjDHc3NwMPz+/Mo+nn37aMAzDAIy77767zDU9evQw7rnnHsMwDGPatGlGvXr1jOzs7JL3586da1itViM1NdUwDMOIiooyHnrooQvWABgPP/xwyevs7GwDMH766SeH/ZwiUjM05kZEaoXLL7+ct956q8yxkJCQkuc9e/Ys817Pnj3ZtGkTADt37iQ2NhY/P7+S93v37o3NZmP37t1YLBaSk5O54ooryq2hU6dOJc/9/PwIDAzk2LFjVf2RRMQkCjciUiv4+fmd103kKD4+PhU6z8PDo8xri8WCzWarjpJEpBppzI2IOIVVq1ad97pt27YAtG3bls2bN3P69OmS95cvX47VaqV169YEBATQtGlTFi5cWKM1i4g51HIjIrVCXl4eqampZY65u7tTv359AL788kvi4+Pp06cPM2bMYM2aNbz//vsAjB49mscee4wxY8bw+OOPc/z4ce677z5uvvlmwsPDAXj88ce5++67adCgAQMHDiQrK4vly5dz33331ewPKiLVTuFGRGqFn3/+mcjIyDLHWrduza5duwD7TKbPP/+ce++9l8jISD777DPatWsHgK+vL/PmzeOBBx6gW7du+Pr6ct111/Hyyy+X3GvMmDHk5ubyyiuvMGnSJOrXr8+IESNq7gcUkRpjMQzDMLsIEZHyWCwWZs+ezbBhw8wuRUScgMbciIiIiEtRuBERERGXojE3IlLrqfdcRCpDLTciIiLiUhRuRERExKUo3IiIiIhLUbgRERERl6JwIyIiIi5F4UZERERcisKNiIiIuBSFGxEREXEpCjciIiLiUv4fmIB+6sbRF08AAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.lineplot(model.loss_history)\n",
"\n",
"plt.title('Loss history')\n",
"plt.ylabel('Loss')\n",
"plt.xlabel('Epoch')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Evaluation\n",
"\n",
"Here we will see our model's performance on unseen data using the X_test dataset. We can see the accuracy on the test dataset, as well as which classes are misclassified the most using the confusion matrix."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Test Accuracy:95.0%\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAf8AAAHNCAYAAAAQQ3IYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZ1FJREFUeJzt3XdYU9f/B/B3QAh7CYgoAuJCRNwbcVvFundbxb0X1VqsdStVW0dtHbUtaB11j2rd4h5FEXDgQhRtXaCIiICQ8/vDL/mZgEpiIDF5v54nz0POvffcT3KTfDjnnnOvRAghQERERAbDSNsBEBERUdFi8iciIjIwTP5EREQGhsmfiIjIwDD5ExERGRgmfyIiIgPD5E9ERGRgmPyJiIgMDJM/ERGRgWHyJ4Pm4eGBoKAgbYehM/744w9UqlQJJiYmsLOz03j906ZNg0Qi0Xi9H7sjR45AIpHgyJEj2g6FDASTP+ml+Ph4DBkyBGXLloWZmRlsbGzQsGFDLF68GC9fvtR2eDrp6tWrCAoKgpeXF1auXIlffvlF2yF9lNatW4dFixZpOwyid5Lw2v6kb3bv3o1u3bpBKpWiT58+qFKlCrKysnDixAls2bIFQUFB8sTm4eGBJk2aIDw8XLtB64Dly5dj2LBhuHHjBsqVK1co+8jOzkZ2djbMzMwKpX5d0K5dO1y6dAm3b98u8DYymQxZWVkwNTWFkRHbZFT4imk7ACJNSkhIQM+ePeHu7o7Dhw+jZMmS8mUjRozAzZs3sXv3bi1GqLsePXoEAIXS3Z+rWLFiKFaMPzu5MjIy5Alfn/8hIt3DfzFJr8ybNw9paWn47bffFBJ/rnLlymHMmDFv3f7JkycYP348fH19YWVlBRsbG7Rp0wYxMTF51l2yZAl8fHxgYWEBe3t71KpVC+vWrZMvf/78OcaOHQsPDw9IpVI4OzujZcuWiIqKeu/r+PfffzFgwAC4urpCKpXC09MTw4YNQ1ZWlnydW7duoVu3bnBwcICFhQXq1auX5x+b3HPJGzduxOzZs1G6dGmYmZmhefPmuHnzpnw9Dw8PTJ06FQDg5OQEiUSCadOmAYDC329SHi/x6tUrTJ8+HeXLl4eZmRmKFy+ORo0a4cCBA/J18jvnn52djZkzZ8LLywtSqRQeHh6YNGkSMjMz8+yvXbt2OHHiBOrUqQMzMzOULVsWq1evfu/7efv2bUgkEnz//ff4+eefUbZsWVhYWKBVq1a4e/cuhBCYOXMmSpcuDXNzc3To0AFPnjxRqGPHjh0IDAyUHxMvLy/MnDkTOTk58nWaNGmC3bt3486dO5BIJJBIJPDw8FA4Fn/++ScmT56MUqVKwcLCAqmpqXnO+cfFxcHc3Bx9+vRRiOHEiRMwNjbGxIkT3/uaid6F/4KTXvnrr79QtmxZNGjQQK3tb926he3bt6Nbt27w9PTEw4cPsWLFCgQEBODKlStwdXUFAKxcuRKjR49G165dMWbMGGRkZCA2NhZnz55F7969AQBDhw7F5s2bMXLkSFSuXBnJyck4ceIE4uLiUKNGjbfG8N9//6FOnTpISUnB4MGDUalSJfz777/YvHkz0tPTYWpqiocPH6JBgwZIT0/H6NGjUbx4caxatQrt27fH5s2b0alTJ4U6v/vuOxgZGWH8+PF49uwZ5s2bh88++wxnz54FACxatAirV6/Gtm3bsGzZMlhZWaFq1aoqvXfTpk1DaGgoBg4ciDp16iA1NRXnzp1DVFQUWrZs+dbtBg4ciFWrVqFr16748ssvcfbsWYSGhiIuLg7btm1TWPfmzZvo2rUrBgwYgL59++L3339HUFAQatasCR8fn/fGuHbtWmRlZWHUqFF48uQJ5s2bh+7du6NZs2Y4cuQIJk6ciJs3b2LJkiUYP348fv/9d/m24eHhsLKyQnBwMKysrHD48GFMmTIFqampmD9/PgDgm2++wbNnz3Dv3j0sXLgQAGBlZaUQw8yZM2Fqaorx48cjMzMTpqameeL09vbGzJkzMWHCBHTt2hXt27fHixcvEBQUhEqVKmHGjBnvfa1E7ySI9MSzZ88EANGhQ4cCb+Pu7i769u0rf56RkSFycnIU1klISBBSqVTMmDFDXtahQwfh4+PzzrptbW3FiBEjChxLrj59+ggjIyMRGRmZZ5lMJhNCCDF27FgBQBw/fly+7Pnz58LT01N4eHjIX0NERIQAILy9vUVmZqZ83cWLFwsA4uLFi/KyqVOnCgDi8ePHCvsEIKZOnZonFuX3zs/PTwQGBr7zteXuI1d0dLQAIAYOHKiw3vjx4wUAcfjwYYX9ARDHjh2Tlz169EhIpVLx5ZdfvnO/CQkJAoBwcnISKSkp8vKQkBABQPj5+YlXr17Jy3v16iVMTU1FRkaGvCw9PT1PvUOGDBEWFhYK6wUGBgp3d/c86+Yei7Jly+apK3dZRESEvCwnJ0c0atRIlChRQiQlJYkRI0aIYsWK5fu5IFIVu/1Jb6SmpgIArK2t1a5DKpXKB1zl5OQgOTkZVlZWqFixokJ3vZ2dHe7du4fIyMi31mVnZ4ezZ8/iv//+K/D+ZTIZtm/fjk8//RS1atXKszy3y/zvv/9GnTp10KhRI/kyKysrDB48GLdv38aVK1cUtuvXr59CC9Pf3x/A654OTbGzs8Ply5dx48aNAm/z999/AwCCg4MVyr/88ksAyHMao3LlyvLYgdenKCpWrFjg19GtWzfY2trKn9etWxcA8PnnnyuMRahbty6ysrLw77//ysvMzc3lfz9//hxJSUnw9/dHeno6rl69WqD9A0Dfvn0V6nobIyMjhIeHIy0tDW3atMHSpUsREhKS7+eCSFVM/qQ3bGxsALz+YVaXTCbDwoULUb58eUilUjg6OsLJyQmxsbF49uyZfL2JEyfCysoKderUQfny5TFixAicPHlSoa558+bh0qVLcHNzQ506dTBt2rT3JqnHjx8jNTUVVapUeed6d+7cQcWKFfOUe3t7y5e/qUyZMgrP7e3tAQBPnz59535UMWPGDKSkpKBChQrw9fXFhAkTEBsb+85t7ty5AyMjozyzC1xcXGBnZ/fe1wG8fi0FfR3K2+f+I+Dm5pZv+Zv1Xr58GZ06dYKtrS1sbGzg5OSEzz//HAAUPhvv4+npWeB1vby8MG3aNERGRsLHxwfffvttgbclehcmf9IbNjY2cHV1xaVLl9SuY86cOQgODkbjxo2xZs0a7Nu3DwcOHICPjw9kMpl8PW9vb1y7dg1//vknGjVqhC1btqBRo0byQXMA0L17d9y6dQtLliyBq6sr5s+fDx8fH+zZs+eDXqc6jI2N8y0XHzDT982BbgDQuHFjxMfH4/fff0eVKlXw66+/okaNGvj111/fW1dBL/zzoa/jbdu/r96UlBQEBAQgJiYGM2bMwF9//YUDBw5g7ty5AKDw2XifgrT637R//34Ar8eCJCcnq7Qt0dsw+ZNeadeuHeLj43H69Gm1tt+8eTOaNm2K3377DT179kSrVq3QokULpKSk5FnX0tISPXr0QFhYGBITExEYGIjZs2cjIyNDvk7JkiUxfPhwbN++HQkJCShevDhmz5791v07OTnBxsbmvf/AuLu749q1a3nKc7uf3d3dC/iK38/e3j7P68/KysL9+/fzrOvg4IB+/fph/fr1uHv3LqpWrZrvTIFc7u7ukMlkeU4VPHz4ECkpKRp9HR/iyJEjSE5ORnh4OMaMGYN27dqhRYsW8h6UN2nyCobLly/HgQMHMHv2bGRlZWHIkCEaq5sMG5M/6ZWvvvoKlpaWGDhwIB4+fJhneXx8PBYvXvzW7Y2NjfO0Ijdt2qRw7hdAnhaYqakpKleuDCEEXr16hZycnDxdwc7OznB1dc0zhe1NRkZG6NixI/766y+cO3cuz/Lc2Nq2bYt//vlH4Z+cFy9e4JdffoGHhwcqV6781n2oysvLC8eOHVMo++WXX/K0/JXfEysrK5QrV+6dr7dt27YAkOeKeAsWLAAABAYGqhu2RuX2DLz52cjKysLSpUvzrGtpaanSaYC3SUhIwIQJE9ClSxdMmjQJ33//PXbu3FmgqY1E78OpfqRXvLy8sG7dOvTo0QPe3t4KV/g7deoUNm3a9M5r+bdr1w4zZsxAv3790KBBA1y8eBFr165F2bJlFdZr1aoVXFxc0LBhQ5QoUQJxcXH46aefEBgYCGtra6SkpKB06dLo2rUr/Pz8YGVlhYMHDyIyMhI//PDDO1/DnDlzsH//fgQEBGDw4MHw9vbG/fv3sWnTJpw4cQJ2dnb4+uuvsX79erRp0wajR4+Gg4MDVq1ahYSEBGzZskWjV4kbOHAghg4dii5duqBly5aIiYnBvn374OjoqLBe5cqV0aRJE9SsWRMODg44d+6cfKrj2/j5+aFv37745Zdf5F3r//zzD1atWoWOHTuiadOmGnsdH6JBgwawt7dH3759MXr0aEgkEvzxxx/5nm6oWbMmNmzYgODgYNSuXRtWVlb49NNPVdqfEAL9+/eHubk5li1bBgAYMmQItmzZgjFjxqBFixbyaadEatHaPAOiQnT9+nUxaNAg4eHhIUxNTYW1tbVo2LChWLJkicK0rPym+n355ZeiZMmSwtzcXDRs2FCcPn1aBAQEiICAAPl6K1asEI0bNxbFixcXUqlUeHl5iQkTJohnz54JIYTIzMwUEyZMEH5+fsLa2lpYWloKPz8/sXTp0gLFf+fOHdGnTx/h5OQkpFKpKFu2rBgxYoTCdL34+HjRtWtXYWdnJ8zMzESdOnXErl27FOrJnUK2adMmhfLcqW9hYWHysrdN9cvJyRETJ04Ujo6OwsLCQrRu3VrcvHkzz3s3a9YsUadOHWFnZyfMzc1FpUqVxOzZs0VWVlaefbzp1atXYvr06cLT01OYmJgINzc3ERISonCchHh9rPKbSqh8bPKT+3rnz59foPcnLCxMAFCYVnfy5ElRr149YW5uLlxdXcVXX30l9u3bl2eKXlpamujdu7ews7MTAOTT/t62rzeX5daTOxVzy5YtCuslJiYKGxsb0bZt23e+XqL34bX9iYiIDAzP+RMRERkYJn8iIiIDw+RPRERkYJj8iYiIDAyTPxERkYFh8iciIjIwTP5EREQGhsmfiIjIwDD5ExERGRgmfyIiIgPD5E9ERGRgmPxJb92+fRsSiQTh4eHaDuWjJpFIMG3aNG2HodeU3+Pw8HBIJBLcvn1bI/Xzu0DK9Db55355ch/FihVDqVKlEBQUlOfe7JS/devW5bnPOhHpLn5nqaCKaTuAwjZjxgx4enoiIyMDZ86cQXh4OE6cOIFLly7BzMxM2+HptHXr1uHSpUsYO3astkMhMihffPEFevbsCalUqtJ2b/vOuru74+XLlzAxMdFglPQx0/vk36ZNG9SqVQsAMHDgQDg6OmLu3LnYuXMnunfvruXoCk96ejosLCyKbH8ZGRkwNTWFkZHediYR5VFY3zNjY2MYGxtrrD6JRMLGDikwuF9qf39/AEB8fLxC+eHDh+Hv7w9LS0vY2dmhQ4cOiIuLky+PjY2FRCLBzp075WXnz5+HRCJBjRo1FOpq06YN6tatK39+7tw5tG7dGo6OjjA3N4enpyf69+//3lh37NiBwMBAuLq6QiqVwsvLCzNnzkROTo7Cek2aNEGVKlVw/vx5NG7cGBYWFpg0aRIAIDMzE1OnTkW5cuUglUrh5uaGr776CpmZme/cd5MmTbB7927cuXNHfurEw8MDAHDkyBFIJBL8+eefmDx5MkqVKgULCwukpqZi2rRpkEgkeep72znMPXv2yN93a2trBAYG4vLly+99bwAgJSUF48aNg4eHB6RSKUqXLo0+ffogKSnprdvExsYiKCgIZcuWhZmZGVxcXNC/f38kJycrrPf8+XOMHTtWXrezszNatmyJqKgo+To3btxAly5d4OLiAjMzM5QuXRo9e/bEs2fPFOpas2YNatasCXNzczg4OKBnz564e/euwjoFraugCvLePHr0CAMGDECJEiVgZmYGPz8/rFq16r11BwUFyT8Lb8rv2EskEowcORKbNm1C5cqVYW5ujvr16+PixYsAgBUrVqBcuXIwMzNDkyZN8nw+cj/bV65cQdOmTWFhYYFSpUph3rx5efa/ZMkS+Pj4wMLCAvb29qhVqxbWrVv3zteS+1nesGEDJk2aBBcXF1haWqJ9+/Z5jpEmvmeZmZkYN24cnJycYG1tjfbt2+PevXt54nrX9yUgIADW1tawsbFB7dq15a/xXd/Zt53zf9/vHvD/x/XmzZsICgqCnZ0dbG1t0a9fP6Snpyuse+DAATRq1Ah2dnawsrJCxYoV5e8R6Ra9b/kry/0y2dvby8sOHjyINm3aoGzZspg2bRpevnyJJUuWoGHDhoiKioKHhweqVKkCOzs7HDt2DO3btwcAHD9+HEZGRoiJiUFqaipsbGwgk8lw6tQpDB48GMDrH9hWrVrByckJX3/9Nezs7HD79m1s3br1vbGGh4fDysoKwcHBsLKywuHDhzFlyhSkpqZi/vz5CusmJyejTZs26NmzJz7//HOUKFECMpkM7du3x4kTJzB48GB4e3vj4sWLWLhwIa5fv47t27e/dd/ffPMNnj17hnv37mHhwoUAACsrK4V1Zs6cCVNTU4wfPx6ZmZkwNTV972t60x9//IG+ffuidevWmDt3LtLT07Fs2TI0atQIFy5cyDfB5EpLS4O/vz/i4uLQv39/1KhRA0lJSdi5cyfu3bsHR0fHfLc7cOAAbt26hX79+sHFxQWXL1/GL7/8gsuXL+PMmTPy5DV06FBs3rwZI0eOROXKlZGcnIwTJ04gLi4ONWrUQFZWFlq3bo3MzEyMGjUKLi4u+Pfff7Fr1y6kpKTA1tYWADB79mx8++236N69OwYOHIjHjx9jyZIlaNy4MS5cuAA7O7sC11VQBXlvXr58iSZNmuDmzZsYOXIkPD09sWnTJgQFBSElJQVjxoxRaZ/vcvz4cezcuRMjRowAAISGhqJdu3b46quvsHTpUgwfPhxPnz7FvHnz0L9/fxw+fFhh+6dPn+KTTz5B586d0b17d2zevBkTJ06Er68v2rRpAwBYuXIlRo8eja5du2LMmDHIyMhAbGwszp49i969e783xtmzZ0MikWDixIl49OgRFi1ahBYtWiA6Ohrm5uby9T70ezZw4ECsWbMGvXv3RoMGDXD48GEEBgYW6H0MDw9H//794ePjg5CQENjZ2eHChQvYu3cvevfuXaDv7JsK8rv3pu7du8PT0xOhoaGIiorCr7/+CmdnZ8ydOxcAcPnyZbRr1w5Vq1bFjBkzIJVKcfPmTZw8ebJAr4+KmNBTYWFhAoA4ePCgePz4sbh7967YvHmzcHJyElKpVNy9e1e+brVq1YSzs7NITk6Wl8XExAgjIyPRp08feVlgYKCoU6eO/Hnnzp1F586dhbGxsdizZ48QQoioqCgBQOzYsUMIIcS2bdsEABEZGanya0hPT89TNmTIEGFhYSEyMjLkZQEBAQKAWL58ucK6f/zxhzAyMhLHjx9XKF++fLkAIE6ePPnO/QcGBgp3d/c85REREQKAKFu2bJ4Yp06dKvL7WOUej4SEBCGEEM+fPxd2dnZi0KBBCus9ePBA2Nra5ilXNmXKFAFAbN26Nc8ymUwmhBAiISFBABBhYWHyZfm9p+vXrxcAxLFjx+Rltra2YsSIEW/d/4ULFwQAsWnTpreuc/v2bWFsbCxmz56tUH7x4kVRrFgxeXlB6lJFQd6bRYsWCQBizZo18mVZWVmifv36wsrKSqSmpsrLAYipU6fKn/ft2zffz0V+xx6AkEql8uMuhBArVqwQAISLi4vCfkJCQhQ+I0L8/2d79erV8rLMzEzh4uIiunTpIi/r0KGD8PHxefub8ha5n+VSpUopxLJx40YBQCxevDhPLOp+z6KjowUAMXz4cIX1evfunec9Vv6+pKSkCGtra1G3bl3x8uVLhe1zj6kQb//O5vddKOjvXu5x7d+/v0KdnTp1EsWLF5c/X7hwoQAgHj9+nGf/pHv0vtu/RYsWcHJygpubG7p27QpLS0vs3LkTpUuXBgDcv38f0dHRCAoKgoODg3y7qlWromXLlvj777/lZf7+/oiKisKLFy8AACdOnEDbtm1RrVo1HD9+HMDrVo5EIkGjRo0AAHZ2dgCAXbt24dWrVyrF/maL4/nz50hKSoK/vz/S09Nx9epVhXWlUin69eunULZp0yZ4e3ujUqVKSEpKkj+aNWsGAIiIiFApHmV9+/ZViFEVBw4cQEpKCnr16qUQm7GxMerWrfve2LZs2QI/Pz906tQpz7L8TjvkejPejIwMJCUloV69egCg0KVvZ2eHs2fP4r///su3ntzW+L59+/J0febaunUrZDIZunfvrvAaXVxcUL58eflrLEhdqijIe/P333/DxcUFvXr1ki8zMTHB6NGjkZaWhqNHj35wHLmaN2+u0IrMPSXWpUsXWFtb5ym/deuWwvZWVlb4/PPP5c9NTU1Rp04dhfXs7Oxw7949REZGqhVjnz59FGLp2rUrSpYsqfD9Bz7se5Zb1+jRoxW2L8iA2gMHDuD58+f4+uuv85y7f9fn/W1U+d3LNXToUIXn/v7+SE5ORmpqKoD//63bsWMHZDKZyjFR0dL75P/zzz/jwIED2Lx5M9q2bYukpCSFEbR37twBAFSsWDHPtt7e3khKSpIne39/f2RnZ+P06dO4du0aHj16BH9/fzRu3Fgh+VeuXFn+hQoICECXLl0wffp0ODo6okOHDggLC3vvOXfgdTdap06dYGtrCxsbGzg5Ocl/BJXPBZcqVSpPt/uNGzdw+fJlODk5KTwqVKgA4PUpiQ/h6emp9rY3btwAADRr1ixPfPv3739vbPHx8ahSpYrK+33y5AnGjBmDEiVKwNzcHE5OTvLX8eZ7Om/ePFy6dAlubm6oU6cOpk2bppBsPD09ERwcjF9//RWOjo5o3bo1fv75Z4U6bty4ASEEypcvn+c1xsXFyV9jQepSRUHemzt37qB8+fJ5Bmh6e3vLl2tKmTJlFJ7n/rPj5uaWb/nTp08VykuXLp0nwdnb2yusN3HiRFhZWaFOnTooX748RowYoVJ3c/ny5RWeSyQSlCtXLs859w/5nt25cwdGRkbw8vJS2D6/3x5luWOU1PnM50eV371cyscx99Rp7nHo0aMHGjZsiIEDB6JEiRLo2bMnNm7cyH8EdJTen/OvU6eOfLR/x44d0ahRI/Tu3RvXrl175/mw/NSqVQtmZmY4duwYypQpA2dnZ1SoUAH+/v5YunQpMjMzcfz4cYUWl0QiwebNm3HmzBn89ddf2LdvH/r3748ffvgBZ86ceWsMKSkpCAgIgI2NDWbMmAEvLy+YmZkhKioKEydOzPOFyq8FLpPJ4OvriwULFuS7D+UfX1Xlt8+3tUKUBynmxv/HH3/AxcUlz/rFihXOR7N79+44deoUJkyYgGrVqsHKygoymQyffPKJwnvavXt3+Pv7Y9u2bdi/fz/mz5+PuXPnYuvWrfLzzD/88AOCgoKwY8cO7N+/H6NHj0ZoaCjOnDmD0qVLQyaTQSKRYM+ePfmO3H7z2L+vLl1S0GOc622j1t9WLoRQeT1vb29cu3YNu3btwt69e7FlyxYsXboUU6ZMwfTp0/PdXh3a+J7pivcdB3Nzcxw7dgwRERHYvXs39u7diw0bNqBZs2bYv3+/Rmcv0IfT++T/JmNjY4SGhqJp06b46aef8PXXX8Pd3R0AcO3atTzrX716FY6OjrC0tATw/92Nx48fR5kyZeQzB/z9/ZGZmYm1a9fi4cOHaNy4cZ666tWrh3r16mH27NlYt24dPvvsM/z5558YOHBgvrEeOXIEycnJ2Lp1q0J9CQkJBX69Xl5eiImJQfPmzdXqGlRnm9zWQEpKirwbEMjbksxt/Tg7O6NFixYq78fLywuXLl1SaZunT5/i0KFDmD59OqZMmSIvz+2FUFayZEkMHz4cw4cPx6NHj1CjRg3Mnj1bnvwBwNfXF76+vpg8eTJOnTqFhg0bYvny5Zg1axa8vLwghICnp6e8Ffgu76pLFQV5b9zd3REbGwuZTKbQ+s89nZT7vciPvb09UlJS8pRrsrdAHZaWlujRowd69OiBrKwsdO7cGbNnz0ZISMh7p7kpfwaEELh58yaqVq363v0W9Hvm7u4OmUyG+Ph4hRZ3fr89+e0DAC5duoRy5cq9db2CfmdV+d1ThZGREZo3b47mzZtjwYIFmDNnDr755htERESo9T2nwqP33f7KmjRpgjp16mDRokXIyMhAyZIlUa1aNaxatUrhB+3SpUvYv38/2rZtq7C9v78/zp49i4iICHnyd3R0hLe3t3zUa2458DrhKLdkqlWrBgDv7PrP/S/5zW2zsrKwdOnSAr/W7t27499//8XKlSvzLHv58mWebj1llpaWKnc95/5IHTt2TF724sWLPFPIWrduDRsbG8yZMyffsRCPHz9+5366dOmCmJgYbNu2Lc8y5fc7V37vKYA8V0TLycnJ87qdnZ3h6uoqP2apqanIzs5WWMfX1xdGRkbydTp37gxjY2NMnz49zz6FEPLphQWpSxUFeW/atm2LBw8eYMOGDfJl2dnZWLJkCaysrBAQEPDW+r28vPDs2TPExsbKy+7fv5/v/oqK8lRNU1NTVK5cGUKIAo21Wb16NZ4/fy5/vnnzZty/f1/hH723Kej3LLeuH3/8UWGdglyRr1WrVrC2tkZoaCgyMjIUlr352Srod1bV372CePLkSZ6ygvzWkXYYVMs/14QJE9CtWzeEh4dj6NChmD9/Ptq0aYP69etjwIAB8ikvtra2ea5p7u/vj9mzZ+Pu3bsKSb5x48ZYsWIFPDw8FLppV61ahaVLl6JTp07w8vLC8+fPsXLlStjY2LzzC9agQQPY29ujb9++GD16NCQSCf7444+3Jrb8fPHFF9i4cSOGDh2KiIgINGzYEDk5Obh69So2btyIffv2yU+J5KdmzZrYsGEDgoODUbt2bVhZWeHTTz995z5btWqFMmXKYMCAAZgwYQKMjY3x+++/w8nJCYmJifL1bGxssGzZMnzxxReoUaMGevbsKV9n9+7daNiwIX766ae37mfChAnYvHkzunXrhv79+6NmzZp48uQJdu7cieXLl8PPzy/PNjY2NmjcuDHmzZuHV69eoVSpUti/f3+e3pTnz5+jdOnS6Nq1K/z8/GBlZYWDBw8iMjISP/zwA4DX86NHjhyJbt26oUKFCsjOzsYff/wBY2NjdOnSBcDrJDlr1iyEhITg9u3b6NixI6ytrZGQkIBt27Zh8ODBGD9+fIHqAl7Pt54+fToiIiLQpEmTD3pvBg8ejBUrViAoKAjnz5+Hh4cHNm/ejJMnT2LRokUKg9+U9ezZExMnTkSnTp0wevRo+RTNChUqKAyaLEqtWrWCi4sLGjZsiBIlSiAuLg4//fQTAgMD3/lacjk4OKBRo0bo168fHj58iEWLFqFcuXIYNGjQe7ct6PesWrVq6NWrF5YuXYpnz56hQYMGOHToEG7evPnefdjY2GDhwoUYOHAgateujd69e8Pe3h4xMTFIT0+X/3OtyndWld+9gpgxYwaOHTuGwMBAuLu749GjR1i6dClKly4tHwBNOqToJxgUjdypMvlNscvJyRFeXl7Cy8tLZGdnCyGEOHjwoGjYsKEwNzcXNjY24tNPPxVXrlzJs21qaqowNjYW1tbW8m2FEGLNmjUCgPjiiy8U1o+KihK9evUSZcqUEVKpVDg7O4t27dqJc+fOvfc1nDx5UtSrV0+Ym5sLV1dX8dVXX4l9+/YJACIiIkK+XkBAwFunOWVlZYm5c+cKHx8fIZVKhb29vahZs6aYPn26ePbs2Tv3n5aWJnr37i3s7OwEAPkUotzpUW+bmnb+/HlRt25dYWpqKsqUKSMWLFiQZ+pSroiICNG6dWtha2srzMzMhJeXlwgKCirQ+5OcnCxGjhwpSpUqJUxNTUXp0qVF3759RVJSkhAi/+lN9+7dE506dRJ2dnbC1tZWdOvWTfz3338KU60yMzPFhAkThJ+fn7C2thaWlpbCz89PLF26VF7PrVu3RP/+/YWXl5cwMzMTDg4OomnTpuLgwYN54tyyZYto1KiRsLS0FJaWlqJSpUpixIgR4tq1ayrV9eWXXwqJRCLi4uI++L0RQoiHDx+Kfv36CUdHR2Fqaip8fX0V3qtcUJqGJoQQ+/fvF1WqVBGmpqaiYsWKYs2aNW+d6qc8ZTL3uMyfP1+hPL/P1ds+28rTDVesWCEaN24sihcvLqRSqfDy8hITJkx472c8d5/r168XISEhwtnZWZibm4vAwEBx584dhXU18T17+fKlGD16tChevLiwtLQUn376qbh79+57p/rl2rlzp2jQoIH8d6pOnTpi/fr18uVv+87m910QomC/e7nHVXkKn3KMhw4dEh06dBCurq7C1NRUuLq6il69eonr16+/7e0nLZIIoUJTkoi0pk6dOnB3d8emTZu0HYreOHLkCJo2bYpNmzaha9eu2g6HqMgYZLc/0ccmNTUVMTExBbr8LhHR+zD5E30EbGxsOGiKiDTG4Eb7ExER6arQ0FDUrl0b1tbWcHZ2RseOHfNMyWzSpIn85k25D+UrML4Pz/kTERHpiE8++QQ9e/ZE7dq1kZ2djUmTJuHSpUu4cuWK/NoLTZo0QYUKFTBjxgz5dhYWFrCxsSnwftjtT0REpCP27t2r8Dw8PBzOzs7yW0nnsrCwyPfqqAXFbn8iIiIdlXvRpjdvwAQAa9euhaOjI6pUqYKQkBCVbwrGbn8iIqJClJmZmWfArlQqVbjJXH5kMhnat2+PlJQUnDhxQl7+yy+/wN3dHa6uroiNjcXEiRNRp04dbN26tcAx6Uzyz4jaqe0Q6H+s6g3TdghEOqeUdXFth0BvuJMc+/6VPsCrpFvvX6mAZv+0Os8NpqZOnfreKykOGzYMe/bswYkTJ955g6/Dhw+jefPmuHnzZp67Rr4Nz/kTEREpk+V/l0p1hISEIDg4WKHsfa3+kSNHYteuXTh27Nh77+xZt25dAGDyJyIi0hUF6eLPJYTAqFGjsG3bNhw5cgSenp7v3SY6OhrA6xs2FRSTPxERkTIh08puR4wYgXXr1mHHjh2wtrbGgwcPAAC2trYwNzdHfHw81q1bh7Zt26J48eKIjY3FuHHj0Lhx4wLdgjoXkz8REZEymXaS/7JlywAgz507w8LCEBQUBFNTUxw8eBCLFi3Cixcv4Obmhi5dumDy5Mkq7YfJn4iISInQUsv/fWPw3dzccPTo0Q/eD+f5ExERGRi2/ImIiJRpqdu/qDD5ExERKdNSt39RYbc/ERGRgWHLn4iISJkGL/Kji5j8iYiIlLHbn4iIiPQJW/5ERETKONqfiIjIsGjrIj9Fhd3+REREBoYtfyIiImXs9iciIjIwet7tz+RPRESkTM/n+fOcPxERkYFhy5+IiEgZu/2JiIgMjJ4P+GO3PxERkYFhy5+IiEgZu/2JiIgMDLv9iYiISJ+w5U9ERKRECP2e58/kT0REpEzPz/mr3O1vbGyMR48e5SlPTk6GsbGxRoIiIiKiwqNyy18IkW95ZmYmTE1NPzggIiIirdPzAX8FTv4//vgjAEAikeDXX3+FlZWVfFlOTg6OHTuGSpUqaT5CIiKioqbn3f4FTv4LFy4E8Lrlv3z5coUuflNTU3h4eGD58uWaj5CIiKio6fmNfQqc/BMSEgAATZs2xbZt22BnZ1dYMREREVEhUumc/6tXr5CYmIj79+8z+RMRkf5it///MzExQUZGRmHFQkREpBv0fMCfylP9RowYgblz5yI7O7sw4iEiIqJCpvJUv8jISBw6dAj79++Hr68vLC0tFZZv3bpVY8ERERFpBbv9FdnZ2aFLly6FEQsREZFu0PNuf5WTf1hYWGHEQUREREWE1/YnIiJSxpY/UKNGDRw6dAj29vaoXr06JBLJW9eNiorSWHC66Lfth3Eo8iIS/nsMqWkxVKvggbG92sLD1Vm+zoxfN+PsxRt4/DQVFmZS+FVwx9hegfAs5fyOmklThg3tiy+Dh8HFxQmxsVcwZuy3iDwXre2wDBKPhW4YPnYAPmnXHF7lPZHxMhPnI6Px3fRFuHXztrZD01m8qx+ADh06QCqVAgA6duxYmPHovHNx8ejRqgF8yrohRybDkj/3YGjoSmydPwEWZq/vbVDZszQCG9aAi6MdUtPSsWzzAQwNXYm/fwyBsZHKEyxIBd26tcf386di+Iiv8U/kBYweNRB/716LylUa4/HjZG2HZ1B4LHRH3Qa1sPq3PxETdRnFihnjq8mj8cfm5WjRoBNepr/UdnikBRLxtjv1FLGMqJ3aDkEtT1LT0HTIdPw+ZRhqepfNd53rd/5Dt68XYteiiXAr4VjEEarOqt4wbYegtlMn/kLkuRiMGTsZwOt7Udy+FYmfl4Zh3vyftRydYdG3Y1HKuri2Q9AYh+L2uHD9KLq164d/Tp/XdjhquZMcW6j1vzzyu8bqMm/SX2N1aYra5/yzsrLw6NEjyJTOi5QpU+aDg/qYpKW/vuiRjZVFvsvTM7Kw4+g5lHJ2gEtxuyKMzPCYmJigRo2q+G7eT/IyIQQOHT6BevVqajEyw8NjodusbV7fmC3l6TMtR6LDONVP0fXr1zFgwACcOnVKoVwIAYlEgpwc/T5P8iaZTIZ5q3eiWkUPlHdzUVi2Yf8pLFy3Gy8zs+Dh6oQVkwbBpBjHVxYmR0cHFCtWDI8eJimUP3r0GJUqemkpKsPEY6G7JBIJps7+CpFnonD96k1th6O7OOBPUb9+/VCsWDHs2rULJUuWfOfgv7fJzMxEZmamQpnIegWpqYnKdWnTnLBtiL/7AOHThudZ1rZRddTzLY+klOdYtesoJixeg1XTRnx0r5GI9MvM+d+ggnc5dA0M0nYopEUqJ//o6GicP38elSpVUnunoaGhmD59ukLZN4N7YvKQXmrXWdTmhG3Dsag4/D51OErk051vbWEOawtzuJd0QtXyZdBo4BQcjryENg2rF32wBiIp6Qmys7PhrDSuwtnZCQ8ePtZSVIaJx0I3zZgbguatGqN7u3548N9DbYej2/S821/loeeVK1dGUlLS+1d8h5CQEDx79kzhMaFf1w+qs6gIITAnbBsOR17CyslDUNrZoQDbABBAFu+HUKhevXqFqKhYNGvaSF4mkUjQrGkjnDnzcQ5q+ljxWOieGXND0DqwGXp1HIi7if9qOxzdJ5Np7qGDCtTyT01Nlf89d+5cfPXVV5gzZw58fX1hYqLYjW1jY/Pe+qRSqXzqYK6Mj6Q7fM7v27Dn1AUs+jIIluZSJKW8fm+sLMxhZmqCew+Tse90DOpXrQB7G0s8fPIMv++IgNTUBI2qeWs5ev23cPFKhP22EOejYhEZeQGjRw2CpaU5wldt0HZoBofHQnfMmv8N2ndpg0Gfj8GLtBdwcn49cyE1NQ2ZGZnv2Zr0UYGSv52dncK5fSEEmjdvrrCOoQz423jwNABgwMzlCuUzhnZHh4DaMDUphqhrCViz5zhSX7xEcVsr1PQui9XTR6C4rZU2QjYomzbthJOjA6ZNGQ8XFyfExFxGYLvP8ejRh/VWkep4LHTHF/17AAA2/qV4efYvR07G5vUf5zTrQqfn3f4Fmud/9OjRAlcYEBCgViAf6zx/ffQxz/MnKiz6NM9fHxT6PP89P2qsLvM2ozVWl6YUqOWvbkInIiIi3aPygL+9e/fixIkT8uc///wzqlWrht69e+Pp06caDY6IiEgr9HzAn8rJf8KECfIBgBcvXkRwcDDatm2LhIQEBAcHazxAIiKiIidkmnvoIJXn+SckJKBy5coAgC1btuDTTz/FnDlzEBUVhbZt22o8QCIiItIslVv+pqamSE9PBwAcPHgQrVq1AgA4ODgoTAkkIiL6aOl5t7/KLf9GjRohODgYDRs2xD///IMNG17P2b1+/TpKly6t8QCJiIiKnI5212uKyi3/n376CcWKFcPmzZuxbNkylCpVCgCwZ88efPLJJxoPkIiIqMix5a+oTJky2LVrV57yhQsXaiQgIiIiKlwqt/zfFBgYiPv372sqFiIiIt3A0f5vd+zYMbx8+VJTsRAREekGHe2u15QPavkTERHRx0fl5J+YmIjc2wG4u7vL7+onhEBiYqJmoyMiItIGDvhT5Onpifv378PZ2RmXLl2Slz958gSenp56f1c/IiIyAO+/591HTeWWf+6te5WlpaXBzMxMI0ERERFR4Slwyz/3uv0SiQTffvstLCws5MtycnJw9uxZVKtWTeMBEhERFTkd7a7XlAIn/wsXLgB43fK/ePEiTE1N5ctMTU3h5+eH8ePHaz5CIiKiosbk/1pERAQAoF+/fli8eDFsbGwKLSgiIiIqPCoP+AsLCyuMOIiIiHSHjl6cR1M4z5+IiEiZlqb6hYaGonbt2rC2toazszM6duyIa9euKayTkZGBESNGoHjx4rCyskKXLl3w8OFDlfbD5E9ERKRMCM09VHD06FGMGDECZ86cwYEDB/Dq1Su0atUKL168kK8zbtw4/PXXX9i0aROOHj2K//77D507d1ZpPx90eV8iIiLSnL179yo8Dw8Ph7OzM86fP4/GjRvj2bNn+O2337Bu3To0a9YMwOvT8d7e3jhz5gzq1atXoP2w5U9ERKRMR67w9+zZMwCAg4MDAOD8+fN49eoVWrRoIV+nUqVKKFOmDE6fPl3getnyJyIiUqbBqX6ZmZnIzMxUKJNKpZBKpe8JQYaxY8eiYcOGqFKlCgDgwYMHMDU1hZ2dncK6JUqUwIMHDwocE1v+REREhSg0NBS2trYKj9DQ0PduN2LECFy6dAl//vmnxmNiy5+IiEiZBqf6hYSEyK+Sm+t9rf6RI0di165dOHbsGEqXLi0vd3FxQVZWFlJSUhRa/w8fPoSLi0uBY2LLn4iISImQCY09pFIpbGxsFB5vS/5CCIwcORLbtm3D4cOH4enpqbC8Zs2aMDExwaFDh+Rl165dQ2JiIurXr1/g18eWPxERkY4YMWIE1q1bhx07dsDa2lp+Ht/W1hbm5uawtbXFgAEDEBwcDAcHB9jY2GDUqFGoX79+gUf6A0z+REREeWnp2v7Lli0DADRp0kShPCwsDEFBQQCAhQsXwsjICF26dEFmZiZat26NpUuXqrQfJn8iIiJlWrq8ryjARYHMzMzw888/4+eff1Z7PzznT0REZGDY8iciIlImU+2yvB8bJn8iIiJlWjrnX1SY/ImIiJTpefLnOX8iIiIDw5Y/ERGRMhVvxfuxYfInIiJSxm5/IiIi0ids+RMRESnjVD8iIiIDo6Ur/BUVdvsTEREZGLb8iYiIlLHbv2iUbBys7RDof17+d1zbIdD/mLv6azsE+p/UzHRth0BFSHC0PxEREekTnWn5ExER6Qx2+xMRERkYPR/tz+RPRESkTM9b/jznT0REZGDY8iciIlKm56P9mfyJiIiUsdufiIiI9Alb/kRERMo42p+IiMjAsNufiIiI9Alb/kREREr0/dr+TP5ERETK2O1PRERE+oQtfyIiImV63vJn8iciIlLGqX5EREQGRs9b/jznT0REZGDY8iciIlIi9Lzlr5Hkn5KSAjs7O01URUREpH16nvxV7vafO3cuNmzYIH/evXt3FC9eHKVKlUJMTIxGgyMiIiLNUzn5L1++HG5ubgCAAwcO4MCBA9izZw/atGmDCRMmaDxAIiKiIieTae6hg1Tu9n/w4IE8+e/atQvdu3dHq1at4OHhgbp162o8QCIioiLHbn9F9vb2uHv3LgBg7969aNGiBQBACIGcnBzNRkdEREQap3LLv3PnzujduzfKly+P5ORktGnTBgBw4cIFlCtXTuMBEhERFTk9b/mrnPwXLlwIT09PJCYmYt68ebCysgIA3L9/H8OHD9d4gEREREVNCCZ/uVevXmHIkCH49ttv4enpqbBs3LhxGg2MiIiICodK5/xNTEywZcuWwoqFiIhIN8iE5h46SOUBfx07dsT27dsLIRQiIiIdoefJX+Vz/uXLl8eMGTNw8uRJ1KxZE5aWlgrLR48erbHgiIiItEHfL+8rESqOalA+169QmUSCW7duqRWIvRVnCuiKR7f3azsE+h9zV39th0D/Y21qru0Q6A1P024Wav3P+rXQWF22YQc1VpemqNzyT0hIKIw4iIiIdIeet/zVvqVvVlYWrl27huzsbE3GQ0REpH0yDT50kMrJPz09HQMGDICFhQV8fHyQmJgIABg1ahS+++47jQdIREREmqVy8g8JCUFMTAyOHDkCMzMzeXmLFi0U7vZHRET0sRIyobGHLlL5nP/27duxYcMG1KtXDxKJRF7u4+OD+Ph4jQZHRESkFTqatDVF5Zb/48eP4ezsnKf8xYsXCv8MEBERkW5SOfnXqlULu3fvlj/PTfi//vor6tevr7nIiIiItEXPB/yp3O0/Z84ctGnTBleuXEF2djYWL16MK1eu4NSpUzh69GhhxEhERFSkdPVcvaao3PJv1KgRoqOjkZ2dDV9fX+zfvx/Ozs44ffo0atasWRgxEhERkQap3PIHAC8vL6xcuVLTsXyUGjSsjVFjBsGvug9KliyBz3oOxd+7dO9qTvpo5eoNOHj0JBLu3IOZ1BTVfCtj3LD+8HQvLV8naORXOHfhosJ23Tq0xdSvRhV1uAZp2NC++DJ4GFxcnBAbewVjxn6LyHPR2g7L4PB3Sg062l2vKSq3/KOionDx4v//mO7YsQMdO3bEpEmTkJWVpdHgPgYWFua4dCkOE4KnaTsUg3Mu+iJ6df4U635ZiF8WzcGr7GwMHvcN0l9mKKzXtf0nOLJzrfzx5Yj+WorYsHTr1h7fz5+KmbMWoHbdTxATewV/714LJ6fi2g7N4PB3SnWc6qdkyJAh+Prrr+Hr64tbt26hR48e6Ny5MzZt2oT09HQsWrSoEMLUXQcPHMPBA8e0HYZBWrFglsLz2d8Eo3G7Xrhy7QZqVfOVl5tJpXAs7lDU4Rm8cWMG4dff1mHV6o0AgOEjvkbbNs3RL6gn5s3/WcvRGRb+TqmBLX9F169fR7Vq1QAAmzZtQkBAANatW4fw8HBs2bJF0/ERFVjai3QAgK2NtUL57gMRaNS2Bzp+PhQLl4XhZUZGfpuTBpmYmKBGjao4dPi4vEwIgUOHT6BePY4NItI2lVv+QgjIZK//JTp48CDatWsHAHBzc0NSUlKB6sjMzERmZmaeenmdAFKXTCbDd4tXoHrVyihf1kNeHtiyCVxdSsDJ0QHXbyZg4bLfcTvxHhaHfqu9YA2Ao6MDihUrhkcPFX8THj16jEoVvbQUFVHBCT1v+auc/GvVqoVZs2ahRYsWOHr0KJYtWwbg9d3+SpQoUaA6QkNDMX36dIUyqYk9zE3ZNUvqmfXDz7h56zZWL/teobxbh7byvyt4ecLJ0QEDRocg8d5/KFPatajDJKKPhZ4nf5W7/RctWoSoqCiMHDkS33zzDcqVKwcA2Lx5Mxo0aFCgOkJCQvDs2TOFh5mJvaqhEAEAZv+wFEdP/YPfl8yFi7PTO9f1rVwJAHD33/tFEZrBSkp6guzsbDiXcFQod3Z2woOHj7UUFRHlUrnlX7VqVYXR/rnmz58PY2PjAtUhlUohlUoVytjlT6oSQmDOgmU4dOwUwn6ai9KuLu/d5uqN1/ef4ADAwvXq1StERcWiWdNG2LlzH4DX3/FmTRth6bIwLUdH9H7s9i+gN+/wZ0gsLS3gWdZd/tzd3Q1VfL2R8jQF9+6xdVmYZv3wM/4+cAQ/fjcFlhbmSEp+AgCwsrKEmVSKxHv/4e8DR+BfvzbsbG1w/WYC5v64ArWqVUHFcp5ajl7/LVy8EmG/LcT5qFhERl7A6FGDYGlpjvBVvPtnUePvlBr0PPlLhBAqTUI0MjJ6Zys9JydHrUDsrcqptZ22NfSvi1171uYpX7dmC0YMnaiFiD7co9v7tR1CgVRp2Cbf8lmTgtExsCXuP3yMkBnzcOPWHbzMyICLsxOaN26AIUE9YWVpWcTRqsfc1V/bIXyQ4cOC5Bf5iYm5jLHjpuCfyAvaDkst1qbm2g5Bbfr4O/U07Wah1p/UOkBjdTnu071L36uc/Hfs2KHw/NWrV7hw4QJWrVqF6dOnY8CAAWoF8rEmf330sSR/Q/CxJ3998jEnf31U2Mn/cUvNJX+nAwVP/seOHcP8+fNx/vx53L9/H9u2bUPHjh3ly4OCgrBq1SqFbVq3bo29e/eqFJPK3f4dOnTIU9a1a1f4+Phgw4YNaid/IiIiXaGtc/4vXryAn58f+vfvj86dO+e7zieffIKwsP8fO6M8hq4gNHbOv169ehg8eLCmqiMiItIabSX/Nm3aoE2b/E9p5pJKpXBxef8A53dReapffl6+fIkff/wRpUqV0kR1RERE9BZHjhyBs7MzKlasiGHDhiE5OVnlOlRu+dvb2ysM+BNC4Pnz57CwsMCaNWtUDoCIiEjnCM1NP8/vqrb5TXkviE8++QSdO3eGp6cn4uPjMWnSJLRp0wanT58u8HR7QI3kr3zjHiMjIzg5OaFu3bqwt+eFeoiI6OOnyW7//K5qO3XqVEybNk3lunr27Cn/29fXF1WrVoWXlxeOHDmC5s2bF7gelZN/3759Vd2EiIjIYIWEhCA4OFihTJ1Wf37Kli0LR0dH3Lx5s3CTPwCkpKTgt99+Q1xcHADAx8cH/fv3h62trTrVERER6RQh01y3v7pd/AVx7949JCcno2TJkiptp/KAv3PnzsHLywsLFy7EkydP8OTJEyxYsABeXl6IiopStToiIiKdI2Sae6giLS0N0dHRiI6OBvD6pnnR0dFITExEWloaJkyYgDNnzuD27ds4dOgQOnTogHLlyqF169Yq7Ufli/z4+/ujXLlyWLlyJYoVe91xkJ2djYEDB+LWrVs4duyYSgHk4kV+dAcv8qM7eJEf3cGL/OiWwr7Iz38NmmqsLtdTEQVe98iRI2jaNO+++/bti2XLlqFjx464cOECUlJS4OrqilatWmHmzJkFvqtuLpWTv7m5OS5cuIBKlSoplF+5cgW1atVCenq6SgHkYvLXHUz+uoPJX3cw+euWwk7+/9ZvprG6Sp0+rLG6NEXlbn8bGxskJibmKb979y6sra01EhQREZE2aavbv6ionPx79OiBAQMGYMOGDbh79y7u3r2LP//8EwMHDkSvXr0KI0YiIiLSIJVH+3///feQSCTo06cPsrOzAQAmJiYYNmwYvvvuO40HSEREVNQ0OdpfF6mU/HNycnDmzBlMmzYNoaGhiI+PBwB4eXnBwsKiUAIkIiIqaqqNhvv4qJT8jY2N0apVK8TFxcHT0xO+vr6FFRcREZHW6HvLX+Vz/lWqVMGtW7cKIxYiIiIqAion/1mzZmH8+PHYtWsX7t+/j9TUVIUHERHRx07IJBp76CKVB/y1bdsWANC+ffs8d/eTSCTIycnRXHRERERawHP+SsLCwuDm5pbn1oEymSzf+f9ERESkW1S+wp+xsTHu378PZ2dnhfLk5GQ4Ozur3fLnFf50B6/wpzt4hT/dwSv86ZbCvsLfLd9WGqur7EXd+01VueWf272vLC0tDWZmZhoJioiISJuE0M1z9ZpS4OSfey9iiUSCb7/9VmFef05ODs6ePYtq1appPEAiIiLSrAIn/wsXLgB43fK/ePEiTE1N5ctMTU3h5+eH8ePHaz5CIiKiIqar1+TXlAIn/4iI17ck7NevHxYvXgwbG5tCC4qIiEibZOz2VxQWFlYYcRAREVERUTn5ExER6TsO+CMiIjIwunplPk1h8iciIlKi71f4U/na/kRERPRxY8ufiIhICbv9iYiIDIy+T/Vjtz8REZGBYcufiIhICaf6ERERGRiO9iciIiK9wpY/ERGREn0f8MfkT0REpETfz/mz25+IiMjAsOVPRESkRN8H/DH5ExERKeE5/yLyPOultkOg/zF39dd2CPQ/L+K2aDsE+h9L7y7aDoGKEM/5ExERkV7RmZY/ERGRrmC3PxERkYHR8/F+7PYnIiIyNGz5ExERKWG3PxERkYHhaH8iIiLSK2z5ExERKZFpO4BCxuRPRESkRIDd/kRERKRH2PInIiJSItPzif5M/kREREpket7tz+RPRESkhOf8iYiISK+w5U9ERKSEU/2IiIgMDLv9iYiISK9oJPmnpqZi+/btiIuL00R1REREWiXT4EMXqZX8u3fvjp9++gkA8PLlS9SqVQvdu3dH1apVsWXLFo0GSEREVNSY/PNx7Ngx+Pv7AwC2bdsGIQRSUlLw448/YtasWRoNkIiIiDRLreT/7NkzODg4AAD27t2LLl26wMLCAoGBgbhx44ZGAyQiIipqAhKNPXSRWsnfzc0Np0+fxosXL7B37160atUKAPD06VOYmZlpNEAiIqKiJpNo7qGL1JrqN3bsWHz22WewsrKCu7s7mjRpAuD16QBfX19NxkdEREQaplbyHz58OOrWrYvExES0bNkSRkavOxDKli3Lc/5ERPTR47X9lbx69QqVKlXCrl270KlTJ4VlgYGBGguMiIhIW/T8pn6qJ38TExNkZGQURixEREQ6QVen6GmKWgP+RowYgblz5yI7O1vT8RAREVEhU+ucf2RkJA4dOoT9+/fD19cXlpaWCsu3bt2qkeCIiIi0QSbhOf887Ozs0KVLF03HQkREpBN4zj8fYWFhmo6DiIiIiojaN/bJzs7GwYMHsWLFCjx//hwA8N9//yEtLU1jwREREWmDvl/bX62W/507d/DJJ58gMTERmZmZaNmyJaytrTF37lxkZmZi+fLlmo6TiIioyOjqlfk0Ra2W/5gxY1CrVi08ffoU5ubm8vJOnTrh0KFDGguOiIjIkBw7dgyffvopXF1dIZFIsH37doXlQghMmTIFJUuWhLm5OVq0aKHWPXXUSv7Hjx/H5MmTYWpqqlDu4eGBf//9V50qiYiIdIYMEo09VPHixQv4+fnh559/znf5vHnz8OOPP2L58uU4e/YsLC0t0bp1a5Wvv6NWt79MJkNOTk6e8nv37sHa2lqdKomIiHSGtkb7t2nTBm3atMl3mRACixYtwuTJk9GhQwcAwOrVq1GiRAls374dPXv2LPB+1Gr5t2rVCosWLZI/l0gkSEtLw9SpU9G2bVt1qiQiItJLmZmZSE1NVXhkZmaqXE9CQgIePHiAFi1ayMtsbW1Rt25dnD59WqW61Er+P/zwA06ePInKlSsjIyMDvXv3lnf5z507V50qiYiIdIYmb+kbGhoKW1tbhUdoaKjKMT148AAAUKJECYXyEiVKyJcVlFrd/qVLl0ZMTAw2bNiAmJgYpKWlYcCAAfjss88UBgASERF9jDQ5RS8kJATBwcEKZVKpVIN7UJ1ayX/9+vXo1asXPvvsM3z22WcKyyZMmID58+drJDgiIiJt0OQ5f6lUqpFk7+LiAgB4+PAhSpYsKS9/+PAhqlWrplJdanX7Dxs2DHv27MlTPm7cOKxZs0adKomIiOgdPD094eLiojClPjU1FWfPnkX9+vVVqkut5L927Vr06tULJ06ckJeNGjUKGzduREREhDpVfvSGDe2Lm9fPIC01HqdO/IXatappOySDxWNR9H7d8Bd6jZmGel2GIKDXSIyZsRgJ9+7nu64QAsO+/R5V2/bF4VPnizhSw8XvhWo0ec5fFWlpaYiOjkZ0dDSA14P8oqOjkZiYCIlEgrFjx2LWrFnYuXMnLl68iD59+sDV1RUdO3ZUaT9qJf/AwEAsXboU7du3x/nz5zF8+HBs3boVERERqFSpkjpVftS6dWuP7+dPxcxZC1C77ieIib2Cv3evhZNTcW2HZnB4LLTj3KVr6NmuOdYs+Ba/zP4K2Tk5GPrNfKRn5B3RvGb7Pkj0/I5puobfC9Vp6/K+586dQ/Xq1VG9enUAQHBwMKpXr44pU6YAAL766iuMGjUKgwcPRu3atZGWloa9e/fCzMxMpf1IhBBqn9pYunQpgoOD4eTkhIiICJQrV07dqlDMtJTa22rbqRN/IfJcDMaMnQzg9dTH27ci8fPSMMybn/+FGqhw6NuxeBG3RdshqOXJs1Q06TUKv88NQS3f/28QXI2/g5HTFuLPxdPQ7PMxWDR5NJo1qKnFSAvO0vvjvZOpvn0vACA7q3AvKLey9Ocaq2vQPd07HV7gAX/KIxVzOTk5oUaNGli6dKm8bMGCBR8e2UfCxMQENWpUxXfzfpKXCSFw6PAJ1Kv3cfyo6QseC92R9uIlAMDW2kpe9jIjE1/PW45vhveBo4OdliIzPPxeqEdXb8ijKQVO/hcuXMi3vFy5ckhNTZUvN7TuPEdHBxQrVgyPHiYplD969BiVKnppKSrDxGOhG2QyGeatWIvqlcujvEdpefn8levg510OTevX0GJ0hoffC/UIPU9lBU7+mhzIl5mZmefqRkIIg/vHgUgfzV66Gjfv/Ivw77+Rl0WcicI/MXHYuGSGFiMjolxqzfP/UKGhoZg+fbpCmcTIChJjG22E80GSkp4gOzsbziUcFcqdnZ3w4OFjLUVlmHgstG/O0tU49k8MwuZNgoujg7z8n5g43L3/CA27DVNYP3jOEtTwqYjf54YUdagGg98L9bDb/y3OnTuHjRs3IjExEVlZWQrLtm7d+s5t87vakX3xj3OWwKtXrxAVFYtmTRth5859AF6f+mjWtBGWLgvTcnSGhcdCe4QQCF32Bw6fPo/fvgtBaRcnheUDugWic+sAhbIuw7/BhEG9EVC3elGGanD4vVAPk38+/vzzT/Tp0wetW7fG/v370apVK1y/fh0PHz5Ep06d3rt9flc7+pi7/BcuXomw3xbifFQsIiMvYPSoQbC0NEf4qg3aDs3g8Fhox+ylq7HnyBksnjIGluZmSHqSAgCwsrSAmdQUjg52+Q7yK+lUPM8/CqR5/F6QMrWS/5w5c7Bw4UKMGDEC1tbWWLx4MTw9PTFkyBCFSw4aik2bdsLJ0QHTpoyHi4sTYmIuI7Dd53j0KOn9G5NG8Vhox8bdhwEA/Scq3qxk5riB6NDSXxsh0Rv4vVCdtm7pW1TUmudvaWmJy5cvw8PDA8WLF8eRI0fg6+uLuLg4NGvWDPfv539lr3f5mOf5ExWWj3Wevz76mOf566PCnue/uIzm5vmPSdS9ef5qXeHP3t4ez58/BwCUKlUKly5dAgCkpKQgPT1dc9ERERFpgbau8FdU1Or2b9y4MQ4cOABfX19069YNY8aMweHDh3HgwAE0b95c0zESERGRBqmV/H/66SdkZGQAAL755huYmJjg1KlT6NKlCyZPnqzRAImIiIqarrbYNUWt5O/g8P/zd42MjPD1119rLCAiIiJt0/cBf2qd8weA+Ph4TJ48Gb169cKjR48AAHv27MHly5c1FhwRERFpnlrJ/+jRo/D19cXZs2exdetWpKWlAQBiYmIwdepUjQZIRERU1GQSzT10kVrJ/+uvv8asWbNw4MABmJqaysubNWuGM2fOaCw4IiIibdD30f5qJf+LFy/meyU/Z2dnJCXxohFERES6TK3kb2dnl++FfC5cuIBSpXixHiIi+rgJDT50kVrJv2fPnpg4cSIePHgAiUQCmUyGkydPYvz48ejTp4+mYyQiIipSMgiNPXSRWsl/zpw5qFSpEtzc3JCWlobKlSujcePGaNCgAef5ExER6Ti15vmbmppi5cqV+Pbbb3Hp0iWkpaWhevXqKF++vKbjIyIiKnK6OlBPU9RK/rnKlCmDMmXKaCoWIiIinaCbnfWao1byz8nJQXh4OA4dOoRHjx5BJlP8H+nw4cMaCY6IiEgb2PLPx5gxYxAeHo7AwEBUqVIFEomOXsWAiIiI8lAr+f/555/YuHEj2rZtq+l4iIiItE5Xr8ynKWoP+CtXrpymYyEiItIJujpFT1PUmur35ZdfYvHixRBCv98cIiIifaRWy//EiROIiIjAnj174OPjAxMTE4XlW7du1UhwRERE2qDvTVu1kr+dnV2+1/YnIiLSBxztn4+lS5dCJpPB0tISAHD79m1s374d3t7eaN26tUYDJCIiIs1S65x/hw4d8McffwAAUlJSUK9ePfzwww/o2LEjli1bptEAiYiIihqv7Z+PqKgo+Pv7AwA2b96MEiVK4M6dO1i9ejV+/PFHjQZIRERU1HhXv3ykp6fD2toaALB//3507twZRkZGqFevHu7cuaPRAImIiEiz1Er+5cqVw/bt23H37l3s27cPrVq1AgA8evQINjY2Gg2QiIioqMk0+NBFaiX/KVOmYPz48fDw8EDdunVRv359AK97AapXr67RAImIiIqavp/zV2u0f9euXdGoUSPcv38ffn5+8vLmzZtzCiAREX30dDNla47at/R1cXGBi4uLQlmdOnU+OCAiIiIqXGonfyIiIn2lq+fqNYXJn4iISInQ845/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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Data science utility functions\n",
"from sklearn.metrics import accuracy_score,confusion_matrix\n",
"import pandas as pd #For working with tabular datasets\n",
"\n",
"truth,preds = np.argmax(y_test,axis=1), model.predict(X_test).numpy().argmax(axis=1)\n",
"print(f\"Test Accuracy:{accuracy_score(truth,preds) * 100}%\")\n",
"\n",
"conf_df = pd.DataFrame(confusion_matrix(truth,preds),index=label_names,columns=label_names)\n",
"sns.heatmap(conf_df,annot=True)\n",
"plt.suptitle(\"Class confusion matrix\")\n",
"plt.title(\"Rows are true classes, columns predictions\")\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"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.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}