859 lines (858 with data), 162.4 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "A7xgHxPxd0J_",
"outputId": "bc228284-2237-4666-b687-f24d2ea8a3af"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1706116503.3933682\n",
"Wed Jan 24 17:15:03 2024\n"
]
}
],
"source": [
"# This cell is added by sphinx-gallery\n",
"# It can be customized to whatever you like\n",
"%matplotlib inline\n",
"# from google.colab import drive\n",
"# drive.mount('/content/drive')\n",
"# !pip install pennylane\n",
"import time\n",
"seconds = time.time()\n",
"print(\"Time in seconds since beginning of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "RWYw4Yy7d0KA"
},
"source": [
"Quanvolutional Neural Networks {#quanvolution}\n",
"==============================\n",
"\n",
"::: {.meta}\n",
":property=\\\"og:description\\\": Train a quantum convolutional neural\n",
"network to classify MNIST images. :property=\\\"og:image\\\":\n",
"<https://pennylane.ai/qml/_static/demonstration_assets//circuit.png>\n",
":::\n",
"\n",
"*Author: Andrea Mari --- Posted: 24 March 2020. Last updated: 15 January\n",
"2021.*\n",
"\n",
"In this demo we implement the *Quanvolutional Neural Network*, a quantum\n",
"machine learning model originally introduced in [Henderson et al.\n",
"(2019)](https://arxiv.org/abs/1904.04767).\n",
"\n",
"{.align-center\n",
"width=\"90.0%\"}\n",
"\n",
"Introduction\n",
"------------\n",
"\n",
"### Classical convolution\n",
"\n",
"The *convolutional neural network* (CNN) is a standard model in\n",
"classical machine learning which is particularly suitable for processing\n",
"images. The model is based on the idea of a *convolution layer* where,\n",
"instead of processing the full input data with a global function, a\n",
"local convolution is applied.\n",
"\n",
"If the input is an image, small local regions are sequentially processed\n",
"with the same kernel. The results obtained for each region are usually\n",
"associated to different channels of a single output pixel. The union of\n",
"all the output pixels produces a new image-like object, which can be\n",
"further processed by additional layers.\n",
"\n",
"### Quantum convolution\n",
"\n",
"One can extend the same idea also to the context of quantum variational\n",
"circuits. A possible approach is given by the following procedure which\n",
"is very similar to the one used in Ref. \\[1\\]. The scheme is also\n",
"represented in the figure at the top of this tutorial.\n",
"\n",
"1. A small region of the input image, in our example a $2 \\times 2$\n",
" square, is embedded into a quantum circuit. In this demo, this is\n",
" achieved with parametrized rotations applied to the qubits\n",
" initialized in the ground state.\n",
"2. A quantum computation, associated to a unitary $U$, is performed on\n",
" the system. The unitary could be generated by a variational quantum\n",
" circuit or, more simply, by a random circuit as proposed in Ref.\n",
" \\[1\\].\n",
"3. The quantum system is finally measured, obtaining a list of\n",
" classical expectation values. The measurement results could also be\n",
" classically post-processed as proposed in Ref. \\[1\\] but, for\n",
" simplicity, in this demo we directly use the raw expectation values.\n",
"4. Analogously to a classical convolution layer, each expectation value\n",
" is mapped to a different channel of a single output pixel.\n",
"5. Iterating the same procedure over different regions, one can scan\n",
" the full input image, producing an output object which will be\n",
" structured as a multi-channel image.\n",
"6. The quantum convolution can be followed by further quantum layers or\n",
" by classical layers.\n",
"\n",
"The main difference with respect to a classical convolution is that a\n",
"quantum circuit can generate highly complex kernels whose computation\n",
"could be, at least in principle, classically intractable.\n",
"\n",
"::: {.note}\n",
"::: {.title}\n",
"Note\n",
":::\n",
"\n",
"In this tutorial we follow the approach of Ref. \\[1\\] in which a fixed\n",
"non-trainable quantum circuit is used as a \\\"quanvolution\\\" kernel,\n",
"while the subsequent classical layers are trained for the classification\n",
"problem of interest. However, by leveraging the ability of PennyLane to\n",
"evaluate gradients of quantum circuits, the quantum kernel could also be\n",
"trained.\n",
":::\n",
"\n",
"General setup\n",
"-------------\n",
"\n",
"This Python code requires *PennyLane* with the *TensorFlow* interface\n",
"and the plotting library *matplotlib*.\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"id": "VPbcKloNd0KC"
},
"outputs": [],
"source": [
"import pennylane as qml\n",
"from pennylane import numpy as np\n",
"from pennylane.templates import RandomLayers\n",
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ISZAWXDMd0KC"
},
"source": [
"Setting of the main hyper-parameters of the model\n",
"=================================================\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"id": "1D5V-v5Vd0KC"
},
"outputs": [],
"source": [
"n_epochs = 30 # Number of optimization epochs\n",
"n_layers = 1 # Number of random layers\n",
"n_train = 50 # Size of the train dataset\n",
"n_test = 30 # Size of the test dataset\n",
"\n",
"SAVE_PATH = \"/content/drive/MyDrive/Colab Notebooks/data/quanvolution\" # Data saving folder\n",
"PREPROCESS = True # If False, skip quantum processing and load data from SAVE_PATH\n",
"np.random.seed(0) # Seed for NumPy random number generator\n",
"tf.random.set_seed(0) # Seed for TensorFlow random number generator"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "avddR0atd0KC"
},
"source": [
"Loading of the MNIST dataset\n",
"============================\n",
"\n",
"We import the MNIST dataset from *Keras*. To speedup the evaluation of\n",
"this demo we use only a small number of training and test images.\n",
"Obviously, better results are achievable when using the full dataset.\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"id": "xlhnv1hrd0KC",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"outputId": "842417a1-92c6-48e5-a1a5-df387e85c46a"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n",
"11490434/11490434 [==============================] - 1s 0us/step\n"
]
}
],
"source": [
"mnist_dataset = keras.datasets.mnist\n",
"(train_images, train_labels), (test_images, test_labels) = mnist_dataset.load_data()\n",
"\n",
"# Reduce dataset size\n",
"train_images = train_images[:n_train]\n",
"train_labels = train_labels[:n_train]\n",
"test_images = test_images[:n_test]\n",
"test_labels = test_labels[:n_test]\n",
"\n",
"# Normalize pixel values within 0 and 1\n",
"train_images = train_images / 255\n",
"test_images = test_images / 255\n",
"\n",
"# Add extra dimension for convolution channels\n",
"train_images = np.array(train_images[..., tf.newaxis], requires_grad=False)\n",
"test_images = np.array(test_images[..., tf.newaxis], requires_grad=False)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bDVPKQD8d0KD"
},
"source": [
"Quantum circuit as a convolution kernel\n",
"=======================================\n",
"\n",
"We follow the scheme described in the introduction and represented in\n",
"the figure at the top of this demo.\n",
"\n",
"We initialize a PennyLane `default.qubit` device, simulating a system of\n",
"$4$ qubits. The associated `qnode` represents the quantum circuit\n",
"consisting of:\n",
"\n",
"1. an embedding layer of local $R_y$ rotations (with angles scaled by a\n",
" factor of $\\pi$);\n",
"2. a random circuit of `n_layers`;\n",
"3. a final measurement in the computational basis, estimating $4$\n",
" expectation values.\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"id": "rD5_3eztd0KD"
},
"outputs": [],
"source": [
"dev = qml.device(\"default.qubit\", wires=4)\n",
"# Random circuit parameters\n",
"rand_params = np.random.uniform(high=2 * np.pi, size=(n_layers, 4))\n",
"\n",
"@qml.qnode(dev)\n",
"def circuit(phi):\n",
" # Encoding of 4 classical input values\n",
" for j in range(4):\n",
" qml.RY(np.pi * phi[j], wires=j)\n",
"\n",
" # Measurement producing 4 classical output values\n",
" return [qml.expval(qml.PauliZ(j)) for j in range(4)]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "02g-DOe8d0KD"
},
"source": [
"The next function defines the convolution scheme:\n",
"\n",
"1. the image is divided into squares of $2 \\times 2$ pixels;\n",
"2. each square is processed by the quantum circuit;\n",
"3. the $4$ expectation values are mapped into $4$ different channels of\n",
" a single output pixel.\n",
"\n",
"::: {.note}\n",
"::: {.title}\n",
"Note\n",
":::\n",
"\n",
"This process halves the resolution of the input image. In the standard\n",
"language of CNN, this would correspond to a convolution with a\n",
"$2 \\times 2$ *kernel* and a *stride* equal to $2$.\n",
":::\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"id": "AEL9cTFEd0KD"
},
"outputs": [],
"source": [
"def quanv(image):\n",
" \"\"\"Convolves the input image with many applications of the same quantum circuit.\"\"\"\n",
" out = np.zeros((14, 14, 4))\n",
"\n",
" # Loop over the coordinates of the top-left pixel of 2X2 squares\n",
" for j in range(0, 28, 2):\n",
" for k in range(0, 28, 2):\n",
" # Process a squared 2x2 region of the image with a quantum circuit\n",
" q_results = circuit(\n",
" [\n",
" image[j, k, 0],\n",
" image[j, k + 1, 0],\n",
" image[j + 1, k, 0],\n",
" image[j + 1, k + 1, 0]\n",
" ]\n",
" )\n",
" # Assign expectation values to different channels of the output pixel (j/2, k/2)\n",
" for c in range(4):\n",
" out[j // 2, k // 2, c] = q_results[c]\n",
" return out"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "N3MmyCQad0KD"
},
"source": [
"Quantum pre-processing of the dataset\n",
"=====================================\n",
"\n",
"Since we are not going to train the quantum convolution layer, it is\n",
"more efficient to apply it as a \\\"pre-processing\\\" layer to all the\n",
"images of our dataset. Later an entirely classical model will be\n",
"directly trained and tested on the pre-processed dataset, avoiding\n",
"unnecessary repetitions of quantum computations.\n",
"\n",
"The pre-processed images will be saved in the folder `SAVE_PATH`. Once\n",
"saved, they can be directly loaded by setting `PREPROCESS = False`,\n",
"otherwise the quantum convolution is evaluated at each run of the code.\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "c3oexS3hd0KD",
"outputId": "ac205146-5521-4fc3-9a1f-47540ff12017"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Quantum pre-processing of train images:\n",
"\n",
"Quantum pre-processing of test images:\n"
]
}
],
"source": [
"if PREPROCESS == True:\n",
" q_train_images = []\n",
" print(\"Quantum pre-processing of train images:\")\n",
" for idx, img in enumerate(train_images):\n",
" print(\"{}/{} \".format(idx + 1, n_train), end=\"\\r\")\n",
" q_train_images.append(quanv(img))\n",
" q_train_images = np.asarray(q_train_images)\n",
"\n",
" q_test_images = []\n",
" print(\"\\nQuantum pre-processing of test images:\")\n",
" for idx, img in enumerate(test_images):\n",
" print(\"{}/{} \".format(idx + 1, n_test), end=\"\\r\")\n",
" q_test_images.append(quanv(img))\n",
" q_test_images = np.asarray(q_test_images)\n",
"\n",
" # Save pre-processed images\n",
" np.save(SAVE_PATH + \"q_train_images.npy\", q_train_images)\n",
" np.save(SAVE_PATH + \"q_test_images.npy\", q_test_images)\n",
"\n",
"\n",
"# Load pre-processed images\n",
"q_train_images = np.load(SAVE_PATH + \"q_train_images.npy\")\n",
"q_test_images = np.load(SAVE_PATH + \"q_test_images.npy\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "kJYilWS1d0KE"
},
"source": [
"Let us visualize the effect of the quantum convolution layer on a batch\n",
"of samples:\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1006
},
"id": "2ckiL7srd0KE",
"outputId": "a9c62475-25bf-4690-ef83-52cfd814eff6"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1000x1000 with 20 Axes>"
],
"image/png": "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UkKC/U9ZWpYVllyTbL36oqIiR6flXn/99fxFBAAAAACwxdavv1esWOFo0WXLloVUDAAAAAAg/oS8K6/P53N8GhgAAAAAAP/O0WD6yiuv6PLLL1f37t3VpUsXdenSRd27d9fll1/u+HOOAAAAAABIDgbTP/zhD7r88suVkpKihx56SH/+85/15z//WQ899JC6deumyy+/XKtWrQpnrQAAAACAGGR7i8X77rtPixYt0pQpUwIeu/HGGzVixAiVlpbqhhtucLVAAAAAAEBss33EdO/evSooKGj18VGjRunTTz91pSgAAAAAQPywPZgOHjxYv//971t9/LHHHtM555zjSlEAAAAAgPhh+1TehQsX6vvf/77Wr1+vgoICpaamSpKqqqpUVlam//u//9N///d/h61QAAAAAEBssj2YXnLJJfrwww+1bNkybdq0SZWVlZKktLQ0jR49Wj/5yU+UlZUVrjoBAAAAADHK9mAqSVlZWfrVr34VrlrwL3r16mU7t76+Pmx19O3b13bu3r17Ha39xRdfOC0HiEsej8d0CZKkZ555xnZuv379bOdalhVKOYgTOTk5tnPD+e9hrJs2bZrt3DvvvDOMlQCxY8eOHY7ynfx7+PnnnzstJ+I5uo4pAAAAAABuYzAFAAAAABjFYAoAAAAAMIrBFAAAAABgFIMpAAAAAMAo1wbT559/Xo8//rhbywEAAAAA4oRrg+ndd9+tiRMnurUcAAAAACBOOLqO6Vf5+OOP3VoKAAAAABBH+IwpAAAAAMCokI6YVldX65133tHBgwfV3Nzc4rEJEya4UhgAAAAAID44HkxfeOEFXXfddaqvr1dycrI8Ho//MY/Hw2Dqkrq6urCt/a/v2an84x//CFsdQLxKTEwM29r//svCr/LAAw84Wvuqq65yWo4tVVVVtnNTU1PDUgMiV0NDg+kSACAkgwcPdpQ/aNAg27mdO3d2Wk7Ec3wq789+9jNNmjRJ9fX1qq6u1tGjR/23zz77LBw1AgAAAABimOPBdN++fbr99tvVpUuXcNTTwpw5c+TxeFrcnPwmAQAAAAAQ+RyfyltYWKgtW7aof//+4agnwODBg/Xqq6/673fo4NpGwgAAAACACGBrylu3bp3/z9/73vc0bdo07dixQ+edd546duzYIvfKK690t8AOHZSWlubqmgAAAACAyGFrMB0zZkxArLS0NCDm8XjU1NTU5qL+1a5du5Senq5OnTopPz9f8+bNU9++fVvN9/l88vl8/vu1tbWu1gMAAAAAcJetz5g2Nzfburk9lObl5WnlypVav369li1bpvLycl100UVfuWPtvHnzlJKS4r9lZma6WhMAAAAAwF2ONz9qT6NHj9YPfvADDRkyRIWFhXrxxRdVXV2tp59+utXnTJ8+XTU1Nf5bRUVFO1YMAAAAAHDK8WB6++23a/HixQHxhx9+WFOnTnWjplZ169ZNAwcO1O7du1vN8Xq9Sk5ObnEDAAAAAEQux4Pps88+qwsvvDAgfsEFF+iZZ55xpajW1NfXa8+ePerTp09Yvw4AAAAAoP04HkyPHDmilJSUgHhycrIOHz7sSlEn3XnnndqwYYM++eQTvf3227r66quVmJio8ePHu/p1AAAAAADmOB5MzzrrLK1fvz4g/tJLL7l+bdNPP/1U48eP19e//nX953/+p772ta9p06ZN6tWrl6tfBwAAAABgjq3LxfyrkpISFRcX69ChQxo5cqQkqaysTAsXLtSiRYtcLW716tWurocTBg4caDv3ww8/tJ177rnnhlIOEBPOP//8sK395Zdf2s71eDy2c6dNmxZKOa771re+ZTu3vLw8jJUAseXyyy+3ncueHIA9aWlpYVv7o48+Ctva0cDxYDpp0iT5fD7dd999uueeeyRJWVlZWrZsmSZMmOB6gQAAAACA2OZ4MJWkyZMna/LkyTp06JA6d+6s008/3e26AAAAAABxIqTB9CQ+6wkAAAAAaCtbmx9985vf1NGjR20vOmLECO3bty/kogAAAAAA8cPWEdPt27fr/fffV48ePWwtun37dvl8vjYVBgAAAACID7ZP5R01apQsy7KV62RXSAAAAABAfLM1mIayPX9GRobj5wAAAAAA4o+twbRfv37hrgMAAAAAEKdsbX4EAAAAAEC4MJgCAAAAAIxq03VMEZ127txpOzcxMdF2bnNzs6M6nOzcnJSU5GhtoL1t2bLFdq7djeQARIaDBw86yp85c6bt3N/+9re2c538myxJTU1NtnOdXBYQiDUbN260nVtVVWU7t7GxMZRy4hZHTAEAAAAARjkeTPv3768jR44ExKurq9W/f39XigIAAAAAxA/Hg+knn3wS9NQQn8+nffv2uVIUAAAAACB+2P6M6bp16/x/fvnll5WSkuK/39TUpLKyMmVlZblaHAAAAAAg9tkeTMeMGSNJ8ng8KioqavFYx44dlZWVpYULF7paHAAAAAAg9tkeTE/uuJqdna13331XPXv2DFtRAAAAAID44fhyMeXl5eGoAwAAAAAQpxwPpqWlpV/5+KxZs0IuBgAAAAAQfxwPpmvWrGlx//jx4yovL1eHDh105plnMpgCAAAAABxxPJhu27YtIFZbW6sbb7xRV199tStFAQAAAADih+PBNJjk5GTNnTtXV1xxhW644QY3lkSECHbN2tb8+c9/drS21+u1nWtZlqO1ATds2LDBdm5SUlIYK4lt//d//2e6BEQwJzv+5+XlhaWGu+++21H+o48+GpZcpzwej+3cf70MIBBvLrjggrCs27Fjx7CsG6sS3FqopqZGNTU1bi0HAAAAAIgTjo+YLl68uMV9y7J04MABrVq1SqNHj3atMAAAAABAfHA8mD700EMt7ickJKhXr14qKirS9OnTXSsMAAAAABAfuI4pAAAAAMCoNn3GtKKiQhUVFW7VAgAAAACIQ44H0y+//FIzZ85USkqKsrKylJWVpZSUFM2YMUPHjx8PR40AAAAAgBjm+FTe2267Tc8995zmz5+v/Px8SdLGjRs1Z84cHTlyRMuWLXO9SAAAAABA7HI8mD7xxBNavXp1ix14hwwZoszMTI0fP57BFAAAAADgiONTeb1er7KysgLi2dnZXGAeAAAAAOCY48G0uLhY99xzj3w+nz/m8/l03333qbi42NXiAAAAAACxz/GpvNu2bVNZWZkyMjKUk5MjSXr//ffV2NioUaNGaezYsf7c5557zr1KAQAAAAAxyfFg2q1bN11zzTUtYpmZma4VhMhy+PBh27kzZswIYyVAZJswYYLpEhw7dOiQo/zevXvbzrUsy2k5QFAlJSVhyQUQuzp27Bi2tZubm8O2drxzPJiuWLEiHHUAAAAAAOKU48+Yjhw5UtXV1QHx2tpajRw50o2aAAAAAABxxPFg+sYbb6ixsTEgfuzYMf31r391pSgAAAAAQPywfSrvBx984P/zjh07VFlZ6b/f1NSk9evX64wzznC3OgAAAABAzLM9mA4dOlQej0cejyfoKbudO3fWkiVLXC0OAAAAABD7bA+m5eXlsixL/fv31zvvvKNevXr5H0tKSlLv3r2VmJgYliIBAAAAALHL9mDar18/SWyRDAAAAABw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AIxiMAUAAAAAGNXBTtLixYsdLzxx4kR17drV8fMAAAAAAPHF1mA6depUZWRkKDEx0daiFRUV+v73v89g2gb19fW2c2+66SZHaz/99NNOywmLESNG2M7929/+Zjt3586dtnMHDBhgOxcw5dNPP7Wdm5mZaTs3IcHZSTNpaWm2cy3LcrQ20Jq3337bdu4FF1wQxkpi27Bhw2znbt26NYyVALHj+eefd5Q/ZswY27m7d++2nXvmmWc6qsMUW4OpJG3ZskW9e/e2lctACgAAAACwy9avy2fPnq3TTz/d9qI///nP1aNHj5CLAgAAAADED1tHTGfPnu1o0enTp4dUDAAAAAAg/rArLwAAAADAKNcG048++kj9+/d3azkAAAAAQJxwbTBtbGzUP/7xD7eWAwAAAADECdu78paUlHzl44cOHWpzMQAAAACA+GN7MP31r3+toUOHKjk5OejjTq67CQAAAADASbYH07POOks//elPdf311wd9fPv27Y4uzgwAAAAAgOTgM6bDhw/X1q1bW33c4/HIsixXigIAAAAAxA/bR0wXLlwon8/X6uM5OTlqbm52pahY1dTUZDu3a9euYazEvqFDh9rOff/99x2t/de//tVhNUBsuPzyyx3lv/TSS2Gpw+nf2YMGDbKde+mll9rOfeWVVxzVgfhy77332s598cUXw1hJ9Pmq/7f9uz59+oSxEiA+XXPNNY7ye/ToYTv3zDPPdFpOxLM9mKalpYWzDgAAAABAnHLtcjEAAAAAAISCwRQAAAAAYBSDKQAAAADAKAZTAAAAAIBRDKYAAAAAAKNcG0yff/55Pf74424tBwAAAACIE64NpnfffbcmTpzo1nIAAAAAgDhh+zqmp/Lxxx+7tRQAAAAAII7wGVMAAAAAgFEhHTGtrq7WO++8o4MHD6q5ubnFYxMmTHClsFiUmJhoO/ffv69f5dprr3VUx0033WQ797LLLnO0NhCvDh06ZDv3pZdecrT28OHDbec++uijtnOHDBniqI4OHez/k5GQwO89Edzhw4dNlxA3Bg4caDv3rbfeCmMlQOz4z//8T9u5TU1NjtY+cuSI03JiiuPB9IUXXtB1112n+vp6JScny+Px+B/zeDwMpgAAAAAARxz/SvtnP/uZJk2apPr6elVXV+vo0aP+22effRaOGgEAAAAAMczxYLpv3z7dfvvt6tKlSzjq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M3TLLbeEs14AAAAAQIyxPZg++uij+s1vfqMf/vCH2rZtm3Jzc7V8+XLddNNNkqQzzjhDy5YtYzAFAAAAADhi+1Tef/zjHxoxYoQk6Rvf+IYSExP1rW99y//4xRdfrD179rhfIQAAAAAgptkeTLt06aKGhgb//V69eun0009vkfPll1+6VxkAAAAAIC7YHkwHDRqkDz74wH+/oqJC/fr189//+OOPlZWV5WpxAAAAAIDYZ/szpr/61a902mmntfr43r179eMf/9iVomJV7969bedec801tnOfffZZR3Wkpqbazq2srLSdO27cOEd1nDw1HIg3iYmJjvKbm5tt5y5dutR27k9/+lNHdWzatMl27vTp023n3n333Y7qAGDP0KFDbedOnTo1bHUAsaS8vNx27pw5cxyt/cILL9jOPfPMMx2tHQ1sD6YXXnjhVz5+6623trkYAAAAAED8cXQdUwAAAAAA3MZgCgAAAAAwisEUAAAAAGAUgykAAAAAwCgGUwAAAACAUa4Nps8//7wef/xxt5YDAAAAAMQJ1wbTu+++WxMnTnRrOQAAAABAnLB9HdNT+fjjj91aCgAAAAAQR/iMKQAAAADAqJCOmFZXV+udd97RwYMH1dzc3OKxCRMmuFJYvHvmmWds595+++2O1n755ZedlmPLU089FZZ1gWhQWFhoOzchwdnvBF9//XXbud/+9rdt5956662O6nDCSc2ILw888IDpEuLGjh07bOfeeeedYawEiB39+/e3nZuYmOho7e9///tOy4kpjgfTF154Qdddd53q6+uVnJwsj8fjf8zj8TCYAgAAAAAccXwq789+9jNNmjRJ9fX1qq6u1tGjR/23zz77LBw1AgAAAABimOPBdN++fbr99tvVpUuXcNTTwpw5c+TxeFrcBg0aFPavCyA09CwQXehZILrQs4hljk/lLSws1JYtWxydX90WgwcP1quvvuq/36GDaxsJAwgDehaILvQsEF3oWcQqWz/J69at8//5e9/7nqZNm6YdO3bovPPOU8eOHVvkXnnlle4W2KGD0tLSXF0TQPjQs0B0oWeB6ELPIlbZGkzHjBkTECstLQ2IeTweNTU1tbmof7Vr1y6lp6erU6dOys/P17x589S3b99W830+n3w+n/9+bW2tq/UA+Gr0LBBd6FkgutCziFW2PmPa3Nxs6+b2UJqXl6eVK1dq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\n"
},
"metadata": {}
}
],
"source": [
"n_samples = 4\n",
"n_channels = 4\n",
"fig, axes = plt.subplots(1 + n_channels, n_samples, figsize=(10, 10))\n",
"for k in range(n_samples):\n",
" axes[0, 0].set_ylabel(\"Input\")\n",
" if k != 0:\n",
" axes[0, k].yaxis.set_visible(False)\n",
" axes[0, k].imshow(train_images[k, :, :, 0], cmap=\"gray\")\n",
"\n",
" # Plot all output channels\n",
" for c in range(n_channels):\n",
" axes[c + 1, 0].set_ylabel(\"Output [ch. {}]\".format(c))\n",
" if k != 0:\n",
" axes[c, k].yaxis.set_visible(False)\n",
" axes[c + 1, k].imshow(q_train_images[k, :, :, c], cmap=\"gray\")\n",
"\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "rCnk_yy0d0KE"
},
"source": [
"Below each input image, the $4$ output channels generated by the quantum\n",
"convolution are visualized in gray scale.\n",
"\n",
"One can clearly notice the downsampling of the resolution and some local\n",
"distortion introduced by the quantum kernel. On the other hand the\n",
"global shape of the image is preserved, as expected for a convolution\n",
"layer.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vCjr6WvXd0KE"
},
"source": [
"Hybrid quantum-classical model\n",
"==============================\n",
"\n",
"After the application of the quantum convolution layer we feed the\n",
"resulting features into a classical neural network that will be trained\n",
"to classify the $10$ different digits of the MNIST dataset.\n",
"\n",
"We use a very simple model: just a fully connected layer with 10 output\n",
"nodes with a final *softmax* activation function.\n",
"\n",
"The model is compiled with a *stochastic-gradient-descent* optimizer,\n",
"and a *cross-entropy* loss function.\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"id": "PHtPdynad0KE"
},
"outputs": [],
"source": [
"def MyModel():\n",
" \"\"\"Initializes and returns a custom Keras model\n",
" which is ready to be trained.\"\"\"\n",
" model = keras.models.Sequential([\n",
" keras.layers.Flatten(),\n",
" keras.layers.Dense(10, activation=\"softmax\")\n",
" ])\n",
"\n",
" model.compile(\n",
" optimizer='adam',\n",
" loss=\"sparse_categorical_crossentropy\",\n",
" metrics=[\"accuracy\"],\n",
" )\n",
" return model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WlOj9hwGd0KE"
},
"source": [
"Training\n",
"========\n",
"\n",
"We first initialize an instance of the model, then we train and validate\n",
"it with the dataset that has been already pre-processed by a quantum\n",
"convolution.\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "Zj8fE8uhd0KF",
"outputId": "e37c8ddc-488b-4cc8-9a8d-60b6f8307602"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/30\n",
"13/13 - 1s - loss: 2.9559 - accuracy: 0.1200 - val_loss: 2.4697 - val_accuracy: 0.1667 - 845ms/epoch - 65ms/step\n",
"Epoch 2/30\n",
"13/13 - 0s - loss: 1.9665 - accuracy: 0.3000 - val_loss: 2.0137 - val_accuracy: 0.5000 - 62ms/epoch - 5ms/step\n",
"Epoch 3/30\n",
"13/13 - 0s - loss: 1.4767 - accuracy: 0.5600 - val_loss: 1.8065 - val_accuracy: 0.4333 - 62ms/epoch - 5ms/step\n",
"Epoch 4/30\n",
"13/13 - 0s - loss: 1.0756 - accuracy: 0.7800 - val_loss: 1.5517 - val_accuracy: 0.6333 - 64ms/epoch - 5ms/step\n",
"Epoch 5/30\n",
"13/13 - 0s - loss: 0.8520 - accuracy: 0.9000 - val_loss: 1.4301 - val_accuracy: 0.7333 - 60ms/epoch - 5ms/step\n",
"Epoch 6/30\n",
"13/13 - 0s - loss: 0.7220 - accuracy: 0.8800 - val_loss: 1.3542 - val_accuracy: 0.7333 - 60ms/epoch - 5ms/step\n",
"Epoch 7/30\n",
"13/13 - 0s - loss: 0.5438 - accuracy: 0.9200 - val_loss: 1.2882 - val_accuracy: 0.7000 - 61ms/epoch - 5ms/step\n",
"Epoch 8/30\n",
"13/13 - 0s - loss: 0.4254 - accuracy: 0.9600 - val_loss: 1.2006 - val_accuracy: 0.7667 - 60ms/epoch - 5ms/step\n",
"Epoch 9/30\n",
"13/13 - 0s - loss: 0.3644 - accuracy: 0.9800 - val_loss: 1.1612 - val_accuracy: 0.7333 - 61ms/epoch - 5ms/step\n",
"Epoch 10/30\n",
"13/13 - 0s - loss: 0.2979 - accuracy: 1.0000 - val_loss: 1.1557 - val_accuracy: 0.7667 - 61ms/epoch - 5ms/step\n",
"Epoch 11/30\n",
"13/13 - 0s - loss: 0.2786 - accuracy: 1.0000 - val_loss: 1.1043 - val_accuracy: 0.7667 - 59ms/epoch - 5ms/step\n",
"Epoch 12/30\n",
"13/13 - 0s - loss: 0.2377 - accuracy: 1.0000 - val_loss: 1.1306 - val_accuracy: 0.7333 - 59ms/epoch - 5ms/step\n",
"Epoch 13/30\n",
"13/13 - 0s - loss: 0.2109 - accuracy: 1.0000 - val_loss: 1.0733 - val_accuracy: 0.7667 - 59ms/epoch - 5ms/step\n",
"Epoch 14/30\n",
"13/13 - 0s - loss: 0.1975 - accuracy: 1.0000 - val_loss: 1.0245 - val_accuracy: 0.7667 - 60ms/epoch - 5ms/step\n",
"Epoch 15/30\n",
"13/13 - 0s - loss: 0.1584 - accuracy: 1.0000 - val_loss: 1.0382 - val_accuracy: 0.7667 - 61ms/epoch - 5ms/step\n",
"Epoch 16/30\n",
"13/13 - 0s - loss: 0.1389 - accuracy: 1.0000 - val_loss: 1.0369 - val_accuracy: 0.7667 - 56ms/epoch - 4ms/step\n",
"Epoch 17/30\n",
"13/13 - 0s - loss: 0.1332 - accuracy: 1.0000 - val_loss: 1.0015 - val_accuracy: 0.7667 - 61ms/epoch - 5ms/step\n",
"Epoch 18/30\n",
"13/13 - 0s - loss: 0.1158 - accuracy: 1.0000 - val_loss: 1.0109 - val_accuracy: 0.7667 - 55ms/epoch - 4ms/step\n",
"Epoch 19/30\n",
"13/13 - 0s - loss: 0.1069 - accuracy: 1.0000 - val_loss: 1.0069 - val_accuracy: 0.7667 - 62ms/epoch - 5ms/step\n",
"Epoch 20/30\n",
"13/13 - 0s - loss: 0.0992 - accuracy: 1.0000 - val_loss: 0.9790 - val_accuracy: 0.7667 - 59ms/epoch - 5ms/step\n",
"Epoch 21/30\n",
"13/13 - 0s - loss: 0.0903 - accuracy: 1.0000 - val_loss: 0.9946 - val_accuracy: 0.7667 - 60ms/epoch - 5ms/step\n",
"Epoch 22/30\n",
"13/13 - 0s - loss: 0.0836 - accuracy: 1.0000 - val_loss: 0.9853 - val_accuracy: 0.7667 - 60ms/epoch - 5ms/step\n",
"Epoch 23/30\n",
"13/13 - 0s - loss: 0.0781 - accuracy: 1.0000 - val_loss: 0.9592 - val_accuracy: 0.7667 - 56ms/epoch - 4ms/step\n",
"Epoch 24/30\n",
"13/13 - 0s - loss: 0.0727 - accuracy: 1.0000 - val_loss: 0.9490 - val_accuracy: 0.7667 - 62ms/epoch - 5ms/step\n",
"Epoch 25/30\n",
"13/13 - 0s - loss: 0.0701 - accuracy: 1.0000 - val_loss: 0.9530 - val_accuracy: 0.7667 - 57ms/epoch - 4ms/step\n",
"Epoch 26/30\n",
"13/13 - 0s - loss: 0.0633 - accuracy: 1.0000 - val_loss: 0.9478 - val_accuracy: 0.7667 - 56ms/epoch - 4ms/step\n",
"Epoch 27/30\n",
"13/13 - 0s - loss: 0.0608 - accuracy: 1.0000 - val_loss: 0.9463 - val_accuracy: 0.7667 - 58ms/epoch - 4ms/step\n",
"Epoch 28/30\n",
"13/13 - 0s - loss: 0.0607 - accuracy: 1.0000 - val_loss: 0.9386 - val_accuracy: 0.7667 - 57ms/epoch - 4ms/step\n",
"Epoch 29/30\n",
"13/13 - 0s - loss: 0.0553 - accuracy: 1.0000 - val_loss: 0.9546 - val_accuracy: 0.7667 - 62ms/epoch - 5ms/step\n",
"Epoch 30/30\n",
"13/13 - 0s - loss: 0.0514 - accuracy: 1.0000 - val_loss: 0.9334 - val_accuracy: 0.7667 - 56ms/epoch - 4ms/step\n"
]
}
],
"source": [
"q_model = MyModel()\n",
"\n",
"q_history = q_model.fit(\n",
" q_train_images,\n",
" train_labels,\n",
" validation_data=(q_test_images, test_labels),\n",
" batch_size=4,\n",
" epochs=n_epochs,\n",
" verbose=2,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZrgNg_sSd0KF"
},
"source": [
"In order to compare the results achievable with and without the quantum\n",
"convolution layer, we initialize also a \\\"classical\\\" instance of the\n",
"model that will be directly trained and validated with the raw MNIST\n",
"images (i.e., without quantum pre-processing).\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "xVJR8xXcd0KF",
"outputId": "6a174999-dca8-4c63-e308-8e8fa49e89bc"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/30\n",
"13/13 - 1s - loss: 2.4011 - accuracy: 0.1200 - val_loss: 2.2658 - val_accuracy: 0.0333 - 582ms/epoch - 45ms/step\n",
"Epoch 2/30\n",
"13/13 - 0s - loss: 2.0242 - accuracy: 0.3000 - val_loss: 2.1466 - val_accuracy: 0.1000 - 59ms/epoch - 5ms/step\n",
"Epoch 3/30\n",
"13/13 - 0s - loss: 1.7325 - accuracy: 0.4800 - val_loss: 2.0192 - val_accuracy: 0.3000 - 58ms/epoch - 4ms/step\n",
"Epoch 4/30\n",
"13/13 - 0s - loss: 1.4961 - accuracy: 0.7400 - val_loss: 1.8871 - val_accuracy: 0.4333 - 58ms/epoch - 4ms/step\n",
"Epoch 5/30\n",
"13/13 - 0s - loss: 1.2892 - accuracy: 0.8200 - val_loss: 1.7666 - val_accuracy: 0.5333 - 58ms/epoch - 4ms/step\n",
"Epoch 6/30\n",
"13/13 - 0s - loss: 1.1203 - accuracy: 0.8800 - val_loss: 1.6723 - val_accuracy: 0.5667 - 56ms/epoch - 4ms/step\n",
"Epoch 7/30\n",
"13/13 - 0s - loss: 0.9777 - accuracy: 0.9000 - val_loss: 1.5974 - val_accuracy: 0.5667 - 57ms/epoch - 4ms/step\n",
"Epoch 8/30\n",
"13/13 - 0s - loss: 0.8571 - accuracy: 0.9200 - val_loss: 1.5261 - val_accuracy: 0.6000 - 61ms/epoch - 5ms/step\n",
"Epoch 9/30\n",
"13/13 - 0s - loss: 0.7573 - accuracy: 0.9000 - val_loss: 1.4649 - val_accuracy: 0.6667 - 58ms/epoch - 4ms/step\n",
"Epoch 10/30\n",
"13/13 - 0s - loss: 0.6727 - accuracy: 0.9200 - val_loss: 1.4226 - val_accuracy: 0.6667 - 60ms/epoch - 5ms/step\n",
"Epoch 11/30\n",
"13/13 - 0s - loss: 0.6078 - accuracy: 0.9600 - val_loss: 1.3742 - val_accuracy: 0.7000 - 60ms/epoch - 5ms/step\n",
"Epoch 12/30\n",
"13/13 - 0s - loss: 0.5475 - accuracy: 0.9600 - val_loss: 1.3665 - val_accuracy: 0.6667 - 60ms/epoch - 5ms/step\n",
"Epoch 13/30\n",
"13/13 - 0s - loss: 0.4945 - accuracy: 0.9800 - val_loss: 1.3337 - val_accuracy: 0.7000 - 61ms/epoch - 5ms/step\n",
"Epoch 14/30\n",
"13/13 - 0s - loss: 0.4465 - accuracy: 1.0000 - val_loss: 1.2884 - val_accuracy: 0.7000 - 63ms/epoch - 5ms/step\n",
"Epoch 15/30\n",
"13/13 - 0s - loss: 0.4061 - accuracy: 1.0000 - val_loss: 1.2604 - val_accuracy: 0.7000 - 57ms/epoch - 4ms/step\n",
"Epoch 16/30\n",
"13/13 - 0s - loss: 0.3715 - accuracy: 1.0000 - val_loss: 1.2431 - val_accuracy: 0.7000 - 59ms/epoch - 5ms/step\n",
"Epoch 17/30\n",
"13/13 - 0s - loss: 0.3425 - accuracy: 1.0000 - val_loss: 1.2252 - val_accuracy: 0.7000 - 57ms/epoch - 4ms/step\n",
"Epoch 18/30\n",
"13/13 - 0s - loss: 0.3156 - accuracy: 1.0000 - val_loss: 1.2012 - val_accuracy: 0.7000 - 62ms/epoch - 5ms/step\n",
"Epoch 19/30\n",
"13/13 - 0s - loss: 0.2901 - accuracy: 1.0000 - val_loss: 1.1958 - val_accuracy: 0.7000 - 59ms/epoch - 5ms/step\n",
"Epoch 20/30\n",
"13/13 - 0s - loss: 0.2696 - accuracy: 1.0000 - val_loss: 1.1737 - val_accuracy: 0.7000 - 55ms/epoch - 4ms/step\n",
"Epoch 21/30\n",
"13/13 - 0s - loss: 0.2505 - accuracy: 1.0000 - val_loss: 1.1698 - val_accuracy: 0.7000 - 58ms/epoch - 4ms/step\n",
"Epoch 22/30\n",
"13/13 - 0s - loss: 0.2327 - accuracy: 1.0000 - val_loss: 1.1552 - val_accuracy: 0.7000 - 57ms/epoch - 4ms/step\n",
"Epoch 23/30\n",
"13/13 - 0s - loss: 0.2169 - accuracy: 1.0000 - val_loss: 1.1445 - val_accuracy: 0.7000 - 60ms/epoch - 5ms/step\n",
"Epoch 24/30\n",
"13/13 - 0s - loss: 0.2028 - accuracy: 1.0000 - val_loss: 1.1340 - val_accuracy: 0.7000 - 61ms/epoch - 5ms/step\n",
"Epoch 25/30\n",
"13/13 - 0s - loss: 0.1916 - accuracy: 1.0000 - val_loss: 1.1268 - val_accuracy: 0.7000 - 60ms/epoch - 5ms/step\n",
"Epoch 26/30\n",
"13/13 - 0s - loss: 0.1790 - accuracy: 1.0000 - val_loss: 1.1205 - val_accuracy: 0.7000 - 58ms/epoch - 4ms/step\n",
"Epoch 27/30\n",
"13/13 - 0s - loss: 0.1690 - accuracy: 1.0000 - val_loss: 1.1092 - val_accuracy: 0.7000 - 66ms/epoch - 5ms/step\n",
"Epoch 28/30\n",
"13/13 - 0s - loss: 0.1605 - accuracy: 1.0000 - val_loss: 1.1014 - val_accuracy: 0.7000 - 58ms/epoch - 4ms/step\n",
"Epoch 29/30\n",
"13/13 - 0s - loss: 0.1508 - accuracy: 1.0000 - val_loss: 1.1005 - val_accuracy: 0.7000 - 59ms/epoch - 5ms/step\n",
"Epoch 30/30\n",
"13/13 - 0s - loss: 0.1422 - accuracy: 1.0000 - val_loss: 1.0945 - val_accuracy: 0.7000 - 58ms/epoch - 4ms/step\n"
]
}
],
"source": [
"c_model = MyModel()\n",
"\n",
"c_history = c_model.fit(\n",
" train_images,\n",
" train_labels,\n",
" validation_data=(test_images, test_labels),\n",
" batch_size=4,\n",
" epochs=n_epochs,\n",
" verbose=2,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "oXLGIhPJd0KF"
},
"source": [
"Results\n",
"=======\n",
"\n",
"We can finally plot the test accuracy and the test loss with respect to\n",
"the number of training epochs.\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 963
},
"id": "fwDEhq0Qd0KF",
"outputId": "75b94e58-e20d-4e51-aba3-d4a9fb408386"
},
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"<ipython-input-13-c3ef9ba498fb>:3: MatplotlibDeprecationWarning: The seaborn styles shipped by Matplotlib are deprecated since 3.6, as they no longer correspond to the styles shipped by seaborn. However, they will remain available as 'seaborn-v0_8-<style>'. Alternatively, directly use the seaborn API instead.\n",
" plt.style.use(\"seaborn\")\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 600x900 with 2 Axes>"
],
"image/png": "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yPN7UUlTAdSrV48GDRowefJkUlJS2L9/P7NmzWLAgAHuDu26csMNNzB37lymT59ORkYGsbGxvPfee9xzzz3ZJpCK4/7zn/+wYcMGfvnlF9LT05k/fz4HDx6kd+/e7g7tupGRkcFrr71GTEwMFy9eZPHixaxbt47+/fu7O7QixWKxMGrUKEaOHEm7du2yvda+fXsCAgKYNm0aqamp/PHHH8yfP1+/I3NwtXYsXbo0H374IT/++CMXL14kJiaGmTNnqh3/JTw8nJSUFCZNmkRqaipnzpzh/fffp3nz5gwYMIC4uDjmzZtHeno6a9euZe3atfznP//J0zVMhvr2CiQhIYHRo0ezefNmAgIC6N+/P0OHDlX2n0dbtmxh8uTJ7N27Fy8vL+644w6GDx+Ot7e3u0Mrsho0aABg/ys+64mRrCfkVqxYweTJk4mLi6NWrVq8/PLLtGjRwj3BFlFXa0PDMJg2bRrz58/n5MmTVK1aleeee46OHTu6Ld6iKDo6mvvuuw8vL68rXlu2bBnnz59nzJgx7Nixg3LlyvF///d/3HvvvW6ItGi7Vjvu2rWLDz74gIMHD1K6dGkGDhzI//3f/2mY81/27t3L+PHj+fPPP/Hz86NVq1a88MILVKxYkS1btjB+/Hj2799PlSpVGDFiBF26dMlT/UqaRERERBygFFVERETEAUqaRERERBygpElERETEAUqaRERERBygpElERETEAUqaRERERBygpElERETEAUqaREQc8P3333PzzTe7OwwRcSNPdwcgInItAwcOJDo62r5i97/NmTOH+vXrF3JUIlLSKGkSketCt27dmDJlirvDEJESTMNzIlIsdOrUiSlTpvDiiy/SokULmjRpwssvv0xGRoa9THR0NAMGDKBFixY0a9aMxx9/nMOHD9tfP336NM8++ywRERFERETw5JNPEhcXl+06MTEx3HXXXTRs2JAOHTqwatWqQrtHEXEvJU0iUmx88803tG7dmg0bNvDFF1+watUqPvzwQwAOHTrEQw89RIcOHVi3bh0rVqzg4sWLPProo2RmZgIwdOhQzp49y08//cTPP/+Mh4cHQ4YM4fItOr/44gs++ugjNm/eTPPmzXnppZeyJWYiUnxpeE5ErgvLli3LsVenRYsWfPbZZwA0aNCA3r17A9CwYUN69uzJihUrGD58OHPmzKFKlSo89thjmEwmfH19GTlyJH369GHbtm2ULl2abdu28f3331O2bFkAXn75ZbZu3ZotKfq///s/KlasCECvXr1YtGgRJ06coGrVqq5uAhFxMyVNInJdcGROU61atbJ9X61aNRISEgBbT1Pt2rUxmUz212+88UYADh8+jL+/v/2cLBUrVqRHjx7Z6qxevbr9ax8fHwDS09Pzejsich3S8JyIFBtZw2xZDMOwJ0k5JTZZw24mkwkPDw8ArFbrVa9hNuvXpkhJpf/6RaTYOHjwYLbvDx8+TOXKlQEIDQ3lr7/+yjY/6a+//rK/VrNmTQD2799vf/3kyZPMnDmTc+fOuTZwEbkuKGkSkWLjjz/+4KeffiIjI4M///yTpUuX0q1bNwDuvvtu4uLimD59OhkZGZw4cYJJkyZRp04dGjduTO3atWnRogVTpkzh+PHjnD9/nsmTJ/O///2PgIAAN9+ZiBQFmtMkIteF3CaCAzz++OMA3HHHHaxbt45XXnkFi8VCr169GDx4MAB16tTho48+4sMPP2T69On4+/vTpk0bpkyZYh/C+/DDDxk3bhw9evTAw8ODZs2a8cknn2SbByUiJZfJuLyvWkTkOtWpUyd69OjByJEj3R2KiBRTGp4TERERcYCSJhEREREHaHhORERExAHqaRIRERFxgJImEREREQcoaRIRERFxgJImEREREQcoaRIRERFxgJImEREREQcoaRIRERFxgJImEREREQcoaRIRERFxgJImEREREQcoaRIRERFxgJImEREREQcoaRIRERFxgKe7AyhMJ0+ec0m9ZrOJsmX9OXPmPFar4ZJrlARqx4JTGzqH2rHg1IbOoXYsOEfasHz50o7V5czASiqz2YTJZMJsNrk7lOua2rHg1IbOoXYsOLWhc6gdC86ZbViieppcwTBgwwYz585B6dJmWrSwYtJ7W0REpNhR0lQAS5Z4MnasNwcPZnXY+VKzppUxY9KJjLS4NTYRERFxLg3P5dOSJZ4MGuRzWcJkc/CgmUGDfFiyRPmoiIhIcaKkKR8MA8aO9cZqzXkczmo1MW6cN4bm7ImIiBQbSpryISrK44oepn+LjTWzaZNHIUUkIiIirqakKR8SEhyb6e1oORERESn6lDTlQ0iIY+NujpYTERGRok9JUz60apVJzZrWq5YJDbUSEZFZSBGJiIiIqylpygeTCcaMScdszrknyWw2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PnfuXEwmE3feeScffPBBvq5x5sx5l/U0BQb6UrVqGmB7w23dmka5clpTIy+y2vFqcyDk6tSGzqF2vLYOHWDTJti40UxCgolKlQxatbJiMkFiouvasHHjFnz22WcMGHA/iYnn7ccbNWrKL7/8wgMPPJLtOEBKShqJiefp2jWS119/jc6du7B06UoyM61cuJBhL5+SkgZwxfkAFStW4+mnRzB27DjOnz9P9+6RtGrVhvR0C4mJ57n99h6sXfsrXbt2pVy58owY8RwrV67i3Lk0zp1L59lnX+SDD97j3Xffo0uXrowfP5EhQx7l9ts7s3TpymxxApw/n47VapCcnErdunVp2LARd999N0OGPMk999xLx463cc89/fH392fIkCepWDGE8+fTSUw8T3q6hYwMi72uCxcyyMy02r9PTk4F4OzZVPz9s9/ruXOX2qBmzZu4++57uO+++/H19eGhhx5l2LBnePbZp3nyyWFMmDARgC5dujN16hQiItpd1nZevPXWO0ydOoWPP/6YMmWC6d69B3fccQ+JiedJTc3AYsnMsa2dzZH3oqPJm8kw3L/w/datW3n88ccZOnQoDzzwwBWvnz59mp49e/L5559z88038/777xMXF5fnieAnT+a9d8oRnp62DD4h4TxVqvhhtZoYMyaNJ5/MeUKh5CyrHRMTzzttDkRJozZ0DrVjwZWENhwz5kW8vLx5+eVXXXaN66EdZ878hGPHjjJ69GvuDiVHjrRh+fKlczz+b24fsF+9ejWPPfYYL730Uo4JE8Cbb75J3759ufnyxZCKIG9vqFHDloPu3+/2phUREXGpHTtimDdvDgMG5Pz5Xdy4dXhu27ZtPP/887z33nu0a9cu13ILFy4kMDCQ77//HoC0tDSsVitr1qxh06aitY9QrVpWYmPNeoJORESKtWeeGcb+/X8xdOjT1KpVMibxui1pslgsjBo1ipEjR+aYMD344IPcc8899OjRg7Vrsy+vPmvWLBISEnjxxRcLK1yH1aplZeVKLXApIlLcZW2ZUlK988777g6h0Lktadq+fTv79+9n/PjxjB8/Pttry5Yt48iRI5w9exaAkJCQbK8HBATg6+t7xfGioFYt23jpqVNmEhPhny2SRERE5DrntqSpefPm7N27N9fXV6/OfS+aYcOGuSIkp8hKmsDW29SiRdGcuCciIiJ5ozEkJ7s8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mbMdTcnrTS38lOzoLXdzTDmn56y3UQUREVE9JghAWJgBY8YAoaEGk0e6Ro7U1bi/UcloVWBg2SIjMNBg8S1QSqYYVaqKx3Sqm6K0JE7PERERUTlyTVOa+t5yrC2TG4smIiIiqpCp67LkoGTRVhkWTURERGSVlCzaKsI1TUREREQSsGgiIiIikoBFExEREZEELJqIiIiIJGDRRERERCQBiyYiIiIiCVg0EREREUnAoomIiIhIAhZNRERERBKwaCIiIiKSgEUTERERkQSCKIqi0kEQERERWTuONBERERFJwKKJiIiISAIWTUREREQSsGgiIiIikoBFExEREZEELJqIiIiIJGDRRERERCQBiyYiIiIiCVg0EREREUnAoomIiIhIAhZNZrp+/TpeeOEFBAcHo3///vjoo49gMBiUDsvmtGnTBh07dkSnTp1KP+bPn690WFbv4MGDCAsLw+TJk8s9t337dgwbNgx33303HnroIRw6dEiBCK1fZTncsGED2rZtW+aa7NSpE06fPq1QpNbr+vXrePnllxEcHIywsDBMnz4d2dnZAIBz587hySefRLdu3TBw4EB88803CkdrvSrL499//402bdqUuxZXrFihdMhW5/z583j66afRrVs3hIWF4fXXX8fNmzcBADExMXjkkUdwzz33IDw8HFu2bKn5G4hkllGjRomzZs0Ss7OzxcTERHHgwIHiN998o3RYNqd169bitWvXlA7DpkRFRYkDBw4UH3vsMfH1118v89zZs2fFjh07ivv27RMLCwvFzZs3i126dBGTk5MVitY6VZXD9evXi08++aRCkdmWoUOHitOnTxdzc3PF5ORk8aGHHhJnzJghFhQUiH369BE///xzMS8vTzxz5ozYs2dPcdeuXUqHbJUqy+O1a9fE1q1bKx2e1dNqtWJoaKj4xRdfiFqtVrx165b45JNPii+99JKYmpoqdu3aVVy7dq1YWFgoHj58WOzcubN4+vTpGr0HR5rMEBcXh/Pnz2PKlClwdXVFQEAAxo8fjzVr1igdGtUDDg4OWLduHZo3b17uubVr16Jv377o27cvHBwcMHz4cLRu3dq0v6zqsKpySNJkZ2ejY8eOePPNN+Hi4gIfHx+MGjUKx48fx759+1BcXIwXX3wRzs7O6NChAx599FH+jKxAVXkkaQoKCjB58mRMnDgR9vb28PT0xIAB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\n"
},
"metadata": {}
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"plt.style.use(\"seaborn\")\n",
"fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(6, 9))\n",
"\n",
"ax1.plot(q_history.history[\"val_accuracy\"], \"-ob\", label=\"With quantum layer\")\n",
"ax1.plot(c_history.history[\"val_accuracy\"], \"-og\", label=\"Without quantum layer\")\n",
"ax1.set_ylabel(\"Accuracy\")\n",
"ax1.set_ylim([0, 1])\n",
"ax1.set_xlabel(\"Epoch\")\n",
"ax1.legend()\n",
"\n",
"ax2.plot(q_history.history[\"val_loss\"], \"-ob\", label=\"With quantum layer\")\n",
"ax2.plot(c_history.history[\"val_loss\"], \"-og\", label=\"Without quantum layer\")\n",
"ax2.set_ylabel(\"Loss\")\n",
"ax2.set_ylim(top=2.5)\n",
"ax2.set_xlabel(\"Epoch\")\n",
"ax2.legend()\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "eFIiSMV9d0KF"
},
"source": [
"References\n",
"==========\n",
"\n",
"1. Maxwell Henderson, Samriddhi Shakya, Shashindra Pradhan, Tristan\n",
" Cook. \\\"Quanvolutional Neural Networks: Powering Image Recognition\n",
" with Quantum Circuits.\\\"\n",
" [arXiv:1904.04767](https://arxiv.org/abs/1904.04767), 2019.\n",
"\n",
"About the author\n",
"================\n"
]
},
{
"cell_type": "code",
"source": [
"seconds = time.time()\n",
"print(\"Time in seconds since end of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "DN7xl_1qggGu",
"outputId": "214eb858-da00-432c-8824-4078d01a7e23"
},
"execution_count": 14,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1706116592.815461\n",
"Wed Jan 24 17:16:32 2024\n"
]
}
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.10.13"
},
"colab": {
"provenance": [],
"machine_shape": "hm"
}
},
"nbformat": 4,
"nbformat_minor": 0
}