{
"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": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"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": "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Duc333yj9DnxihUrALwudr2pdevWKFWqFIKDgxEXFwdXV9d8rxfWFxb2mrwJqhT1V7nLc89/pVTYOTig+Dw8KytLbkEz15t/00WLFqFs2bJYtWoV5syZgzlz5sDGxgb9+vXDTz/99M7zBjc3N3Tr1g12dnZo27YtZsyYgQMHDhS6TVJSktyZuAH515uJiYkoVapUgRsCCnP06FEAQNeuXVn4IjJQGsncokWLYsqUKUhMTMScOXMwY8YMLFy4MK/TeP78udztnj17BkDxReDbVqxYgUePHuG7777DjBkz8r02d+5cBAcHv8e7QL5YNBXz286dO4cdO3agffv22LVrV77BMk+fPo1FixaptV9Nyx1Q882ilSJv/s7e/sZLCIHnz5/n+305OTkBeH0X39vry/u95247efJkubNMFubNQfbJtDRp0gShoaE4ePCgSlNkCyEwbNgwJCUlYdOmTejduzeOHj2K4OBg/P333/jwww+1GLXqfv75Z8THx+Ovv/4qENuoUaPee/r53PyLjo4u8FpOTg5iYmKUKpLn7ufatWuFDiL7NuYwEZF+edd5f+/evbFp06Z37ic6OhpLliyBn58fTp06le8uq2fPnhVabHlTZGQk9u/fDwCF3snz999/Y/z48UrtUx2Krh1yl+ee/2pSbvFG3szq8optb56Dy6PoPFwmkyk966KFhQWmTJmCKVOm4MmTJzhy5AhWrVqFtWvX4tmzZ9i3b59S+8m92+vcuXPvXNfR0VHhe5J37ebs7Ixnz54hJydH6QLY1q1bMXToUAwYMADr169Hr169lNqOiPSH8uVuJXz11VcoWbIkli5divDwcFSqVAk2NjY4d+4cUlNTC6yfe1vtm7N45BaD5N35kPuojLyZy44dO1ZgWWH7UqRWrVr5YntTZGQk7t+/j3LlyuW760sVue+hc+fOBWaJkfcepJJ723DuyURhCvudnTlzBmlpafn+xrkzych7v/KW1atXDzKZDKdOnVImdCIAwJAhQ2Bubo4//vgj71ELRd78Znnp0qUICQnBwIED8x5PWL58OZydnTF+/Hg8ffpUq3HLo067KIQo9E5JZeXmq7x9nT17Vu4Jtzy5J7HMYyIi4/D2eX/lypXh6OiI8+fPy70z6m0PHjyAEAJt2rQp8HihKufEq1evRk5ODpo2bYrhw4cX+Dd48GAA/90dpi2P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9INGx/wiIiLjEx8fX2C6+VevXmHixIkAgB49ekgQFRERERERkXI0PuYXEREZlyNHjmD48OFo164dPD09ERMTg0OHDiE8PBytWrVC//79pQ6RiIiIiIhIIRa/iIioUFWrVkXbtm1x4sQJbNu2DcDriSu+++47TJkyRemZm4iIiIiIiKTAMb+IiIiIiIiIiMho8et6IiIiIiIiIiIyWix+ERERERERERGR0WLxi4iIiIiIiIiIjBaLX0REREREREREZLRY/CIiIiIiIiIiIqPF4hcRERERERERERktFr+IiIiIiIiIiMhosfhFRERERERERERGi8UvIiIiIiIiIiIyWix+ERERERERERGR0WLxi4iIiIiIiIiIjBaLX0REREREREREZLRY/CIiIiIiIiIiIqPF4hcRERERERERERktC6kDIDJm586dU2n9+Ph4BAUFoW/fvnBxcVF6u3r16qkaGhHpCbYTRERERETaxTu/iPRIfHw8/vzzT8THx0sdChHpKbYTRERERESqYfGLiIiIiIiIiIiMFotfRERERERERERktFj8IiIiIiIiIiIio8XiF5EecXd3x7Rp0+Du7i51KESkp9hOEBERERGphrM9EukRR0dH9OzZU+owiEiPsZ0gIiIiIlIN7/wi0iPx8fFYuXIlZ3EjIoXYThARERERqYbFLyI9Eh8fj2XLlvGilogUYjtBRERERKQaFr+IiIiIiIiIiMhosfhFRERERERERERGiwPek9LWlOoHIYTUYahEJpNhcNRGqcMgIjJp7D+IFGN+ECnG/CBSzNDyQ+rcYPGLlCaEAAwouQDAsKIF3NzcMHXqVLi5uUkdChHpKUNsJ9h/ECnG/CBSjPlBpJih5YfUkbL4RaRHnJyc0LdvX6nDICI9xnaCiIiIiEg1HPOLSI8kJCRg7dq1SEhIkDoUItJTbCeIiIiIiFTD4heRHomLi8PixYsRFxcndShEpKfYThARERERqYbFLyIiIiIiIiIiMloc84uIiPROQlI6Tl2JxoVbMbhwMxZPX6QiPTMbVhbm8HC1QZ0q7qhTxR2NanjA3cVG6nCJiIiIiEiPsfhFRER649z1F1i64RbW732AtPRshevtPBoJALC0MEPvNt4Y078ymtYuBplMpqtQiYiIiIjIQLD4RaRHXF1dMXHiRLi6ukodCpFOPXqagk++OY59J6NU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MRsSNzc3jBs3TuowiEiPGWI7wf6D5DG0zwU/E6RLzA8ixZgfpA7O9kikRarO4paSkoKTJ0+icePGcHBwUHo7zvZIZLjYThARERERaRcfeyTSI9HR0ZgxYwaio6OlDoWI9BTbCSIiIiIi1bD4RURERERERERERovFLyIiIiIiIiIiMlosfhERERERERERkdFi8YtIjzg6OmLgwIFwdHSUOhQi0lNsJ4iIiIiIVMPZHom0SNVZ3NTFWdyIDBfbCSIiIiIi7eKdX0R6JCUlBYcOHUJKSorUoRCRnmI7QURERESkGha/iPRIdHQ0vvzyS0RHR0sdChHpKbYTRERERESqYfGLiIiIiIiIiIiMFsf8ItIjL168wJIlSzB27FgULVpU6nCISA+xnSAiIiIiUg2LX0REREREREREZLT42CMRERERERERERktFr+IiIiIiIiIiMhosfhFRERERERERERGi8UvIiIiIiIiIiIyWix+ERERERERERGR0WLxi4iIiIiIiIiIjBaLX0REREREREREZLRY/CIiIiIiIiIiIqPF4hcRERERERERERktFr+IiIiIiIiIiMhosfhFRERERERERERGi8UvIiIiIiIiIiIyWix+ERERERERERGR0WLxi4iIiIiIiIiIjBaLX0REREREREREZLT+D/+FePmQlD4SAAAAAElFTkSuQmCC",
"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": null,
"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",
" )"
]
},
{
"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 [06:14<00:00, 37.50s/epochs, epoch=10, loss=1.1]\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": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHHCAYAAABXx+fLAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAb6dJREFUeJzt3Xd4FNXbxvHv7qZ3QkmIhN5b6KEKKEhRfoIoCiigYEGwIfqCBRALoqioIIKgWCiiAhZQmtJBauidAAGS0FNJ2933j4VApCWkTMr9ua652J05M/MsUfbOnDNzTHa73Y6IiIhIEWI2ugARERGRvKYAJCIiIkWOApCIiIgUOQpAIiIiUuQoAImIiEiRowAkIiIiRY4CkIiIiBQ5CkAiIiJS5CgAiYiISJGjACQihVa/fv3w8vLKVFuTycSoUaNytyARyTcUgEQky6ZPn47JZGLTpk1Gl2KomTNnMn78eKPLEJHb4GR0ASIi+cHFixdxcsraP4kzZ85k586dvPjii7lTlIjkGgUgERHAzc3N6BIASEtLw2az4eLiYnQpIoWausBEJNds3bqVTp064ePjg5eXF3fffTfr16/P0CY1NZW33nqLKlWq4ObmRvHixWnZsiVLlixJbxMVFcXjjz9OmTJlcHV1pXTp0tx///0cOXIkU3WcOHGCrl274uXlRcmSJRk6dChWqzVDm/+OAYqLi+PFF1+kfPnyuLq6UqpUKdq3b8+WLVsAaNOmDQsWLODo0aOYTCZMJhPly5dP3//UqVP079+fgIAA3NzcCAkJ4dtvv81wziNHjmAymRg3bhzjx4+nUqVKuLq6smHDBjw9PXnhhReu+SzHjx/HYrEwZsyYTH12Ebk+XQESkVyxa9cuWrVqhY+PD6+++irOzs5MnjyZNm3asGLFCkJDQwEYNWoUY8aMYcCAATRp0oTY2Fg2bdrEli1baN++PQDdu3dn165dPPfcc5QvX55Tp06xZMkSjh07liF0XI/VaqVDhw6EhoYybtw4li5dykcffUSlSpUYOHDgDfd75pln+Pnnnxk8eDA1a9bk7NmzrF69mj179tCgQQNef/11YmJiOH78OJ988glA+oDrixcv0qZNGw4ePMjgwYOpUKECP/30E/369ePChQvXBJtvvvmGpKQknnrqKVxdXSlbtizdunXjxx9/5OOPP8ZisaS3nTVrFna7nd69e2f5ZyIiV7GLiGTRN998YwfsGzduvGGbrl272l1cXOyHDh1KX3fy5Em7t7e3/c4770xfFxISYr/33ntveJzz58/bAfuHH36Y5Tr79u1rB+yjR4/OsL5+/fr2hg0bZlgH2EeOHJn+3tfX1z5o0KCbHv/ee++1lytX7pr148ePtwP2H374IX1dSkqKvVmzZnYvLy97bGys3W6328PDw+2A3cfHx37q1KkMx1i0aJEdsP/5558Z1tetW9feunXrm9YlIremLjARyXFWq5XFixfTtWtXKlasmL6+dOnS9OrVi9WrVxMbGwuAn58fu3bt4sCBA9c9lru7Oy4uLixfvpzz58/fVj3PPPNMhvetWrXi8OHDN93Hz8+Pf//9l5MnT2b5fAsXLiQwMJCePXumr3N2dub5558nPj6eFStWZGjfvXt3SpYsmWFdu3btCAoKYsaMGenrdu7cyfbt23n00UezXJOIZKQAJCI57vTp0yQmJlKtWrVrttWoUQObzUZERAQAo0eP5sKFC1StWpU6derwyiuvsH379vT2rq6ujB07lj///JOAgADuvPNOPvjgA6KiojJVi5ub2zXholixYrcMUx988AE7d+4kODiYJk2aMGrUqFuGpsuOHj1KlSpVMJsz/hNbo0aN9O1Xq1ChwjXHMJvN9O7dm/nz55OYmAjAjBkzcHNz46GHHspUHSJyYwpAImKoO++8k0OHDvH1119Tu3Ztpk6dSoMGDZg6dWp6mxdffJH9+/czZswY3NzcePPNN6lRowZbt2695fGvHj+TFT169ODw4cN8/vnnBAUF8eGHH1KrVi3+/PPP2zrezbi7u193fZ8+fYiPj2f+/PnY7XZmzpzJfffdh6+vb47XIFLUKACJSI4rWbIkHh4e7Nu375pte/fuxWw2ExwcnL7O39+fxx9/nFmzZhEREUHdunWveSpzpUqVePnll1m8eDE7d+4kJSWFjz76KFc/R+nSpXn22WeZP38+4eHhFC9enHfffTd9u8lkuu5+5cqV48CBA9hstgzr9+7dm749M2rXrk39+vWZMWMGq1at4tixYzz22GO3+WlE5GoKQCKS4ywWC/fccw+//vprhlvVo6OjmTlzJi1btsTHxweAs2fPZtjXy8uLypUrk5ycDEBiYiJJSUkZ2lSqVAlvb+/0NjnNarUSExOTYV2pUqUICgrKcE5P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+O2332jUqBEPPfQQpUqVon79+nz11VdGl1VkNW/enGXLlrF//34Atm3bxurVq+nUqZPBlRVsmgw1D5w5cwar1UpAQECG9QEBAezdu9egquQym83Giy++SIsWLahdu7bR5RRJs2fPZsuWLWzcuNHoUgQ4fPgwkyZNYsiQIbz22mts3LiR559/HhcXF/r27Wt0eUXOsGHDiI2NpXr16lgsFqxWK++++y69e/c2urQCTQFIirxBgwaxc+dOVq9ebXQpRVJERAQvvPACS5Yswc3NzehyBMcvBY0aNeK9994DoH79+uzcuZMvv/xSAcgAc+bMYcaMGcycOZNatWoRFhbGiy++SFBQkH4e2aAAlAdKlCiBxWIhOjo6w/ro6GgCAwMNqkoABg8ezB9//MHKlSspU6aM0eUUSZs3b+bUqVM0aNAgfZ3VamXlypVMmDCB5ORkLBaLgRUWPaVLl6ZmzZoZ1tWoUYNffvnFoIqKtldeeYVhw4bxyCOPAFCnTh2OHj3KmDFjFICyQWOA8oCLiwsNGzZk2bJl6etsNhvLli2jWbNmBlZWdNntdgYPHsy8efP4+++/qVChgtElFVl33303O3bsICwsLH1p1KgRvXv3JiwsTOHHAC1atLjmsRD79++nXLlyBlVUtCUmJmI2Z/y6tlgs2Gw2gyoqHHQFKI8MGTKEvn370qhRI5o0acL48eNJSEjg8ccfN7q0ImnQoEHMnDmTX3/9FW9vb6KiogDw9fXF3d3d4OqKFm9v72vGXnl6elK8eHGNyTLISy+9RPPmzXnvvffo0aMHGzZsYMqUKUyZMsXo0oqkLl268O6771K2bFlq1arF1q1b+fjjj3niiSeMLq1A023weWjChAl8+OGHREVFUa9ePT777DNCQ0ONLqtIMplM113/zTff0K9fv7wtRq7Rpk0b3QZvsD/++IPhw4dz4MABKlSowJAhQ3jyySeNLqtIiouL480332TevHmcOnWKoKAgevbsyYgRI3BxcTG6vAJLAUhERESKHI0BEhERkSJHAUhERESKHAUgERERKXIUgERERKTIUQASERGRIkcBSERERIocBSAREREpchSAREQywWQyMX/+fKPLEJEcogAkIvlev379MJlM1ywdO3Y0ujQRKaA0F5iIFAgdO3bkm2++ybDO1dXVoGpEpKDTFSARKRBcXV0JDAzMsBQrVgxwdE9NmjSJTp064e7uTsWKFfn5558z7L9jxw7uuusu3N3dKV68OE899RTx8fEZ2nz99dfUqlULV1dXSpcuzeDBgzNsP3PmDN26dcPDw4MqVarw22+/5e6HFpFcowAkIoXCm2++Sffu3dm2bRu9e/fmkUceYc+ePQAkJCTQoUMHihUrxsaNG/npp59YunRphoAzadIkBg0axFNPPcWOHTv47bffqFy5coZzvPXWW/To0YPt27fTuXNnevfuzblz5/L0c4pIDrGLiORzffv2tVssFrunp2eG5d1337Xb7XY7YH/mmWcy7BMaGmofOHCg3W6326dMmWIvVqyYPT4+Pn37ggUL7Gaz2R4VFWW32+32oKAg++uvv37DGgD7G2+8kf4+Pj7eDtj//PPPHPucIpJ3NAZIRAqEtm3bMmnSpAzr/P390183a9Ysw7ZmzZoRFhYGwJ49ewgJCcHT0zN9e4sWLbDZbOzbtw+TycTJkye5++67b1pD3bp10197enri4+PDqVOnbvcjiYiBFIBEpEDw9PS8pksqp7i7u2eqnbOzc4b3JpMJm82WGyWJSC7TGCARKRTWr19/zfsaNWoAUKNGDbZt20ZCQkL69jVr1mA2m6lWrRre3t6UL1+eZcuW5WnNImIcXQESkQIhOTmZqKioDOucnJwoUaIEAD/99BONGjWiZcuWzJgxgw0bNjBt2jQAevfuzciRI+nbty+jRo3i9OnTPPfcczz22GMEBAQAMGrUKJ555hlKlSpFp06diIuLY82aNTz33HN5+0FFJE8oAIlIgfDXX39RunTpDOuqVavG3r17AccdWrNnz+bZZ5+ldOnSzJo1i5o1awLg4eHBokWLeOGFF2jcuDEeHh50796djz/+OP1Yffv2JSkpiU8++YShQ4dSokQJHnzwwbz7gCKSp0x2u91udBEiItlhMpmYN28eXbt2NboUESkgNAZIREREihwFIBERESlyNAZIRAo89eSLSFbpCpCIiIgUOQpAIiIiUuQoAImIiEiRowAkIiIiRY4CkIiIiBQ5CkAiIiJS5CgAiYiISJGjACQiIiJFjgKQiIiIFDn/D8vU4TZCi1PWAAAAAElFTkSuQmCC",
"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": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Test Accuracy:94.0%\n"
]
},
{
"data": {
"image/png": "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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.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}