800 lines (800 with data), 159.6 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"id": "mGj5xRSgO5kl"
},
"outputs": [],
"source": [
"# This cell is added by sphinx-gallery\n",
"# It can be customized to whatever you like\n",
"%matplotlib inline\n",
"# !pip install pennylane\n",
"# from google.colab import drive\n",
"# drive.mount('/content/drive')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Eq3elbTnO5kl"
},
"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/_images/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": 23,
"metadata": {
"id": "x_3KzhwMO5km"
},
"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": "y9Q8QO_FO5km"
},
"source": [
"Setting of the main hyper-parameters of the model\n",
"=================================================\n"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"id": "IBj9TAkEO5kn"
},
"outputs": [],
"source": [
"n_epochs = 30 # Number of optimization epochs\n",
"n_layers = 1 # Number of random layers\n",
"n_train = 120 # 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": "1jAWH0pwO5kn"
},
"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": 25,
"metadata": {
"id": "dVU93TZQO5kn"
},
"outputs": [],
"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": "MvPmuwPfO5kn"
},
"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": 26,
"metadata": {
"id": "QVNpFv7iO5kn"
},
"outputs": [],
"source": [
"dev = qml.device(\"default.qubit\", wires=8)\n",
"# Random circuit parameters\n",
"rand_params = np.random.uniform(high=2 * np.pi, size=(n_layers, 4))\n",
"\n",
"@qml.qnode(dev, interface=\"autograd\")\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",
" # Random quantum circuit\n",
" RandomLayers(rand_params, wires=list(range(8)))\n",
"\n",
" # Measurement producing 4 classical output values\n",
" return [qml.expval(qml.PauliZ(j)) for j in range(8)]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7vMpFoHTO5kn"
},
"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": 27,
"metadata": {
"id": "pxtEvbF5O5kn"
},
"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": "xkZOpXcmO5kn"
},
"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": 28,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "uCP_wpRgO5ko",
"outputId": "5329e376-4f19-4724-9f45-8a92a9ad30bb"
},
"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": "BlpTVuiXO5ko"
},
"source": [
"Let us visualize the effect of the quantum convolution layer on a batch\n",
"of samples:\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1006
},
"id": "m6tO_bbUO5ko",
"outputId": "f568c06f-df33-473b-bcb8-bf23f8ce3476"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1000x1000 with 20 Axes>"
],
"image/png": "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o0ePeh279dZbDa9dUVFhONftdhvOlaTGjRubygec4tChQ16369Spo6ZNm+qHH35QWVmZT37Lli0Nr92pUyfDuV9++aXhXEk6fPiw4dyLLrrI63ZKSoqys7PVs2dP5eTkeB3jPzFxPlFRUYZzi4uLA1iJs/381W3n61eJngWMqFevnqn8kpISw7lO7UHDZ0jT09OVm5urp59+2iv+q1/9Sn/961/18ssvq7S01PICAQAAAADOVMdoYnx8vN59912//1N++eWX67333tO6dessLQ4AAAAA4FyGz5BKUkREhOLj4/0ea9CggQYPHmxJUQAAAAAA5zM1kAIAAAAAYBUGUgAAAACALRhIAQAAAAC2YCAFAAAAANjCsoE0OztbGzdutGo5AAAAAIDDGb7syy+ZMWOGDhw4oN27d1u1JAAAAADAwSwbSF9++WWVlZVZtRwAAAAAwOEsG0ibN29u1VIh7Ve/+pUluf6uCXvrrbcaXtvlchnObdy4seFcwGlOnDhhOLdly5Zet1NSUpSdna2BAwcqJyfHJ79p06aG196zZ4/h3NriN7/5jeHcNWvWBLAS1EYnT560u4SgdebMGbtLABylvLzccG5JSYmptXl1aTUG0oqKCq1bt05ffvmlSktLfY5PnTrVksIAAAAAAM5meiB9+OGHlZmZqSZNmigyMtLrmMvlsnQg7dy5s+rWret1tm7EiBGaNWuWZfcBAAAAALCH6YH0nXfe0YIFC5SWlhaIenysXr1arVq1uiD3BQAAAAC4cExf9iU8PFxXXnllIGoBAAAAAIQQ02dIBwwYoM2bN5vafKcmMjIylJOTo6KiIl133XWaPn26oqKiLsh9O01KSordJQAAAABAJUMD6YoVKyo/Tk5O1iOPPKL+/furdevWCgv7z0lWl8ulESNGWFZcjx49lJqaqieeeELffPON7rnnHj388MN68sknLbuPUJKdnW13CQAAAABQydBAOn36dJ9Yfn6+T8zqgTQzM7Py4/bt2ys9PV133nmnHnvsMUVERFh2P6GiZ8+ehnMZXgEAAAAEmqGBNC8vL9B1GNKqVSuVl5fryJEjPtfzwy/zd51DAAAAALCL6U2NJOmLL77QwYMHK29v27ZN27dvt6woSdq1a5fmzJnjFdu3b58iIiLUrFkzS+8LAAAAAHDhmR5I165dq9GjR+vLL7+sjOXn5+um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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": "Xbb_JQc5O5ko"
},
"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": "-cWaCFFkO5ko"
},
"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": 30,
"metadata": {
"id": "fB9gWCXdO5ko"
},
"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": "8UIfnIfKO5ko"
},
"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": 31,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "ZyRw2FoPO5ko",
"outputId": "7f38c883-d863-4ff2-efb4-2b42675d0760"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/30\n",
"15/15 - 1s - loss: 2.6236 - accuracy: 0.1583 - val_loss: 2.1866 - val_accuracy: 0.2667 - 853ms/epoch - 57ms/step\n",
"Epoch 2/30\n",
"15/15 - 0s - loss: 1.6742 - accuracy: 0.3917 - val_loss: 1.6979 - val_accuracy: 0.5000 - 73ms/epoch - 5ms/step\n",
"Epoch 3/30\n",
"15/15 - 0s - loss: 1.1730 - accuracy: 0.6917 - val_loss: 1.4077 - val_accuracy: 0.5667 - 56ms/epoch - 4ms/step\n",
"Epoch 4/30\n",
"15/15 - 0s - loss: 0.7964 - accuracy: 0.8417 - val_loss: 1.2976 - val_accuracy: 0.5667 - 56ms/epoch - 4ms/step\n",
"Epoch 5/30\n",
"15/15 - 0s - loss: 0.6276 - accuracy: 0.8917 - val_loss: 1.1165 - val_accuracy: 0.6333 - 79ms/epoch - 5ms/step\n",
"Epoch 6/30\n",
"15/15 - 0s - loss: 0.5211 - accuracy: 0.8917 - val_loss: 1.0629 - val_accuracy: 0.6333 - 55ms/epoch - 4ms/step\n",
"Epoch 7/30\n",
"15/15 - 0s - loss: 0.4426 - accuracy: 0.9417 - val_loss: 1.0221 - val_accuracy: 0.7000 - 58ms/epoch - 4ms/step\n",
"Epoch 8/30\n",
"15/15 - 0s - loss: 0.3471 - accuracy: 0.9583 - val_loss: 0.9560 - val_accuracy: 0.7000 - 75ms/epoch - 5ms/step\n",
"Epoch 9/30\n",
"15/15 - 0s - loss: 0.2949 - accuracy: 0.9917 - val_loss: 0.8983 - val_accuracy: 0.7667 - 68ms/epoch - 5ms/step\n",
"Epoch 10/30\n",
"15/15 - 0s - loss: 0.2547 - accuracy: 1.0000 - val_loss: 0.8884 - val_accuracy: 0.8000 - 69ms/epoch - 5ms/step\n",
"Epoch 11/30\n",
"15/15 - 0s - loss: 0.2271 - accuracy: 1.0000 - val_loss: 0.8945 - val_accuracy: 0.7667 - 61ms/epoch - 4ms/step\n",
"Epoch 12/30\n",
"15/15 - 0s - loss: 0.2029 - accuracy: 1.0000 - val_loss: 0.8560 - val_accuracy: 0.8333 - 61ms/epoch - 4ms/step\n",
"Epoch 13/30\n",
"15/15 - 0s - loss: 0.1731 - accuracy: 1.0000 - val_loss: 0.8196 - val_accuracy: 0.8333 - 71ms/epoch - 5ms/step\n",
"Epoch 14/30\n",
"15/15 - 0s - loss: 0.1540 - accuracy: 1.0000 - val_loss: 0.8206 - val_accuracy: 0.8000 - 62ms/epoch - 4ms/step\n",
"Epoch 15/30\n",
"15/15 - 0s - loss: 0.1345 - accuracy: 1.0000 - val_loss: 0.8109 - val_accuracy: 0.8000 - 82ms/epoch - 5ms/step\n",
"Epoch 16/30\n",
"15/15 - 0s - loss: 0.1240 - accuracy: 1.0000 - val_loss: 0.7777 - val_accuracy: 0.8333 - 74ms/epoch - 5ms/step\n",
"Epoch 17/30\n",
"15/15 - 0s - loss: 0.1116 - accuracy: 1.0000 - val_loss: 0.7956 - val_accuracy: 0.8333 - 78ms/epoch - 5ms/step\n",
"Epoch 18/30\n",
"15/15 - 0s - loss: 0.1041 - accuracy: 1.0000 - val_loss: 0.7997 - val_accuracy: 0.8000 - 70ms/epoch - 5ms/step\n",
"Epoch 19/30\n",
"15/15 - 0s - loss: 0.0937 - accuracy: 1.0000 - val_loss: 0.7573 - val_accuracy: 0.8333 - 59ms/epoch - 4ms/step\n",
"Epoch 20/30\n",
"15/15 - 0s - loss: 0.0862 - accuracy: 1.0000 - val_loss: 0.7524 - val_accuracy: 0.8333 - 61ms/epoch - 4ms/step\n",
"Epoch 21/30\n",
"15/15 - 0s - loss: 0.0809 - accuracy: 1.0000 - val_loss: 0.7730 - val_accuracy: 0.8333 - 71ms/epoch - 5ms/step\n",
"Epoch 22/30\n",
"15/15 - 0s - loss: 0.0759 - accuracy: 1.0000 - val_loss: 0.7553 - val_accuracy: 0.8333 - 69ms/epoch - 5ms/step\n",
"Epoch 23/30\n",
"15/15 - 0s - loss: 0.0693 - accuracy: 1.0000 - val_loss: 0.7552 - val_accuracy: 0.8333 - 55ms/epoch - 4ms/step\n",
"Epoch 24/30\n",
"15/15 - 0s - loss: 0.0642 - accuracy: 1.0000 - val_loss: 0.7615 - val_accuracy: 0.8333 - 74ms/epoch - 5ms/step\n",
"Epoch 25/30\n",
"15/15 - 0s - loss: 0.0606 - accuracy: 1.0000 - val_loss: 0.7459 - val_accuracy: 0.8333 - 56ms/epoch - 4ms/step\n",
"Epoch 26/30\n",
"15/15 - 0s - loss: 0.0559 - accuracy: 1.0000 - val_loss: 0.7457 - val_accuracy: 0.8333 - 74ms/epoch - 5ms/step\n",
"Epoch 27/30\n",
"15/15 - 0s - loss: 0.0547 - accuracy: 1.0000 - val_loss: 0.7380 - val_accuracy: 0.8333 - 77ms/epoch - 5ms/step\n",
"Epoch 28/30\n",
"15/15 - 0s - loss: 0.0495 - accuracy: 1.0000 - val_loss: 0.7323 - val_accuracy: 0.8333 - 61ms/epoch - 4ms/step\n",
"Epoch 29/30\n",
"15/15 - 0s - loss: 0.0479 - accuracy: 1.0000 - val_loss: 0.7385 - val_accuracy: 0.8333 - 67ms/epoch - 4ms/step\n",
"Epoch 30/30\n",
"15/15 - 0s - loss: 0.0457 - accuracy: 1.0000 - val_loss: 0.7292 - val_accuracy: 0.8333 - 70ms/epoch - 5ms/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=8,\n",
" epochs=n_epochs,\n",
" verbose=2,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "eNmhATJPO5ko"
},
"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": 32,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "C-xedbZAO5ko",
"outputId": "6cba5334-f29c-4530-a059-ae6d37011c86"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/30\n",
"15/15 - 1s - loss: 2.1983 - accuracy: 0.2167 - val_loss: 1.9397 - val_accuracy: 0.3667 - 634ms/epoch - 42ms/step\n",
"Epoch 2/30\n",
"15/15 - 0s - loss: 1.7337 - accuracy: 0.5417 - val_loss: 1.7065 - val_accuracy: 0.5667 - 64ms/epoch - 4ms/step\n",
"Epoch 3/30\n",
"15/15 - 0s - loss: 1.4242 - accuracy: 0.6917 - val_loss: 1.5228 - val_accuracy: 0.7000 - 58ms/epoch - 4ms/step\n",
"Epoch 4/30\n",
"15/15 - 0s - loss: 1.1732 - accuracy: 0.8250 - val_loss: 1.3929 - val_accuracy: 0.7667 - 72ms/epoch - 5ms/step\n",
"Epoch 5/30\n",
"15/15 - 0s - loss: 0.9915 - accuracy: 0.8833 - val_loss: 1.2965 - val_accuracy: 0.7333 - 76ms/epoch - 5ms/step\n",
"Epoch 6/30\n",
"15/15 - 0s - loss: 0.8373 - accuracy: 0.9167 - val_loss: 1.2086 - val_accuracy: 0.7667 - 61ms/epoch - 4ms/step\n",
"Epoch 7/30\n",
"15/15 - 0s - loss: 0.7227 - accuracy: 0.9417 - val_loss: 1.1216 - val_accuracy: 0.7667 - 55ms/epoch - 4ms/step\n",
"Epoch 8/30\n",
"15/15 - 0s - loss: 0.6292 - accuracy: 0.9583 - val_loss: 1.0741 - val_accuracy: 0.8000 - 72ms/epoch - 5ms/step\n",
"Epoch 9/30\n",
"15/15 - 0s - loss: 0.5542 - accuracy: 0.9667 - val_loss: 1.0301 - val_accuracy: 0.8333 - 59ms/epoch - 4ms/step\n",
"Epoch 10/30\n",
"15/15 - 0s - loss: 0.4949 - accuracy: 0.9667 - val_loss: 0.9937 - val_accuracy: 0.8000 - 70ms/epoch - 5ms/step\n",
"Epoch 11/30\n",
"15/15 - 0s - loss: 0.4443 - accuracy: 0.9667 - val_loss: 0.9566 - val_accuracy: 0.8000 - 68ms/epoch - 5ms/step\n",
"Epoch 12/30\n",
"15/15 - 0s - loss: 0.4019 - accuracy: 0.9667 - val_loss: 0.9501 - val_accuracy: 0.8333 - 71ms/epoch - 5ms/step\n",
"Epoch 13/30\n",
"15/15 - 0s - loss: 0.3624 - accuracy: 0.9833 - val_loss: 0.9298 - val_accuracy: 0.8000 - 71ms/epoch - 5ms/step\n",
"Epoch 14/30\n",
"15/15 - 0s - loss: 0.3304 - accuracy: 0.9833 - val_loss: 0.9096 - val_accuracy: 0.8333 - 66ms/epoch - 4ms/step\n",
"Epoch 15/30\n",
"15/15 - 0s - loss: 0.3027 - accuracy: 0.9917 - val_loss: 0.8970 - val_accuracy: 0.8000 - 70ms/epoch - 5ms/step\n",
"Epoch 16/30\n",
"15/15 - 0s - loss: 0.2782 - accuracy: 0.9917 - val_loss: 0.8848 - val_accuracy: 0.8000 - 71ms/epoch - 5ms/step\n",
"Epoch 17/30\n",
"15/15 - 0s - loss: 0.2566 - accuracy: 1.0000 - val_loss: 0.8715 - val_accuracy: 0.8333 - 57ms/epoch - 4ms/step\n",
"Epoch 18/30\n",
"15/15 - 0s - loss: 0.2392 - accuracy: 1.0000 - val_loss: 0.8748 - val_accuracy: 0.8000 - 74ms/epoch - 5ms/step\n",
"Epoch 19/30\n",
"15/15 - 0s - loss: 0.2204 - accuracy: 1.0000 - val_loss: 0.8589 - val_accuracy: 0.8000 - 72ms/epoch - 5ms/step\n",
"Epoch 20/30\n",
"15/15 - 0s - loss: 0.2050 - accuracy: 1.0000 - val_loss: 0.8530 - val_accuracy: 0.8000 - 74ms/epoch - 5ms/step\n",
"Epoch 21/30\n",
"15/15 - 0s - loss: 0.1915 - accuracy: 1.0000 - val_loss: 0.8457 - val_accuracy: 0.8000 - 69ms/epoch - 5ms/step\n",
"Epoch 22/30\n",
"15/15 - 0s - loss: 0.1793 - accuracy: 1.0000 - val_loss: 0.8443 - val_accuracy: 0.8333 - 67ms/epoch - 4ms/step\n",
"Epoch 23/30\n",
"15/15 - 0s - loss: 0.1683 - accuracy: 1.0000 - val_loss: 0.8452 - val_accuracy: 0.8333 - 57ms/epoch - 4ms/step\n",
"Epoch 24/30\n",
"15/15 - 0s - loss: 0.1571 - accuracy: 1.0000 - val_loss: 0.8391 - val_accuracy: 0.8000 - 58ms/epoch - 4ms/step\n",
"Epoch 25/30\n",
"15/15 - 0s - loss: 0.1483 - accuracy: 1.0000 - val_loss: 0.8318 - val_accuracy: 0.8000 - 63ms/epoch - 4ms/step\n",
"Epoch 26/30\n",
"15/15 - 0s - loss: 0.1392 - accuracy: 1.0000 - val_loss: 0.8327 - val_accuracy: 0.8000 - 62ms/epoch - 4ms/step\n",
"Epoch 27/30\n",
"15/15 - 0s - loss: 0.1325 - accuracy: 1.0000 - val_loss: 0.8269 - val_accuracy: 0.8000 - 59ms/epoch - 4ms/step\n",
"Epoch 28/30\n",
"15/15 - 0s - loss: 0.1244 - accuracy: 1.0000 - val_loss: 0.8266 - val_accuracy: 0.8000 - 60ms/epoch - 4ms/step\n",
"Epoch 29/30\n",
"15/15 - 0s - loss: 0.1182 - accuracy: 1.0000 - val_loss: 0.8286 - val_accuracy: 0.8000 - 60ms/epoch - 4ms/step\n",
"Epoch 30/30\n",
"15/15 - 0s - loss: 0.1124 - accuracy: 1.0000 - val_loss: 0.8252 - val_accuracy: 0.8000 - 79ms/epoch - 5ms/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=8,\n",
" epochs=n_epochs,\n",
" verbose=2,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2AnRJUntO5ko"
},
"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": 33,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 963
},
"id": "6Bzln0qoO5ko",
"outputId": "cbe72a84-48e7-4d74-e1c8-b7a3756cbc46"
},
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"<ipython-input-33-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": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAN5CAYAAAAVZg9XAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADlT0lEQVR4nOzde3zO9f/H8cd1bbbZZjM5zDETklPOm0OIMEZU9KVSSb+odJBDkUOig5CSKJJOkghhEnIshpEacj7PnDczdr4+vz+Wi7XNrrmu7drmef/e3L7zud6f9/t9vVxtr73f78/7bTIMw0BEREREbsrs7A6IiIiIFARKmkRERERsoKRJRERExAZKmkRERERsoKRJRERExAZKmkRERERsoKRJRERExAZKmkRERERsoKRJRERExAZKmkRERERskO+Tpo0bN9KsWTMGDhx403IWi4XJkyfTtm1bGjduTN++fTlx4kQe9VJEREQKu3ydNM2cOZNx48Zx5513Zlt2zpw5LF26lBkzZrB27VoqV67Miy++iI7WExEREUfI10mTu7s7CxYssClpmjdvHk8//TR33XUX3t7eDBw4kEOHDvHXX3/lQU9FRESksMvXSdOTTz5JsWLFsi2XkJDAwYMHqVmzpvWat7c3d955JxEREbnZRREREblN5OukyVaXLl3CMAx8fX3TXff19SU6OtrmejSVJyIiIllxdXYHHMnepOfixSuYzSYH9eY6FxczPj5FiY2NJzXV4vD6CzvFzz6Kn/0UQ/sofvZR/OyXXQz9/LxsqqdQJE3FixfHbDYTExOT7npMTAx33HGHzfVYLAYWS+6NNqWmWkhJ0Qf+Vil+9lH87KcY2kfxs4/iZz97Y1gopufc3d2pVq0au3fvtl6LjY3l+PHj1K1b14k9ExERkcKiwCZNZ86cITg42LoXU69evfjmm284dOgQcXFxTJw4kXvuuYc6deo4uaciIiJSGOTr6blrCU9KSgoAq1evBiAiIoLk5GSOHDlCUlISAD179uTcuXP07t2bK1euEBgYyNSpU53TcRERESl0TIYeGbM6d+5yrtTr6mrGz8+L6Ogrmo++BYqffRQ/+ymG9lH87KP42S+7GJYqlf32RlCAp+dERERE8pKSJhEREREbKGkSERERsYGSJhEREREbKGkSERERsYGSJhEREREbKGkSEZFbYhiwebML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BowZ447FYsr0dYvFxNtvu2Nopk5ERKTAUNKUC8LCXDKMMP3XkSNmtmxxyaMeiYiIiL2UNOWC06czH2G61XIiIiLifEqacoG/v23zbraWExEREedT0pQLgoJSqVz55vsxBQRYCAzU7uAiIiIFhZKmXGAywejRiZjNmY8kmc0Go0YlYtLsnIiISIGhpCmXhISkMGtWAgEB6UecAgIszJqVQEhIipN6JiIiIrdCmwXlopCQFDp1SmHbNlfi4opSrFg8jRqlaIRJRESkAFLSlMtMJmjWzIKfH0RHW0jRAJOIiEiBpOk5ERERERsoaRIRERGxgZImERERERsoaRIRERGxgZImERERERsoaRIRERGxgZImERERERsoaRIRERGxgZImERERERsoaRIRERGxgZImERERERsoaRIRERGxgZImERERERsoaRIRERGxgZImERERERvk66QpMjKS5557jsDAQO6//34mTJiAxWLJtOzcuXPp0KED9evXp2vXrqxevTqPeysiIiKFWb5Oml566SXKlCnD6tWrmT17NqtXr+brr7/OUO7XX39l0qRJvPvuu2zdupUnnniCV199lRMnTjih1yIiIlIYuTq7A1mJiIhg7969zJ49m2LFilGsWDGefvppvv76a/r06ZOubEJCAq+99hoNGzYEoEePHkycOJGdO3dSsWJFm9s0m02YzSaHvg8AFxdzuv+XnFH87KP42U8xtI/iZx/Fz36OimG+TZp2795N+fLl8fX1tV6rVasWR44cIS4uDm9vb+v1rl27prs3NjaWK1euUKZMmRy1WaKEFyaT45Oma3x8iuZa3bcDxc8+ip/9FEP7KH72UfzsZ28M823SFBMTg4+PT7pr1xKo6OjodEnTjQzDYMSIEdx77700adIkR21evHgl10aafHyKEhsbT2pq5muyJGuKn30UP/sphvZR/Oyj+Nkvuxj6+XnZVE++TZogLQHKieTkZN544w0OHjzIN998k+P2LBYDiyVnbeZEaqqFlBR94G+V4mcfxc9+iqF9FD/7KH72szeG+TZpKlGiBDExMemuxcTEYDKZKFGiRIbyCQkJvPDCC8THxzNnzhz8/PzyqKciIiJyO8i3q8pq165NVFQUFy9etF6LiIigatWqeHmlH0YzDIOBAwfi6urKV199pYRJREREHC7fJk01a9akTp06TJo0ibi4OA4d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nnnmGQoKCnwRql+qW7cuN998MwEBAQAkJyezZMkSrr322jJ//1X2/aeiyUsyMjKIjIwssa2ogDp58qQvQqqRLrnkEhISEvjkk094//33+e6775g+fbqvw6qRMjIyShTx4HpP6v3onujoaGJjY3nggQfYsGEDf//733n00UdJTEz0dWh+KykpiXfffZd77rmn1N+J9erVIyMjQ2s9y3Bu/oKCgrj00ku55ppr+OKLL5g3bx4fffQRL730kq/D9DuHDh2ic+fODBkyhC5duvDXv/61zPdfZX//qWjyItM0fR1Cjff+++9z8803ExQUROvWrbn//vtZvnw5+fn5vg6tRtJ7suquvPJK5s+fT8eOHQkKCmLo0KFcc801fPjhh74OzS998803jB8/nsmTJ5OQkFDmfoZhVGNUNcdv89eoUSMWLlzINddcQ2BgIF27dmXChAl6/5UiJiaGpKQkVq1axf79+3nwwQc99twqmrwkOjqajIyMEtsyMjIwDIPo6GjfBFULNG/eHIfDwYkTJ3wdSo0TFRVV6ntS78eqi4mJ4ejRo74Ow+98/vnn/OlPf+LRRx9lzJgxgOt34m//V5+RkUG9evWw2XQqOldp+StNTEwMx48f13+GSmEYBrGxsUyaNInly5cTEBBw3u+/kydPVvr3n96pXtK5c2dSU1NJT08v3paUlMTFF19MeHi4DyOrOX788Uf++c9/lti2b98+goKCSszxi3s6d+583vx9UlIS3bp181FENct//vMfVq5cWWLbvn37aNGihY8i8k/btm3joYce4rnnnuO6664r3t65c2d2795NYWFh8Ta9/85XVv4SExN5+eWXS+ybnJxMTEyMRut+lZiYyKBBg0pM9xYV5F27dj3v99+OHTsq/f5T0eQlHTt2pEuXLjzzzDNkZWWxb98+3njjDUaNGuXr0GqM+vXr8/777zNv3jzy8/NJSUnhueee49Zbby2xmFTcc8stt7Bx40a+/PJL8vLyWLRoEfv372fEiBG+Dq1GyM/PZ+bMmSQlJVFQUMDy5ctZt24dt912m69D8xuFhYU89thj3H///fTp06fEY/379yciIoKXX36ZnJwctm/fzqJFi/Q78Rzl5a9OnTrMnTuXpUuXUlBQQFJSEgsWLFD+ztG5c2eysrJ4+umnycnJIT09nRdeeIHu3bszatQoDh06xAcffEBeXh5r165l7dq13HLLLZV6DcPUuJ7XHDlyhKlTp7JlyxYiIiK47bbbuPfee/W/gkrYunUrzzzzDLt37yYoKIjrr7+eSZMmERwc7OvQ/FKXLl0Aiv83X3QVSdEVcp988gnPPPMMhw4d4uKLL2bKlCn06NHDN8H6ofLyZ5omL7/8MosWLeLYsWM0b96cBx98kKuuuspn8fqbr7/+mt///vcEBQWd99iqVavIzs5m2rRp7NixgwYNGnDXXXdx++23+yBS/1RR/n788UdefPFF9u/fT506dRg9ejR33XWXpjfPsXv3bmbNmsX3339PWFgYvXr14uGHH6Zx48Zs3bqVWbNmsW/fPmJiYpg8eTIDBw6s1POraBIRERFxg8pTERERETeoaBIRERFxg4omERERETeoaBIRERFxg4omERERETeoaBIRERFxg4omERERETeoaBIRERFxg4omEZEq+PDDD2nXrp2vwxCRahTg6wBERCpr9OjRfP3118W3OfmthQsX0qlTp2qOSkRqOxVNIlIjDR48mDlz5vg6DBG5gGh6TkRqpQEDBjBnzhweeeQRevTowaWXXsqUKVPIz88v3ufrr79m1KhR9OjRg8svv5x77rmHAwcOFD9+4sQJHnjgAeLj44mPj2fixIkcOnSoxOskJSVx44030rVrV6688krWrFlTbT+jiFQvFU0iUmv93//9H71792bjxo289dZbrFmzhrlz5wLw888/M3bsWK688krWrVvHJ598QkFBAX/84x9xOBwA3HvvvZw6dYqPP/6Yzz77DLvdzt1338259zl/6623eOmll9iyZQvdu3fn0UcfLVGYiUjtoek5EamRVq1aVeqoTo8ePXj99dcB6NKlCyNGjACga9euDBs2jE8++YRJkyaxcOFCYmJi+NOf/oRhGISGhnL//fczcuRItm3bRp06ddi2bRsffvgh0dHRAEyZMoVvvvmmRFF011130bhxYwCGDx/OsmXLOHr0KM2bN/d2CkSkmqloEpEayZ01TRdffHGJv7do0YIjR44ArpGmNm3aYBhG8eOtW7cG4MCBA4SHhxcfU6Rx48YMGTKkxHNedNFFxX8OCQkBIC8vr7I/jojUAJqeE5Faq2iarYhpmsVFUmmFTdG0m2EY2O12AJxOZ7mvYbPp16jIhUKfdhGptfbv31/i7wcOHKBZs2YAxMXFsWfPnhLrk/bs2VP8WGxsLAD79u0rfvzYsWMsWLCA06dPezdwEfFLKppEpNbavn07H3/8Mfn5+Xz//fesXLmSwYMHA3DTTTdx6NAh5s2bR35+PkePHuXpp5+mffv2XHLJJbRp04YePXowZ84c0tLSyM7O5plnnmHx4sVERET4+CcTEV/QmiYRqZHKWggOcM899wBw/fXXs27dOh5//HEKCwsZPnw4EyZMAKB9+/a89NJLzJ07l3nz5hEeHk5CQgJz5swpnsKbO3cuM2bMYMiQIdjtdi6//HJeffXVEuugROTCYZjnjk2LiNQSAwYMYMiQIdx///2+DkVEaglNz4mIiIi4QUWTiIiIiBs0PSciIiLiBo00iYiIiLhBRZOIiIiIG1Q0iYiIiLhBRZOIiIiIG1Q0iYiIiLhBRZOIiIiIG1Q0iYiIiLhBRZOIiIiIG/4/j9NLK+mq2FYAAAAASUVORK5CYII=\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": "eMlB7sMWO5ko"
},
"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"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.9.17"
},
"colab": {
"provenance": []
}
},
"nbformat": 4,
"nbformat_minor": 0
}