{ "cells": [ { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "xLOXFOT5Q40E" }, "source": [ "##### Copyright 2020 The TensorFlow Authors." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:24:49.593161Z", "iopub.status.busy": "2024-05-18T11:24:49.592635Z", "iopub.status.idle": "2024-05-18T11:24:49.596618Z", "shell.execute_reply": "2024-05-18T11:24:49.595973Z" }, "id": "iiQkM5ZgQ8r2" }, "outputs": [], "source": [ "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", "# https://www.apache.org/licenses/LICENSE-2.0\n", "#\n", "# Unless required by applicable law or agreed to in writing, software\n", "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "# See the License for the specific language governing permissions and\n", "# limitations under the License." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "j6331ZSsQGY3" }, "source": [ "# Calculate gradients" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "i9Jcnb8bQQyd" }, "source": [ "\n", " \n", " \n", " \n", " \n", "
\n", " View on TensorFlow.org\n", " \n", " Run in Google Colab\n", " \n", " View source on GitHub\n", " \n", " Download notebook\n", "
" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "FxkQA6oblNqI" }, "source": [ "This tutorial explores gradient calculation algorithms for the expectation values of quantum circuits.\n", "\n", "Calculating the gradient of the expectation value of a certain observable in a quantum circuit is an involved process. Expectation values of observables do not have the luxury of having analytic gradient formulas that are always easy to write down—unlike traditional machine learning transformations such as matrix multiplication or vector addition that have analytic gradient formulas which are easy to write down. As a result, there are different quantum gradient calculation methods that come in handy for different scenarios. This tutorial compares and contrasts two different differentiation schemes." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "pvG0gAJqGYJo" }, "source": [ "## Setup" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:24:49.600376Z", "iopub.status.busy": "2024-05-18T11:24:49.599868Z", "iopub.status.idle": "2024-05-18T11:25:14.741654Z", "shell.execute_reply": "2024-05-18T11:25:14.740710Z" }, "id": "TorxE5tnkvb2" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting tensorflow==2.15.0\r\n", " Using cached tensorflow-2.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.4 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: absl-py>=1.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (2.1.0)\r\n", "Requirement already satisfied: astunparse>=1.6.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (1.6.3)\r\n", "Requirement already satisfied: flatbuffers>=23.5.26 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (24.3.25)\r\n", "Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (0.5.4)\r\n", "Requirement already satisfied: google-pasta>=0.1.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (0.2.0)\r\n", "Requirement already satisfied: h5py>=2.9.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (3.11.0)\r\n", "Requirement already satisfied: libclang>=13.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (18.1.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting ml-dtypes~=0.2.0 (from tensorflow==2.15.0)\r\n", " Using cached ml_dtypes-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (20 kB)\r\n", "Requirement already satisfied: numpy<2.0.0,>=1.23.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (1.26.4)\r\n", "Requirement already satisfied: opt-einsum>=2.3.2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (3.3.0)\r\n", "Requirement already satisfied: packaging in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (24.0)\r\n", "Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (3.20.3)\r\n", "Requirement already satisfied: setuptools in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (69.5.1)\r\n", "Requirement already satisfied: six>=1.12.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (1.16.0)\r\n", "Requirement already satisfied: termcolor>=1.1.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (2.4.0)\r\n", "Requirement already satisfied: typing-extensions>=3.6.6 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (4.12.0rc1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting wrapt<1.15,>=1.11.0 (from tensorflow==2.15.0)\r\n", " Using cached wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.7 kB)\r\n", "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (0.37.0)\r\n", "Requirement already satisfied: grpcio<2.0,>=1.24.3 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (1.64.0rc1)\r\n", "Collecting tensorboard<2.16,>=2.15 (from tensorflow==2.15.0)\r\n", " Using cached tensorboard-2.15.2-py3-none-any.whl.metadata (1.7 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting tensorflow-estimator<2.16,>=2.15.0 (from tensorflow==2.15.0)\r\n", " Using cached tensorflow_estimator-2.15.0-py2.py3-none-any.whl.metadata (1.3 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting keras<2.16,>=2.15.0 (from tensorflow==2.15.0)\r\n", " Using cached keras-2.15.0-py3-none-any.whl.metadata (2.4 kB)\r\n", "Requirement already satisfied: wheel<1.0,>=0.23.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from astunparse>=1.6.0->tensorflow==2.15.0) (0.41.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting google-auth<3,>=1.6.3 (from tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached google_auth-2.29.0-py2.py3-none-any.whl.metadata (4.7 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting google-auth-oauthlib<2,>=0.5 (from tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached google_auth_oauthlib-1.2.0-py2.py3-none-any.whl.metadata (2.7 kB)\r\n", "Requirement already satisfied: markdown>=2.6.8 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow==2.15.0) (3.6)\r\n", "Requirement already satisfied: requests<3,>=2.21.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow==2.15.0) (2.31.0)\r\n", "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow==2.15.0) (0.7.2)\r\n", "Requirement already satisfied: werkzeug>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow==2.15.0) (3.0.3)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (5.3.3)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting pyasn1-modules>=0.2.1 (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached pyasn1_modules-0.4.0-py3-none-any.whl.metadata (3.4 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting rsa<5,>=3.1.4 (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached rsa-4.9-py3-none-any.whl.metadata (4.2 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting requests-oauthlib>=0.7.0 (from google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached requests_oauthlib-2.0.0-py2.py3-none-any.whl.metadata (11 kB)\r\n", "Requirement already satisfied: importlib-metadata>=4.4 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from markdown>=2.6.8->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (7.1.0)\r\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (3.3.2)\r\n", "Requirement already satisfied: idna<4,>=2.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (3.7)\r\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (2.2.1)\r\n", "Requirement already satisfied: certifi>=2017.4.17 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (2024.2.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: MarkupSafe>=2.1.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from werkzeug>=1.0.1->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (2.1.5)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: zipp>=0.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from importlib-metadata>=4.4->markdown>=2.6.8->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (3.18.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting pyasn1<0.7.0,>=0.4.6 (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached pyasn1-0.6.0-py2.py3-none-any.whl.metadata (8.3 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting oauthlib>=3.0.0 (from requests-oauthlib>=0.7.0->google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached oauthlib-3.2.2-py3-none-any.whl.metadata (7.5 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Using cached tensorflow-2.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (475.2 MB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Using cached keras-2.15.0-py3-none-any.whl (1.7 MB)\r\n", "Using cached ml_dtypes-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB)\r\n", "Using cached tensorboard-2.15.2-py3-none-any.whl (5.5 MB)\r\n", "Using cached tensorflow_estimator-2.15.0-py2.py3-none-any.whl (441 kB)\r\n", "Using cached wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (77 kB)\r\n", "Using cached google_auth-2.29.0-py2.py3-none-any.whl (189 kB)\r\n", "Using cached google_auth_oauthlib-1.2.0-py2.py3-none-any.whl (24 kB)\r\n", "Using cached pyasn1_modules-0.4.0-py3-none-any.whl (181 kB)\r\n", "Using cached requests_oauthlib-2.0.0-py2.py3-none-any.whl (24 kB)\r\n", "Using cached rsa-4.9-py3-none-any.whl (34 kB)\r\n", "Using cached oauthlib-3.2.2-py3-none-any.whl (151 kB)\r\n", "Using cached pyasn1-0.6.0-py2.py3-none-any.whl (85 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Installing collected packages: wrapt, tensorflow-estimator, pyasn1, oauthlib, ml-dtypes, keras, rsa, requests-oauthlib, pyasn1-modules, google-auth, google-auth-oauthlib, tensorboard, tensorflow\r\n", " Attempting uninstall: wrapt\r\n", " Found existing installation: wrapt 1.16.0\r\n", " Uninstalling wrapt-1.16.0:\r\n", " Successfully uninstalled wrapt-1.16.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: ml-dtypes\r\n", " Found existing installation: ml-dtypes 0.3.2\r\n", " Uninstalling ml-dtypes-0.3.2:\r\n", " Successfully uninstalled ml-dtypes-0.3.2\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: keras\r\n", " Found existing installation: keras 3.3.3\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Uninstalling keras-3.3.3:\r\n", " Successfully uninstalled keras-3.3.3\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: tensorboard\r\n", " Found existing installation: tensorboard 2.16.2\r\n", " Uninstalling tensorboard-2.16.2:\r\n", " Successfully uninstalled tensorboard-2.16.2\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: tensorflow\r\n", " Found existing installation: tensorflow 2.16.1\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Uninstalling tensorflow-2.16.1:\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Successfully uninstalled tensorflow-2.16.1\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\r\n", "tf-keras 2.16.0 requires tensorflow<2.17,>=2.16, but you have tensorflow 2.15.0 which is incompatible.\u001b[0m\u001b[31m\r\n", "\u001b[0mSuccessfully installed google-auth-2.29.0 google-auth-oauthlib-1.2.0 keras-2.15.0 ml-dtypes-0.2.0 oauthlib-3.2.2 pyasn1-0.6.0 pyasn1-modules-0.4.0 requests-oauthlib-2.0.0 rsa-4.9 tensorboard-2.15.2 tensorflow-2.15.0 tensorflow-estimator-2.15.0 wrapt-1.14.1\r\n" ] } ], "source": [ "!pip install tensorflow==2.15.0" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "OIbP5hklC338" }, "source": [ "Install TensorFlow Quantum:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:14.746273Z", "iopub.status.busy": "2024-05-18T11:25:14.745564Z", "iopub.status.idle": "2024-05-18T11:25:26.958809Z", "shell.execute_reply": "2024-05-18T11:25:26.957845Z" }, "id": "saFHsRDpkvkH" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting tensorflow-quantum==0.7.3\r\n", " Using cached tensorflow_quantum-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.7 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting cirq-core==1.3.0 (from tensorflow-quantum==0.7.3)\r\n", " Using cached cirq_core-1.3.0-py3-none-any.whl.metadata (1.9 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting cirq-google==1.3.0 (from tensorflow-quantum==0.7.3)\r\n", " Using cached cirq_google-1.3.0-py3-none-any.whl.metadata (2.0 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting sympy==1.12 (from tensorflow-quantum==0.7.3)\r\n", " Using cached sympy-1.12-py3-none-any.whl.metadata (12 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting duet~=0.2.8 (from cirq-core==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached duet-0.2.9-py3-none-any.whl.metadata (2.3 kB)\r\n", "Requirement already satisfied: matplotlib~=3.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (3.9.0)\r\n", "Requirement already satisfied: networkx>=2.4 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (3.2.1)\r\n", "Requirement already satisfied: numpy~=1.16 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.26.4)\r\n", "Requirement already satisfied: pandas in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (2.2.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting sortedcontainers~=2.0 (from cirq-core==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl.metadata (10 kB)\r\n", "Requirement already satisfied: scipy in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.13.0)\r\n", "Requirement already satisfied: typing-extensions>=4.2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (4.12.0rc1)\r\n", "Requirement already satisfied: tqdm in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (4.66.4)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting google-api-core>=1.14.0 (from google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached google_api_core-2.19.0-py3-none-any.whl.metadata (2.7 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting proto-plus>=1.20.0 (from cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached proto_plus-1.23.0-py3-none-any.whl.metadata (2.2 kB)\r\n", "Requirement already satisfied: protobuf>=3.15.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-google==1.3.0->tensorflow-quantum==0.7.3) (3.20.3)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting mpmath>=0.19 (from sympy==1.12->tensorflow-quantum==0.7.3)\r\n", " Using cached mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting googleapis-common-protos<2.0.dev0,>=1.56.2 (from google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached googleapis_common_protos-1.63.0-py2.py3-none-any.whl.metadata (1.5 kB)\r\n", "Requirement already satisfied: google-auth<3.0.dev0,>=2.14.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (2.29.0)\r\n", "Requirement already satisfied: requests<3.0.0.dev0,>=2.18.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (2.31.0)\r\n", "Requirement already satisfied: grpcio<2.0dev,>=1.33.2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (1.64.0rc1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting grpcio-status<2.0.dev0,>=1.33.2 (from google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Using cached grpcio_status-1.63.0-py3-none-any.whl.metadata (1.1 kB)\r\n", "Requirement already satisfied: contourpy>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.2.1)\r\n", "Requirement already satisfied: cycler>=0.10 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (0.12.1)\r\n", "Requirement already satisfied: fonttools>=4.22.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (4.51.0)\r\n", "Requirement already satisfied: kiwisolver>=1.3.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.4.5)\r\n", "Requirement already satisfied: packaging>=20.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (24.0)\r\n", "Requirement already satisfied: pillow>=8 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (10.3.0)\r\n", "Requirement already satisfied: pyparsing>=2.3.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (3.1.2)\r\n", "Requirement already satisfied: python-dateutil>=2.7 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (2.9.0.post0)\r\n", "Requirement already satisfied: importlib-resources>=3.2.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (6.4.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pytz>=2020.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from pandas->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (2024.1)\r\n", "Requirement already satisfied: tzdata>=2022.7 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from pandas->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (2024.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3.0.dev0,>=2.14.1->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (5.3.3)\r\n", "Requirement already satisfied: pyasn1-modules>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3.0.dev0,>=2.14.1->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (0.4.0)\r\n", "Requirement already satisfied: rsa<5,>=3.1.4 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3.0.dev0,>=2.14.1->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (4.9)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO: pip is looking at multiple versions of grpcio-status to determine which version is compatible with other requirements. This could take a while.\r\n", " Using cached grpcio_status-1.62.2-py3-none-any.whl.metadata (1.3 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting protobuf>=3.15.0 (from cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl.metadata (541 bytes)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: zipp>=3.1.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (3.18.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: six>=1.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.16.0)\r\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3.0.0.dev0,>=2.18.0->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (3.3.2)\r\n", "Requirement already satisfied: idna<4,>=2.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3.0.0.dev0,>=2.18.0->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (3.7)\r\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3.0.0.dev0,>=2.18.0->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (2.2.1)\r\n", "Requirement already satisfied: certifi>=2017.4.17 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3.0.0.dev0,>=2.18.0->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (2024.2.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth<3.0.dev0,>=2.14.1->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (0.6.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Using cached tensorflow_quantum-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.8 MB)\r\n", "Using cached cirq_core-1.3.0-py3-none-any.whl (1.8 MB)\r\n", "Using cached cirq_google-1.3.0-py3-none-any.whl (598 kB)\r\n", "Using cached sympy-1.12-py3-none-any.whl (5.7 MB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Using cached duet-0.2.9-py3-none-any.whl (29 kB)\r\n", "Using cached google_api_core-2.19.0-py3-none-any.whl (139 kB)\r\n", "Using cached mpmath-1.3.0-py3-none-any.whl (536 kB)\r\n", "Using cached proto_plus-1.23.0-py3-none-any.whl (48 kB)\r\n", "Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)\r\n", "Using cached googleapis_common_protos-1.63.0-py2.py3-none-any.whl (229 kB)\r\n", "Using cached grpcio_status-1.62.2-py3-none-any.whl (14 kB)\r\n", "Using cached protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl (294 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Installing collected packages: sortedcontainers, mpmath, sympy, protobuf, duet, proto-plus, googleapis-common-protos, grpcio-status, google-api-core, cirq-core, cirq-google, tensorflow-quantum\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: protobuf\r\n", " Found existing installation: protobuf 3.20.3\r\n", " Uninstalling protobuf-3.20.3:\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Successfully uninstalled protobuf-3.20.3\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\r\n", "tensorflow-metadata 1.15.0 requires protobuf<4.21,>=3.20.3; python_version < \"3.11\", but you have protobuf 4.25.3 which is incompatible.\r\n", "tf-keras 2.16.0 requires tensorflow<2.17,>=2.16, but you have tensorflow 2.15.0 which is incompatible.\u001b[0m\u001b[31m\r\n", "\u001b[0mSuccessfully installed cirq-core-1.3.0 cirq-google-1.3.0 duet-0.2.9 google-api-core-2.19.0 googleapis-common-protos-1.63.0 grpcio-status-1.62.2 mpmath-1.3.0 proto-plus-1.23.0 protobuf-4.25.3 sortedcontainers-2.4.0 sympy-1.12 tensorflow-quantum-0.7.3\r\n" ] } ], "source": [ "!pip install tensorflow-quantum==0.7.3" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:26.963246Z", "iopub.status.busy": "2024-05-18T11:25:26.962528Z", "iopub.status.idle": "2024-05-18T11:25:27.063010Z", "shell.execute_reply": "2024-05-18T11:25:27.062387Z" }, "id": "4Ql5PW-ACO0J" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/tmp/ipykernel_13801/1875984233.py:2: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html\n", " import importlib, pkg_resources\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Update package resources to account for version changes.\n", "import importlib, pkg_resources\n", "importlib.reload(pkg_resources)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "MkTqyoSxGUfB" }, "source": [ "Now import TensorFlow and the module dependencies:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:27.066894Z", "iopub.status.busy": "2024-05-18T11:25:27.066347Z", "iopub.status.idle": "2024-05-18T11:25:30.948822Z", "shell.execute_reply": "2024-05-18T11:25:30.947896Z" }, "id": "enZ300Bflq80" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2024-05-18 11:25:27.526147: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n", "2024-05-18 11:25:27.526190: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n", "2024-05-18 11:25:27.527683: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2024-05-18 11:25:30.854843: E external/local_xla/xla/stream_executor/cuda/cuda_driver.cc:274] failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected\n" ] } ], "source": [ "import tensorflow as tf\n", "import tensorflow_quantum as tfq\n", "\n", "import cirq\n", "import sympy\n", "import numpy as np\n", "\n", "# visualization tools\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "from cirq.contrib.svg import SVGCircuit" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "b08Mmbs8lr81" }, "source": [ "## 1. Preliminary\n", "\n", "Let's make the notion of gradient calculation for quantum circuits a little more concrete. Suppose you have a parameterized circuit like this one:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:30.953781Z", "iopub.status.busy": "2024-05-18T11:25:30.952348Z", "iopub.status.idle": "2024-05-18T11:25:31.004232Z", "shell.execute_reply": "2024-05-18T11:25:31.003587Z" }, "id": "YkPYJ_Ak-GKu" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "data": { "image/svg+xml": [ "(0, 0): Y^alpha" ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qubit = cirq.GridQubit(0, 0)\n", "my_circuit = cirq.Circuit(cirq.Y(qubit)**sympy.Symbol('alpha'))\n", "SVGCircuit(my_circuit)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "wgQIlCWy-MVr" }, "source": [ "Along with an observable:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:31.007718Z", "iopub.status.busy": "2024-05-18T11:25:31.007133Z", "iopub.status.idle": "2024-05-18T11:25:31.011969Z", "shell.execute_reply": "2024-05-18T11:25:31.011334Z" }, "id": "xurmJdFy-Jae" }, "outputs": [ { "data": { "text/plain": [ "cirq.X(cirq.GridQubit(0, 0))" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pauli_x = cirq.X(qubit)\n", "pauli_x" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "j3OzKYe5NT_W" }, "source": [ "Looking at this operator you know that $⟨Y(\\alpha)| X | Y(\\alpha)⟩ = \\sin(\\pi \\alpha)$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:31.015334Z", "iopub.status.busy": "2024-05-18T11:25:31.014791Z", "iopub.status.idle": "2024-05-18T11:25:31.023138Z", "shell.execute_reply": "2024-05-18T11:25:31.022469Z" }, "id": "Ps-pd2mndXs7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Expectation= 0.80901700258255\n", "Sin Formula= 0.8090169943749475\n" ] } ], "source": [ "def my_expectation(op, alpha):\n", " \"\"\"Compute ⟨Y(alpha)| `op` | Y(alpha)⟩\"\"\"\n", " params = {'alpha': alpha}\n", " sim = cirq.Simulator()\n", " final_state_vector = sim.simulate(my_circuit, params).final_state_vector\n", " return op.expectation_from_state_vector(final_state_vector, {qubit: 0}).real\n", "\n", "\n", "my_alpha = 0.3\n", "print(\"Expectation=\", my_expectation(pauli_x, my_alpha))\n", "print(\"Sin Formula=\", np.sin(np.pi * my_alpha))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "zcCX109cJUaz" }, "source": [ " and if you define $f_{1}(\\alpha) = ⟨Y(\\alpha)| X | Y(\\alpha)⟩$ then $f_{1}^{'}(\\alpha) = \\pi \\cos(\\pi \\alpha)$. Let's check this:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:31.026393Z", "iopub.status.busy": "2024-05-18T11:25:31.025931Z", "iopub.status.idle": "2024-05-18T11:25:31.033150Z", "shell.execute_reply": "2024-05-18T11:25:31.032486Z" }, "id": "VMq7EayNRyQb" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Finite difference: 1.8063604831695557\n", "Cosine formula: 1.8465818304904567\n" ] } ], "source": [ "def my_grad(obs, alpha, eps=0.01):\n", " grad = 0\n", " f_x = my_expectation(obs, alpha)\n", " f_x_prime = my_expectation(obs, alpha + eps)\n", " return ((f_x_prime - f_x) / eps).real\n", "\n", "\n", "print('Finite difference:', my_grad(pauli_x, my_alpha))\n", "print('Cosine formula: ', np.pi * np.cos(np.pi * my_alpha))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "-SUlLpXBeicF" }, "source": [ "## 2. The need for a differentiator\n", "\n", "With larger circuits, you won't always be so lucky to have a formula that precisely calculates the gradients of a given quantum circuit. In the event that a simple formula isn't enough to calculate the gradient, the `tfq.differentiators.Differentiator` class allows you to define algorithms for computing the gradients of your circuits. For instance you can recreate the above example in TensorFlow Quantum (TFQ) with:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:31.036487Z", "iopub.status.busy": "2024-05-18T11:25:31.035974Z", "iopub.status.idle": "2024-05-18T11:25:31.081301Z", "shell.execute_reply": "2024-05-18T11:25:31.080670Z" }, "id": "Om76ZLu8NT_i" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expectation_calculation = tfq.layers.Expectation(\n", " differentiator=tfq.differentiators.ForwardDifference(grid_spacing=0.01))\n", "\n", "expectation_calculation(my_circuit,\n", " operators=pauli_x,\n", " symbol_names=['alpha'],\n", " symbol_values=[[my_alpha]])" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "lx3y2DX9NT_k" }, "source": [ "However, if you switch to estimating expectation based on sampling (what would happen on a true device) the values can change a little bit. This means you now have an imperfect estimate:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:31.084679Z", "iopub.status.busy": "2024-05-18T11:25:31.084096Z", "iopub.status.idle": "2024-05-18T11:25:31.102791Z", "shell.execute_reply": "2024-05-18T11:25:31.102160Z" }, "id": "v27rRyAHNT_l" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sampled_expectation_calculation = tfq.layers.SampledExpectation(\n", " differentiator=tfq.differentiators.ForwardDifference(grid_spacing=0.01))\n", "\n", "sampled_expectation_calculation(my_circuit,\n", " operators=pauli_x,\n", " repetitions=500,\n", " symbol_names=['alpha'],\n", " symbol_values=[[my_alpha]])" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Igwa3EnzNT_p" }, "source": [ "This can quickly compound into a serious accuracy problem when it comes to gradients:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:31.106156Z", "iopub.status.busy": "2024-05-18T11:25:31.105624Z", "iopub.status.idle": "2024-05-18T11:25:31.467939Z", "shell.execute_reply": "2024-05-18T11:25:31.467202Z" }, "id": "StljXH38NT_q" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAHHCAYAAACiOWx7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACmZElEQVR4nOzdeXxU5fX48c+dmWSyTib7vrCGsG+KbGoFAaUuv1oVl1KtYrVi6/K1li7aaqu1tXZRq60Vq1XrUvcNRQRBQUAQEEjClpB9XyZ7MjP398edDAQC2XNnOe/Xa14yN3funIlJ5szznOc8iqqqKkIIIYQQ4rQMegcghBBCCOENJGkSQgghhOgFSZqEEEIIIXpBkiYhhBBCiF6QpEkIIYQQohckaRJCCCGE6AVJmoQQQgghekGSJiGEEEKIXpCkSQghhBCiFyRpEkL4nA0bNqAoChs2bNA7FI+VkZHBddddp3cYQngVSZqE8GH//ve/URSl29vPfvYzvcPT3Ynfn6CgIMaOHcvKlSspLy/XOzwAHn30URRF4ZNPPjnlOU8//TSKovDOO+8MY2RC+B+T3gEIIYbe/fffz4gRI7ocmzhxok7ReJ7O709rayuff/45Tz75JB988AF79+4lJCRE19iWLVvG3XffzUsvvcTChQu7Peell14iOjqaCy64YJijE8K/SNIkhB+44IILmDlz5qBft6mpidDQ0EG/bk9UVaW1tZXg4OBBud7x358bb7yR6OhoHn30Ud5++22uuuqqQXmO/kpKSuJb3/oWb7zxBk8++SRms7nL14uLi9m4cSM33XQTAQEBOkUphH+Q6TkhBJ9++inz588nNDQUq9XKJZdcQnZ2dpdzfv3rX6MoCvv37+fqq68mMjKSefPm8c4776AoCnv27HGf+/rrr6MoCt/5zne6XCMrK4srr7zSff/ZZ5/lvPPOIy4uDrPZzPjx43nyySdPii8jI4Nvf/vbfPTRR8ycOZPg4GD+8Y9/AFBUVMSll15KaGgocXFx3HHHHbS1tQ3o+3HeeecBkJeXB8AjjzzCnDlziI6OJjg4mBkzZvC///3vpMetXbuWefPmYbVaCQsLIzMzk5///OddznnssceYMGECISEhREZGMnPmTF566aXTxnPttddSX1/P+++/f9LXXn75ZZxOJ9dcc02fYj1R5//fE3VOYebn53c5/uGHH7p/ZsLDw1m6dCn79u3rck5ZWRnXX389KSkpmM1mEhMTueSSS066lhDeQkaahPAD9fX1VFVVdTkWExMDwCeffMIFF1zAyJEj+fWvf01LSwuPPfYYc+fOZefOnWRkZHR53OWXX86YMWN48MEHUVWVefPmoSgKGzduZPLkyQBs2rQJg8HA559/7n5cZWUlOTk5rFy50n3sySefZMKECVx88cWYTCbeffddfvSjH+F0Orn11lu7PG9ubi5XXXUVP/zhD1mxYgWZmZm0tLSwYMECCgoK+PGPf0xSUhL/+c9/+PTTTwf0/Tp8+DAA0dHRAPz1r3/l4osv5pprrqG9vZ2XX36Zyy+/nPfee4+lS5cCsG/fPr797W8zefJk7r//fsxmM4cOHeKLL75wX/fpp5/mxz/+Md/97nf5yU9+QmtrK3v27GHr1q1cffXVp4znO9/5DrfccgsvvfTSSYnoSy+9RHp6OnPnzu11rAP1n//8h+9///ssXryYhx9+mObmZp588knmzZvH119/7f6Zueyyy9i3bx+33XYbGRkZVFRUsHbtWgoKCk76uRLCK6hCCJ/17LPPqkC3t05Tp05V4+Li1Orqavex3bt3qwaDQV2+fLn72H333acC6lVXXXXS80yYMEG94oor3PenT5+uXn755SqgZmdnq6qqqm+88YYKqLt373af19zcfNK1Fi9erI4cObLLsfT0dBVQ16xZ0+X4X/7yFxVQX331VfexpqYmdfTo0Sqgrl+/vlffn08++UStrKxUCwsL1ZdfflmNjo5Wg4OD1aKiom7jbG9vVydOnKied9557mN//vOfVUCtrKw85fNdcskl6oQJE04b06lcfvnlalBQkFpfX+8+lpOTowLqqlWr3Md6E6uqat/T73//++77nf9/T9T5PcrLy1NVVVUbGhpUq9Wqrlixost5ZWVlakREhPt4bW2tCqh//OMf+/V6hfBEMj0nhB944oknWLt2bZcbQGlpKbt27eK6664jKirKff7kyZM5//zz+eCDD0661s0333zSsfnz57Np0yYAGhoa2L17NzfddBMxMTHu45s2bcJqtXYpQD++JqlzNOycc87hyJEj1NfXd3mOESNGsHjx4i7HPvjgAxITE/nud7/rPhYSEsJNN93U6+8NwMKFC4mNjSU1NZVly5YRFhbGm2++SXJy8klx1tbWUl9fz/z589m5c6f7uNVqBeDtt9/G6XR2+zxWq5WioiK2b9/ep/hAm6JrbW3ljTfecB/rnNbrnJrrbawDsXbtWurq6rjqqquoqqpy34xGI7NmzWL9+vXuOAIDA9mwYQO1tbWD8txC6E2SJiH8wJlnnsnChQu73ACOHj0KQGZm5kmPycrKoqqqiqampi7HT1yFB1rSVFpayqFDh9i8eTOKojB79uwuydSmTZuYO3cuBsOxPztffPEFCxcudNdSxcbGumuAukuaTnT06FFGjx59Ui1Od6/ndDqTyvXr17N//36OHDnSJUF77733OOusswgKCiIqKorY2FiefPLJLjFeeeWVzJ07lxtvvJH4+HiWLVvGq6++2iWBuueeewgLC+PMM89kzJgx3HrrrV2m707nggsuICoqqkv903//+1+mTJnChAkT+hTrQBw8eBDQ6r5iY2O73D7++GMqKioAMJvNPPzww3z44YfEx8dz9tln84c//IGysrJBiUMIPUjSJITok+5WrM2bNw+AjRs3smnTJqZPn05oaKg7aWpsbOTrr79m/vz57sccPnyYBQsWUFVVxaOPPsr777/P2rVrueOOOwBOGq0ZrJVy3elMKs8991yysrK6JHabNm3i4osvJigoiL///e988MEHrF27lquvvhpVVbvEt3HjRj755BO+973vsWfPHq688krOP/98HA4HoCWiubm5vPzyy8ybN4/XX3+defPmcd999/UYY0BAAFdccQWffvop5eXlbN++nYMHD3YZZeptrN3prggccMfeqfP/y3/+85+TRi/Xrl3L22+/7T739ttv58CBAzz00EMEBQXxq1/9iqysLL7++useX68QnkgKwYXwY+np6YBWZH2inJwcYmJietVSIC0tjbS0NDZt2sSRI0fcydHZZ5/NnXfeyWuvvYbD4eDss892P+bdd9+lra2Nd955h7S0NPfxzumd3sa/d+9eVFXt8qbf3evpr9dff52goCA++uijLsv9n3322ZPONRgMLFiwgAULFvDoo4/y4IMP8otf/IL169e7R/dCQ0O58sorufLKK2lvb+c73/kOv/vd71i1ahVBQUGnjeWaa67hqaee4pVXXiEvLw9FUbq0ROhLrCeKjIwEoK6uzj3VCMdGIzuNGjUKgLi4uFP2jTrx/Lvuuou77rqLgwcPMnXqVP70pz/xwgsv9PhYITyNjDQJ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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Make input_points = [batch_size, 1] array.\n", "input_points = np.linspace(0, 5, 200)[:, np.newaxis].astype(np.float32)\n", "exact_outputs = expectation_calculation(my_circuit,\n", " operators=pauli_x,\n", " symbol_names=['alpha'],\n", " symbol_values=input_points)\n", "imperfect_outputs = sampled_expectation_calculation(my_circuit,\n", " operators=pauli_x,\n", " repetitions=500,\n", " symbol_names=['alpha'],\n", " symbol_values=input_points)\n", "plt.title('Forward Pass Values')\n", "plt.xlabel('$x$')\n", "plt.ylabel('$f(x)$')\n", "plt.plot(input_points, exact_outputs, label='Analytic')\n", "plt.plot(input_points, imperfect_outputs, label='Sampled')\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:31.471478Z", "iopub.status.busy": "2024-05-18T11:25:31.470826Z", "iopub.status.idle": "2024-05-18T11:25:32.905195Z", "shell.execute_reply": "2024-05-18T11:25:32.904462Z" }, "id": "dfXObk7KNT_t" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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X3zxBS699FJNU8kxY8agTZs2mDx5Mm666SYIgoDXXnvNlrgsKirC+eefj2effRaCIKBXr16YO3duSP4TAMyYMQNjx47F4MGDcfXVV6Nnz56oqKjA4sWLsXPnTqxcuRIAMGDAAIwbNw7Dhw9HSUkJli5divfeew833nhjBJ8UQbRCklStRhBECrFx40bxuuuuE3v37i1mZ2eLOTk5Yr9+/cRrr71WXLFihWbbyZMni3l5eYavs3r1avGkk04S8/PzxXbt2olXX321uHLlypCSb1EUxffff1/s37+/6PF4xAEDBoj//e9/Q8rIRTG0fF4URbGiokK84YYbxPLyctHtdotlZWXiiSeeKP773/9WtmEl6O+++67muUYl6HV1deIll1wiFhcXG5bwm+H3+8WOHTuKAMRPP/005PFFixaJRx11lJiTkyN26tRJvP3228UvvvgipDTe6P/ev3+/eO6554q5ublimzZtxD/+8Y/i77//bvhZbtq0Sbz88svFsrIy0e12i507dxZPP/108b333lO2efDBB8WRI0eKxcXFyvf70EMPic3Nzbb+V4JorQii2MKMQYIgCIIgiDSFcoQIgiAIgshYSAgRBEEQBJGxkBAiCIIgCCJjISFEEARBEETGktZCaMGCBZg0aRI6deoEQRDw4Ycfah6fMmUKBEHQ/EyYMCE5O0sQBEEQRMqR1kKovr4eQ4cONVwQkjFhwgTs2bNH+XnzzTcTuIcEQRAEQaQyad1Q8dRTT8Wpp55quY3H40FZWVnU7xEMBrF7924UFBRE1YafIAiCIIjEI4oiamtr0alTp5C1EXnSWgjZYf78+Wjfvj3atGmDE044AQ8++CDatm1rur3X69W0nN+1axcGDBiQiF0lCIIgCCLG7Nixw7I7fqsWQhMmTMA555yDHj16YNOmTfjrX/+KU089FYsXLzZdkXr69Om47777Qu7fsWMHCgsL473LBEEQBEHEgJqaGpSXl6OgoMByu1bTWVoQBHzwwQc466yzTLfZvHkzevXqha+//honnnii4TZ6R4h9kNXV1SSECIIgCCJNqKmpQVFRUdjrd1onS0dKz5490a5dO2zcuNF0G4/Hg8LCQs0PQRAEQRCtk4wSQjt37kRlZSU6duyY7F0hCIIgCCIFSOscobq6Oo27s2XLFqxYsQIlJSUoKSnBfffdh3PPPRdlZWXY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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Gradients are a much different story.\n", "values_tensor = tf.convert_to_tensor(input_points)\n", "\n", "with tf.GradientTape() as g:\n", " g.watch(values_tensor)\n", " exact_outputs = expectation_calculation(my_circuit,\n", " operators=pauli_x,\n", " symbol_names=['alpha'],\n", " symbol_values=values_tensor)\n", "analytic_finite_diff_gradients = g.gradient(exact_outputs, values_tensor)\n", "\n", "with tf.GradientTape() as g:\n", " g.watch(values_tensor)\n", " imperfect_outputs = sampled_expectation_calculation(\n", " my_circuit,\n", " operators=pauli_x,\n", " repetitions=500,\n", " symbol_names=['alpha'],\n", " symbol_values=values_tensor)\n", "sampled_finite_diff_gradients = g.gradient(imperfect_outputs, values_tensor)\n", "\n", "plt.title('Gradient Values')\n", "plt.xlabel('$x$')\n", "plt.ylabel('$f^{\\'}(x)$')\n", "plt.plot(input_points, analytic_finite_diff_gradients, label='Analytic')\n", "plt.plot(input_points, sampled_finite_diff_gradients, label='Sampled')\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Ld34TJvTNT_w" }, "source": [ "Here you can see that although the finite difference formula is fast to compute the gradients themselves in the analytical case, when it came to the sampling based methods it was far too noisy. More careful techniques must be used to ensure a good gradient can be calculated. Next you will look at a much slower technique that wouldn't be as well suited for analytical expectation gradient calculations, but does perform much better in the real-world sample based case:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:32.909267Z", "iopub.status.busy": "2024-05-18T11:25:32.908573Z", "iopub.status.idle": "2024-05-18T11:25:33.606287Z", "shell.execute_reply": "2024-05-18T11:25:33.605574Z" }, "id": "JsBxH_RaNT_x" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# A smarter differentiation scheme.\n", "gradient_safe_sampled_expectation = tfq.layers.SampledExpectation(\n", " differentiator=tfq.differentiators.ParameterShift())\n", "\n", "with tf.GradientTape() as g:\n", " g.watch(values_tensor)\n", " imperfect_outputs = gradient_safe_sampled_expectation(\n", " my_circuit,\n", " operators=pauli_x,\n", " repetitions=500,\n", " symbol_names=['alpha'],\n", " symbol_values=values_tensor)\n", "\n", "sampled_param_shift_gradients = g.gradient(imperfect_outputs, values_tensor)\n", "\n", "plt.title('Gradient Values')\n", "plt.xlabel('$x$')\n", "plt.ylabel('$f^{\\'}(x)$')\n", "plt.plot(input_points, analytic_finite_diff_gradients, label='Analytic')\n", "plt.plot(input_points, sampled_param_shift_gradients, label='Sampled')\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "0xlUlh8wNT_z" }, "source": [ "From the above you can see that certain differentiators are best used for particular research scenarios. In general, the slower sample-based methods that are robust to device noise, etc., are great differentiators when testing or implementing algorithms in a more \"real world\" setting. Faster methods like finite difference are great for analytical calculations and you want higher throughput, but aren't yet concerned with the device viability of your algorithm." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "FaijzZ4MNT_0" }, "source": [ "## 3. Multiple observables\n", "\n", "Let's introduce a second observable and see how TensorFlow Quantum supports multiple observables for a single circuit." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:33.610400Z", "iopub.status.busy": "2024-05-18T11:25:33.609853Z", "iopub.status.idle": "2024-05-18T11:25:33.614928Z", "shell.execute_reply": "2024-05-18T11:25:33.614276Z" }, "id": "ytgB_DqDNT_3" }, "outputs": [ { "data": { "text/plain": [ "cirq.Z(cirq.GridQubit(0, 0))" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pauli_z = cirq.Z(qubit)\n", "pauli_z" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "r51TZls4NT_6" }, "source": [ "If this observable is used with the same circuit as before, then you have $f_{2}(\\alpha) = ⟨Y(\\alpha)| Z | Y(\\alpha)⟩ = \\cos(\\pi \\alpha)$ and $f_{2}^{'}(\\alpha) = -\\pi \\sin(\\pi \\alpha)$. Perform a quick check:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:33.618462Z", "iopub.status.busy": "2024-05-18T11:25:33.617827Z", "iopub.status.idle": "2024-05-18T11:25:33.625271Z", "shell.execute_reply": "2024-05-18T11:25:33.624601Z" }, "id": "19FKgu0ANT_7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Finite difference: -0.04934072494506836\n", "Sin formula: -0.0\n" ] } ], "source": [ "test_value = 0.\n", "\n", "print('Finite difference:', my_grad(pauli_z, test_value))\n", "print('Sin formula: ', -np.pi * np.sin(np.pi * test_value))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "_33Y5mL0NT_-" }, "source": [ "It's a match (close enough).\n", "\n", "Now if you define $g(\\alpha) = f_{1}(\\alpha) + f_{2}(\\alpha)$ then $g'(\\alpha) = f_{1}^{'}(\\alpha) + f^{'}_{2}(\\alpha)$. Defining more than one observable in TensorFlow Quantum to use along with a circuit is equivalent to adding on more terms to $g$.\n", "\n", "This means that the gradient of a particular symbol in a circuit is equal to the sum of the gradients with regards to each observable for that symbol applied to that circuit. This is compatible with TensorFlow gradient taking and backpropagation (where you give the sum of the gradients over all observables as the gradient for a particular symbol)." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:33.628658Z", "iopub.status.busy": "2024-05-18T11:25:33.628107Z", "iopub.status.idle": "2024-05-18T11:25:33.644804Z", "shell.execute_reply": "2024-05-18T11:25:33.644173Z" }, "id": "3WFJfFEbNT_-" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum_of_outputs = tfq.layers.Expectation(\n", " differentiator=tfq.differentiators.ForwardDifference(grid_spacing=0.01))\n", "\n", "sum_of_outputs(my_circuit,\n", " operators=[pauli_x, pauli_z],\n", " symbol_names=['alpha'],\n", " symbol_values=[[test_value]])" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "-ujQUu3WNUAB" }, "source": [ "Here you see the first entry is the expectation w.r.t Pauli X, and the second is the expectation w.r.t Pauli Z. Now when you take the gradient:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:33.648138Z", "iopub.status.busy": "2024-05-18T11:25:33.647608Z", "iopub.status.idle": "2024-05-18T11:25:33.869027Z", "shell.execute_reply": "2024-05-18T11:25:33.868330Z" }, "id": "jcAQa9l0NUAB" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.0917350202798843\n", "[[3.0917213]]\n" ] } ], "source": [ "test_value_tensor = tf.convert_to_tensor([[test_value]])\n", "\n", "with tf.GradientTape() as g:\n", " g.watch(test_value_tensor)\n", " outputs = sum_of_outputs(my_circuit,\n", " operators=[pauli_x, pauli_z],\n", " symbol_names=['alpha'],\n", " symbol_values=test_value_tensor)\n", "\n", "sum_of_gradients = g.gradient(outputs, test_value_tensor)\n", "\n", "print(my_grad(pauli_x, test_value) + my_grad(pauli_z, test_value))\n", "print(sum_of_gradients.numpy())" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "-fZmbYGANUAE" }, "source": [ "Here you have verified that the sum of the gradients for each observable is indeed the gradient of $\\alpha$. This behavior is supported by all TensorFlow Quantum differentiators and plays a crucial role in the compatibility with the rest of TensorFlow." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "lZsGG7lWNUAF" }, "source": [ "## 4. Advanced usage\n", "All differentiators that exist inside of TensorFlow Quantum subclass `tfq.differentiators.Differentiator`. To implement a differentiator, a user must implement one of two interfaces. The standard is to implement `get_gradient_circuits`, which tells the base class which circuits to measure to obtain an estimate of the gradient. Alternatively, you can overload `differentiate_analytic` and `differentiate_sampled`; the class `tfq.differentiators.Adjoint` takes this route.\n", "\n", "The following uses TensorFlow Quantum to implement the gradient of a circuit. You will use a small example of parameter shifting." ] }, { "cell_type": "markdown", "metadata": { "id": "J1xN6Ln5mB9N" }, "source": [ "Recall the circuit you defined above, $|\\alpha⟩ = Y^{\\alpha}|0⟩$. As before, you can define a function as the expectation value of this circuit against the $X$ observable, $f(\\alpha) = ⟨\\alpha|X|\\alpha⟩$. Using [parameter shift rules](https://pennylane.ai/qml/glossary/parameter_shift.html), for this circuit, you can find that the derivative is\n", "$$\\frac{\\partial}{\\partial \\alpha} f(\\alpha) = \\frac{\\pi}{2} f\\left(\\alpha + \\frac{1}{2}\\right) - \\frac{ \\pi}{2} f\\left(\\alpha - \\frac{1}{2}\\right)$$\n", "The `get_gradient_circuits` function returns the components of this derivative." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:33.872925Z", "iopub.status.busy": "2024-05-18T11:25:33.872285Z", "iopub.status.idle": "2024-05-18T11:25:33.879136Z", "shell.execute_reply": "2024-05-18T11:25:33.878458Z" }, "id": "5iY4q6FKNUAG" }, "outputs": [], "source": [ "class MyDifferentiator(tfq.differentiators.Differentiator):\n", " \"\"\"A Toy differentiator for .\"\"\"\n", "\n", " def __init__(self):\n", " pass\n", "\n", " def get_gradient_circuits(self, programs, symbol_names, symbol_values):\n", " \"\"\"Return circuits to compute gradients for given forward pass circuits.\n", " \n", " Every gradient on a quantum computer can be computed via measurements\n", " of transformed quantum circuits. Here, you implement a custom gradient\n", " for a specific circuit. For a real differentiator, you will need to\n", " implement this function in a more general way. See the differentiator\n", " implementations in the TFQ library for examples.\n", " \"\"\"\n", "\n", " # The two terms in the derivative are the same circuit...\n", " batch_programs = tf.stack([programs, programs], axis=1)\n", "\n", " # ... with shifted parameter values.\n", " shift = tf.constant(1/2)\n", " forward = symbol_values + shift\n", " backward = symbol_values - shift\n", " batch_symbol_values = tf.stack([forward, backward], axis=1)\n", " \n", " # Weights are the coefficients of the terms in the derivative.\n", " num_program_copies = tf.shape(batch_programs)[0]\n", " batch_weights = tf.tile(tf.constant([[[np.pi/2, -np.pi/2]]]),\n", " [num_program_copies, 1, 1])\n", "\n", " # The index map simply says which weights go with which circuits.\n", " batch_mapper = tf.tile(\n", " tf.constant([[[0, 1]]]), [num_program_copies, 1, 1])\n", "\n", " return (batch_programs, symbol_names, batch_symbol_values,\n", " batch_weights, batch_mapper)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "bvEgw2m6NUAI" }, "source": [ "The `Differentiator` base class uses the components returned from `get_gradient_circuits` to calculate the derivative, as in the parameter shift formula you saw above. This new differentiator can now be used with existing `tfq.layer` objects:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:33.882533Z", "iopub.status.busy": "2024-05-18T11:25:33.881970Z", "iopub.status.idle": "2024-05-18T11:25:34.341110Z", "shell.execute_reply": "2024-05-18T11:25:34.340382Z" }, "id": "QrKnkWswNUAJ" }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'x')" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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q7FDFYUJHikuLsaaNWtw880345xzzhnz9Zdeeik2b96M6667Dl6vFxdffPGYvzNlyhR8/etfx7PPPovf/va3w74mV1tw6O8MZ9fOPPNMxONxrFmzxvheIpHAb37zmzHf44ILLoDX68Utt9wyZGyapg17tT4WZAtyhzw1kvDss89iy5YtQ76/dOlSzJgxAx9//DFuuOEGrFixwjBE999/P4455hhcddVV+POf/wxA95Y88cQTOP/883HWWWdh165duPvuuzFv3ryM++2TTz4Zl156Ke68805s27YNZ5xxBlRVxWuvvYaTTz4ZV199NQBg4cKF+Oc//4lf/epXmDRpEqZPnz5s/Aqg3zk/+eSTOP3003HCCSfgggsuwIknnoiioiLs378f//u//4u9e/firLPOympOzj77bDzwwAMIh8OYN28e1q5di3/+859Gmjvjhz/8IR544AGjJgZL6Z46deqY99uXXnop/vznP+Pb3/42XnrpJRx//PFIJBLYsmUL/vznP+O5557LuSjiwoULAegB0hdffDH8fj/OOeccywoKEkSuZJviDABnnXUWKisr8dhjj2H58uWoqanJ6vfuuOMO7Nq1C9/97nfxyCOP4JxzzkFNTQ1aW1vxxhtv4Kmnnsoq1gXI3q6dc845OP7443H99ddj9+7dmDdvHp544omMGLyRmDlzJn784x9j1apV2L17N8477zyUlJRg165dePLJJ3HllVfiX//1X7Mab/rfLCsrw913342SkhIUFRXhuOOOGzFuiACldIvOaCndSKYCxuNx7dhjj9Xq6uq0zs7OjN//9a9/rQHQHn30UU3T9HTsn/zkJ9rUqVO1YDCoLViwQHv66ae1yy67TJs6dWrG78bjce3222/X5s6dqwUCAa26ulpbvny5tmHDBuM1W7Zs0T7zmc9oBQUFGoCs0rs7Ozu1H/3oR9qCBQu04uJiLRAIaPX19doXvvAF7amnnhr2379+/fohf6ejo0O7/PLLtaqqKq24uFg7/fTTtS1btmhTp04dMo4PPvhAO+mkk7RQKKRNnjxZu/XWW7V77713zJRuTdO0aDSq/exnP9OOOOIILRgMauXl5drChQu1W265JSP9HIC2cuXKIeMcbjy33nqrNnnyZM3j8VB6N+Eooz1j6Rya0p3OVVddpQHQHn744ZzeOx6Pa/fdd5/22c9+Vquo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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "custom_dif = MyDifferentiator()\n", "custom_grad_expectation = tfq.layers.Expectation(differentiator=custom_dif)\n", "\n", "# Now let's get the gradients with finite diff.\n", "with tf.GradientTape() as g:\n", " g.watch(values_tensor)\n", " exact_outputs = expectation_calculation(my_circuit,\n", " operators=[pauli_x],\n", " symbol_names=['alpha'],\n", " symbol_values=values_tensor)\n", "\n", "analytic_finite_diff_gradients = g.gradient(exact_outputs, values_tensor)\n", "\n", "# Now let's get the gradients with custom diff.\n", "with tf.GradientTape() as g:\n", " g.watch(values_tensor)\n", " my_outputs = custom_grad_expectation(my_circuit,\n", " operators=[pauli_x],\n", " symbol_names=['alpha'],\n", " symbol_values=values_tensor)\n", "\n", "my_gradients = g.gradient(my_outputs, values_tensor)\n", "\n", "plt.subplot(1, 2, 1)\n", "plt.title('Exact Gradient')\n", "plt.plot(input_points, analytic_finite_diff_gradients.numpy())\n", "plt.xlabel('x')\n", "plt.ylabel('f(x)')\n", "plt.subplot(1, 2, 2)\n", "plt.title('My Gradient')\n", "plt.plot(input_points, my_gradients.numpy())\n", "plt.xlabel('x')" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "oXqcJWigNUAL" }, "source": [ "This new differentiator can now be used to generate differentiable ops.\n", "\n", "Key Point: A differentiator that has been previously attached to an op must be refreshed before attaching to a new op, because a differentiator may only be attached to one op at a time." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:25:34.345000Z", "iopub.status.busy": "2024-05-18T11:25:34.344327Z", "iopub.status.idle": "2024-05-18T11:25:34.697169Z", "shell.execute_reply": "2024-05-18T11:25:34.696433Z" }, "id": "F_WHcj3bNUAM" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "---TFQ---\n", "Foward: [[0.7816]]\n", "Gradient: [[1.7919645]]\n", "---Original---\n", "Forward: 0.80901700258255\n", "Gradient: 1.8063604831695557\n" ] } ], "source": [ "# Create a noisy sample based expectation op.\n", "expectation_sampled = tfq.get_sampled_expectation_op(\n", " cirq.DensityMatrixSimulator(noise=cirq.depolarize(0.01)))\n", "\n", "# Make it differentiable with your differentiator:\n", "# Remember to refresh the differentiator before attaching the new op\n", "custom_dif.refresh()\n", "differentiable_op = custom_dif.generate_differentiable_op(\n", " sampled_op=expectation_sampled)\n", "\n", "# Prep op inputs.\n", "circuit_tensor = tfq.convert_to_tensor([my_circuit])\n", "op_tensor = tfq.convert_to_tensor([[pauli_x]])\n", "single_value = tf.convert_to_tensor([[my_alpha]])\n", "num_samples_tensor = tf.convert_to_tensor([[5000]])\n", "\n", "with tf.GradientTape() as g:\n", " g.watch(single_value)\n", " forward_output = differentiable_op(circuit_tensor, ['alpha'], single_value,\n", " op_tensor, num_samples_tensor)\n", "\n", "my_gradients = g.gradient(forward_output, single_value)\n", "\n", "print('---TFQ---')\n", "print('Foward: ', forward_output.numpy())\n", "print('Gradient:', my_gradients.numpy())\n", "print('---Original---')\n", "print('Forward: ', my_expectation(pauli_x, my_alpha))\n", "print('Gradient:', my_grad(pauli_x, my_alpha))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "OGWcpqzDNUAP" }, "source": [ "Success: Now you can use all the differentiators that TensorFlow Quantum has to offer—and define your own." ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "gradients.ipynb", "private_outputs": true, "provenance": [], "toc_visible": true }, "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.19" }, "vscode": { "interpreter": { "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" } } }, "nbformat": 4, "nbformat_minor": 0 }