{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "SinglePhotonFigures.ipynb", "provenance": [], "collapsed_sections": [] }, "kernelspec": { "name": "python2", "display_name": "Python 2" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "2E3uzJVKjxsB", "colab_type": "text" }, "source": [ "#Single-photon Classification\n", "\n", "##Paper figures (see SinglePhotonToyExample.ipynb for the content of Fig. 1) " ] }, { "cell_type": "code", "metadata": { "id": "dKQbNNzeOmOL", "colab_type": "code", "colab": {} }, "source": [ "from colorsys import hls_to_rgb\n", "from google.colab import files\n", "import math\n", "from matplotlib import pyplot as plt\n", "from matplotlib.font_manager import FontProperties\n", "from matplotlib import cm\n", "import numpy as np\n", "from scipy.linalg import expm\n", "import tensorflow.compat.v2 as tf\n", "import tensorflow.compat.v2.keras as keras" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Tr3Jq7P29vQR", "colab_type": "code", "colab": {} }, "source": [ "np.set_printoptions(linewidth=200)\n", "rng = np.random.RandomState(seed=2)\n", "\n", "# The computationally expensive part is exponentiating the Lie algebra element\n", "# to obtain the SU(790) \"de-mixing\" basis transformation.\n", "# This is then applied to all items in the batch uniformly. Since the rest\n", "# of the computation is easy, this suggests we should go with large batch sizes.\n", "BATCH_SIZE = 8192\n", "NUM_CLASSES = 10\n", "XDIM = 28\n", "XYDIM = 784\n", "XYDIM_EXT = 790\n", "\n", "DATASET_MNIST = tf.keras.datasets.mnist\n", "DATASET_FASHION = tf.keras.datasets.fashion_mnist" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "65v25La5-hU7", "colab_type": "code", "colab": {} }, "source": [ "def UploadFile(user_message):\n", " print(user_message)\n", " uploaded_files = None\n", " while True:\n", " uploaded_files = files.upload()\n", " if (len(uploaded_files) > 2 or\n", " not all(x.endswith('.npy') for x in uploaded_files.keys())):\n", " print('Please only upload exactly one .npy file')\n", " continue\n", " try:\n", " uploaded_h0 = np.load(list(uploaded_files)[0]).astype(np.float64)\n", " if uploaded_h0.shape != (XYDIM_EXT, XYDIM_EXT):\n", " print('Matrix size mismatch.')\n", " continue\n", " break\n", " except Exception as e:\n", " print('Parse error:', e)\n", " return uploaded_h0" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Lq7RSKZj_ovi", "colab_type": "code", "outputId": "fc6b8bbf-2d4e-4dd9-d702-d6f56c7022b9", "colab": { "resources": { "http://localhost:8080/nbextensions/google.colab/files.js": { "data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7Ci8vIE1heCBhbW91bnQgb2YgdGltZSB0byBibG9jayB3YWl0aW5nIGZvciB0aGUgdXNlci4KY29uc3QgRklMRV9DSEFOR0VfVElNRU9VVF9NUyA9IDMwICogMTAwMDsKCmZ1bmN0aW9uIF91cGxvYWRGaWxlcyhpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IHN0ZXBzID0gdXBsb2FkRmlsZXNTdGVwKGlucHV0SWQsIG91dHB1dElkKTsKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIC8vIENhY2hlIHN0ZXBzIG9uIHRoZSBvdXRwdXRFbGVtZW50IHRvIG1ha2UgaXQgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBjYWxsCiAgLy8gdG8gdXBsb2FkRmlsZXNDb250aW51ZSBmcm9tIFB5dGhvbi4KICBvdXRwdXRFbGVtZW50LnN0ZXBzID0gc3RlcHM7CgogIHJldHVybiBfdXBsb2FkRmlsZXNDb250aW51ZShvdXRwdXRJZCk7Cn0KCi8vIFRoaXMgaXMgcm91Z2hseSBhbiBhc3luYyBnZW5lcmF0b3IgKG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGJyb3dzZXIgeWV0KSwKLy8gd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlIGFzeW5jaHJvbm91cyBzdGVwcyBhbmQgdGhlIFB5dGhvbiBzaWRlIGlzIGdvaW5nCi8vIHRvIHBvbGwgZm9yIGNvbXBsZXRpb24gb2YgZWFjaCBzdGVwLgovLyBUaGlzIHVzZXMgYSBQcm9taXNlIHRvIGJsb2NrIHRoZSBweXRob24gc2lkZSBvbiBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcCwKLy8gdGhlbiBwYXNzZXMgdGhlIHJlc3VsdCBvZiB0aGUgcHJldmlvdXMgc3RlcCBhcyB0aGUgaW5wdXQgdG8gdGhlIG5leHQgc3RlcC4KZnVuY3Rpb24gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpIHsKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIGNvbnN0IHN0ZXBzID0gb3V0cHV0RWxlbWVudC5zdGVwczsKCiAgY29uc3QgbmV4dCA9IHN0ZXBzLm5leHQob3V0cHV0RWxlbWVudC5sYXN0UHJvbWlzZVZhbHVlKTsKICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5leHQudmFsdWUucHJvbWlzZSkudGhlbigodmFsdWUpID0+IHsKICAgIC8vIENhY2hlIHRoZSBsYXN0IHByb21pc2UgdmFsdWUgdG8gbWFrZSBpdCBhdmFpbGFibGUgdG8gdGhlIG5leHQKICAgIC8vIHN0ZXAgb2YgdGhlIGdlbmVyYXRvci4KICAgIG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSA9IHZhbHVlOwogICAgcmV0dXJuIG5leHQudmFsdWUucmVzcG9uc2U7CiAgfSk7Cn0KCi8qKgogKiBHZW5lcmF0b3IgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGJldHdlZW4gZWFjaCBhc3luYyBzdGVwIG9mIHRoZSB1cGxvYWQKICogcHJvY2Vzcy4KICogQHBhcmFtIHtzdHJpbmd9IGlucHV0SWQgRWxlbWVudCBJRCBvZiB0aGUgaW5wdXQgZmlsZSBwaWNrZXIgZWxlbWVudC4KICogQHBhcmFtIHtzdHJpbmd9IG91dHB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIG91dHB1dCBkaXNwbGF5LgogKiBAcmV0dXJuIHshSXRlcmFibGU8IU9iamVjdD59IEl0ZXJhYmxlIG9mIG5leHQgc3RlcHMuCiAqLwpmdW5jdGlvbiogdXBsb2FkRmlsZXNTdGVwKGlucHV0SWQsIG91dHB1dElkKSB7CiAgY29uc3QgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5wdXRJZCk7CiAgaW5wdXRFbGVtZW50LmRpc2FibGVkID0gZmFsc2U7CgogIGNvbnN0IG91dHB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvdXRwdXRJZCk7CiAgb3V0cHV0RWxlbWVudC5pbm5lckhUTUwgPSAnJzsKCiAgY29uc3QgcGlja2VkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICBpbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHsKICAgICAgcmVzb2x2ZShlLnRhcmdldC5maWxlcyk7CiAgICB9KTsKICB9KTsKCiAgY29uc3QgY2FuY2VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgaW5wdXRFbGVtZW50LnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2FuY2VsKTsKICBjYW5jZWwudGV4dENvbnRlbnQgPSAnQ2FuY2VsIHVwbG9hZCc7CiAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICBjYW5jZWwub25jbGljayA9ICgpID0+IHsKICAgICAgcmVzb2x2ZShudWxsKTsKICAgIH07CiAgfSk7CgogIC8vIENhbmNlbCB1cGxvYWQgaWYgdXNlciBoYXNuJ3QgcGlja2VkIGFueXRoaW5nIGluIHRpbWVvdXQuCiAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9LCBGSUxFX0NIQU5HRV9USU1FT1VUX01TKTsKICB9KTsKCiAgLy8gV2FpdCBmb3IgdGhlIHVzZXIgdG8gcGljayB0aGUgZmlsZXMuCiAgY29uc3QgZmlsZXMgPSB5aWVsZCB7CiAgICBwcm9taXNlOiBQcm9taXNlLnJhY2UoW3BpY2tlZFByb21pc2UsIHRpbWVvdXRQcm9taXNlLCBjYW5jZWxQcm9taXNlXSksCiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdzdGFydGluZycsCiAgICB9CiAgfTsKCiAgaWYgKCFmaWxlcykgewogICAgcmV0dXJuIHsKICAgICAgcmVzcG9uc2U6IHsKICAgICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICAgIH0KICAgIH07CiAgfQoKICBjYW5jZWwucmVtb3ZlKCk7CgogIC8vIERpc2FibGUgdGhlIGlucHV0IGVsZW1lbnQgc2luY2UgZnVydGhlciBwaWNrcyBhcmUgbm90IGFsbG93ZWQuCiAgaW5wdXRFbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKCiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7CiAgICBjb25zdCBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CiAgICBsaS5hcHBlbmQoc3BhbihmaWxlLm5hbWUsIHtmb250V2VpZ2h0OiAnYm9sZCd9KSk7CiAgICBsaS5hcHBlbmQoc3BhbigKICAgICAgICBgKCR7ZmlsZS50eXBlIHx8ICduL2EnfSkgLSAke2ZpbGUuc2l6ZX0gYnl0ZXMsIGAgKwogICAgICAgIGBsYXN0IG1vZGlmaWVkOiAkewogICAgICAgICAgICBmaWxlLmxhc3RNb2RpZmllZERhdGUgPyBmaWxlLmxhc3RNb2RpZmllZERhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbi9hJ30gLSBgKSk7CiAgICBjb25zdCBwZXJjZW50ID0gc3BhbignMCUgZG9uZScpOwogICAgbGkuYXBwZW5kQ2hpbGQocGVyY2VudCk7CgogICAgb3V0cHV0RWxlbWVudC5hcHBlbmRDaGlsZChsaSk7CgogICAgY29uc3QgZmlsZURhdGFQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7CiAgICAgICAgcmVzb2x2ZShlLnRhcmdldC5yZXN1bHQpOwogICAgICB9OwogICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7CiAgICB9KTsKICAgIC8vIFdhaXQgZm9yIHRoZSBkYXRhIHRvIGJlIHJlYWR5LgogICAgbGV0IGZpbGVEYXRhID0geWllbGQgewogICAgICBwcm9taXNlOiBmaWxlRGF0YVByb21pc2UsCiAgICAgIHJlc3BvbnNlOiB7CiAgICAgICAgYWN0aW9uOiAnY29udGludWUnLAogICAgICB9CiAgICB9OwoKICAgIC8vIFVzZSBhIGNodW5rZWQgc2VuZGluZyB0byBhdm9pZCBtZXNzYWdlIHNpemUgbGltaXRzLiBTZWUgYi82MjExNTY2MC4KICAgIGxldCBwb3NpdGlvbiA9IDA7CiAgICB3aGlsZSAocG9zaXRpb24gPCBmaWxlRGF0YS5ieXRlTGVuZ3RoKSB7CiAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWluKGZpbGVEYXRhLmJ5dGVMZW5ndGggLSBwb3NpdGlvbiwgTUFYX1BBWUxPQURfU0laRSk7CiAgICAgIGNvbnN0IGNodW5rID0gbmV3IFVpbnQ4QXJyYXkoZmlsZURhdGEsIHBvc2l0aW9uLCBsZW5ndGgpOwogICAgICBwb3NpdGlvbiArPSBsZW5ndGg7CgogICAgICBjb25zdCBiYXNlNjQgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgY2h1bmspKTsKICAgICAgeWllbGQgewogICAgICAgIHJlc3BvbnNlOiB7CiAgICAgICAgICBhY3Rpb246ICdhcHBlbmQnLAogICAgICAgICAgZmlsZTogZmlsZS5uYW1lLAogICAgICAgICAgZGF0YTogYmFzZTY0LAogICAgICAgIH0sCiAgICAgIH07CiAgICAgIHBlcmNlbnQudGV4dENvbnRlbnQgPQogICAgICAgICAgYCR7TWF0aC5yb3VuZCgocG9zaXRpb24gLyBmaWxlRGF0YS5ieXRlTGVuZ3RoKSAqIDEwMCl9JSBkb25lYDsKICAgIH0KICB9CgogIC8vIEFsbCBkb25lLgogIHlpZWxkIHsKICAgIHJlc3BvbnNlOiB7CiAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgIH0KICB9Owp9CgpzY29wZS5nb29nbGUgPSBzY29wZS5nb29nbGUgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYiA9IHNjb3BlLmdvb2dsZS5jb2xhYiB8fCB7fTsKc2NvcGUuZ29vZ2xlLmNvbGFiLl9maWxlcyA9IHsKICBfdXBsb2FkRmlsZXMsCiAgX3VwbG9hZEZpbGVzQ29udGludWUsCn07Cn0pKHNlbGYpOwo=", "ok": true, "headers": [ [ "content-type", "application/javascript" ] ], "status": 200, "status_text": "" } }, "base_uri": "https://localhost:8080/", "height": 165 } }, "source": [ "# Upload trained models to visualize confusion matrixes and projectors.\n", "# for fashion_mnist use fashion_mnist_trained_U790.npy\n", "# for mnist use mnist_trained_U790.npy\n", "\n", "mnist_h0 = UploadFile(\"Upload model for MNIST dataset.\")\n", "fashion_mnist_h0 = UploadFile(\"Upload model for Fashion-MNIST dataset.\")" ], "execution_count": 7, "outputs": [ { "output_type": "stream", "text": [ "Upload model for MNIST dataset.\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " \n", " Upload widget is only available when the cell has been executed in the\n", " current browser session. Please rerun this cell to enable.\n", " \n", " " ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "Saving mnist_trained_U790.npy to mnist_trained_U790 (4).npy\n", "Upload model for Fashion-MNIST dataset.\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " \n", " Upload widget is only available when the cell has been executed in the\n", " current browser session. Please rerun this cell to enable.\n", " \n", " " ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "Saving fashion_mnist_trained_U790.npy to fashion_mnist_trained_U790 (2).npy\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "vq7HSRp8i_nB", "colab_type": "code", "colab": {} }, "source": [ "def ReadSets(dataset, num_classes):\n", " (x_train255, y_train), (x_test255, y_test) = dataset.load_data()\n", " x_train, x_test = (x_train255 / 255.0), (x_test255 / 255.0)\n", " y_train_cat = keras.utils.to_categorical(y_train, num_classes)\n", " y_test_cat = keras.utils.to_categorical(y_test, num_classes)\n", " return x_train, y_train_cat, x_test, y_test_cat\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "m7zOdHKcM-Hi", "colab_type": "code", "colab": {} }, "source": [ "\n", "def MostLikelyCategory(x_train, y_train_cat):\n", " # \"Classical baseline\" performance:\n", " # If a pixel arrives at (row, col), we need to know the most likely digit,\n", " # with probabilities as observed on the training set.\n", " x_train_intensity_per_cat = np.einsum('byx,bc->yxc', x_train, y_train_cat)\n", " \n", " # Trick: We add a tiny randomized-for-random-tie-breaking 'epsilon'\n", " # to the brightnesses that only changes results for pixels that were\n", " # dark in every single training example.\n", " p_class_given_pixel = keras.utils.to_categorical(\n", " x_train_intensity_per_cat.argmax(axis=2))\n", " x_train_most_likely_pixel_cat = (x_train_intensity_per_cat +\n", " rng.uniform(low=0, high=1e-100, size=(28, 28, 10))).argmax(axis=2)\n", " x_train_prob = x_train_intensity_per_cat.max(axis=2)\n", " return (x_train_most_likely_pixel_cat, x_train_prob)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "4-b65wzs8fUt", "colab_type": "code", "colab": {} }, "source": [ "def Confusion(x_test, y_test_cat, x_train_most_likely_pixel_cat):\n", " scale_sample = np.einsum('byx->b', x_test)\n", " p_pixel_given_class = np.einsum('byx,bc->yxc',\n", " x_test / scale_sample.reshape([-1, 1, 1]),\n", " y_test_cat) / x_test.shape[0]\n", " p_est_class_given_pixel = keras.utils.to_categorical(\n", " x_train_most_likely_pixel_cat)\n", " p_confusion = np.einsum('yxc,yxd->dc',\n", " p_est_class_given_pixel,\n", " p_pixel_given_class)\n", " return p_confusion" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "flRIPxhuNwTJ", "colab_type": "code", "colab": {} }, "source": [ "def quantum_states_from_xs(xs):\n", " amplitudes = np.sqrt(\n", " xs / np.einsum('byx->b', xs)[:, np.newaxis, np.newaxis])\n", " return np.pad(amplitudes.reshape(xs.shape[0], -1),\n", " ((0, 0), (0, XYDIM_EXT - XYDIM)),\n", " 'constant', constant_values=(0, 0)) " ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "vWYWlqKIMnvg", "colab_type": "code", "colab": {} }, "source": [ "def parameters_to_unitary(h0):\n", " h0_T = np.transpose(h0)\n", " ih = np.zeros_like(h0, dtype=np.complex128)\n", " ih.real = h0 - h0_T\n", " ih.imag = h0 + h0_T\n", " u = expm(ih)\n", " return u" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "qApxP8LSNaj3", "colab_type": "code", "colab": {} }, "source": [ "def ConfusionOurs(x_test, y_test_cat, h0):\n", " u = parameters_to_unitary(h0)\n", " xq_test = quantum_states_from_xs(x_test)\n", " u_psi = np.reshape(\n", " np.einsum('bp,qp->bq', xq_test.astype(np.complex128), u),\n", " (-1, NUM_CLASSES, XYDIM_EXT // NUM_CLASSES))\n", " u_psi_r = np.real(u_psi)\n", " u_psi_i = np.imag(u_psi)\n", " probs = np.einsum('bcs->bc', np.square(u_psi_r) + np.square(u_psi_i))\n", " p_confusion = np.einsum('bc,bd->dc', probs, y_test_cat) / x_test.shape[0]\n", " return p_confusion" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "vuonexr6Umtg", "colab_type": "code", "colab": {} }, "source": [ "def PlotPixelMap(x_most_likely_pixel_cat, prob, filename, xlabel=None):\n", " fig = plt.figure(figsize=(6, 6))\n", " n, m = x_most_likely_pixel_cat.shape\n", " plt.axis([-1, n, m, -1])\n", " #plt.imshow(prob)\n", " font0 = FontProperties()\n", " font1 = font0.copy()\n", " font1.set_size('xx-small')\n", " plt.rcParams['axes.facecolor'] = 'white'\n", " for (r, c), value in np.ndenumerate(x_most_likely_pixel_cat):\n", " if prob[r, c] > 0:\n", " plt.text(c, r, str(value), horizontalalignment='center',\n", " verticalalignment='center', fontproperties=font1)\n", " #plt.axis('off')\n", " ax = plt.gca()\n", " ax.set_yticklabels([])\n", " ax.set_xticklabels([])\n", " plt.xticks([])\n", " plt.yticks([])\n", " if xlabel:\n", " ax.set_xlabel(xlabel)\n", " plt.savefig(filename, bbox_inches='tight')\n", " files.download(filename)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "w9dDcSrzC3II", "colab_type": "code", "colab": {} }, "source": [ "def PlotConfusionMatrix(p_confusion, filename, xlabel=None):\n", " fig = plt.figure(figsize=(6, 6))\n", " font0 = FontProperties()\n", " font1 = font0.copy()\n", " font1.set_size('xx-small')\n", " plt.rcParams['axes.facecolor'] = 'white'\n", " ax = fig.gca()\n", " ax.grid(False)\n", " #plt.xticks([])\n", " #plt.yticks([])\n", " ax.set_xticks(range(0, 10))\n", " ax.set_yticks(range(0, 10))\n", " ax.set_ylabel('True')\n", " ax.set_title('Predicted')\n", " if xlabel:\n", " ax.set_xlabel(xlabel)\n", " im = plt.imshow(p_confusion, interpolation='none', norm=plt.Normalize(vmin=0, vmax=0.06))\n", " fig.colorbar(im, ax=ax, ticks=[0, 0.012, 0.024, 0.036, 0.048, 0.060], shrink=0.8)\n", " plt.savefig(filename, bbox_inches='tight')\n", " files.download(filename)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "EKopaAbpMLk_", "colab_type": "code", "colab": {} }, "source": [ "def ComputeProjectors(h0):\n", " cat_projectors = [np.diag(\n", " np.einsum('c,x->cx',\n", " np.array([c == n for n in range(10)]),\n", " np.ones(XYDIM_EXT // NUM_CLASSES)).reshape(-1))\n", " for c in range(NUM_CLASSES)]\n", " u = parameters_to_unitary(h0)\n", " u_inv = u.T.conj()\n", " projectors = np.stack([np.matmul(u_inv, np.matmul(cp, u))\n", " for cp in cat_projectors], axis=0)\n", " return projectors" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "NS4RFHVORVsF", "colab_type": "code", "colab": {} }, "source": [ "def DecomposeSamples(h0, x_test, test_indices):\n", " projectors = ComputeProjectors(h0)\n", " xq_test = quantum_states_from_xs(x_test[test_indices, :, :])\n", " xq_decomposed = np.einsum('cyx,bx->bcy', projectors, xq_test)\n", " xq_decomposed_res = np.reshape(xq_decomposed[:, :, :XYDIM], (-1, NUM_CLASSES, XYDIM // XDIM, XDIM))\n", " return xq_decomposed_res\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "CSOLkxjD2Ykx", "colab_type": "code", "colab": {} }, "source": [ "def ComplexToRGB(sample, mag_scale):\n", " height, width = sample.shape\n", " mag = np.absolute(sample) * mag_scale\n", " h = (np.angle(sample) + math.pi) / (2 * math.pi) + 0.5\n", " l = 1.0 - 1.0/(1.0 + mag ** 0.8)\n", " s = 0.8 * np.ones((height, width), dtype=np.float64)\n", " r, g, b = np.vectorize(hls_to_rgb)(h, l, s)\n", " rgb = np.stack((r, g, b), axis=2)\n", " return rgb" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "2btI1quiPuLV", "colab_type": "text" }, "source": [ "#Test Complex Visualization\n", "\n", "To visualize complex probability amplitudes, we use brihgntess for magnitude and hue for phase. This is visualize in the following figure. \n" ] }, { "cell_type": "code", "metadata": { "id": "3okGuDYw7YNl", "colab_type": "code", "outputId": "c6bc5e40-be47-418f-a2a2-b238483910a8", "colab": { "base_uri": "https://localhost:8080/", "height": 302 } }, "source": [ "ex_g = np.zeros((100, 100), np.complex)\n", "eg_g_magnitude = np.reshape(np.linspace(0, 0.1, 100, endpoint=True), (-1, 1))\n", "ex_g.real = eg_g_magnitude * np.cos([np.linspace(-math.pi, math.pi, 100)])\n", "ex_g.imag = eg_g_magnitude * np.sin([np.linspace(-math.pi, math.pi, 100)])\n", "ex_g_rgb = ComplexToRGB(ex_g, 10.0)\n", "fig = plt.figure(figsize=(4, 4))\n", "plt.imshow(ex_g_rgb)\n", "ax = fig.gca()\n", "ax.grid(False)\n", "ax.set_yticks([0, 50, 100])\n", "ax.set_yticklabels([0, 0.05, 0.1])\n", "ax.set_xticks([0, 50, 100])\n", "ax.set_xticklabels(['$-\\pi$', '$0$', '$\\pi$'])\n", "ax.set_ylabel('Magnitude')\n", "ax.set_xlabel('Phase')\n" ], "execution_count": 19, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Text(0.5,0,'Phase')" ] }, "metadata": { "tags": [] }, "execution_count": 19 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "Lpbpg83bxYVC", "colab_type": "code", "colab": {} }, "source": [ "def PlotSamples(samples, dec_samples, filename, figsize=(16, 8), xlabel=None):\n", " num_images, num_classes, height, width = dec_samples.shape\n", " fig, axs = plt.subplots(num_images, 12, figsize=figsize,\n", " gridspec_kw={'width_ratios': [1] * 11 + [0.25],\n", " 'height_ratios': [1] * num_images})\n", " norm = cm.colors.Normalize(vmax=1.03, vmin=0)\n", " norm_dec = cm.colors.Normalize(vmax=0.01, vmin=0)\n", " font0 = FontProperties()\n", " font1 = font0.copy()\n", " font1.set_size('xx-small')\n", " bar = np.zeros((7, 28), np.complex)\n", " bar_magnitude = 0.07\n", " bar.real = bar_magnitude * np.cos([np.linspace(-math.pi, math.pi, 28)])\n", " bar.imag = bar_magnitude * np.sin([np.linspace(-math.pi, math.pi, 28)])\n", " bar_rgb = ComplexToRGB(bar.T, 6.0)\n", " for im_index in range(num_images):\n", " ax = axs[im_index, 0]\n", " ax.imshow(samples[im_index, :, :], cmap=plt.get_cmap('gray'), norm=norm, interpolation='nearest')\n", " ax.grid(False)\n", " ax.set_yticklabels([])\n", " ax.set_xticklabels([])\n", " ax.set_xticks([])\n", " ax.set_yticks([])\n", " if not im_index:\n", " ax.set_title('Sample')\n", " for c_index in range(0, num_classes):\n", " ax = axs[im_index, c_index + 1]\n", " rgb = ComplexToRGB(dec_samples[im_index, c_index, :, :], 6)\n", " ax.imshow(rgb, interpolation='nearest') # , cmap=plt.get_cmap('gray'), norm=norm_dec)\n", " if not im_index: \n", " ax.set_title('c = %d' % c_index)\n", " ax.grid(False)\n", " ax.set_yticklabels([])\n", " ax.set_xticklabels([])\n", " ax.set_xticks([])\n", " ax.set_yticks([])\n", " ax = axs[im_index, num_classes + 1]\n", " ax.imshow(bar_rgb)\n", " ax.grid(False)\n", " ax.yaxis.set_label_position(\"right\")\n", " ax.yaxis.tick_right()\n", " ax.set_yticklabels(['$-\\pi$', '$0$', '$\\pi$'])\n", " ax.set_yticks([0, 14, 28])\n", " ax.set_xticklabels([])\n", " ax.set_xticks([])\n", " plt.subplots_adjust(wspace=0.03, hspace=0.01)\n", " if xlabel:\n", " fig.add_subplot(111, frameon=False)\n", " plt.tick_params(labelcolor='red', top='off', bottom='off', left='off', right='off')\n", " plt.grid(False)\n", " plt.gca().set_xticklabels([])\n", " plt.gca().set_yticklabels([])\n", " plt.xlabel(xlabel)\n", " plt.gca().xaxis.set_label_coords(0.5, -0.08)\n", " plt.savefig(filename, bbox_inches='tight')\n", " files.download(filename)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "WdDC3KEjLqqI", "colab_type": "text" }, "source": [ "#Fashion MNIST" ] }, { "cell_type": "code", "metadata": { "id": "Q_0QwhcDJRoR", "colab_type": "code", "outputId": "233d1912-5b24-4cc0-dc76-72be529c1c07", "colab": { "base_uri": "https://localhost:8080/", "height": 562 } }, "source": [ "x_train, y_train_cat, x_test, y_test_cat = ReadSets(DATASET_FASHION, NUM_CLASSES)\n", "x_train_most_likely_pixel_cat, x_train_prob = MostLikelyCategory(x_train, y_train_cat)\n", "PlotPixelMap(x_train_most_likely_pixel_cat, x_train_prob, 'fashion_map.png', '(a)')" ], "execution_count": 46, "outputs": [ { "output_type": "stream", "text": [ "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz\n", "32768/29515 [=================================] - 0s 0us/step\n", "40960/29515 [=========================================] - 0s 0us/step\n", "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz\n", "26427392/26421880 [==============================] - 1s 0us/step\n", "26435584/26421880 [==============================] - 1s 0us/step\n", "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz\n", "16384/5148 [===============================================================================================] - 0s 0us/step\n", "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz\n", "4423680/4422102 [==============================] - 0s 0us/step\n", "4431872/4422102 [==============================] - 0s 0us/step\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "kafbwXRLKMqe", "colab_type": "code", "outputId": "d4fde882-6a33-4459-932c-61d7198564c6", "colab": { "base_uri": "https://localhost:8080/", "height": 346 } }, "source": [ "p_confusion_test = Confusion(x_test, y_test_cat, x_train_most_likely_pixel_cat)\n", "PlotConfusionMatrix(p_confusion_test, 'fashion_mnist_confusion.png', '(a)')" ], "execution_count": 47, "outputs": [ { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAFJCAYAAACPcgYdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi40LCBodHRwOi8vbWF0cGxvdGxpYi5vcmcv7US4rQAAIABJREFUeJzt3XuYXXV97/H3J5N7gIAJUCRcolBaSk8FUsSKVk1VQAXbA8dgRdui6XNaLNrj6cFexFJ7wceKtnp8TgooBQVtQBs1CCpUHmuNhFslBNpwkSRyS4hcAiHJzOf8sVZkZzqZzEr2Wpm99ufFsx72Xuu31/c3k8l3fvmt30W2iYiI9piwpysQERHdlcQeEdEySewRES2TxB4R0TJJ7BERLZPEHhHRMknsMW5IOlySJU0s318n6V0NxP2wpCvrjhPRlCT2qEzSg5Kek/SMpEclfU7SXt2OY/sU25ePsT6/1u34Eb0qiT121Vts7wUcB8wD/rTzogr5+YrYA/IXL3aL7bXAdcAxkv5F0l9K+lfgWeAlkmZKulTSw5LWSvqIpAEASQOSPiZpnaT7gTd13ru837s73r9H0kpJT0u6W9Jxkq4ADgW+Wv4L4o/KsidK+p6kn0i6U9JrOu4zV9J3yvt8E5hd87cpolFJ7LFbJB0CnArcXp46G1gI7A38CPgcsBU4AjgWeAOwLVm/B3hzeX4ecMYocc4EPgy8E9gHOA1Yb/ts4CHKf0HY/qikg4GvAx8BXgR8ALhG0v7l7b4A3EqR0P8CqL0fP6JJSeyxq74i6SfAd4HvAH9Vnv+c7RW2t1Ik1VOB99neaPsx4GJgQVn2fwCfsL3a9hPAX48S793AR23f4sIq2z/aQdl3AEttL7U9ZPubwHLgVEmHAr8M/Jnt523fDHx1l78LEePQxD1dgehZb7X9rc4TkgBWd5w6DJgEPFxeg6Ixsa3Mi4eV31GiBjgEuG+MdTsMOFPSWzrOTQJuKmNusL1xWNxDxnjviHEviT26rXO50NXA88DssgU/3MNsn1APHeW+q4GXjiHmtrJX2H7P8IKSDgP2kzSjI7kfOsI9InpWumKiNrYfBm4A/lbSPpImSHqppF8ti3wJ+ANJcyTtB5w/yu0uAT4g6fhyxM0RZZIGeBR4SUfZK4G3SHpj+YB2qqTXSJpTdt8sB/5c0mRJJwFvIaJFktijbu8EJgN3AxuAxcBB5bV/AK4H7gRuA67d0U1s/xPwlxQPPp8GvkLRhw9F3/yfliNgPmB7NXA68MfA4xQt+P/NCz/vbwdeDjwBXAD8Yze+0IjxQtloIyKiXdJij4homST2iIiWSWKPiGiZJPaIiJZJYo+IaJlxNUFp0uQZnjp1v0ZibdlLOy/UJVPWb2kkztDU5v44PdDc92/Cho07LxQ7pCmTG4u1Ze9JjcTZ/PQTbN20sbkfwgoknQx8EhgALrH9N8OuT6EYYns8sB54m+0Hy2v/Dfh/FOshDQG/bHuTpOMp1l2aBiwFzvMoQxrHVWKfOnU/jj/x3EZiPfzKKY3EAXjJP65tJM7GnzugkTgAW6c394+9GdcsayxWGw0c9pKdF+qSR197YCNx7r3m4kbiVFWuXPpp4PXAGuAWSUts391R7ByKZS2OkLQAuAh4W7nBzJXA2bbvlDQL2NYq/AzFonnLKBL7yRSrqo4oXTEREd1zArDK9v22NwNXU0yW63Q6sG0DmcXAfBWLKb0B+HfbdwLYXm97UNJBwD62v1+20v8ReOtolRhXLfaIiKa88bUzvP6JwUqfufXfn18BbOo4tcj2oo73B7P9wnZrKGY5M1IZ21slPQnMAn4WsKTrgf2Bq21/tCy/Ztg9Dx6tnknsEdGX1j8xyA+uH23duf9q4KD/3GR7Xk1VmgicRLGs9LPAtyXdCjxZ9UbpiomIvmRgqOJ/Y7CW7VcsnVOeG7FM2a8+k+Ih6hrgZtvrbD9L0Zd+XFl+zk7uuZ0k9ojoU2bQQ5WOMbgFOLLcfnEyxaYyS4aVWcILu3adAdxY9p1fD/yipOllwv9V4O5yldSnyu0eRbGw3j+PVol0xUREXypa7N1dBLHsMz+XIkkPAJfZXiHpQmC57SXApcAVklZRrDC6oPzsBkkfp/jlYIpdwL5e3vr3eGG443WMMiIGktgjoo+NsXulEttLKbpROs99qOP1JuDMHXz2Soohj8PPLweOGWsdktgjoi8ZM9jSZctr7WOXdLKkeyWtkjTa7jgREY0bwpWOXlFbi32MM7AiIvYIA4M9lKyrqLPFPpYZWBERe0xa7NWNZQYWkhYCCwGmTN23xupERLzAkD72utheZHue7XmTJs3Y09WJiD4yVPHoFXW22McyAysiYo8wbm0fe52J/aczsCgS+gLg7TXGi4gYO8NgO/N6fYl9RzOw6ooXEVFFMfO0nWqdoDTSDKyIiPFBDDIuN2HabZl5GhF9ycBQumIiItolLfaIiBYpZp4msUdEtMqQk9gjIlojLfaIiJYxYnDPT76vRRJ7RPStdMVERLRIumIaMuG555l6x4ONxFrwtw83Egfge38xrZE4gy/7mUbiAEzY2tIBwG30+PrGQk1/fP9G4kzY2o27iEGnKyYiojWKJQWS2CMiWiVdMRERLWKnKyYionWG0mKPiGiPYlRMWuwRES2SrpiIiFZp86iYdn5VERF9rLbELukySY9JuquuGBERu2PQqnT0ijpb7J8DTq7x/hERu2zbImBVjl5R52bWN0s6vK77R0TsrqE8PI2IaI8Md6yRpIXAQoCpE/baw7WJiH5heqvfvIo9nthtLwIWAcyctH+WDIyIxrR1uOMeT+wREXuCTWsnKNU53PEq4N+AoyStkXROXbEiIqoTQxWPXlHnqJiz6rp3RMTuMu1tsacrJiL6VkbFRES0iFE2s46IaJu02CMiWsRk5mlERMsoe55GRLRJWuwRES3U1hZ7O39dRUTshC2GPKHSMRaSTpZ0r6RVks4f4foUSV8sry8bvgqupEMlPSPpAx3n3i9phaS7JF0laepodUhij4i+NegJlY6dkTQAfBo4BTgaOEvS0cOKnQNssH0EcDFw0bDrHweu67jnwcAfAPNsHwMMAAtGq8f46oqZOBEOnN1IqGs/e1QjcQBe9IYtjcSZsXpjI3EAnjoiK3H2jAOa+TsFsOFnBxqJM/i93b9Hsedp17tiTgBW2b4fQNLVwOnA3R1lTgc+XL5eDHxKkmxb0luBB4Dhf5knAtMkbQGmAz8erRJpsUdEn1LXW+zAwcDqjvdrynMjlrG9FXgSmCVpL+D/AH/eWdj2WuBjwEPAw8CTtm8YrRJJ7BHRl4pRMap0ALMlLe84FnaxSh8GLrb9TOdJSftRtPLnAi8GZkh6x2g3Gl9dMRERDdqFmafrbM8b5fpa4JCO93PKcyOVWSNpIjATWA+8HDhD0keBfYEhSZuAR4EHbD8OIOla4FeAK3dUiST2iOhLNa0VcwtwpKS5FAl8AfD2YWWWAO+iWNb8DOBG2wZeta2ApA8Dz9j+lKSXAydKmg48B8wHlo9WiST2iOhb3d5ByfZWSecC11OMXrnM9gpJFwLLbS8BLgWukLQKeIKdjHCxvUzSYuA2YCtwO+WuczuSxB4RfanYQan7E5RsLwWWDjv3oY7Xm4Azd3KPDw97fwFwwVjrkMQeEX0ry/ZGRLRI0cfezoGBde55eoikmyTdXU6FPa+uWBERu2KwXOFxrEevqLPFvhX4X7Zvk7Q3cKukb9q+e2cfjIio27Zx7G1U52bWD1PMksL205JWUsy4SmKPiHGgvV0xjfSxl6uXHQssayJeRMRY1LBWzLhQe2Iv1z+4Bnif7adGuL4QWAgwddI+dVcnIgKob7jjeFBrYpc0iSKpf972tSOVsb2IcrD9zGkHuc76RER0SldMRZJEMcNqpe2P1xUnImJX1LSkwLhQ56+rVwJnA6+TdEd5nFpjvIiISoZQpaNX1Dkq5rvQQ9+JiOgrGe4YEdFC6WOPiGgTt7ePPYk9IvpSTXuejgtJ7BHRt9Jij4hokTw8jYhooST2iIgWafMEpST2iOhbeXjaBBs2b2kk1DPHP9dIHIAXX7qqkTiPv+2YRuIAzHh0sLFYsXv01DONxZrx8AGNxJnQjTThdMVERLRKHp5GRLRQEntERIvk4WlERAs5iT0iol0yKiYiokWcUTEREe3T1q6Ydi5GHBHRx9Jij4g+lVExlUmaCtwMTCnjLLZ9QV3xIiKqamtXTJ0t9ueB19l+RtIk4LuSrrP9/RpjRkSMSWae7gLbBrYtUjGpPFxXvIiISlyMjGmjWh+eShqQdAfwGPBN28vqjBcRUcUQqnT0iloTu+1B2y8D5gAnSPovyw9KWihpuaTlmwebW3ExIvqbKfrYqxy9opHhjrZ/AtwEnDzCtUW259meN3lgWhPViYhg26iYKkevqC2xS9pf0r7l62nA64F76ooXEVGVXe3oFXWOijkIuFzSAMUvkC/Z/lqN8SIiKuml7pUq6hwV8+/AsXXdPyJidxSt8CT2iIhW6aV+8yqS2COib/VSv3kVSewR0bfSFRMR0SKmt8amV5HEHhF9q6U9MVmPPSL6lOuZeSrpZEn3Slol6fwRrk+R9MXy+jJJh5fnT5B0R3ncKenXOz6zr6TFku6RtFLSK0arQ1rsEdG/utxkL+ftfJpiQuYa4BZJS2zf3VHsHGCD7SMkLQAuAt4G3AXMs71V0kHAnZK+ansr8EngG7bPkDQZmD5aPdJij4i+VUOL/QRgle37bW8GrgZOH1bmdODy8vViYL4k2X62TOIAUyl/7UiaCbwauLSoszeXy7Ts0Phqsdto85ZGQk1b0dy6NFuPO6KROC+6+9lG4gA8ecSoDYaumtpYpHbyPns1FuvZn2nmYeTQpO7cp4bhjgcDqzverwFevqMyZev8SWAWsE7Sy4HLgMOAs8vrc4HHgc9K+iXgVuA82xt3VIm02COiL+3i6o6zt61GWx4Lu1one5ntXwB+GfhguRPdROA44DO2jwU2Av+l777T+GqxR0Q0xUD14Y7rbM8b5fpa4JCO93PKcyOVWSNpIjATWL9d1eyVkp4BjqFo9a/p2M9iMTtJ7GmxR0TfqmF1x1uAIyXNLR9yLgCWDCuzBHhX+foM4EbbLj8zEUDSYcDPAQ/afgRYLemo8jPzgbsZRVrsEdG/utzHXvaJnwtcDwwAl9leIelCYLntJRQPQa+QtAp4giL5A5wEnC9pCzAE/J7tdeW19wKfL39Z3A/89mj1SGKPiD5Vz8xT20uBpcPOfajj9SbgzBE+dwVwxQ7ueQcwWhfQdpLYI6J/tXTqaRJ7RPSnrMceEdFCabFHRLRNO1vstQ93lDQg6XZJ2e80IsYXVzx6RBPj2M8DVjYQJyKimiT26iTNAd4EXFJnnIiIyrbNPK1y9Ii6+9g/AfwRsPeOCpRrLSwEmDqww2IREV3X1j1Pa2uxS3oz8JjtW0crZ3uR7Xm2500eaG7FxYiItnbF1NlifyVwmqRTKVZe3UfSlbbfUWPMiIix66HulSrG3GKXNKXKjW1/0PYc24dTrIVwY5J6RIwncrWjV+w0sZf78P0Q+M/y/S9J+vvaaxYRUaeq3TBtSuzA3wFvplwv2PadwGurBLH9L7bfXL16ERF1qTgipoe6bcbSxz7B9o+k7b6owZrqExHRnB5qhVcxlsS+WtIJgMsduN8L/Ee91YqIaEAfJ/b/SdEdcyjwKPCt8lxERG/r18Ru+zFe2OEjIqIddm3P056w08Qu6R8Y4fea7a7uzh0R0bReGsJYxVi6Yr7V8Xoq8OvA6nqqExHRoH5N7La/2Ple0hXAd2urUURE7JZdWVJgLnBgtysSEdG0vu2KkbSBF/7BMgF4Aji/ltoMDuINT9Zy6+EO+rfZjcQBmLT2Jw0Fam5DrJmrGgvVWgOzZzUSZ2jm9EbiALzzndc3Eufvv/ZUd27Ujw9PVcxK+iVgbXlqyG7rQpcR0Vd6bJmAKkZdUqBM4kttD5ZHS78NEdGX+nitmDskHVt7TSIiGtbW1R132BUjaaLtrcCxwC2S7gM2UmzrbdvHNVTHiIh69FCyrmK0PvYfAMcBpzVUl4iIZvVhYheA7fsaqktERGN6rXulitES+/6S/nBHF21/vIb6RETEbhotsQ8Ae1G23CMiWqcPx7E/bPvCxmoSEdG0PuyK2e1fZZIeBJ6m2HFpq+15u3vPiIhu6cc+9vldivFa2+u6dK+IiO7pt8Ru+4kmKxIR0agWj4oZy8zT3WHgBkm3ShpxYw5JCyUtl7R889CmmqsTEdGhpUsK1L0c4Em210o6APimpHts39xZwPYiYBHAzImze+hbFxE9r6UZp9YWu+215f8fA74MnFBnvIiIKtq6VkxtiV3SDEl7b3sNvAG4q654ERFRqLMr5kDgy8WS7kwEvmD7GzXGi4iopoda4VXUltht30+xSUdExPjTY90rVTS3l1pExHiTxB4R0TJJ7BER7SHa2xVT9wSliIjxq4YJSpJOlnSvpFWSzh/h+hRJXyyvL5N0eHn+9eVkzh+W/3/dCJ9dImmnowuT2COiP1Ucwz6W1r2kAeDTwCnA0cBZko4eVuwcYIPtI4CLgYvK8+uAt9j+ReBdwBXD7v0bwDNj+dKS2COif3W/xX4CsMr2/bY3A1cDpw8rczpwefl6MTBfkmzfbvvH5fkVwDRJUwAk7QX8IfCRsVQiiT0i+lf3E/vBwOqO92vKcyOWsb0VeBKYNazMfwdus/18+f4vgL8Fnh1LJZLYI6Jv7UJXzOxtixaWx4iLG+5WnaRfoOie+d3y/cuAl9r+8ljvMb5GxUyejOcO/+VWj0fnTWskDsBBzw82EmdwanN/nBsPmtxYrH2+11ioRg2uW99InIEX7dtIHIArPvvGRuKsX7eiOzeqPipm3U42DFoLHNLxfk55bqQyayRNBGYC6wEkzaFYV+udtu8ry78CmFduXDQROEDSv9h+zY4qkRZ7RPSnqt0wY/slcAtwpKS5kiYDC4Alw8osoXg4CnAGcKNtS9oX+Dpwvu1//Wk17c/YfrHtw4GTgP8YLalDEntE9LFuj4op+8zPBa4HVgJfsr1C0oWSTiuLXQrMkrSK4oHotiGR5wJHAB+SdEd5HLArX9f46oqJiGhSDROUbC8Flg4796GO15uAM0f43EfYyagX2w8Cx+ysDknsEdG32jrzNIk9IvpXEntERIv02D6mVSSxR0RfUnm0URJ7RPSvlrbYax3uKGlfSYsl3SNppaRX1BkvIqKKtm5mXXeL/ZPAN2yfUQ7Wn15zvIiIseuhZF1FbYld0kzg1cBvAZQrnW2uK15ERGUtTex1dsXMBR4HPivpdkmXSJpRY7yIiLGrYT328aLOxD4ROA74jO1jgY28MHX2pyQt3LZS2uatY1qRMiKiO2rYQWk8qDOxrwHW2F5Wvl9Mkei3Y3uR7Xm2502emC74iGhOWuwV2X4EWC3pqPLUfODuuuJFRFTW0hZ73aNi3gt8vhwRcz/w2zXHi4gYs15qhVdRa2K3fQcw2qL0ERF7Ro+1wqvIzNOI6F9J7BER7SHSFRMR0T5J7BER7SK3M7MnsUdEf8rD04iI9kkfe0RE2ySxR0S0S1rsERFtk8RePz+3iaE7VzYSa/aBzU2IHXjgkWbi7LtPI3EANLh3Y7HaauLcwxqJM7j31EbiAPzeOf/cSJyLrvvJ7t+kxxb2qmJcJfaIiEYlsUdEtEdmnkZEtFEmKEVEtEta7BERbdLimad1bo0XERF7QFrsEdG3NLSna1CPJPaI6F/piqlG0lGS7ug4npL0vrriRURUJVc7ekVtLXbb9wIvA5A0AKwFvlxXvIiISkyGO+6m+cB9tn/UULyIiJ3qpVZ4FU0l9gXAVQ3FiogYm5Ym9tqHO0qaDJwG/NMOri+UtFzS8i08X3d1IiKAF5YUSB/7rjkFuM32oyNdtL0IWASwj17UQ9+6iOhpdvrYd8NZpBsmIsahXmqFV1FrV4ykGcDrgWvrjBMRsUtc8egRtbbYbW8EZtUZIyJiV7W1xZ6ZpxHRnwwMtTOzJ7FHRP9qZ17P6o4R0b/qGO4o6WRJ90paJen8Ea5PkfTF8voySYeX52dJuknSM5I+1VF+uqSvS7pH0gpJf7OzOiSxR0T/2jbkcazHTpTLp3yaYpj30cBZko4eVuwcYIPtI4CLgYvK85uAPwM+MMKtP2b754BjgVdKOmW0eiSxR0TfqqHFfgKwyvb9tjcDVwOnDytzOnB5+XoxMF+SbG+0/V2KBP9Ttp+1fVP5ejNwGzBntEoksUdEf6o61HFsif1gYHXH+zXluRHL2N4KPMkYRw9K2hd4C/Dt0crl4WlE9KViSYHKT09nS1re8X5ROXu+dpImUkz2/Dvb949WNok9IvpX9R2U1tmeN8r1tcAhHe/nlOdGKrOmTNYzgfVjiL0I+E/bn9hZwXGV2DV5MhMPPrSRWM9Nb64XamjO/s3EmTqpkTgAW/Zq7kdnSmORmjX06OONxNl8ZDM/fwAXfedNjcR55OlVXbnPLrTYd+YW4EhJcykS+ALg7cPKLAHeBfwbcAZwoz16RSR9hOIXwLvHUolxldgjIhpTwzIBtrdKOhe4HhgALrO9QtKFwHLbS4BLgSskrQKeoEj+AEh6ENgHmCzprcAbgKeAPwHuAW6TBPAp25fsqB5J7BHRp+pZ3dH2UmDpsHMf6ni9CThzB589fAe3VZU6JLFHRN/KWjEREW2T9dgjIlrEoOqjYnpCEntE9K+02CMiWqadeT2JPSL6Vw3j2MeFJPaI6F8tTex173n6/nL94LskXSVpap3xIiLGzBRLClQ5ekRtiV3SwcAfAPNsH0MxC2vB6J+KiGiGMHK1o1fU3RUzEZgmaQswHfhxzfEiIsauh5J1FbW12G2vBT4GPAQ8DDxp+4a64kVEVNblHZTGizq7Yvaj2ClkLvBiYIakd4xQbqGk5ZKWbx58tq7qRERsL33su+TXgAdsP257C3At8CvDC9leZHue7XmTB6bXWJ2IiO2lj726h4ATJU0HngPmA8tH/0hERIN6KFlXUVtit71M0mKKjVe3ArdT7AASETEO9Fa/eRW1joqxfQFwQZ0xIiJ2iUlij4honR56IFpFEntE9K1eeiBaRRJ7RPSvJPaIiBYxMJTEHhHRIhkVExHRPknsEREtk8QeEdEi6WNvyNAgfvqZRkJN2NLcH+jAIxsaiaP99mkkDsC0Z55vLFZLhxrDUDNf2ZRHmvk7BfCx+UsbiXP+p7rxd8rgdv50ja/EHhHRpHTFRES0SLpiIiJaKC32iIiWSWKPiGiT9k5QqnMHpYiI2APSYo+I/mQaG3LatCT2iOhfLe2KSWKPiP7V0sReax+7pPMk3SVphaT31RkrIqIaF+PYqxw9orYWu6RjgPcAJwCbgW9I+prtVXXFjIgYM4NbuqRAnS32nweW2X7W9lbgO8Bv1BgvIqKalrbY60zsdwGvkjRL0nTgVOCQ4YUkLZS0XNLyzUObaqxORMQwdrWjR9TWFWN7paSLgBuAjcAdwOAI5RYBiwBmTtq/d75zEdHb7NYOd6z14antS20fb/vVwAbgP+qMFxFRSVrs1Uk6wPZjkg6l6F8/sc54ERFVuKUt9rrHsV8jaRawBfh92z+pOV5ExBj1Viu8iloTu+1X1Xn/iIhdlvXYIyJaKOPYIyLaw4CHXOkYC0knS7pX0ipJ549wfYqkL5bXl0k6vOPaB8vz90p641jvOVwSe0T0J5ebWVc5dkLSAPBp4BTgaOAsSUcPK3YOsMH2EcDFwEXlZ48GFgC/AJwM/F9JA2O853aS2COib9XQYj8BWGX7ftubgauB04eVOR24vHy9GJgvSeX5q20/b/sBYFV5v7HcczvpY4+IvvQ0G67/1tCXZlf82FRJyzveLyonWW5zMLC64/0a4OXD7vHTMra3SnoSmFWe//6wzx5cvt7ZPbeTxB4Rfcn2yXu6DnVJV0xERPesZfs1seaU50YsI2kiMBNYP8pnx3LP7SSxR0R0zy3AkZLmSppM8TB0ybAyS4B3la/PAG607fL8gnLUzFzgSOAHY7znduRxNPNK0uPAjyp+bDawrobq9EusNn5NbY3Vxq9pV2MdZnv/OiqzuySdCnwCGAAus/2Xki4EltteImkqcAVwLPAEsMD2/eVn/wT4HWAr8D7b1+3onqPWYTwl9l0habnteYk1vuMkVu/EaXOsfpGumIiIlklij4homTYk9kU7L5JY4yBOYvVOnDbH6gs938ceERHba0OLPSIiOvRsYq+62tluxrpM0mOS7qo5ziGSbpJ0t6QVks6rMdZUST+QdGcZ68/rilXGG5B0u6Sv1RmnjPWgpB9KumPY9O9ux9lX0mJJ90haKekVNcU5qvxath1PSXpfHbHKeO8vfybuknRVOTyvjjjnlTFW1Pn19CXbPXdQjOW8D3gJMBm4Ezi6xnivBo4D7qr56zoIOK58vTfFHrG1fF2AgL3K15OAZcCJNX5tfwh8AfhaAz8fDwKzG4hzOfDu8vVkYN8GYg4Aj1CM467j/gcDDwDTyvdfAn6rhjjHAHcB0ymWNvkWcETd379+OXq1xV55tbPdYftmiokEtbL9sO3bytdPAyt5YRGgbsey7WfKt5PKo5YHLpLmAG8CLqnj/nuCpJkUv/AvBbC92c1s/TgfuM921Yl8VUwEppXT3acDP64hxs8Dy2w/a3sr8B2KfZGjC3o1sY+0glotCXBPKRffP5aiJV1XjAFJdwCPAd+0XVesTwB/BDS1XY2BGyTdKmlhTTHmAo8Dny27mC6RNKOmWJ0WAFfVdXPba4GPAQ8BDwNP2r6hhlB3Aa+SNEvSdOBUtl8PJXZDryb2VpO0F3ANxZTip+qKY3vQ9ssoFhU6QdIx3Y4h6c3AY7Zv7fa9R3GS7eMoNib4fUmvriHGRIruuc/YPhbYCNT9rGcycBrwTzXG2I/iX79zgRcDMyS9o9txbK+k2GDiBuAbwB3AYLfj9KteTeyVVzvrFZImUST1z9u+tomYZRfCTRS7tnTbK4HTJD1I0WX2OklX1hDnp8pWJ7YfA75M0XXXbWuANR3/yllMkejrdApwm+1Ha4zxa8C0g9TDAAACeElEQVQDth+3vQW4FviVOgLZvtT28bZfDWygeKYUXdCrib3yame9oNxF5VJgpe2P1xxrf0n7lq+nAa8H7ul2HNsftD3H9uEUf0432u56C3AbSTMk7b3tNfAGin/2d5XtR4DVko4qT80H7u52nGHOosZumNJDwImSppc/j/MpnvV0naQDyv8fStG//oU64vSjntxow8WuI+cC1/PCamcr6oon6SrgNcBsSWuAC2xfWkOoVwJnAz8s+74B/tj20hpiHQRcXu6nOAH4ku3ahyI24EDgy0VOYiLwBdvfqCnWe4HPl42L+4HfrinOtl9Srwd+t64YALaXSVoM3EaxwuDt1Dcz9BpJs4AtwO839PC5L2TmaUREy/RqV0xEROxAEntERMsksUdEtEwSe0REyySxR0S0TBJ7RETLJLHHuCFpmqTvlGPrR7o+WdLN5eJUEbEDSewxnvwOcK3tEdcMKVfy/DbwtkZrFdFjkthjPPlN4J8l7SXp25JuKzfM6FyS+StluYjYgcw8jXGhnJb/kO2f2bYOuO2nJM0Gvg8cadtlN80jtvffoxWOGMfSVxnjxWxg21ohAv6qXG53iGKt/QMpEvqgpM2S9i43I4mIYZLYY7x4Dti2t+ZvAvsDx9veUi7527nv5hRgU7PVi+gd6WOPccH2BmCg3Dh5JsXmHFskvRY4bFu5cjXAdeVa4RExgrTYYzy5ATgJ+DzwVUk/BJaz/TrxrwW+vgfqFtEz8vA0xg1JxwHvt332KGWuBc63nd12InYgXTExbti+DbhptAlKwFeS1CNGlxZ7RETLpMUeEdEySewRES2TxB4R0TJJ7BERLZPEHhHRMv8f5LdN8OemCy8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "hs5LtxsodPdA", "colab_type": "code", "outputId": "b39f5d98-7a91-4f6d-b77d-b50550bf3864", "colab": { "base_uri": "https://localhost:8080/", "height": 34 } }, "source": [ "print(\"Accuray baseline \", np.trace(p_confusion_test))" ], "execution_count": 48, "outputs": [ { "output_type": "stream", "text": [ "('Accuray baseline ', 0.18265235950808717)\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "TMfMFqVWU4J-", "colab_type": "code", "outputId": "61eddd0d-1f56-4cca-e4ce-b7a32d8d1f0a", "colab": { "base_uri": "https://localhost:8080/", "height": 346 } }, "source": [ "p_confusion_ours = ConfusionOurs(x_test, y_test_cat, fashion_mnist_h0)\n", "PlotConfusionMatrix(p_confusion_ours, 'fashion_mnist_confusion_ours.png', '(c)')" ], "execution_count": 50, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "xKDie-JbboXA", "colab_type": "code", "outputId": "c07cb90f-e4af-458e-ec5e-4acccec8bc8c", "colab": { "base_uri": "https://localhost:8080/", "height": 34 } }, "source": [ "print(\"Accuray ours \", np.trace(p_confusion_ours))" ], "execution_count": 51, "outputs": [ { "output_type": "stream", "text": [ "('Accuray ours ', 0.3616346100243441)\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "FJbY5xr3x1hb", "colab_type": "code", "outputId": "12a54534-a29c-4997-8a6f-a765f5c55b20", "colab": { "base_uri": "https://localhost:8080/", "height": 309 } }, "source": [ "test_indices = [0, 2]\n", "dec_samples = DecomposeSamples(fashion_mnist_h0, x_test, test_indices)\n", "PlotSamples(x_test[test_indices, :, :], dec_samples, 'fashion_mnist_projection.png', figsize=(18, 1.5 * (len(test_indices) + 1)), xlabel='(a)')" ], "execution_count": 53, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "e-1WGHLgLfXI", "colab_type": "text" }, "source": [ "##MNIST" ] }, { "cell_type": "code", "metadata": { "id": "BCdP3eiNIjPv", "colab_type": "code", "outputId": "0e91f009-6172-4f21-bfb8-552ca5b6bc07", "colab": { "base_uri": "https://localhost:8080/", "height": 375 } }, "source": [ "# Most likely class for each photon arrival location (figure 2(b).)\n", "\n", "x_train, y_train_cat, x_test, y_test_cat = ReadSets(DATASET_MNIST, NUM_CLASSES)\n", "x_train_most_likely_pixel_cat, x_train_prob = MostLikelyCategory(x_train, y_train_cat)\n", "PlotPixelMap(x_train_most_likely_pixel_cat, x_train_prob, 'mnist_map.png', '(b)')" ], "execution_count": 32, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "-FCibnp49mSq", "colab_type": "code", "outputId": "c10eb779-ab50-4255-8b5a-1cfcd1c033e5", "colab": { "base_uri": "https://localhost:8080/", "height": 346 } }, "source": [ "# Confusion matrix (figure 3(b).)\n", "\n", "p_confusion_test = Confusion(x_test, y_test_cat, x_train_most_likely_pixel_cat)\n", "PlotConfusionMatrix(p_confusion_test, 'mnist_confusion.png', '(b)')" ], "execution_count": 33, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "2ygd-Ll-ddS2", "colab_type": "code", "outputId": "5883d0de-7b9b-48db-efa6-702c2f7ddd9a", "colab": { "base_uri": "https://localhost:8080/", "height": 34 } }, "source": [ "print(\"Accuray baseline \", np.trace(p_confusion_test))" ], "execution_count": 34, "outputs": [ { "output_type": "stream", "text": [ "('Accuray baseline ', 0.21269599054501545)\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "g4JnwN5fDguH", "colab_type": "code", "outputId": "82c83e90-ca98-412d-d28b-578aadc9e14a", "colab": { "base_uri": "https://localhost:8080/", "height": 346 } }, "source": [ "p_confusion_ours = ConfusionOurs(x_test, y_test_cat, mnist_h0)\n", "PlotConfusionMatrix(p_confusion_ours, 'mnist_confusion_ours.png', '(d)')" ], "execution_count": 35, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "C-UxyX-Oa84c", "colab_type": "code", "outputId": "5a9632a4-74a6-4fe9-bff7-e8d1e8fc9b77", "colab": { "base_uri": "https://localhost:8080/", "height": 34 } }, "source": [ "print(\"Accuray ours \", np.trace(p_confusion_ours))" ], "execution_count": 36, "outputs": [ { "output_type": "stream", "text": [ "('Accuray ours ', 0.4129158414979361)\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "Dogn7No9sDAl", "colab_type": "code", "outputId": "0a5699c6-dc1c-472e-d2ac-1f6c776aef5a", "colab": { "base_uri": "https://localhost:8080/", "height": 309 } }, "source": [ "# Visualize decomposition of some test instances with respect to the set of\n", "# projectors.\n", "\n", "test_indices = [0, 3] # These are indexes used for the decomposition.\n", "dec_samples = DecomposeSamples(mnist_h0, x_test, test_indices)\n", "PlotSamples(x_test[test_indices, :, :], dec_samples, 'mnist_projection.png', figsize=(18, 1.5 * (len(test_indices) + 1)), xlabel='(b)')" ], "execution_count": 45, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "PKH2yel6LyNx", "colab_type": "text" }, "source": [ "#An example of factorization\n", "\n", "Below, we give an example of a 'measurement' of an atom spin." ] }, { "cell_type": "code", "metadata": { "id": "dk7_9jbiizn8", "colab_type": "code", "outputId": "01be48cd-56dd-4817-f10b-a6b97b578781", "colab": { "base_uri": "https://localhost:8080/", "height": 102 } }, "source": [ "import numpy as np\n", "import math\n", "import scipy.linalg\n", "\n", "# Initial psi atom.\n", "atom_initial_up = np.array([1.0, 0.0])\n", "atom_initial_down = np.array([0.0, 1.0])\n", "c = np.sqrt([0.9, 0.1])\n", "atom_initial = c[0] * atom_initial_up + c[1] * atom_initial_down\n", "# Initial psi apparatus\n", "apparatus_initial = np.array([0.0, 1.0, 0.0, 0.0])\n", "\n", "# Initial joint psi atom-apparatus.\n", "all_initial = np.einsum('a,A->aA', atom_initial, apparatus_initial).reshape(-1)\n", "print(\"psi_all_initial = \", all_initial)\n", "\n", "# We model the interaction between atom and apparatus with a rotation (this\n", "# represents the solution of the Schroedinger equation modeling the\n", "# interaction.)\n", "rng = np.random.RandomState(seed=0)\n", "gen0 = rng.normal(size=(8, 8))\n", "gen = gen0 - gen0.T\n", "rotation = scipy.linalg.expm(gen)\n", "\n", "# Final state after the interaction.\n", "all_final = np.dot(rotation, all_initial)\n", "\n", "print(\"psi_all_final = \", all_final.round(3))\n", "\n", "xstate = lambda atom, app: np.einsum('a,A->aA', atom, app).reshape(-1)\n", "normalized = lambda v: v / (v*v).sum()**.5\n", "\n", "# Apparatus state when spin up is observed.\n", "apparatus_up = normalized(all_final[0:4])\n", "# Apparatus state when spin down is observed.\n", "apparatus_down = normalized(all_final[4:])\n", "# Probability amplitudes of observing spin up or down\n", "alpha = all_final[0] / apparatus_up[0]\n", "beta = all_final[4] / apparatus_down[0]\n", "print(\"Factorization of psi_all_final \",\n", " alpha * xstate([1.0, 0.0], apparatus_up) +\n", " beta * xstate([0.0, 1.0], apparatus_down))\n", "print(\"apparatus_up \", apparatus_up)\n", "print(\"apparatus_down \", apparatus_down)\n", " " ], "execution_count": 54, "outputs": [ { "output_type": "stream", "text": [ "('psi_all_initial = ', array([0. , 0.9486833 , 0. , 0. , 0. , 0.31622777, 0. , 0. ]))\n", "('psi_all_final = ', array([ 0.434, 0.011, -0.452, 0.104, 0.528, -0.283, 0.266, 0.409]))\n", "('Factorization of psi_all_final ', array([ 0.43440705, 0.01062998, -0.45171184, 0.10402607, 0.52768409, -0.28319551, 0.26581982, 0.40865894]))\n", "('apparatus_up ', array([ 0.68371361, 0.01673054, -0.71094962, 0.16372671]))\n", "('apparatus_down ', array([ 0.68334031, -0.36673251, 0.34423134, 0.52920514]))\n" ], "name": "stdout" } ] } ] }