{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "xLOXFOT5Q40E" }, "source": [ "##### Copyright 2020 The TensorFlow Authors." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2024-05-18T11:48:04.298418Z", "iopub.status.busy": "2024-05-18T11:48:04.297925Z", "iopub.status.idle": "2024-05-18T11:48:04.302069Z", "shell.execute_reply": "2024-05-18T11:48:04.301396Z" }, "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": { "id": "UndbWF_UpN-X" }, "source": [ "# Noise" ] }, { "cell_type": "markdown", "metadata": { "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": { "id": "fHHaKIG06Iv_" }, "source": [ "Noise is present in modern day quantum computers. Qubits are susceptible to interference from the surrounding environment, imperfect fabrication, TLS and sometimes even [gamma rays](https://arxiv.org/abs/2104.05219). Until large scale error correction is reached, the algorithms of today must be able to remain functional in the presence of noise. This makes testing algorithms under noise an important step for validating quantum algorithms / models will function on the quantum computers of today.\n", "\n", "In this tutorial you will explore the basics of noisy circuit simulation in TFQ via the high level `tfq.layers` API.\n", "\n", "## Setup" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:04.305723Z", "iopub.status.busy": "2024-05-18T11:48:04.305208Z", "iopub.status.idle": "2024-05-18T11:48:39.572798Z", "shell.execute_reply": "2024-05-18T11:48:39.571793Z" }, "id": "J2CRbYRqrLdt" }, "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", "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": [ "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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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" ] }, { "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: 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: 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", "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" ] }, { "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", "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", "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": [ "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" ] }, { "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", " Using cached grpcio_status-1.63.0-py3-none-any.whl.metadata (1.1 kB)\r\n", "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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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: 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: 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: 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: 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": [ "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", "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", " 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!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 (from tensorflow==2.15.0)\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>=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 tensorflow_quantum-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.8 MB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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", "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" ] }, { "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 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 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", "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: sortedcontainers, mpmath, wrapt, tensorflow-estimator, sympy, pyasn1, protobuf, oauthlib, ml-dtypes, keras, duet, rsa, requests-oauthlib, pyasn1-modules, proto-plus, googleapis-common-protos, grpcio-status, google-auth, cirq-core, google-auth-oauthlib, google-api-core, tensorboard, tensorflow, cirq-google, tensorflow-quantum\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 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: protobuf\r\n", " Found existing installation: protobuf 3.20.3\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 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": [ " 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" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 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" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 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", "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 google-auth-2.29.0 google-auth-oauthlib-1.2.0 googleapis-common-protos-1.63.0 grpcio-status-1.62.2 keras-2.15.0 ml-dtypes-0.2.0 mpmath-1.3.0 oauthlib-3.2.2 proto-plus-1.23.0 protobuf-4.25.3 pyasn1-0.6.0 pyasn1-modules-0.4.0 requests-oauthlib-2.0.0 rsa-4.9 sortedcontainers-2.4.0 sympy-1.12 tensorboard-2.15.2 tensorflow-2.15.0 tensorflow-estimator-2.15.0 tensorflow-quantum-0.7.3 wrapt-1.14.1\r\n" ] } ], "source": [ "!pip install tensorflow==2.15.0 tensorflow-quantum==0.7.3" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:39.577488Z", "iopub.status.busy": "2024-05-18T11:48:39.576857Z", "iopub.status.idle": "2024-05-18T11:48:45.660456Z", "shell.execute_reply": "2024-05-18T11:48:45.659392Z" }, "id": "QStNslxBwgte" }, "outputs": [], "source": [ "!pip install -q git+https://github.com/tensorflow/docs" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:48:45.665179Z", "iopub.status.busy": "2024-05-18T11:48:45.664510Z", "iopub.status.idle": "2024-05-18T11:48:45.766614Z", "shell.execute_reply": "2024-05-18T11:48:45.765930Z" }, "id": "4Ql5PW-ACO0J" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/tmp/ipykernel_32316/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": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:45.770423Z", "iopub.status.busy": "2024-05-18T11:48:45.769821Z", "iopub.status.idle": "2024-05-18T11:48:49.816235Z", "shell.execute_reply": "2024-05-18T11:48:49.815219Z" }, "id": "iRU07S4o8B52" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2024-05-18 11:48:47.699511: 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:48:47.699552: 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:48:47.701066: 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:48:49.731639: 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 random\n", "import cirq\n", "import sympy\n", "import tensorflow_quantum as tfq\n", "import tensorflow as tf\n", "import numpy as np\n", "# Plotting\n", "import matplotlib.pyplot as plt\n", "import tensorflow_docs as tfdocs\n", "import tensorflow_docs.plots" ] }, { "cell_type": "markdown", "metadata": { "id": "CVnAGxZyruv8" }, "source": [ "## 1. Understanding quantum noise\n", "\n", "### 1.1 Basic circuit noise\n", "\n", "Noise on a quantum computer impacts the bitstring samples you are able to measure from it. One intuitive way you can start to think about this is that a noisy quantum computer will \"insert\", \"delete\" or \"replace\" gates in random places like the diagram below:\n", "\n", "\n", "\n", "Building off of this intuition, when dealing with noise, you are no longer using a single pure state $|\\psi \\rangle$ but instead dealing with an *ensemble* of all possible noisy realizations of your desired circuit: $\\rho = \\sum_j p_j |\\psi_j \\rangle \\langle \\psi_j |$ . Where $p_j$ gives the probability that the system is in $|\\psi_j \\rangle$ .\n", "\n", "Revisiting the above picture, if we knew beforehand that 90% of the time our system executed perfectly, or errored 10% of the time with just this one mode of failure, then our ensemble would be: \n", "\n", "$\\rho = 0.9 |\\psi_\\text{desired} \\rangle \\langle \\psi_\\text{desired}| + 0.1 |\\psi_\\text{noisy} \\rangle \\langle \\psi_\\text{noisy}| $\n", "\n", "If there was more than just one way that our circuit could error, then the ensemble $\\rho$ would contain more than just two terms (one for each new noisy realization that could happen). $\\rho$ is referred to as the [density matrix](https://en.wikipedia.org/wiki/Density_matrix) describing your noisy system.\n", "\n", "### 1.2 Using channels to model circuit noise\n", "\n", "Unfortunately in practice it's nearly impossible to know all the ways your circuit might error and their exact probabilities. A simplifying assumption you can make is that after each operation in your circuit there is some kind of [channel](https://quantumai.google/cirq/noise) that roughly captures how that operation might error. You can quickly create a circuit with some noise:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:49.821212Z", "iopub.status.busy": "2024-05-18T11:48:49.819814Z", "iopub.status.idle": "2024-05-18T11:48:49.833097Z", "shell.execute_reply": "2024-05-18T11:48:49.832413Z" }, "id": "Eu_vpHbfrQKQ" }, "outputs": [ { "data": { "text/html": [ "
(0, 0): ───X───\n",
       "\n",
       "(0, 1): ───X───
" ], "text/plain": [ "(0, 0): ───X───\n", "\n", "(0, 1): ───X───" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def x_circuit(qubits):\n", " \"\"\"Produces an X wall circuit on `qubits`.\"\"\"\n", " return cirq.Circuit(cirq.X.on_each(*qubits))\n", "\n", "def make_noisy(circuit, p):\n", " \"\"\"Add a depolarization channel to all qubits in `circuit` before measurement.\"\"\"\n", " return circuit + cirq.Circuit(cirq.depolarize(p).on_each(*circuit.all_qubits()))\n", "\n", "my_qubits = cirq.GridQubit.rect(1, 2)\n", "my_circuit = x_circuit(my_qubits)\n", "my_noisy_circuit = make_noisy(my_circuit, 0.5)\n", "my_circuit" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:49.836307Z", "iopub.status.busy": "2024-05-18T11:48:49.835855Z", "iopub.status.idle": "2024-05-18T11:48:49.841774Z", "shell.execute_reply": "2024-05-18T11:48:49.841093Z" }, "id": "1B7vmyPm_TQ7" }, "outputs": [ { "data": { "text/html": [ "
(0, 0): ───X───D(0.5)───\n",
       "\n",
       "(0, 1): ───X───D(0.5)───
" ], "text/plain": [ "(0, 0): ───X───D(0.5)───\n", "\n", "(0, 1): ───X───D(0.5)───" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_noisy_circuit" ] }, { "cell_type": "markdown", "metadata": { "id": "EejhXc2e9Cl8" }, "source": [ "You can examine the noiseless density matrix $\\rho$ with:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:49.845080Z", "iopub.status.busy": "2024-05-18T11:48:49.844621Z", "iopub.status.idle": "2024-05-18T11:48:49.853022Z", "shell.execute_reply": "2024-05-18T11:48:49.852326Z" }, "id": "0QN9W69U8v_V" }, "outputs": [ { "data": { "text/plain": [ "array([[0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],\n", " [0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],\n", " [0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],\n", " [0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j]], dtype=complex64)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rho = cirq.final_density_matrix(my_circuit)\n", "np.round(rho, 3)" ] }, { "cell_type": "markdown", "metadata": { "id": "RHHBeizr-DEo" }, "source": [ "And the noisy density matrix $\\rho$ with:\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:49.856370Z", "iopub.status.busy": "2024-05-18T11:48:49.855912Z", "iopub.status.idle": "2024-05-18T11:48:49.864848Z", "shell.execute_reply": "2024-05-18T11:48:49.864182Z" }, "id": "zSD9H8SC9IJ1" }, "outputs": [ { "data": { "text/plain": [ "array([[0.111+0.j, 0. +0.j, 0. +0.j, 0. +0.j],\n", " [0. +0.j, 0.222+0.j, 0. +0.j, 0. +0.j],\n", " [0. +0.j, 0. +0.j, 0.222+0.j, 0. +0.j],\n", " [0. +0.j, 0. +0.j, 0. +0.j, 0.444+0.j]], dtype=complex64)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rho = cirq.final_density_matrix(my_noisy_circuit)\n", "np.round(rho, 3)" ] }, { "cell_type": "markdown", "metadata": { "id": "2YWiejLl-a0Z" }, "source": [ "Comparing the two different $ \\rho $ 's you can see that the noise has impacted the amplitudes of the state (and consequently sampling probabilities). In the noiseless case you would always expect to sample the $ |11\\rangle $ state. But in the noisy state there is now a nonzero probability of sampling $ |00\\rangle $ or $ |01\\rangle $ or $ |10\\rangle $ as well:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:49.868162Z", "iopub.status.busy": "2024-05-18T11:48:49.867731Z", "iopub.status.idle": "2024-05-18T11:48:50.073890Z", "shell.execute_reply": "2024-05-18T11:48:50.073239Z" }, "id": "Z4uj-Zs0AE3n" }, "outputs": [ { "data": { "image/png": "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vffesy0rLCy0hoeHW2+44Qbbsqrf8+bNm23Lfvk7qponODjYeurUKdvyv//971ZJ1nXr1tmWdenSxXrttddaz5w5Y1u2ZcsWq6Rqv3cAqG/4ah8A1AOtW7fWPffco7feeks5OTk1bvOPf/xDkpSSkmK3/JFHHpH009WB82natKm+++67Gr+aVWXMmDEqLS3V3/72N9uylStXqqKiQqNHj77g/EVFRWrSpMkFt6mNpKQk+fj42F7v2bNHx44d06RJk6o9CMJisVzy8Rwxc+ZMLV++XDfccIM2btyoxx9/XLGxsbrxxht14MAB23bu7u62e8EqKyt16tQpVVRUqFu3btq9e3e1/f7mN79RQECA7XX37t0lSaNHj7Z7OEb37t1VVlZW7UmPERERdlcT/f39NWbMGO3Zs0e5ubnGn3PkyJEKDAy0vb7lllskSd98840kKTs7W/v379eYMWPUuHFj23a9e/dWly5djI8HAK6GkAKAemLatGmqqKg4771S3377rdzc3NS2bVu75WFhYWratKm+/fbb8+77scceU+PGjXXzzTerXbt2Gj9+vP71r3/ZbdOxY0fddNNNWrZsmW3ZsmXL1KNHj2rH/CV/f3+dOXPmYh/xoqKiouxeHz16VJJc7jHwd955pz799FOdPn1aH330ke666y7t2bNHgwcP1tmzZ23bLV68WNdff728vb0VHBys5s2b64MPPlBhYWG1fbZo0cLudVVURUZG1rj89OnTdsvbtm1bLS7bt28vSee95+tCfjlPVVRVHbfqfKvp3LjY+QIA9QEhBQD1ROvWrTV69OgLXpWSHLsS06lTJx06dEgrVqxQr1699N5776lXr16aMWOG3XZjxozR1q1b9d133+no0aP67LPPLno1Svopwg4fPqyysjLj2X7u51ejTJzvd3Lu3LlLGeei/P39ddttt2nZsmVKSkrS0aNHlZmZKUlaunSpxo4dqzZt2mjRokXasGGDNm3apFtvvbXGx427u7vXeIzzLbdarXX3QVzouADgKggpAKhHqq5KPfvss9XWtWzZUpWVlfr666/tlufl5amgoEAtW7a84L79/Pw0cuRIpaamKisrS4mJiXrmmWfsrqCMGjVK7u7uevfdd7Vs2TI1atRII0eOvOjcgwcP1o8//qj33nuvlp+0dtq0aSNJ+vLLLy+4XWBgYI1/UPdCV+mq1NVXBLt16yZJtgj+29/+ptatW2v16tW65557lJCQoPj4eLvfd106cuRItcg5fPiwJF2WJ+hVnW9HjhypcRYAqO8IKQCoR9q0aaPRo0frzTffrHZfy6BBgyRJL730kt3yefPmSZISExPPu9///ve/dq89PT0VHR0tq9Wq8vJy2/JmzZpp4MCBWrp0qZYtW6YBAwbYnmR3Iffff7/Cw8P1yCOP2P7L+8/l5+fr6aefvuh+funGG29UVFSUXnrppWqh9PNoaNOmjQ4ePKiTJ0/alu3bt6/a1xdr4ufnJ0k1htgv/fDDD+d9DPyHH34oSerQoYOk/7+i8/M5MzMzL/gY+UuRnZ1t9+TGoqIiLVmyRDExMQoLC6vz40VERKhz585asmSJiouLbcu3bt2q/fv31/nxAOBK4/HnAFDPPP744/rrX/+qQ4cO6brrrrMt79q1q5KSkvTWW2+poKBAvXv31o4dO7R48WINHTpUffv2Pe8++/fvr7CwMPXs2VOhoaE6cOCAXnvtNSUmJlZ7SMSYMWNsjzGfNWtWrWYODAzUmjVrNGjQIMXExGj06NGKjY2VJO3evVvvvvvuBR+ffj5ubm564403NHjwYMXExGjcuHEKDw/XwYMH9dVXX2njxo2SpHvvvVfz5s1TQkKCkpOTlZ+frwULFui6666z/S2q86ma8/HHH9eoUaPUqFEjDR482BZYP/fDDz/oV7/6lXr06KEBAwYoMjJSBQUFWrt2rT799FMNHTpUN9xwgyTp9ttv1+rVqzVs2DAlJibq2LFjWrBggaKjo+3Co660b99eycnJ2rlzp0JDQ/XOO+8oLy9PqampdX6sKn/5y180ZMgQ9ezZU+PGjdPp06f12muvqXPnzpflMwLAlcQVKQCoZ9q2bXve+5LefvttzZw5Uzt37tSkSZP0ySefaOrUqVqxYsUF9/mHP/xBxcXFmjdvnsaPH6+1a9fqoYce0tKlS6ttO3jwYAUGBiogIED/8z//U+u5u3fvri+//FL333+/tm7dqkmTJiklJUW7du3SlClTtGrVqlrv6+cSEhK0efNmtW/fXi+88IJSUlKUnp6uwYMH27bp1KmTlixZosLCQqWkpOj999/XX//6V914440X3f9NN92kWbNmad++fRo7dqzuvPNOuytbP9e0aVMtXLhQYWFhSk1N1R//+Ec98cQTKi4u1nPPPaeVK1fath07dqz+8pe/aN++fXrooYe0ceNGLV261PYVwLrWrl07rVy5Uv/4xz80ZcoUlZeXa+XKlUpISLgsx5N+OlfeffddlZWVacqUKVq9erXS0tLUoUMHeXt7X7bjAsCVYLFyVygAwEBFRYUiIiI0ePBgLVq0yNnjoBZatWqlzp07a/369c4eRZIUExOj5s2ba9OmTc4eBQAcxhUpAICRtWvX6uTJkxozZoyzR4GLKy8vV0VFhd2yLVu2aN++ferTp49zhgKAOsI9UgCAWsnMzNQXX3yhWbNm6YYbblDv3r2dPRJc3Pfff6/4+HiNHj1aEREROnjwoBYsWKCwsDDdf//9zh4PAC4JIQUAqJU33nhDS5cuVUxMjNLS0pw9DuqBwMBAxcbG6u2339bJkyfl5+enxMREzZkzR8HBwc4eDwAuCfdIAQAAAIAh7pECAAAAAEOEFAAAAAAY4h4pSZWVlcrOzlaTJk1ksVicPQ4AAAAAJ7FarTpz5owiIiLk5nb+606ElKTs7GxFRkY6ewwAAAAALuLEiRO69tprz7uekJLUpEkTST/9svz9/Z08DQAAAABnKSoqUmRkpK0RzoeQkmxf5/P39yekAAAAAFz0lh8eNgEAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABjycPYAAAAAqH9aTfnA2SOgATk+J9HZIxjjihQAAAAAGCKkAAAAAMAQIQUAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABgipAAAAADAECEFAAAAAIYIKQAAAAAwREgBAAAAgCFCCgAAAAAMEVIAAAAAYIiQAgAAAABDhBQAAAAAGCKkAAAAAMAQIQUAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwJDLhNScOXNksVg0adIk27KzZ89q/PjxCg4OVuPGjTVixAjl5eXZvS8rK0uJiYny9fVVSEiIHn30UVVUVFzh6QEAAABcTVwipHbu3Kk333xT119/vd3yhx9+WOvWrdOqVau0detWZWdna/jw4bb1586dU2JiosrKyrR9+3YtXrxYaWlpmj59+pX+CAAAAACuIk4PqeLiYt19991auHChAgMDbcsLCwu1aNEizZs3T7feeqtiY2OVmpqq7du367PPPpMkffTRR/r3v/+tpUuXKiYmRgMHDtSsWbM0f/58lZWVOesjAQAAAGjgnB5S48ePV2JiouLj4+2W79q1S+Xl5XbLO3bsqBYtWigjI0OSlJGRoS5duig0NNS2TUJCgoqKivTVV1+d95ilpaUqKiqy+wEAAACA2vJw5sFXrFih3bt3a+fOndXW5ebmytPTU02bNrVbHhoaqtzcXNs2P4+oqvVV685n9uzZmjlz5iVODwAAAOBq5bQrUidOnNDEiRO1bNkyeXt7X9FjT506VYWFhbafEydOXNHjAwAAAKjfnBZSu3btUn5+vm688UZ5eHjIw8NDW7du1SuvvCIPDw+FhoaqrKxMBQUFdu/Ly8tTWFiYJCksLKzaU/yqXldtUxMvLy/5+/vb/QAAAABAbTktpPr166f9+/dr7969tp9u3brp7rvvtv3nRo0aKT093faeQ4cOKSsrS3FxcZKkuLg47d+/X/n5+bZtNm3aJH9/f0VHR1/xzwQAAADg6uC0e6SaNGmizp072y3z8/NTcHCwbXlycrJSUlIUFBQkf39/TZgwQXFxcerRo4ckqX///oqOjtY999yjuXPnKjc3V9OmTdP48ePl5eV1xT8TAAAAgKuDUx82cTEvvvii3NzcNGLECJWWliohIUGvv/66bb27u7vWr1+vBx54QHFxcfLz81NSUpKeeuopJ04NAAAAoKGzWK1Wq7OHcLaioiIFBASosLCQ+6UAAABqodWUD5w9AhqQ43MSnT2CTW3bwOl/RwoAAAAA6htCCgAAAAAMEVIAAAAAYIiQAgAAAABDhBQAAAAAGCKkAAAAAMAQIQUAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABgipAAAAADAECEFAAAAAIYIKQAAAAAwREgBAAAAgCFCCgAAAAAMEVIAAAAAYIiQAgAAAABDhBQAAAAAGCKkAAAAAMAQIQUAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABgipAAAAADAECEFAAAAAIYIKQAAAAAwREgBAAAAgCFCCgAAAAAMEVIAAAAAYIiQAgAAAABDhBQAAAAAGCKkAAAAAMAQIQUAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABgipAAAAADAECEFAAAAAIacGlJvvPGGrr/+evn7+8vf319xcXH68MMPbevPnj2r8ePHKzg4WI0bN9aIESOUl5dnt4+srCwlJibK19dXISEhevTRR1VRUXGlPwoAAACAq4hTQ+raa6/VnDlztGvXLn3++ee69dZbNWTIEH311VeSpIcffljr1q3TqlWrtHXrVmVnZ2v48OG29587d06JiYkqKyvT9u3btXjxYqWlpWn69OnO+kgAAAAArgIWq9VqdfYQPxcUFKTnnntOd9xxh5o3b67ly5frjjvukCQdPHhQnTp1UkZGhnr06KEPP/xQt99+u7KzsxUaGipJWrBggR577DGdPHlSnp6etTpmUVGRAgICVFhYKH9//8v22QAAABqKVlM+cPYIaECOz0l09gg2tW0Dl7lH6ty5c1qxYoVKSkoUFxenXbt2qby8XPHx8bZtOnbsqBYtWigjI0OSlJGRoS5dutgiSpISEhJUVFRku6pVk9LSUhUVFdn9AAAAAEBtOT2k9u/fr8aNG8vLy0v333+/1qxZo+joaOXm5srT01NNmza12z40NFS5ubmSpNzcXLuIqlpfte58Zs+erYCAANtPZGRk3X4oAAAAAA2a00OqQ4cO2rt3rzIzM/XAAw8oKSlJ//73vy/rMadOnarCwkLbz4kTJy7r8QAAAAA0LB7OHsDT01Nt27aVJMXGxmrnzp16+eWXNXLkSJWVlamgoMDuqlReXp7CwsIkSWFhYdqxY4fd/qqe6le1TU28vLzk5eVVx58EAAAAwNXC6VekfqmyslKlpaWKjY1Vo0aNlJ6eblt36NAhZWVlKS4uTpIUFxen/fv3Kz8/37bNpk2b5O/vr+jo6Cs+OwAAAICrg1OvSE2dOlUDBw5UixYtdObMGS1fvlxbtmzRxo0bFRAQoOTkZKWkpCgoKEj+/v6aMGGC4uLi1KNHD0lS//79FR0drXvuuUdz585Vbm6upk2bpvHjx3PFCQAAAMBl49SQys/P15gxY5STk6OAgABdf/312rhxo2677TZJ0osvvig3NzeNGDFCpaWlSkhI0Ouvv257v7u7u9avX68HHnhAcXFx8vPzU1JSkp566ilnfSQAAAAAVwGX+ztSzsDfkQIAADDD35FCXeLvSAEAAADAVYCQAgAAAABDhBQAAAAAGCKkAAAAAMAQIQUAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMORQSH3zzTd1PQcAAAAA1BsOhVTbtm3Vt29fLV26VGfPnq3rmQAAAADApTkUUrt379b111+vlJQUhYWF6Q9/+IN27NhR17MBAAAAgEtyKKRiYmL08ssvKzs7W++8845ycnLUq1cvde7cWfPmzdPJkyfrek4AAAAAcBmX9LAJDw8PDR8+XKtWrdKzzz6rI0eOaPLkyYqMjNSYMWOUk5NTV3MCAAAAgMu4pJD6/PPP9cc//lHh4eGaN2+eJk+erKNHj2rTpk3Kzs7WkCFD6mpOAAAAAHAZHo68ad68eUpNTdWhQ4c0aNAgLVmyRIMGDZKb209dFhUVpbS0NLVq1aouZwUAAAAAl+BQSL3xxhu69957NXbsWIWHh9e4TUhIiBYtWnRJwwEAAACAK3IopL7++uuLbuPp6amkpCRHdg8AAAAALs2he6RSU1O1atWqastXrVqlxYsXX/JQAAAAAODKHAqp2bNnq1mzZtWWh4SE6C9/+cslDwUAAAAArsyhkMrKylJUVFS15S1btlRWVtYlDwUAAAAArsyhkAoJCdEXX3xRbfm+ffsUHBx8yUMBAAAAgCtzKKTuvPNOPfTQQ9q8ebPOnTunc+fO6ZNPPtHEiRM1atSoup4RAAAAAFyKQ0/tmzVrlo4fP65+/frJw+OnXVRWVmrMmDHcIwUAAACgwXMopDw9PbVy5UrNmjVL+/btk4+Pj7p06aKWLVvW9XwAAAAA4HIcCqkq7du3V/v27etqFgAAAACoFxwKqXPnziktLU3p6enKz89XZWWl3fpPPvmkToYDAAAAAFfkUEhNnDhRaWlpSkxMVOfOnWWxWOp6LgAAAABwWQ6F1IoVK/S///u/GjRoUF3PAwAAAAAuz6HHn3t6eqpt27Z1PQsAAAAA1AsOhdQjjzyil19+WVarta7nAQAAAACX59BX+/75z39q8+bN+vDDD3XdddepUaNGdutXr15dJ8MBAAAAgCtyKKSaNm2qYcOG1fUsAAAAAFAvOBRSqampdT0HAAAAANQbDt0jJUkVFRX6+OOP9eabb+rMmTOSpOzsbBUXF9fZcAAAAADgihy6IvXtt99qwIABysrKUmlpqW677TY1adJEzz77rEpLS7VgwYK6nhMAAAAAXIZDV6QmTpyobt266fTp0/Lx8bEtHzZsmNLT0+tsOAAAAABwRQ5dkfr000+1fft2eXp62i1v1aqVvv/++zoZDAAAAABclUNXpCorK3Xu3Llqy7/77js1adLkkocCAAAAAFfmUEj1799fL730ku21xWJRcXGxZsyYoUGDBtXVbAAAAADgkhz6at8LL7yghIQERUdH6+zZs7rrrrv09ddfq1mzZnr33XfrekYAAAAAcCkOhdS1116rffv2acWKFfriiy9UXFys5ORk3X333XYPnwAAAACAhsihkJIkDw8PjR49ui5nAQAAAIB6waGQWrJkyQXXjxkzxqFhAAAAAKA+cCikJk6caPe6vLxcP/zwgzw9PeXr60tIAQAAAGjQHHpq3+nTp+1+iouLdejQIfXq1YuHTQAAAABo8BwKqZq0a9dOc+bMqXa1CgAAAAAamjoLKemnB1BkZ2fX5S4BAAAAwOU4dI/U+++/b/faarUqJydHr732mnr27FkngwEAUJ+1mvKBs0dAA3J8TqKzRwDwCw6F1NChQ+1eWywWNW/eXLfeeqteeOGFupgLAAAAAFyWQyFVWVlZ13MAAAAAQL1Rp/dIAQAAAMDVwKErUikpKbXedt68eY4cAgAAAABclkMhtWfPHu3Zs0fl5eXq0KGDJOnw4cNyd3fXjTfeaNvOYrHUzZQAAAAA4EIcCqnBgwerSZMmWrx4sQIDAyX99Ed6x40bp1tuuUWPPPJInQ4JAAAAAK7EoXukXnjhBc2ePdsWUZIUGBiop59+mqf2AQAAAGjwHAqpoqIinTx5strykydP6syZM5c8FAAAAAC4ModCatiwYRo3bpxWr16t7777Tt99953ee+89JScna/jw4XU9IwAAAAC4FIfukVqwYIEmT56su+66S+Xl5T/tyMNDycnJeu655+p0QAAAAABwNQ6FlK+vr15//XU999xzOnr0qCSpTZs28vPzq9PhAAAAAMAVORRSVXJycpSTk6Nf//rX8vHxkdVq5ZHnAC6q1ZQPnD0CGpjjcxKdPQIA4Crj0D1S//3vf9WvXz+1b99egwYNUk5OjiQpOTmZR58DAAAAaPAcCqmHH35YjRo1UlZWlnx9fW3LR44cqQ0bNtTZcAAAAADgihz6at9HH32kjRs36tprr7Vb3q5dO3377bd1MhgAAAAAuCqHrkiVlJTYXYmqcurUKXl5eV3yUAAAAADgyhwKqVtuuUVLliyxvbZYLKqsrNTcuXPVt2/fOhsOAAAAAFyRQyE1d+5cvfXWWxo4cKDKysr0pz/9SZ07d9a2bdv07LPP1no/s2fP1k033aQmTZooJCREQ4cO1aFDh+y2OXv2rMaPH6/g4GA1btxYI0aMUF5ent02WVlZSkxMlK+vr0JCQvToo4+qoqLCkY8GAAAAABflUEh17txZhw8fVq9evTRkyBCVlJRo+PDh2rNnj9q0aVPr/WzdulXjx4/XZ599pk2bNqm8vFz9+/dXSUmJbZuHH35Y69at06pVq7R161ZlZ2dr+PDhtvXnzp1TYmKiysrKtH37di1evFhpaWmaPn26Ix8NAAAAAC7K+GET5eXlGjBggBYsWKDHH3/8kg7+yyf8paWlKSQkRLt27dKvf/1rFRYWatGiRVq+fLluvfVWSVJqaqo6deqkzz77TD169NBHH32kf//73/r4448VGhqqmJgYzZo1S4899piefPJJeXp6XtKMAAAAAPBLxlekGjVqpC+++OJyzKLCwkJJUlBQkCRp165dKi8vV3x8vG2bjh07qkWLFsrIyJAkZWRkqEuXLgoNDbVtk5CQoKKiIn311Vc1Hqe0tFRFRUV2PwAAAABQWw59tW/06NFatGhRnQ5SWVmpSZMmqWfPnurcubMkKTc3V56enmratKndtqGhocrNzbVt8/OIqlpfta4ms2fPVkBAgO0nMjKyTj8LAAAAgIbNob8jVVFRoXfeeUcff/yxYmNj5efnZ7d+3rx5xvscP368vvzyS/3zn/90ZCQjU6dOVUpKiu11UVERMQUAAACg1oxC6ptvvlGrVq305Zdf6sYbb5QkHT582G4bi8ViPMSDDz6o9evXa9u2bXZ/5DcsLExlZWUqKCiwuyqVl5ensLAw2zY7duyw21/VU/2qtvklLy8v/t4VAAAAAIcZhVS7du2Uk5OjzZs3S5JGjhypV155pdpX62rLarVqwoQJWrNmjbZs2aKoqCi79bGxsWrUqJHS09M1YsQISdKhQ4eUlZWluLg4SVJcXJyeeeYZ5efnKyQkRJK0adMm+fv7Kzo62qG5AAAAAOBCjELKarXavf7www/tHlVuavz48Vq+fLn+/ve/q0mTJrZ7mgICAuTj46OAgAAlJycrJSVFQUFB8vf314QJExQXF6cePXpIkvr376/o6Gjdc889mjt3rnJzczVt2jSNHz+eq04AAAAALguH7pGq8suwMvXGG29Ikvr06WO3PDU1VWPHjpUkvfjii3Jzc9OIESNUWlqqhIQEvf7667Zt3d3dtX79ej3wwAOKi4uTn5+fkpKS9NRTT13SbAAAAABwPkYhZbFYqt0D5cg9UVVqE2Le3t6aP3++5s+ff95tWrZsqX/84x8OzwEAAAAAJoy/2jd27FjbV+bOnj2r+++/v9pT+1avXl13EwIAAACAizEKqaSkJLvXo0ePrtNhAAAAAKA+MAqp1NTUyzUHAAAAANQbbs4eAAAAAADqG0IKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABgipAAAAADAECEFAAAAAIYIKQAAAAAwREgBAAAAgCFCCgAAAAAMEVIAAAAAYIiQAgAAAABDhBQAAAAAGCKkAAAAAMAQIQUAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABgipAAAAADAECEFAAAAAIYIKQAAAAAwREgBAAAAgCFCCgAAAAAMEVIAAAAAYIiQAgAAAABDhBQAAAAAGCKkAAAAAMAQIQUAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABjycPYAqK7VlA+cPQIakONzEp09AgAAQIPDFSkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABhyakht27ZNgwcPVkREhCwWi9auXWu33mq1avr06QoPD5ePj4/i4+P19ddf221z6tQp3X333fL391fTpk2VnJys4uLiK/gpAAAAAFxtnBpSJSUl6tq1q+bPn1/j+rlz5+qVV17RggULlJmZKT8/PyUkJOjs2bO2be6++2599dVX2rRpk9avX69t27bp97///ZX6CAAAAACuQk79g7wDBw7UwIEDa1xntVr10ksvadq0aRoyZIgkacmSJQoNDdXatWs1atQoHThwQBs2bNDOnTvVrVs3SdKrr76qQYMG6fnnn1dERMQV+ywAAAAArh4ue4/UsWPHlJubq/j4eNuygIAAde/eXRkZGZKkjIwMNW3a1BZRkhQfHy83NzdlZmaed9+lpaUqKiqy+wEAAACA2nLZkMrNzZUkhYaG2i0PDQ21rcvNzVVISIjdeg8PDwUFBdm2qcns2bMVEBBg+4mMjKzj6QEAAAA0ZC4bUpfT1KlTVVhYaPs5ceKEs0cCAAAAUI+4bEiFhYVJkvLy8uyW5+Xl2daFhYUpPz/fbn1FRYVOnTpl26YmXl5e8vf3t/sBAAAAgNpy2ZCKiopSWFiY0tPTbcuKioqUmZmpuLg4SVJcXJwKCgq0a9cu2zaffPKJKisr1b179ys+MwAAAICrg1Of2ldcXKwjR47YXh87dkx79+5VUFCQWrRooUmTJunpp59Wu3btFBUVpSeeeEIREREaOnSoJKlTp04aMGCA7rvvPi1YsEDl5eV68MEHNWrUKJ7YBwAAAOCycWpIff755+rbt6/tdUpKiiQpKSlJaWlp+tOf/qSSkhL9/ve/V0FBgXr16qUNGzbI29vb9p5ly5bpwQcfVL9+/eTm5qYRI0bolVdeueKfBQAAAMDVw6kh1adPH1mt1vOut1gseuqpp/TUU0+dd5ugoCAtX778cowHAAAAADVy2XukAAAAAMBVEVIAAAAAYIiQAgAAAABDhBQAAAAAGCKkAAAAAMAQIQUAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABgipAAAAADAECEFAAAAAIYIKQAAAAAwREgBAAAAgCFCCgAAAAAMEVIAAAAAYIiQAgAAAABDhBQAAAAAGCKkAAAAAMAQIQUAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABgipAAAAADAECEFAAAAAIYIKQAAAAAwREgBAAAAgCFCCgAAAAAMEVIAAAAAYIiQAgAAAABDhBQAAAAAGCKkAAAAAMAQIQUAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABgipAAAAADAECEFAAAAAIYIKQAAAAAw1GBCav78+WrVqpW8vb3VvXt37dixw9kjAQAAAGigGkRIrVy5UikpKZoxY4Z2796trl27KiEhQfn5+c4eDQAAAEAD1CBCat68ebrvvvs0btw4RUdHa8GCBfL19dU777zj7NEAAAAANEAezh7gUpWVlWnXrl2aOnWqbZmbm5vi4+OVkZFR43tKS0tVWlpqe11YWChJKioqurzD1lJl6Q/OHgENiKuc1z/HOY66xnmOho5zHA2dK53jVbNYrdYLblfvQ+o///mPzp07p9DQULvloaGhOnjwYI3vmT17tmbOnFlteWRk5GWZEXCmgJecPQFw+XGeo6HjHEdD54rn+JkzZxQQEHDe9fU+pBwxdepUpaSk2F5XVlbq1KlTCg4OlsViceJkqK2ioiJFRkbqxIkT8vf3d/Y4QJ3jHMfVgPMcDR3neP1ktVp15swZRUREXHC7eh9SzZo1k7u7u/Ly8uyW5+XlKSwsrMb3eHl5ycvLy25Z06ZNL9eIuIz8/f35P0xo0DjHcTXgPEdDxzle/1zoSlSVev+wCU9PT8XGxio9Pd22rLKyUunp6YqLi3PiZAAAAAAaqnp/RUqSUlJSlJSUpG7duunmm2/WSy+9pJKSEo0bN87ZowEAAABogBpESI0cOVInT57U9OnTlZubq5iYGG3YsKHaAyjQcHh5eWnGjBnVvqIJNBSc47gacJ6joeMcb9gs1os91w8AAAAAYKfe3yMFAAAAAFcaIQUAAAAAhggpAAAAADBESAEAAACAIUIKLm/+/Plq1aqVvL291b17d+3YscO27uzZsxo/fryCg4PVuHFjjRgxotofZwbqgwud52+99Zb69Okjf39/WSwWFRQUOG9QwAHbtm3T4MGDFRERIYvForVr19qtt1qtmj59usLDw+Xj46P4+Hh9/fXXzhkWcMDFzvHVq1erf//+Cg4OlsVi0d69e50yJ+oWIQWXtnLlSqWkpGjGjBnavXu3unbtqoSEBOXn50uSHn74Ya1bt06rVq3S1q1blZ2dreHDhzt5asDMxc7zH374QQMGDNCf//xnJ08KOKakpERdu3bV/Pnza1w/d+5cvfLKK1qwYIEyMzPl5+enhIQEnT179gpPCjjmYud4SUmJevXqpWefffYKT4bLicefw6V1795dN910k1577TVJUmVlpSIjIzVhwgQ98MADat68uZYvX6477rhDknTw4EF16tRJGRkZ6tGjhzNHB2rtQuf5lClTbNtt2bJFffv21enTp9W0aVMnTQtcGovFojVr1mjo0KGSfroaFRERoUceeUSTJ0+WJBUWFio0NFRpaWkaNWqUE6cFzP3yHP+548ePKyoqSnv27FFMTMwVnw11iytScFllZWXatWuX4uPjbcvc3NwUHx+vjIwM7dq1S+Xl5XbrO3bsqBYtWigjI8MZIwPGLnaeAw3dsWPHlJuba/dvICAgQN27d+ffAACXRkjBZf3nP//RuXPnFBoaarc8NDRUubm5ys3NlaenZ7X/Zb5qPVAfXOw8Bxq6qvOcfwMA6htCCgAAAAAMEVJwWc2aNZO7u3u1p/Dl5eUpLCxMYWFhKisrq/YEs6r1QH1wsfMcaOiqznP+DQCobwgpuCxPT0/FxsYqPT3dtqyyslLp6emKi4tTbGysGjVqZLf+0KFDysrKUlxcnDNGBoxd7DwHGrqoqCiFhYXZ/RsoKipSZmYm/wYAuDQPZw8AXEhKSoqSkpLUrVs33XzzzXrppZdUUlKicePGKSAgQMnJyUpJSVFQUJD8/f01YcIExcXF8cQ+1CsXOs8l2e4JPHLkiCRp//79atKkiVq0aKGgoCBnjg7USnFxse38lX56wMTevXsVFBSkFi1aaNKkSXr66afVrl07RUVF6YknnlBERESNTz0DXNHFzvFTp04pKytL2dnZkn76H34l2b5hg3rKCri4V1991dqiRQurp6en9eabb7Z+9tlntnU//vij9Y9//KM1MDDQ6uvrax02bJg1JyfHidMCjrnQeT5jxgyrpGo/qampzhsYMLB58+Yaz+GkpCSr1Wq1VlZWWp944glraGio1cvLy9qvXz/roUOHnDs0YOBi53hqamqN62fMmOHUuXFp+DtSAAAAAGCIe6QAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAIAhQgoAAAAADBFSAAAAAGCIkAIAAAAAQ4QUAAAAABgipAAA9dbx48dlsVi0d+/eK3K8tLQ0NW3a9IocCwDg2ggpAIDLGjt2rCwWi+0nODhYAwYM0BdffCFJioyMVE5Ojjp37ixJ2rJliywWiwoKCoyOMXTo0FptO3LkSB0+fNj0YwAAGiBCCgDg0gYMGKCcnBzl5OQoPT1dHh4euv322yVJ7u7uCgsLk4eHx2Wfo7y8XD4+PgoJCbnsxwIAuD5CCgDg0ry8vBQWFqawsDDFxMRoypQpOnHihE6ePGn31b7jx4+rb9++kqTAwEBZLBaNHTtWkvS3v/1NXbp0kY+Pj4KDgxUfH6+SkhI9+eSTWrx4sf7+97/brnpt2bLFtt+VK1eqd+/e8vb21rJly6p9te/JJ59UTEyM/vrXv6pVq1YKCAjQqFGjdObMGds2Z86c0d133y0/Pz+Fh4frxRdfVJ8+fTRp0qQr+FsEANQ1QgoAUG8UFxdr6dKlatu2rYKDg+3WRUZG6r333pMkHTp0SDk5OXr55ZeVk5OjO++8U/fee68OHDigLVu2aPjw4bJarZo8ebJ++9vf2l31+tWvfmXb55QpUzRx4kQdOHBACQkJNc509OhRrV27VuvXr9f69eu1detWzZkzx7Y+JSVF//rXv/T+++9r06ZN+vTTT7V79+7L8NsBAFxJl/+7EAAAXIL169ercePGkqSSkhKFh4dr/fr1cnOz/98C3d3dFRQUJEkKCQmxXTk6evSoKioqNHz4cLVs2VKS1KVLF9v7fHx8VFpaqrCwsGrHnjRpkoYPH37B+SorK5WWlqYmTZpIku655x6lp6frmWee0ZkzZ7R48WItX75c/fr1kySlpqYqIiLCgd8EAMCVcEUKAODS+vbtq71792rv3r3asWOHEhISNHDgQH377be1en/Xrl3Vr18/denSRb/5zW+0cOFCnT59ulbv7dat20W3adWqlS2iJCk8PFz5+fmSpG+++Ubl5eW6+eabbesDAgLUoUOHWh0fAOC6CCkAgEvz8/NT27Zt1bZtW9100016++23VVJSooULF9bq/e7u7tq0aZM+/PBDRUdH69VXX1WHDh107NixWh37Yho1amT32mKxqLKyslazAQDqL0IKAFCvWCwWubm56ccff6y2ztPTU5J07ty5au/p2bOnZs6cqT179sjT01Nr1qyxveeX29eV1q1bq1GjRtq5c6dtWWFhIY9QB4AGgHukAAAurbS0VLm5uZKk06dP67XXXlNxcbEGDx5cbduWLVvKYrFo/fr1GjRokHx8fPTVV18pPT1d/fv3V0hIiDIzM3Xy5El16tRJ0k9fzdu4caMOHTqk4OBgBQQE1NnsTZo0UVJSkh599FEFBQUpJCREM2bMkJubmywWS50dBwBw5XFFCgDg0jZs2KDw8HCFh4ere/fu2rlzp1atWqU+ffpU2/aaa67RzJkzNWXKFIWGhurBBx+Uv7+/tm3bpkGDBql9+/aaNm2aXnjhBQ0cOFCSdN9996lDhw7q1q2bmjdvrn/96191Ov+8efMUFxen22+/XfHx8erZs6c6deokb2/vOj0OAODKslitVquzhwAA4GpRUlKia665Ri+88IKSk5OdPQ4AwEF8tQ8AgMtoz549OnjwoG6++WYVFhbqqaeekiQNGTLEyZMBAC4FIQUAwGX2/PPP69ChQ/L09FRsbKw+/fRTNWvWzNljAQAuAV/tAwAAAABDPGwCAAAAAAwRUgAAAABgiJACAAAAAEOEFAAAAAAYIqQAAAAAwBAhBQAAAACGCCkAAAAAMERIAQAAAICh/wOXPNAGTVo4uAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\"\"\"Sample from my_noisy_circuit.\"\"\"\n", "def plot_samples(circuit):\n", " samples = cirq.sample(circuit + cirq.measure(*circuit.all_qubits(), key='bits'), repetitions=1000)\n", " freqs, _ = np.histogram(samples.data['bits'], bins=[i+0.01 for i in range(-1,2** len(my_qubits))])\n", " plt.figure(figsize=(10,5))\n", " plt.title('Noisy Circuit Sampling')\n", " plt.xlabel('Bitstring')\n", " plt.ylabel('Frequency')\n", " plt.bar([i for i in range(2** len(my_qubits))], freqs, tick_label=['00','01','10','11'])\n", "\n", "plot_samples(my_noisy_circuit)" ] }, { "cell_type": "markdown", "metadata": { "id": "IpPh1Y0HEOWs" }, "source": [ "Without any noise you will always get $|11\\rangle$:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:50.077378Z", "iopub.status.busy": "2024-05-18T11:48:50.076780Z", "iopub.status.idle": "2024-05-18T11:48:50.308964Z", "shell.execute_reply": "2024-05-18T11:48:50.308277Z" }, "id": "NRCOhTVpEJzz" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAHWCAYAAACBjZMqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA7bElEQVR4nO3deViVdf7/8dcBZJFkEWUrVNwlTQqMGG3UJDHUXy41WppoTKuahtbgVJppaZZWWiNpBjZiOk7qmE2Wg1tjhOaeo7ikqSngDMIRShY5vz+6PN9O4AKe28PyfFzXua7O5/O57/t9n+t2xpef+/7cJovFYhEAAAAAwK6cHF0AAAAAANRFhC0AAAAAMABhCwAAAAAMQNgCAAAAAAMQtgAAAADAAIQtAAAAADAAYQsAAAAADEDYAgAAAAADELYAAAAAwACELQBApXr06KEePXo4uozLcmR9JpNJL7/8skOO7WibNm2SyWTSpk2brG0jR45UixYtHFYTANRUhC0AqMVSU1NlMpnk7u6uH3/8sUJ/jx491LFjRwdUVn05OTmaOHGi2rdvr4YNG8rT01MRERGaPn268vPzHV1epb7++mu9/PLLVarv008/Vffu3eXv76+GDRuqZcuW+sMf/qB169YZVygA4IZycXQBAIDrV1xcrJkzZ2revHl22+eXX35pt31dq+3btysuLk6FhYUaPny4IiIiJEnffvutZs6cqS1btljrckR9l/z8889ycfm//wv9+uuvNXXqVI0cOVI+Pj5X3f7NN9/Uc889p+7du2vSpElq2LChjhw5on/9619atmyZ+vTpY2D19rdw4UKVl5c7ugwAqHEIWwBQB4SHh2vhwoWaNGmSgoOD7bJPV1dXu+znWuXn52vgwIFydnbWrl271L59e5v+V199VQsXLqxSfRcuXJCrq6ucnOx7I4e7u3u1ty0rK9O0adN07733VhoYc3Nzr6c0h2jQoIGjSwCAGonbCAGgDvjzn/+sixcvaubMmVcde+kv+61atZKbm5tatGihP//5zyouLrYZV9kzUfPmzdOtt96qhg0bytfXV5GRkVq6dKkkaePGjTKZTFq1alWFYy5dulQmk0kZGRmXrev999/Xjz/+qDlz5lQIWpIUEBCgF1988bL1XXqWaNmyZXrxxRd18803q2HDhjKbzZKkzMxMxcXFydfXV56enrrtttv0zjvvXPF8pcqfR/r1M1svv/yynnvuOUlSaGioTCaTTCaTjh8/Xul5/ve//5XZbFbXrl0r7ff397f+d0lJiSZPnqyIiAh5e3vL09NTd999tzZu3GizzfHjx2UymfTmm2/qvffeU8uWLdWwYUP17t1bJ0+elMVi0bRp03TLLbfIw8ND999/v/Ly8mz20aJFC/Xr109ffvmlwsPD5e7urrCwMK1cubLSOq/0G/26ngULFlivtS5dumj79u0Vtl+xYoXCwsLk7u6ujh07atWqVTwHBqBOYGYLAOqA0NBQjRgxQgsXLlRSUtIVZ7f++Mc/avHixXrggQc0YcIEZWZmasaMGTpw4EClQemShQsX6plnntEDDzygcePG6cKFC9q7d68yMzP18MMPq0ePHgoJCVFaWpoGDhxos21aWppatWql6Ojoy+5/zZo18vDw0AMPPFD1H+BXpk2bJldXV02cOFHFxcVydXXV+vXr1a9fPwUFBWncuHEKDAzUgQMHtHbtWo0bN+66jjdo0CAdOnRIH3/8sd566y01adJEktS0adNKx/v7+8vDw0Offvqpxo4dq8aNG19232azWR988IEeeughPfbYYzp//rwWLVqk2NhYbdu2TeHh4Tbj09LSVFJSorFjxyovL0+zZs3SH/7wB91zzz3atGmT/vSnP+nIkSOaN2+eJk6cqA8//NBm+8OHD2vIkCF68sknFR8fr5SUFD344INat26d7r333ir/NkuXLtX58+f1xBNPyGQyadasWRo0aJC+//5762zYZ599piFDhqhTp06aMWOGzp07p4SEBN18881VPh4A1DgWAECtlZKSYpFk2b59u+Xo0aMWFxcXyzPPPGPt7969u+XWW2+1ft+9e7dFkuWPf/yjzX4mTpxokWTZsGGDzbbdu3e3fr///vtt9lWZSZMmWdzc3Cz5+fnWttzcXIuLi4tlypQpV9zW19fX0rlz5yuO+bXf1rdx40aLJEvLli0tP/30k7W9rKzMEhoaamnevLnl3LlzNvsoLy+/7P4uiY+PtzRv3tymTZLN+bzxxhsWSZZjx45dU+2TJ0+2SLJ4enpa7rvvPsurr75q2bFjR4VxZWVlluLiYpu2c+fOWQICAiyPPvqote3YsWMWSZamTZva/PaTJk2ySLJ07tzZUlpaam1/6KGHLK6urpYLFy5Y25o3b26RZPnkk0+sbQUFBZagoCDL7bffbm279Dtv3LjR2vbb3+hSPX5+fpa8vDxr+z/+8Q+LJMunn35qbevUqZPllltusZw/f97atmnTJoukCr87ANQ23EYIAHVEy5Yt9cgjj2jBggU6c+ZMpWP++c9/SpISExNt2idMmCDpl1mGy/Hx8dGpU6cqvQ3skhEjRqi4uFh///vfrW3Lly9XWVmZhg8ffsX6zWazGjVqdMUx1yI+Pl4eHh7W77t27dKxY8c0fvz4CotXmEym6z5edUydOlVLly7V7bffri+++EIvvPCCIiIidMcdd+jAgQPWcc7OztZn08rLy5WXl6eysjJFRkZq586dFfb74IMPytvb2/o9KipKkjR8+HCbBT2ioqJUUlJSYQXL4OBgm1lJLy8vjRgxQrt27VJ2dnaVz3PIkCHy9fW1fr/77rslSd9//70k6fTp09q3b59GjBihm266yTque/fu6tSpU5WPBwA1DWELAOqQF198UWVlZZd9duuHH36Qk5OTWrdubdMeGBgoHx8f/fDDD5fd95/+9CfddNNNuvPOO9WmTRuNHj1aW7dutRnTvn17denSRWlpada2tLQ03XXXXRWO+VteXl46f/781U7xqkJDQ22+Hz16VJJq3BL4Dz30kL766iudO3dOX375pR5++GHt2rVL/fv314ULF6zjFi9erNtuu03u7u7y8/NT06ZN9dlnn6mgoKDCPps1a2bz/VLwCgkJqbT93LlzNu2tW7euEEDbtm0rSZd9Bu1KflvPpeB16biXrrfKro2rXS8AUBsQtgCgDmnZsqWGDx9+xdktqXozOh06dFBWVpaWLVumbt266ZNPPlG3bt00ZcoUm3EjRozQ5s2bderUKR09elTffPPNVWe1pF+C2qFDh1RSUlLl2n7t17NaVXG53+TixYvXU85VeXl56d5771VaWpri4+N19OhRZWZmSpKWLFmikSNHqlWrVlq0aJHWrVun9evX65577ql0qXVnZ+dKj3G5dovFYr8TqUHHBYCagrAFAHXMpdmt119/vUJf8+bNVV5ersOHD9u05+TkKD8/X82bN7/ivj09PTVkyBClpKToxIkT6tu3r1599VWbmZihQ4fK2dlZH3/8sdLS0tSgQQMNGTLkqnX3799fP//8sz755JNrPNNr06pVK0nSd999d8Vxvr6+lb6U+EqzfZfY63bEyMhISbIG5b///e9q2bKlVq5cqUceeUSxsbGKiYmx+b3t6ciRIxWC0KFDhyTJkJUBL11vR44cqbQWAKjtCFsAUMe0atVKw4cP1/vvv1/hOZu4uDhJ0ttvv23TPmfOHElS3759L7vf//3vfzbfXV1dFRYWJovFotLSUmt7kyZNdN9992nJkiVKS0tTnz59rCv0XcmTTz6poKAgTZgwwfoX/F/Lzc3V9OnTr7qf37rjjjsUGhqqt99+u0KY+nWwaNWqlQ4ePKizZ89a2/bs2VPhVsnKeHp6SlKlYe23fvrpp8sugf/5559Lktq1ayfp/2aGfl1nZmbmFZfQvx6nT5+2WZHSbDbro48+Unh4uAIDA+1+vODgYHXs2FEfffSRCgsLre2bN2/Wvn377H48ALjRWPodAOqgF154QX/961+VlZWlW2+91dreuXNnxcfHa8GCBcrPz1f37t21bds2LV68WAMGDFDPnj0vu8/evXsrMDBQXbt2VUBAgA4cOKB3331Xffv2rbCwxYgRI6xLuE+bNu2aavb19dWqVasUFxen8PBwDR8+XBEREZKknTt36uOPP77i0vGX4+TkpPnz56t///4KDw/XqFGjFBQUpIMHD2r//v364osvJEmPPvqo5syZo9jYWCUkJCg3N1fJycm69dZbre/qupxLdb7wwgsaOnSoGjRooP79+1tD2K/99NNP+t3vfqe77rpLffr0UUhIiPLz87V69Wp99dVXGjBggG6//XZJUr9+/bRy5UoNHDhQffv21bFjx5ScnKywsDCbcGIvbdu2VUJCgrZv366AgAB9+OGHysnJUUpKit2Pdclrr72m+++/X127dtWoUaN07tw5vfvuu+rYsaMh5wgANxIzWwBQB7Vu3fqyz0l98MEHmjp1qrZv367x48drw4YNmjRpkpYtW3bFfT7xxBMqLCzUnDlzNHr0aK1evVrPPPOMlixZUmFs//795evrK29vb/2///f/rrnuqKgofffdd3ryySe1efNmjR8/XomJidqxY4eSkpK0YsWKa97Xr8XGxmrjxo1q27atZs+ercTERKWnp6t///7WMR06dNBHH32kgoICJSYmas2aNfrrX/+qO+6446r779Kli6ZNm6Y9e/Zo5MiReuihh2xmyH7Nx8dHCxcuVGBgoFJSUvT000/rpZdeUmFhod544w0tX77cOnbkyJF67bXX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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\"\"\"Sample from my_circuit.\"\"\"\n", "plot_samples(my_circuit)" ] }, { "cell_type": "markdown", "metadata": { "id": "EMbJBXAiT9GH" }, "source": [ "If you increase the noise a little further it will become harder and harder to distinguish the desired behavior (sampling $|11\\rangle$ ) from the noise:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:50.312637Z", "iopub.status.busy": "2024-05-18T11:48:50.311997Z", "iopub.status.idle": "2024-05-18T11:48:50.454754Z", "shell.execute_reply": "2024-05-18T11:48:50.454072Z" }, "id": "D2Fg-FUdUJQx" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAHWCAYAAAB9mLjgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA42ElEQVR4nO3de1xVVf7/8fcBBAG5CAoHEhHvmiaFRow2YpIo5tdbM14TzbFpRitDm7QsNSvNyi5mOpmhjpqOk1o6ZZnXpgzNvFRjeEkzA9RJAaFEkPP7o4fn5wlU1hE9B3w9H4/9eLjXXmfvzz6P7Uxv117rWGw2m00AAAAAgArzcHUBAAAAAFDVEKQAAAAAwBBBCgAAAAAMEaQAAAAAwBBBCgAAAAAMEaQAAAAAwBBBCgAAAAAMEaQAAAAAwBBBCgAAAAAMEaQA4DqUmJioxMREV5dxUa6sz2KxaNKkSS65tqtt2rRJFotFmzZtsrcNHTpUDRo0cFlNAOCuCFIA4Kbmz58vi8WimjVr6scffyxzPDExUa1atXJBZc47duyYxo4dq+bNm8vPz0/+/v6Ki4vT008/rdzcXFeXV67PPvtMkyZNMqpv9erV6tixo8LCwuTn56eGDRvqj3/8o9auXXv1CgUAXFNeri4AAHBpRUVFmjZtmmbOnFlp5/zoo48q7VwVtX37dqWkpKigoECDBw9WXFycJOmLL77QtGnTtGXLFntdrqjvvF9++UVeXv///x4/++wzTZ48WUOHDlVwcPBlP//CCy/okUceUceOHTV+/Hj5+fnpwIED+vjjj7V06VJ17dr1KlZf+ebOnavS0lJXlwEAbocgBQBuLjY2VnPnztX48eMVGRlZKef09vaulPNUVG5urnr37i1PT0/t3LlTzZs3dzj+zDPPaO7cuUb1nTlzRt7e3vLwqNyXK2rWrOn0Z0tKSjRlyhTdeeed5YbB48ePX0lpLlGjRg1XlwAAbolX+wDAzT322GM6d+6cpk2bdtm+5/9DvlGjRvLx8VGDBg302GOPqaioyKFfeXOQZs6cqRtvvFF+fn6qXbu22rZtqyVLlkiSNm7cKIvFopUrV5a55pIlS2SxWLR169aL1vX3v/9dP/74o2bMmFEmRElSeHi4JkyYcNH6zs/dWbp0qSZMmKAbbrhBfn5+ys/PlyRlZGQoJSVFtWvXlr+/v2666Sa98sorl7xfqfz5PxfOkZo0aZIeeeQRSVJMTIwsFossFosOHz5c7n3+73//U35+vtq3b1/u8bCwMPufz549qyeffFJxcXEKCgqSv7+/br/9dm3cuNHhM4cPH5bFYtELL7ygWbNmqWHDhvLz81OXLl30ww8/yGazacqUKapXr558fX3Vs2dPnTx50uEcDRo00F133aWPPvpIsbGxqlmzplq2bKkVK1aUW+elvqML63njjTfsz1q7du20ffv2Mp9fvny5WrZsqZo1a6pVq1ZauXIl864AVAuMSAGAm4uJidGQIUM0d+5cjRs37pKjUn/605+0YMEC3X333RozZowyMjI0depU7d27t9wQdN7cuXP14IMP6u6779ZDDz2kM2fOaM+ePcrIyNDAgQOVmJioqKgoLV68WL1793b47OLFi9WoUSMlJCRc9PzvvfeefH19dffdd5t/AReYMmWKvL29NXbsWBUVFcnb21vr1q3TXXfdpYiICD300EOyWq3au3ev1qxZo4ceeuiKrtenTx/t27dPb7/9tl566SXVqVNHklS3bt1y+4eFhcnX11erV6/WAw88oJCQkIueOz8/X2+++aYGDBigESNG6PTp05o3b56Sk5O1bds2xcbGOvRfvHixzp49qwceeEAnT57U9OnT9cc//lF33HGHNm3apEcffVQHDhzQzJkzNXbsWL311lsOn9+/f7/69eun+++/X6mpqUpPT9cf/vAHrV27Vnfeeafxd7NkyRKdPn1af/7zn2WxWDR9+nT16dNH3333nX0U69///rf69eun1q1ba+rUqTp16pSGDx+uG264wfh6AOB2bAAAt5Senm6TZNu+fbvt4MGDNi8vL9uDDz5oP96xY0fbjTfeaN/ftWuXTZLtT3/6k8N5xo4da5Nk27Bhg8NnO3bsaN/v2bOnw7nKM378eJuPj48tNzfX3nb8+HGbl5eXbeLEiZf8bO3atW1t2rS5ZJ8L/ba+jRs32iTZGjZsaPv555/t7SUlJbaYmBhbdHS07dSpUw7nKC0tvej5zktNTbVFR0c7tElyuJ/nn3/eJsl26NChCtX+5JNP2iTZ/P39bd26dbM988wzth07dpTpV1JSYisqKnJoO3XqlC08PNx277332tsOHTpkk2SrW7euw3c/fvx4myRbmzZtbMXFxfb2AQMG2Ly9vW1nzpyxt0VHR9sk2d555x17W15eni0iIsJ2880329vOf88bN260t/32OzpfT2hoqO3kyZP29nfffdcmybZ69Wp7W+vWrW316tWznT592t62adMmm6Qy3zsAVDW82gcAVUDDhg11zz336I033lB2dna5fd5//31JUlpamkP7mDFjJP06OnAxwcHBOnr0aLmvZp03ZMgQFRUV6V//+pe9bdmyZSopKdHgwYMvWX9+fr4CAgIu2aciUlNT5evra9/fuXOnDh06pNGjR5dZCMJisVzx9ZwxefJkLVmyRDfffLM+/PBDPf7444qLi9Mtt9yivXv32vt5enra54KVlpbq5MmTKikpUdu2bfXll1+WOe8f/vAHBQUF2ffj4+MlSYMHD3ZYHCM+Pl5nz54ts9JjZGSkw2hiYGCghgwZop07dyonJ8f4Pvv166fatWvb92+//XZJ0nfffSdJysrK0ldffaUhQ4aoVq1a9n4dO3ZU69atja8HAO6GIAUAVcSECRNUUlJy0blS33//vTw8PNS4cWOHdqvVquDgYH3//fcXPfejjz6qWrVq6dZbb1WTJk00cuRIffrppw59mjdvrnbt2mnx4sX2tsWLF+u2224rc83fCgwM1OnTpy93i5cVExPjsH/w4EFJcrtl4AcMGKBPPvlEp06d0kcffaSBAwdq586d6tGjh86cOWPvt2DBAt10002qWbOmQkNDVbduXf373/9WXl5emXPWr1/fYf98qIqKiiq3/dSpUw7tjRs3LhMumzZtKkkXnfN1Kb+t53yoOn/d889bec/G5Z4XAKgKCFIAUEU0bNhQgwcPvuSolOTcSEyLFi2UmZmppUuXqkOHDnrnnXfUoUMHTZw40aHfkCFDtHnzZh09elQHDx7U559/ftnRKOnXELZv3z6dPXvWuLYLXTgaZeJi38m5c+eupJzLCgwM1J133qnFixcrNTVVBw8eVEZGhiRp0aJFGjp0qBo1aqR58+Zp7dq1Wrdune64445ylxv39PQs9xoXa7fZbJV3I250XQBwFwQpAKhCzo9KPffcc2WORUdHq7S0VPv373doP3bsmHJzcxUdHX3Jc/v7+6tfv35KT0/XkSNH1L17dz3zzDMOIyj9+/eXp6en3n77bS1evFg1atRQv379Llt3jx499Msvv+idd96p4J1WTKNGjSRJX3/99SX71a5du9wf1L3UKN15lfWKYNu2bSXJHoL/9a9/qWHDhlqxYoXuueceJScnKykpyeH7rkwHDhwoE3L27dsnSVdlBb3zz9uBAwfKrQUAqjqCFABUIY0aNdLgwYP197//vcy8lpSUFEnSyy+/7NA+Y8YMSVL37t0vet6ffvrJYd/b21stW7aUzWZTcXGxvb1OnTrq1q2bFi1apMWLF6tr1672lewu5f7771dERITGjBlj/4/3Cx0/flxPP/30Zc/zW7fccotiYmL08ssvlwlKF4aGRo0a6dtvv9WJEyfsbbt37y7z+mJ5/P39JancIPZbP//880WXgf/ggw8kSc2aNZP0/0d0LqwzIyPjksvIX4msrCyHlRvz8/O1cOFCxcbGymq1Vvr1IiMj1apVKy1cuFAFBQX29s2bN+urr76q9OsBwLXG8ucAUMU8/vjj+sc//qHMzEzdeOON9vY2bdooNTVVb7zxhnJzc9WxY0dt27ZNCxYsUK9evdSpU6eLnrNLly6yWq1q3769wsPDtXfvXr322mvq3r17mUUihgwZYl/GfMqUKRWquXbt2lq5cqVSUlIUGxurwYMHKy4uTpL05Zdf6u23377k8ukX4+HhodmzZ6tHjx6KjY3VsGHDFBERoW+//VbffPONPvzwQ0nSvffeqxkzZig5OVnDhw/X8ePHNWfOHN14443236K6mPN1Pv744+rfv79q1KihHj162APWhX7++Wf97ne/02233aauXbsqKipKubm5WrVqlT755BP16tVLN998syTprrvu0ooVK9S7d291795dhw4d0pw5c9SyZUuH4FFZmjZtquHDh2v79u0KDw/XW2+9pWPHjik9Pb3Sr3Xes88+q549e6p9+/YaNmyYTp06pddee02tWrW6KvcIANcSI1IAUMU0btz4ovOS3nzzTU2ePFnbt2/X6NGjtWHDBo0fP15Lly695Dn//Oc/q6CgQDNmzNDIkSO1atUqPfjgg1q0aFGZvj169FDt2rUVFBSk//u//6tw3fHx8fr66691//33a/PmzRo9erTS0tK0Y8cOjRs3TsuXL6/wuS6UnJysjRs3qmnTpnrxxReVlpam9evXq0ePHvY+LVq00MKFC5WXl6e0tDS99957+sc//qFbbrnlsudv166dpkyZot27d2vo0KEaMGCAw8jWhYKDgzV37lxZrValp6frr3/9q5544gkVFBTo+eef17Jly+x9hw4d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rpycHE2YMEEjR45k1AkAAADAVeHSIDV79mxJUmJiokN7enq6hg4dKkl66aWX5OHhob59+6qoqEjJycl6/fXX7X09PT21Zs0a/eUvf1FCQoL8/f2Vmpqqp5566lrdBgAAAIDrjEuDlM1mu2yfmjVratasWZo1a9ZF+0RHR+v999+vzNIAAAAA4KLcZtU+AAAAAKgqCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYMipIPXdd99Vdh0AAAAAUGU4FaQaN26sTp06adGiRTpz5kxl1wQAAAAAbs2pIPXll1/qpptuUlpamqxWq/785z9r27ZtlV0bAAAAALglp4JUbGysXnnlFWVlZemtt95Sdna2OnTooFatWmnGjBk6ceJEZdcJAAAAAG7jihab8PLyUp8+fbR8+XI999xzOnDggMaOHauoqCgNGTJE2dnZlVUnAAAAALiNKwpSX3zxhf76178qIiJCM2bM0NixY3Xw4EGtW7dOWVlZ6tmzZ2XVCQAAAABuw8uZD82YMUPp6enKzMxUSkqKFi5cqJSUFHl4/JrLYmJiNH/+fDVo0KAyawUAAAAAt+BUkJo9e7buvfdeDR06VBEREeX2CQsL07x5866oOAAAAABwR04Fqf3791+2j7e3t1JTU505PQAAAAC4NafmSKWnp2v58uVl2pcvX64FCxZccVEAAAAA4M6cClJTp05VnTp1yrSHhYXp2WefveKiAAAAAMCdORWkjhw5opiYmDLt0dHROnLkyBUXBQAAAADuzKkgFRYWpj179pRp3717t0JDQ6+4KAAAAABwZ04FqQEDBujBBx/Uxo0bde7cOZ07d04bNmzQQw89pP79+1d2jQAAAADgVpxatW/KlCk6fPiwOnfuLC+vX09RWlqqIUOGMEcKAAAAQLXnVJDy9vbWsmXLNGXKFO3evVu+vr5q3bq1oqOjK7s+AAAAAHA7TgWp85o2baqmTZtWVi0AAAAAUCU4NUfq3LlzmjdvngYOHKikpCTdcccdDltFbdmyRT169FBkZKQsFotWrVrlcHzo0KGyWCwOW9euXR36nDx5UoMGDVJgYKCCg4M1fPhwFRQUOHNbAAAAAFAhTo1IPfTQQ5o/f766d++uVq1ayWKxOHXxwsJCtWnTRvfee6/69OlTbp+uXbsqPT3dvu/j4+NwfNCgQcrOzta6detUXFysYcOG6b777tOSJUucqgkAAAAALsepILV06VL985//VEpKyhVdvFu3burWrdsl+/j4+MhqtZZ7bO/evVq7dq22b9+utm3bSpJmzpyplJQUvfDCC4qMjLyi+gAAAACgPE692uft7a3GjRtXdi3l2rRpk8LCwtSsWTP95S9/0U8//WQ/tnXrVgUHB9tDlCQlJSXJw8NDGRkZFz1nUVGR8vPzHTYAAAAAqCingtSYMWP0yiuvyGazVXY9Drp27aqFCxdq/fr1eu6557R582Z169ZN586dkyTl5OQoLCzM4TNeXl4KCQlRTk7ORc87depUBQUF2beoqKireh8AAAAAqhenXu37z3/+o40bN+qDDz7QjTfeqBo1ajgcX7FiRaUUd+GP+7Zu3Vo33XSTGjVqpE2bNqlz585On3f8+PFKS0uz7+fn5xOmAAAAAFSYU0EqODhYvXv3ruxaLqthw4aqU6eODhw4oM6dO8tqter48eMOfUpKSnTy5MmLzquSfp139dtFKwAAAACgopwKUheuonctHT16VD/99JMiIiIkSQkJCcrNzdWOHTsUFxcnSdqwYYNKS0sVHx/vkhoBAAAAVH9O/yBvSUmJNm3apIMHD2rgwIEKCAhQVlaWAgMDVatWrQqdo6CgQAcOHLDvHzp0SLt27VJISIhCQkI0efJk9e3bV1arVQcPHtTf/vY3NW7cWMnJyZKkFi1aqGvXrhoxYoTmzJmj4uJijRo1Sv3792fFPgAAAABXjVNB6vvvv1fXrl115MgRFRUV6c4771RAQICee+45FRUVac6cORU6zxdffKFOnTrZ98/PW0pNTdXs2bO1Z88eLViwQLm5uYqMjFSXLl00ZcoUh9fyFi9erFGjRqlz587y8PBQ37599eqrrzpzWwAAAABQIU7/IG/btm21e/duhYaG2tt79+6tESNGVPg8iYmJl1z578MPP7zsOUJCQvjxXQAAAADXlFNB6pNPPtFnn30mb29vh/YGDRroxx9/rJTCAAAAAMBdOfU7UqWlpfbfcrrQ0aNHFRAQcMVFAQAAAIA7cypIdenSRS+//LJ932KxqKCgQBMnTlRKSkpl1QYAAAAAbsmpV/tefPFFJScnq2XLljpz5owGDhyo/fv3q06dOnr77bcru0YAAAAAcCtOBal69epp9+7dWrp0qfbs2aOCggINHz5cgwYNkq+vb2XXCAAAAABuxenfkfLy8tLgwYMrsxYAAAAAqBKcClILFy685PEhQ4Y4VQwAAAAAVAVO/47UhYqLi/Xzzz/L29tbfn5+BCkAAAAA1ZpTq/adOnXKYSsoKFBmZqY6dOjAYhMAAAAAqj2nglR5mjRpomnTppUZrQIAAACA6qbSgpT06wIUWVlZlXlKAAAAAHA7Ts2Reu+99xz2bTabsrOz9dprr6l9+/aVUhgAAAAAuCunglSvXr0c9i0Wi+rWras77rhDL774YmXUBQAAAABuy6kgVVpaWtl1AAAAAECVUalzpAAAAADgeuDUiFRaWlqF+86YMcOZSwAAAACA23IqSO3cuVM7d+5UcXGxmjVrJknat2+fPD09dcstt9j7WSyWyqkSAAAAANyIU0GqR48eCggI0IIFC1S7dm1Jv/5I77Bhw3T77bdrzJgxlVokAAAAALgTp+ZIvfjii5o6dao9RElS7dq19fTTT7NqHwAAAIBqz6kglZ+frxMnTpRpP3HihE6fPn3FRQEAAACAO3MqSPXu3VvDhg3TihUrdPToUR09elTvvPOOhg8frj59+lR2jQAAAADgVpyaIzVnzhyNHTtWAwcOVHFx8a8n8vLS8OHD9fzzz1dqgQAAAADgbpwKUn5+fnr99df1/PPP6+DBg5KkRo0ayd/fv1KLAwAAAAB3dEU/yJudna3s7Gw1adJE/v7+stlslVUXAAAAALgtp4LUTz/9pM6dO6tp06ZKSUlRdna2JGn48OEsfQ4AAACg2nMqSD388MOqUaOGjhw5Ij8/P3t7v379tHbt2korDgAAAADckVNzpD766CN9+OGHqlevnkN7kyZN9P3331dKYQAAAADgrpwakSosLHQYiTrv5MmT8vHxueKiAAAAAMCdORWkbr/9di1cuNC+b7FYVFpaqunTp6tTp06VVhwAAAAAuCOnXu2bPn26OnfurC+++EJnz57V3/72N33zzTc6efKkPv3008quEQAAAADcilMjUq1atdK+ffvUoUMH9ezZU4WFherTp4927typRo0aVXaNAAAAAOBWjEekiouL1bVrV82ZM0ePP/741agJAAAAANya8YhUjRo1tGfPnqtRCwAAAABUCU692jd48GDNmzevsmsBAAAAgCrBqcUmSkpK9NZbb+njjz9WXFyc/P39HY7PmDGjUooDAAAAAHdkFKS+++47NWjQQF9//bVuueUWSdK+ffsc+lgslsqrDgAAAADckFGQatKkibKzs7Vx40ZJUr9+/fTqq68qPDz8qhQHAAAAAO7IaI6UzWZz2P/ggw9UWFhYqQUBAAAAgLtzarGJ834brAAAAADgemAUpCwWS5k5UMyJAgAAAHC9MZojZbPZNHToUPn4+EiSzpw5o/vvv7/Mqn0rVqyovAoBAAAAwM0YBanU1FSH/cGDB1dqMQAAAABQFRgFqfT09KtVBwAAAABUGVe02AQAAAAAXI8IUgAAAABgiCAFAAAAAIYIUgAAAABgiCAFAAAAAIYIUgAAAABgiCAFAAAAAIYIUgAAAABgiCAFAAAAAIYIUgAAAABgiCAFAAAAAIYIUgAAAABgiCAFAAAAAIYIUgAAAABgyKVBasuWLerRo4ciIyNlsVi0atUqh+M2m01PPvmkIiIi5Ovrq6SkJO3fv9+hz8mTJzVo0CAFBgYqODhYw4cPV0FBwTW8CwAAAADXG5cGqcLCQrVp00azZs0q9/j06dP16quvas6cOcrIyJC/v7+Sk5N15swZe59Bgwbpm2++0bp167RmzRpt2bJF991337W6BQAAAADXIS9XXrxbt27q1q1bucdsNptefvllTZgwQT179pQkLVy4UOHh4Vq1apX69++vvXv3au3atdq+fbvatm0rSZo5c6ZSUlL0wgsvKDIy8prdCwAAAIDrh9vOkTp06JBycnKUlJRkbwsKClJ8fLy2bt0qSdq6dauCg4PtIUqSkpKS5OHhoYyMjIueu6ioSPn5+Q4bAAAAAFSU2wapnJwcSVJ4eLhDe3h4uP1YTk6OwsLCHI57eXkpJCTE3qc8U6dOVVBQkH2Lioqq5OoBAAAAVGduG6SupvHjxysvL8++/fDDD64uCQAAAEAV4rZBymq1SpKOHTvm0H7s2DH7MavVquPHjzscLykp0cmTJ+19yuPj46PAwECHDQAAAAAqym2DVExMjKxWq9avX29vy8/PV0ZGhhISEiRJCQkJys3N1Y4dO+x9NmzYoNLSUsXHx1/zmgEAAABcH1y6al9BQYEOHDhg3z906JB27dqlkJAQ1a9fX6NHj9bTTz+tJk2aKCYmRk888YQiIyPVq1cvSVKLFi3UtWtXjRgxQnPmzFFxcbFGjRql/v37s2IfAAAAgKvGpUHqiy++UKdOnez7aWlpkqTU1FTNnz9ff/vb31RYWKj77rtPubm56tChg9auXauaNWvaP7N48WKNGjVKnTt3loeHh/r27atXX331mt8LAAAAgOuHS4NUYmKibDbbRY9bLBY99dRTeuqppy7aJyQkREuWLLka5QEAAABAudx2jhQAAAAAuCuCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCGCFAAAAAAYIkgBAAAAgCG3DlKTJk2SxWJx2Jo3b24/fubMGY0cOVKhoaGqVauW+vbtq2PHjrmwYgAAAADXA7cOUpJ04403Kjs727795z//sR97+OGHtXr1ai1fvlybN29WVlaW+vTp48JqAQAAAFwPvFxdwOV4eXnJarWWac/Ly9O8efO0ZMkS3XHHHZKk9PR0tWjRQp9//rluu+22a10qAAAAgOuE249I7d+/X5GRkWrYsKEGDRqkI0eOSJJ27Nih4uJiJSUl2fs2b95c9evX19atWy95zqKiIuXn5ztsAAAAAFBRbh2k4uPjNX/+fK1du1azZ8/WoUOHdPvtt+v06dPKycmRt7e3goODHT4THh6unJycS5536tSpCgoKsm9RUVFX8S4AAAAAVDdu/Wpft27d7H++6aabFB8fr+joaP3zn/+Ur6+v0+cdP3680tLS7Pv5+fmEKQAAAAAV5tYjUr8VHByspk2b6sCBA7JarTp79qxyc3Md+hw7dqzcOVUX8vHxUWBgoMMGAAAAABVVpYJUQUGBDh48qIiICMXFxalGjRpav369/XhmZqaOHDmihIQEF1YJAAAAoLpz61f7xo4dqx49eig6OlpZWVmaOHGiPD09NWDAAAUFBWn48OFKS0tTSEiIAgMD9cADDyghIYEV+wAAAABcVW4dpI4ePaoBAwbop59+Ut26ddWhQwd9/vnnqlu3riTppZdekoeHh/r27auioiIlJyfr9ddfd3HVAAAAAKo7tw5SS5cuveTxmjVratasWZo1a9Y1qggAAAAAqtgcKQAAAABwBwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQ9UmSM2aNUsNGjRQzZo1FR8fr23btrm6JAAAAADVVLUIUsuWLVNaWpomTpyoL7/8Um3atFFycrKOHz/u6tIAAAAAVEPVIkjNmDFDI0aM0LBhw9SyZUvNmTNHfn5+euutt1xdGgAAAIBqyMvVBVyps2fPaseOHRo/fry9zcPDQ0lJSdq6dWu5nykqKlJRUZF9Py8vT5KUn59/dYutoNKin11dAqoRd3muL8QzjsrGc47qjmcc1Z07PePna7HZbJfsV+WD1P/+9z+dO3dO4eHhDu3h4eH69ttvy/3M1KlTNXny5DLtUVFRV6VGwJWCXnZ1BcDVx3OO6o5nHNWdOz7jp0+fVlBQ0EWPV/kg5Yzx48crLS3Nvl9aWqqTJ08qNDRUFovFhZWhovLz8xUVFaUffvhBgYGBri4HqHQ847ge8JyjuuMZr5psNptOnz6tyMjIS/ar8kGqTp068vT01LFjxxzajx07JqvVWu5nfHx85OPj49AWHBx8tUrEVRQYGMj/MKFa4xnH9YDnHNUdz3jVc6mRqPOq/GIT3t7eiouL0/r16+1tpaWlWr9+vRISElxYGQAAAIDqqsqPSElSWlqaUlNT1bZtW9166616+eWXVVhYqGHDhrm6NAAAAADVULUIUv369dOJEyf05JNPKicnR7GxsVq7dm2ZBShQffj4+GjixIllXtEEqguecVwPeM5R3fGMV28W2+XW9QMAAAAAOKjyc6QAAAAA4FojSAEAAACAIYIUAAAAABgiSAEAAACAIYIU3N6sWbPUoEED1axZU/Hx8dq2bZv92JkzZzRy5EiFhoaqVq1a6tu3b5kfZwaqgks952+88YYSExMVGBgoi8Wi3Nxc1xUKOGHLli3q0aOHIiMjZbFYtGrVKofjNptNTz75pCIiIuTr66ukpCTt37/fNcUCTrjcM75ixQp16dJFoaGhslgs2rVrl0vqROUiSMGtLVu2TGlpaZo4caK+/PJLtWnTRsnJyTp+/Lgk6eGHH9bq1au1fPlybd68WVlZWerTp4+LqwbMXO45//nnn9W1a1c99thjLq4UcE5hYaHatGmjWbNmlXt8+vTpevXVVzVnzhxlZGTI399fycnJOnPmzDWuFHDO5Z7xwsJCdejQQc8999w1rgxXE8ufw63Fx8erXbt2eu211yRJpaWlioqK0gMPPKC//OUvqlu3rpYsWaK7775bkvTtt9+qRYsW2rp1q2677TZXlg5U2KWe83Hjxtn7bdq0SZ06ddKpU6cUHBzsomqBK2OxWLRy5Ur16tVL0q+jUZGRkRozZozGjh0rScrLy1N4eLjmz5+v/v37u7BawNxvn/ELHT58WDExMdq5c6diY2OveW2oXIxIwW2dPXtWO3bsUFJSkr3Nw8NDSUlJ2rp1q3bs2KHi4mKH482bN1f9+vW1detWV5QMGLvccw5Ud4cOHVJOTo7D34GgoCDFx8fzdwCAWyNIwW3973//07lz5xQeHu7QHh4erpycHOXk5Mjb27vMv8yfPw5UBZd7zoHq7vxzzt8BAFUNQQoAAAAADBGk4Lbq1KkjT0/PMqvwHTt2TFarVVarVWfPni2zgtn540BVcLnnHKjuzj/n/B0AUNUQpOC2vL29FRcXp/Xr19vbSktLtX79eiUkJCguLk41atRwOJ6ZmakjR44oISHBFSUDxi73nAPVXUxMjKxWq8Pfgfz8fGVkZPB3AIBb83J1AcClpKWlKTU1VW3bttWtt96ql19+WYWFhRo2bJiCgoI0fPhwpaWlKSQkRIGBgXrggQeUkJDAin2oUi71nEuyzwk8cOCAJOmrr75SQECA6tevr5CQEFeWDlRIQUGB/fmVfl1gYteuXQoJCVH9+vU1evRoPf3002rSpIliYmL0xBNPKDIystxVzwB3dLln/OTJkzpy5IiysrIk/foPv5Lsb9igirIBbm7mzJm2+vXr27y9vW233nqr7fPPP7cf++WXX2x//etfbbVr17b5+fnZevfubcvOznZhtYBzLvWcT5w40SapzJaenu66ggEDGzduLPcZTk1NtdlsNltpaantiSeesIWHh9t8fHxsnTt3tmVmZrq2aMDA5Z7x9PT0co9PnDjRpXXjyvA7UgAAAABgiDlSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAIAq6/Dhw7JYLNq1a9c1ud78+fMVHBx8Ta4FAHBvBCkAgNsaOnSoLBaLfQsNDVXXrl21Z88eSVJUVJSys7PVqlUrSdKmTZtksViUm5trdI1evXpVqG+/fv20b98+09sAAFRDBCkAgFvr2rWrsrOzlZ2drfXr18vLy0t33XWXJMnT01NWq1VeXl5XvY7i4mL5+voqLCzsql8LAOD+CFIAALfm4+Mjq9Uqq9Wq2NhYjRs3Tj/88INOnDjh8Grf4cOH1alTJ0lS7dq1ZbFYNHToUEnSv/71L7Vu3Vq+vr4KDQ1VUlKSCgsLNWnSJC1YsEDvvvuufdRr06ZN9vMuW7ZMHTt2VM2aNbV48eIyr/ZNmjRJsbGx+sc//qEGDRooKChI/fv31+nTp+19Tp8+rUGDBsnf318RERF66aWXlJiYqNGjR1/DbxEAUNkIUgCAKqOgoECLFi1S48aNFRoa6nAsKipK77zzjiQpMzNT2dnZeuWVV5Sdna0BAwbo3nvv1d69e7Vp0yb16dNHNptNY8eO1R//+EeHUa/f/e539nOOGzdODz30kPbu3avk5ORyazp48KBWrVqlNWvWaM2aNdq8ebOmTZtmP56WlqZPP/1U7733ntatW6dPPvlEX3755VX4dgAA19LVfxcCAIArsGbNGtWqVUuSVFhYqIiICK1Zs0YeHo7/Fujp6amQkBBJUlhYmH3k6ODBgyopKVGfPn0UHR0tSWrdurX9c76+vioqKpLVai1z7dGjR6tPnz6XrK+0tFTz589XQECAJOmee+7R+vXr9cwzz+j06dNasGCBlixZos6dO0uS0tPTFRkZ6cQ3AQBwJ4xIAQDcWqdOnbRr1y7t2rVL27ZtU3Jysrp166bvv/++Qp9v06aNOnfurNatW+sPf/iD5s6dq1OnTlXos23btr1snwYNGthDlCRFRETo+PHjkqTvvvtOxcXFuvXWW+3Hg4KC1KxZswpdHwDgvghSAAC35u/vr8aNG6tx48Zq166d3nzzTRUWFmru3LkV+rynp6fWrVunDz74QC1bttTMmTPVrFkzHTp0qELXvpwaNWo47FssFpWWllaoNgBA1UWQAgBUKRaLRR4eHvrll1/KHPP29pYknTt3rsxn2rdvr8mTJ2vnzp3y9vbWypUr7Z/5bf/K0rBhQ9WoUUPbt2+3t+Xl5bGEOgBUA8yRAgC4taKiIuXk5EiSTp06pddee00FBQXq0aNHmb7R0dGyWCxas2aNUlJS5Ovrq2+++Ubr169Xly5dFBYWpoyMDJ04cUItWrSQ9OureR9++KEyMzMVGhqqoKCgSqs9ICBAqampeuSRRxQSEqKwsDBNnDhRHh4eslgslXYdAMC1x4gUAMCtrV27VhEREYqIiFB8fLy2b9+u5cuXKzExsUzfG264QZMnT9a4ceMUHh6uUaNGKTAwUFu2bFFKSoqaNm2qCRMm6MUXX1S3bt0kSSNGjFCzZs3Utm1b1a1bV59++mml1j9jxgwlJCTorrvuUlJSktq3b68WLVqoZs2alXodAMC1ZbHZbDZXFwEAwPWisLBQN9xwg1588UUNHz7c1eUAAJzEq30AAFxFO3fu1Lfffqtbb71VeXl5euqppyRJPXv2dHFlAIArQZACAOAqe+GFF5SZmSlvb2/FxcXpk08+UZ06dVxdFgDgCvBqHwAAAAAYYrEJAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQ/8PVPz4FUVlvj0AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "my_really_noisy_circuit = make_noisy(my_circuit, 0.75)\n", "plot_samples(my_really_noisy_circuit)" ] }, { "cell_type": "markdown", "metadata": { "id": "oV-0WV5Z7FQ8" }, "source": [ "Note: Try experimenting with different channels in your circuit to generate noise. Common channels supported in both Cirq and TFQ can be found [here](https://github.com/quantumlib/Cirq/blob/master/cirq-core/cirq/ops/common_channels.py)" ] }, { "cell_type": "markdown", "metadata": { "id": "atzsYj5qScn0" }, "source": [ "## 2. Basic noise in TFQ\n", "With this understanding of how noise can impact circuit execution, you can explore how noise works in TFQ. TensorFlow Quantum uses monte-carlo / trajectory based simulation as an alternative to density matrix simulation. This is because the memory complexity of density matrix simulation limits large simulations to being <= 20 qubits with traditional full density matrix simulation methods. Monte-carlo / trajectory trades this cost in memory for additional cost in time. The `backend='noisy'` option available to all `tfq.layers.Sample`, `tfq.layers.SampledExpectation` and `tfq.layers.Expectation` (In the case of `Expectation` this does add a required `repetitions` parameter).\n", "\n", "### 2.1 Noisy sampling in TFQ\n", "To recreate the above plots using TFQ and trajectory simulation you can use `tfq.layers.Sample`" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:50.458184Z", "iopub.status.busy": "2024-05-18T11:48:50.457913Z", "iopub.status.idle": "2024-05-18T11:48:50.594442Z", "shell.execute_reply": "2024-05-18T11:48:50.593731Z" }, "id": "byVI5nbNQ4_b" }, "outputs": [], "source": [ "\"\"\"Draw bitstring samples from `my_noisy_circuit`\"\"\"\n", "bitstrings = tfq.layers.Sample(backend='noisy')(my_noisy_circuit, repetitions=1000)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:50.598084Z", "iopub.status.busy": "2024-05-18T11:48:50.597532Z", "iopub.status.idle": "2024-05-18T11:48:50.736808Z", "shell.execute_reply": "2024-05-18T11:48:50.736122Z" }, "id": "ncl0ruCZrd2s" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAHWCAYAAAB9mLjgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3Z0lEQVR4nO3de1RVdd7H8c8BBAQFBOWWqHiXNCksZbRHTRKVfLw1o5WJxjRTY6aRTTqZZtZoVna1LDPQUdNxUietNCO1JgnNW+YopmlY3JxRriUXOc8fLc/TCbz8jug54Pu1FmvN2Xufvb+HtX2eec8+e2OxWq1WAQAAAAAumpuzBwAAAACAuoaQAgAAAABDhBQAAAAAGCKkAAAAAMAQIQUAAAAAhggpAAAAADBESAEAAACAIUIKAAAAAAwRUgAAAABgiJACgKtQnz591KdPH2ePcU7OnM9iseiJJ55wyrGdbcuWLbJYLNqyZYtt2dixY9WqVSunzQQAroqQAgAXlZqaKovFIm9vb/3www/V1vfp00edO3d2wmSOy8vL0+TJk9WxY0f5+PjI19dXMTExeuqpp1RQUODs8Wq0bds2PfHEE0bzrVu3Tr1791ZwcLB8fHzUunVr/e53v9OGDRsu36AAgCvKw9kDAADOr6ysTHPmzNErr7xSa/v86KOPam1fF2vHjh0aNGiQSkpKNHr0aMXExEiSvvzyS82ZM0effvqpbS5nzHfWTz/9JA+P//9/j9u2bdPMmTM1duxYBQQEXPD9zz33nB555BH17t1bU6dOlY+Pjw4fPqyPP/5YK1as0IABAy7j9LVv4cKFqqqqcvYYAOByCCkAcHHR0dFauHChpk6dqvDw8FrZp6enZ63s52IVFBRo2LBhcnd31+7du9WxY0e79U8//bQWLlxoNN/p06fl6ekpN7fa/XKFt7e3w++trKzUrFmzdOutt9YYg/n5+ZcymlM0aNDA2SMAgEviq30A4OL+8pe/6MyZM5ozZ84Ftz37X+TbtGkjLy8vtWrVSn/5y19UVlZmt11N9yC98soruvbaa+Xj46MmTZqoW7duWr58uSRp8+bNslgsWrNmTbVjLl++XBaLRenp6eec64033tAPP/ygefPmVYsoSQoJCdG0adPOOd/Ze3dWrFihadOm6ZprrpGPj4+KiookSRkZGRo0aJCaNGkiX19fXXfddXrppZfO+3mlmu//+eU9Uk888YQeeeQRSVJkZKQsFossFouOHTtW4+f8z3/+o6KiIvXs2bPG9cHBwbb/XF5erunTpysmJkb+/v7y9fXVzTffrM2bN9u959ixY7JYLHruuec0f/58tW7dWj4+Purfv7+OHz8uq9WqWbNmqXnz5mrYsKGGDBmikydP2u2jVatWuu222/TRRx8pOjpa3t7eioqK0urVq2uc83y/o1/O8+abb9rOtRtvvFE7duyo9v5Vq1YpKipK3t7e6ty5s9asWcN9VwDqBa5IAYCLi4yM1JgxY7Rw4UJNmTLlvFelfv/732vx4sW6/fbb9fDDDysjI0OzZ8/WgQMHaoygsxYuXKgHH3xQt99+uyZOnKjTp0/rq6++UkZGhu6880716dNHERERWrZsmYYNG2b33mXLlqlNmzaKjY095/7fe+89NWzYULfffrv5L+AXZs2aJU9PT02ePFllZWXy9PTUpk2bdNtttyksLEwTJ05UaGioDhw4oPXr12vixImXdLzhw4fr0KFDeuedd/TCCy+oadOmkqRmzZrVuH1wcLAaNmyodevWacKECQoMDDznvouKivTWW2/pjjvu0L333qvi4mItWrRI8fHx2r59u6Kjo+22X7ZsmcrLyzVhwgSdPHlSc+fO1e9+9zvdcsst2rJlix599FEdPnxYr7zyiiZPnqy3337b7v3ffPONRo4cqfvuu0+JiYlKSUnRb3/7W23YsEG33nqr8e9m+fLlKi4u1h//+EdZLBbNnTtXw4cP17fffmu7ivX+++9r5MiR6tKli2bPnq1Tp04pKSlJ11xzjfHxAMDlWAEALiklJcUqybpjxw7rkSNHrB4eHtYHH3zQtr53797Wa6+91vZ6z549VknW3//+93b7mTx5slWS9ZNPPrF7b+/evW2vhwwZYrevmkydOtXq5eVlLSgosC3Lz8+3enh4WGfMmHHe9zZp0sTatWvX827zS7+eb/PmzVZJ1tatW1t//PFH2/LKykprZGSktWXLltZTp07Z7aOqquqc+zsrMTHR2rJlS7tlkuw+z7PPPmuVZD169OhFzT59+nSrJKuvr6914MCB1qefftq6c+fOattVVlZay8rK7JadOnXKGhISYr3nnntsy44ePWqVZG3WrJnd737q1KlWSdauXbtaKyoqbMvvuOMOq6enp/X06dO2ZS1btrRKsr777ru2ZYWFhdawsDDr9ddfb1t29ve8efNm27Jf/47OzhMUFGQ9efKkbfk///lPqyTrunXrbMu6dOlibd68ubW4uNi2bMuWLVZJ1X7vAFDX8NU+AKgDWrdurbvvvltvvvmmcnJyatzmgw8+kCQlJyfbLX/44Ycl/Xx14FwCAgL0/fff1/jVrLPGjBmjsrIy/eMf/7AtW7lypSorKzV69Ojzzl9UVKTGjRufd5uLkZiYqIYNG9pe7969W0ePHtWkSZOqPQjCYrFc8vEcMXPmTC1fvlzXX3+9Nm7cqMcee0wxMTG64YYbdODAAdt27u7utnvBqqqqdPLkSVVWVqpbt27atWtXtf3+9re/lb+/v+119+7dJUmjR4+2ezhG9+7dVV5eXu1Jj+Hh4XZXE/38/DRmzBjt3r1bubm5xp9z5MiRatKkie31zTffLEn69ttvJUnZ2dnat2+fxowZo0aNGtm26927t7p06WJ8PABwNYQUANQR06ZNU2Vl5Tnvlfruu+/k5uamtm3b2i0PDQ1VQECAvvvuu3Pu+9FHH1WjRo100003qV27dho/frw+//xzu206duyoG2+8UcuWLbMtW7ZsmXr06FHtmL/m5+en4uLiC33EC4qMjLR7feTIEUlyucfA33HHHfrss8906tQpffTRR7rzzju1e/duDR48WKdPn7Ztt3jxYl133XXy9vZWUFCQmjVrpvfff1+FhYXV9tmiRQu712ejKiIiosblp06dslvetm3banHZvn17STrnPV/n8+t5zkbV2eOePd9qOjcudL4AQF1ASAFAHdG6dWuNHj36vFelJMeuxHTq1EmZmZlasWKFevXqpXfffVe9evXSjBkz7LYbM2aMtm7dqu+//15HjhzRF198ccGrUdLPEXbo0CGVl5cbz/ZLv7waZeJcv5MzZ85cyjgX5Ofnp1tvvVXLli1TYmKijhw5ooyMDEnS0qVLNXbsWLVp00aLFi3Shg0btGnTJt1yyy01Pm7c3d29xmOca7nVaq29D+JCxwUAV0FIAUAdcvaq1DPPPFNtXcuWLVVVVaVvvvnGbnleXp4KCgrUsmXL8+7b19dXI0eOVEpKirKyspSQkKCnn37a7grKqFGj5O7urnfeeUfLli1TgwYNNHLkyAvOPXjwYP3000969913L/KTXpw2bdpIkr7++uvzbtekSZMa/6Du+a7SnVVbXxHs1q2bJNki+B//+Idat26t1atX6+6771Z8fLzi4uLsft+16fDhw9Ui59ChQ5J0WZ6gd/Z8O3z4cI2zAEBdR0gBQB3Spk0bjR49Wm+88Ua1+1oGDRokSXrxxRftls+bN0+SlJCQcM79/ve//7V77enpqaioKFmtVlVUVNiWN23aVAMHDtTSpUu1bNkyDRgwwPYku/O57777FBYWpocfftj2X95/KT8/X0899dQF9/NrN9xwgyIjI/Xiiy9WC6VfRkObNm108OBBnThxwrZs79691b6+WBNfX19JqjHEfu3HH38852PgP/zwQ0lShw4dJP3/FZ1fzpmRkXHex8hfiuzsbLsnNxYVFWnJkiWKjo5WaGhorR8vPDxcnTt31pIlS1RSUmJbvnXrVu3bt6/WjwcAVxqPPweAOuaxxx7T3/72N2VmZuraa6+1Le/atasSExP15ptvqqCgQL1799b27du1ePFiDR06VH379j3nPvv376/Q0FD17NlTISEhOnDggF599VUlJCRUe0jEmDFjbI8xnzVr1kXN3KRJE61Zs0aDBg1SdHS0Ro8erZiYGEnSrl279M4775z38enn4ubmptdff12DBw9WdHS0xo0bp7CwMB08eFD79+/Xxo0bJUn33HOP5s2bp/j4eCUlJSk/P18LFizQtddea/tbVOdyds7HHntMo0aNUoMGDTR48GBbYP3Sjz/+qN/85jfq0aOHBgwYoIiICBUUFGjt2rX67LPPNHToUF1//fWSpNtuu02rV6/WsGHDlJCQoKNHj2rBggWKioqyC4/a0r59eyUlJWnHjh0KCQnR22+/rby8PKWkpNT6sc7661//qiFDhqhnz54aN26cTp06pVdffVWdO3e+LJ8RAK4krkgBQB3Ttm3bc96X9NZbb2nmzJnasWOHJk2apE8++URTp07VihUrzrvPP/7xjyopKdG8efM0fvx4rV27Vg8++KCWLl1abdvBgwerSZMm8vf31//+7/9e9Nzdu3fX119/rfvuu09bt27VpEmTlJycrJ07d2rKlClatWrVRe/rl+Lj47V582a1b99ezz//vJKTk5WWlqbBgwfbtunUqZOWLFmiwsJCJScn67333tPf/vY33XDDDRfc/4033qhZs2Zp7969Gjt2rO644w67K1u/FBAQoIULFyo0NFQpKSn605/+pMcff1wlJSV6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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "numeric_values = np.einsum('ijk,k->ij', bitstrings.to_tensor().numpy(), [1, 2])[0]\n", "freqs, _ = np.histogram(numeric_values, bins=[i+0.01 for i in range(-1,2** len(my_qubits))])\n", "plt.figure(figsize=(10,5))\n", "plt.title('Noisy Circuit Sampling')\n", "plt.xlabel('Bitstring')\n", "plt.ylabel('Frequency')\n", "plt.bar([i for i in range(2** len(my_qubits))], freqs, tick_label=['00','01','10','11'])" ] }, { "cell_type": "markdown", "metadata": { "id": "QfHq13RwuLlF" }, "source": [ "### 2.2 Noisy sample based expectation\n", "To do noisy sample based expectation calculation you can use `tfq.layers.SampleExpectation`:\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:50.740224Z", "iopub.status.busy": "2024-05-18T11:48:50.739733Z", "iopub.status.idle": "2024-05-18T11:48:50.745689Z", "shell.execute_reply": "2024-05-18T11:48:50.745024Z" }, "id": "ep45G-09rfrA" }, "outputs": [ { "data": { "text/plain": [ "[cirq.X(cirq.GridQubit(0, 0)),\n", " cirq.Z(cirq.GridQubit(0, 0)),\n", " cirq.PauliSum(cirq.LinearDict({frozenset({(cirq.GridQubit(0, 1), cirq.Y)}): (3+0j), frozenset(): (1+0j)}))]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "some_observables = [cirq.X(my_qubits[0]), cirq.Z(my_qubits[0]), 3.0 * cirq.Y(my_qubits[1]) + 1]\n", "some_observables" ] }, { "cell_type": "markdown", "metadata": { "id": "ur4iF_PGv0Xf" }, "source": [ "Compute the noiseless expectation estimates via sampling from the circuit:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:50.749040Z", "iopub.status.busy": "2024-05-18T11:48:50.748539Z", "iopub.status.idle": "2024-05-18T11:48:50.777282Z", "shell.execute_reply": "2024-05-18T11:48:50.776633Z" }, "id": "jL6wJ3LCvNcn" }, "outputs": [ { "data": { "text/plain": [ "array([[-0.0066, -1. , 0.9892]], dtype=float32)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "noiseless_sampled_expectation = tfq.layers.SampledExpectation(backend='noiseless')(\n", " my_circuit, operators=some_observables, repetitions=10000\n", ")\n", "noiseless_sampled_expectation.numpy()" ] }, { "cell_type": "markdown", "metadata": { "id": "c6hHgNtEv40i" }, "source": [ "Compare those with the noisy versions:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:50.780685Z", "iopub.status.busy": "2024-05-18T11:48:50.780203Z", "iopub.status.idle": "2024-05-18T11:48:50.826341Z", "shell.execute_reply": "2024-05-18T11:48:50.825667Z" }, "id": "8U4Gm-LGvYqa" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/keras/src/initializers/initializers.py:120: UserWarning: The initializer RandomUniform is unseeded and being called multiple times, which will return identical values each time (even if the initializer is unseeded). Please update your code to provide a seed to the initializer, or avoid using the same initializer instance more than once.\n", " warnings.warn(\n" ] }, { "data": { "text/plain": [ "array([[-0.0034 , -0.34820002, 0.97959995],\n", " [-0.0118 , 0.0042 , 1.015 ]], dtype=float32)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "noisy_sampled_expectation = tfq.layers.SampledExpectation(backend='noisy')(\n", " [my_noisy_circuit, my_really_noisy_circuit], operators=some_observables, repetitions=10000\n", ")\n", "noisy_sampled_expectation.numpy()" ] }, { "cell_type": "markdown", "metadata": { "id": "CqQ_2c7XwMku" }, "source": [ "You can see that the noise has particularly impacted the $\\langle \\psi | Z | \\psi \\rangle$ accuracy, with `my_really_noisy_circuit` concentrating very quickly towards 0.\n", "\n", "### 2.3 Noisy analytic expectation calculation\n", "Doing noisy analytic expectation calculations is nearly identical to above:\n", "\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:50.829560Z", "iopub.status.busy": "2024-05-18T11:48:50.829299Z", "iopub.status.idle": "2024-05-18T11:48:50.842216Z", "shell.execute_reply": "2024-05-18T11:48:50.841544Z" }, "id": "pGXKlyCywAfj" }, "outputs": [ { "data": { "text/plain": [ "array([[ 1.9106853e-15, -1.0000000e+00, 1.0000002e+00]], dtype=float32)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "noiseless_analytic_expectation = tfq.layers.Expectation(backend='noiseless')(\n", " my_circuit, operators=some_observables\n", ")\n", "noiseless_analytic_expectation.numpy()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:50.845460Z", "iopub.status.busy": "2024-05-18T11:48:50.844992Z", "iopub.status.idle": "2024-05-18T11:48:50.879206Z", "shell.execute_reply": "2024-05-18T11:48:50.878519Z" }, "id": "6FUkJ7aOyTlI" }, "outputs": [ { "data": { "text/plain": [ "array([[ 1.9106853e-15, -3.3100003e-01, 1.0000000e+00],\n", " [ 1.9106855e-15, 5.0000018e-03, 1.0000000e+00]], dtype=float32)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "noisy_analytic_expectation = tfq.layers.Expectation(backend='noisy')(\n", " [my_noisy_circuit, my_really_noisy_circuit], operators=some_observables, repetitions=10000\n", ")\n", "noisy_analytic_expectation.numpy()" ] }, { "cell_type": "markdown", "metadata": { "id": "5KHvORT42XFV" }, "source": [ "## 3. Hybrid models and quantum data noise\n", "Now that you have implemented some noisy circuit simulations in TFQ, you can experiment with how noise impacts quantum and hybrid quantum classical models, by comparing and contrasting their noisy vs noiseless performance. A good first check to see if a model or algorithm is robust to noise is to test under a circuit wide depolarizing model which looks something like this:\n", "\n", "\n", "\n", "Where each time slice of the circuit (sometimes referred to as moment) has a depolarizing channel appended after each gate operation in that time slice. The depolarizing channel with apply one of $\\{X, Y, Z \\}$ with probability $p$ or apply nothing (keep the original operation) with probability $1-p$.\n", "\n", "### 3.1 Data\n", "For this example you can use some prepared circuits in the `tfq.datasets` module as training data:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:50.882651Z", "iopub.status.busy": "2024-05-18T11:48:50.882033Z", "iopub.status.idle": "2024-05-18T11:48:55.772778Z", "shell.execute_reply": "2024-05-18T11:48:55.772031Z" }, "id": "_ZqVLEji2WUx" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading data from https://storage.googleapis.com/download.tensorflow.org/data/quantum/spin_systems/XXZ_chain.zip \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 8192/184449737 [..............................] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 4202496/184449737 [..............................] - ETA: 8s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 12673024/184449737 [=>............................] - ETA: 3s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 22298624/184449737 [==>...........................] - ETA: 2s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 25174016/184449737 [===>..........................] - ETA: 2s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 31850496/184449737 [====>.........................] - ETA: 2s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 34676736/184449737 [====>.........................] - ETA: 2s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 41852928/184449737 [=====>........................] - ETA: 1s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 41959424/184449737 [=====>........................] - ETA: 2s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 52666368/184449737 [=======>......................] - ETA: 1s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 58728448/184449737 [========>.....................] - ETA: 1s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 67739648/184449737 [==========>...................] - ETA: 1s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 74702848/184449737 [===========>..................] - ETA: 1s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 77701120/184449737 [===========>..................] - ETA: 1s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 83894272/184449737 [============>.................] - ETA: 1s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 92282880/184449737 [==============>...............] - ETA: 1s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "101711872/184449737 [===============>..............] - ETA: 1s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "110256128/184449737 [================>.............] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "117448704/184449737 [==================>...........] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "125820928/184449737 [===================>..........] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "135634944/184449737 [=====================>........] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "145342464/184449737 [======================>.......] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "151756800/184449737 [=======================>......] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "159391744/184449737 [========================>.....] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "165978112/184449737 [=========================>....] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "167780352/184449737 [==========================>...] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "177061888/184449737 [===========================>..] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "184449737/184449737 [==============================] - 2s 0us/step\n" ] }, { "data": { "text/html": [ "
                       ┌──────────────────┐   ┌──────────────────────┐   ┌──────────────────────┐                                       ┌──────────────────┐   ┌──────────────────┐   ┌──────────────────┐                                        ┌──────────────────┐   ┌──────────────────┐   ┌──────────────────┐                                        ┌──────────────────┐   ┌──────────────────┐   ┌──────────────────┐\n",
       "(0, 0): ───X───H───@─────────────ZZ───────────────────────YY─────────────────────────XX─────────────ZZ──────────YY──────────XX────────────────────ZZ─────────────────────YY─────────────────────XX───────────ZZ─────────YY───────────XX─────────────────────ZZ─────────────────────YY─────────────────────XX───────────ZZ─────────YY───────────XX─────────────────────ZZ─────────────────────YY─────────────────────XX───────────ZZ──────────YY──────────XX──────────\n",
       "                   │             │                        │                          │              │           │           │                     │                      │                      │            │          │            │                      │                      │                      │            │          │            │                      │                      │                      │            │           │           │\n",
       "(0, 1): ───X───────X────ZZ───────┼─────────────YY─────────┼───────────────XX─────────┼──────────────ZZ^-0.941───YY^-0.767───XX^-0.767────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.985───YY^-0.901───XX^-0.901───\n",
       "                        │        │             │          │               │          │                                                   │        │             │        │             │        │                                                  │        │             │        │             │        │                                                  │        │             │        │             │        │\n",
       "(0, 2): ───X───H───@────ZZ^-0.977┼─────────────YY^(-10/11)┼───────────────XX^(-10/11)┼──────────────ZZ──────────YY──────────XX───────────ZZ^-0.968┼─────────────YY^-0.898┼─────────────XX^-0.898┼────────────ZZ─────────YY───────────XX────────────ZZ^-0.962┼─────────────YY^-0.869┼─────────────XX^-0.869┼────────────ZZ─────────YY───────────XX────────────ZZ^-0.954┼─────────────YY^-0.904┼─────────────XX^-0.904┼────────────ZZ──────────YY──────────XX──────────\n",
       "                   │             │                        │                          │              │           │           │                     │                      │                      │            │          │            │                      │                      │                      │            │          │            │                      │                      │                      │            │           │           │\n",
       "(0, 3): ───X───────X────ZZ───────┼─────────────YY─────────┼───────────────XX─────────┼──────────────ZZ^-0.941───YY^-0.767───XX^-0.767────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.985───YY^-0.901───XX^-0.901───\n",
       "                        │        │             │          │               │          │                                                   │        │             │        │             │        │                                                  │        │             │        │             │        │                                                  │        │             │        │             │        │\n",
       "(0, 4): ───X───H───@────ZZ^-0.977┼─────────────YY^(-10/11)┼───────────────XX^(-10/11)┼──────────────ZZ──────────YY──────────XX───────────ZZ^-0.968┼─────────────YY^-0.898┼─────────────XX^-0.898┼────────────ZZ─────────YY───────────XX────────────ZZ^-0.962┼─────────────YY^-0.869┼─────────────XX^-0.869┼────────────ZZ─────────YY───────────XX────────────ZZ^-0.954┼─────────────YY^-0.904┼─────────────XX^-0.904┼────────────ZZ──────────YY──────────XX──────────\n",
       "                   │             │                        │                          │              │           │           │                     │                      │                      │            │          │            │                      │                      │                      │            │          │            │                      │                      │                      │            │           │           │\n",
       "(0, 5): ───X───────X────ZZ───────┼─────────────YY─────────┼───────────────XX─────────┼──────────────ZZ^-0.941───YY^-0.767───XX^-0.767────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.985───YY^-0.901───XX^-0.901───\n",
       "                        │        │             │          │               │          │                                                   │        │             │        │             │        │                                                  │        │             │        │             │        │                                                  │        │             │        │             │        │\n",
       "(0, 6): ───X───H───@────ZZ^-0.977┼─────────────YY^(-10/11)┼───────────────XX^(-10/11)┼──────────────ZZ──────────YY──────────XX───────────ZZ^-0.968┼─────────────YY^-0.898┼─────────────XX^-0.898┼────────────ZZ─────────YY───────────XX────────────ZZ^-0.962┼─────────────YY^-0.869┼─────────────XX^-0.869┼────────────ZZ─────────YY───────────XX────────────ZZ^-0.954┼─────────────YY^-0.904┼─────────────XX^-0.904┼────────────ZZ──────────YY──────────XX──────────\n",
       "                   │             │                        │                          │              │           │           │                     │                      │                      │            │          │            │                      │                      │                      │            │          │            │                      │                      │                      │            │           │           │\n",
       "(0, 7): ───X───────X─────────────ZZ^-0.977────────────────YY^(-10/11)────────────────XX^(-10/11)────ZZ^-0.941───YY^-0.767───XX^-0.767─────────────ZZ^-0.968──────────────YY^-0.898──────────────XX^-0.898────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)─────────────ZZ^-0.962──────────────YY^-0.869──────────────XX^-0.869────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)─────────────ZZ^-0.954──────────────YY^-0.904──────────────XX^-0.904────ZZ^-0.985───YY^-0.901───XX^-0.901───\n",
       "                       └──────────────────┘   └──────────────────────┘   └──────────────────────┘                                       └──────────────────┘   └──────────────────┘   └──────────────────┘                                        └──────────────────┘   └──────────────────┘   └──────────────────┘                                        └──────────────────┘   └──────────────────┘   └──────────────────┘
" ], "text/plain": [ " ┌──────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐\n", "(0, 0): ───X───H───@─────────────ZZ───────────────────────YY─────────────────────────XX─────────────ZZ──────────YY──────────XX────────────────────ZZ─────────────────────YY─────────────────────XX───────────ZZ─────────YY───────────XX─────────────────────ZZ─────────────────────YY─────────────────────XX───────────ZZ─────────YY───────────XX─────────────────────ZZ─────────────────────YY─────────────────────XX───────────ZZ──────────YY──────────XX──────────\n", " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", "(0, 1): ───X───────X────ZZ───────┼─────────────YY─────────┼───────────────XX─────────┼──────────────ZZ^-0.941───YY^-0.767───XX^-0.767────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.985───YY^-0.901───XX^-0.901───\n", " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", "(0, 2): ───X───H───@────ZZ^-0.977┼─────────────YY^(-10/11)┼───────────────XX^(-10/11)┼──────────────ZZ──────────YY──────────XX───────────ZZ^-0.968┼─────────────YY^-0.898┼─────────────XX^-0.898┼────────────ZZ─────────YY───────────XX────────────ZZ^-0.962┼─────────────YY^-0.869┼─────────────XX^-0.869┼────────────ZZ─────────YY───────────XX────────────ZZ^-0.954┼─────────────YY^-0.904┼─────────────XX^-0.904┼────────────ZZ──────────YY──────────XX──────────\n", " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", "(0, 3): ───X───────X────ZZ───────┼─────────────YY─────────┼───────────────XX─────────┼──────────────ZZ^-0.941───YY^-0.767───XX^-0.767────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.985───YY^-0.901───XX^-0.901───\n", " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", "(0, 4): ───X───H───@────ZZ^-0.977┼─────────────YY^(-10/11)┼───────────────XX^(-10/11)┼──────────────ZZ──────────YY──────────XX───────────ZZ^-0.968┼─────────────YY^-0.898┼─────────────XX^-0.898┼────────────ZZ─────────YY───────────XX────────────ZZ^-0.962┼─────────────YY^-0.869┼─────────────XX^-0.869┼────────────ZZ─────────YY───────────XX────────────ZZ^-0.954┼─────────────YY^-0.904┼─────────────XX^-0.904┼────────────ZZ──────────YY──────────XX──────────\n", " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", "(0, 5): ───X───────X────ZZ───────┼─────────────YY─────────┼───────────────XX─────────┼──────────────ZZ^-0.941───YY^-0.767───XX^-0.767────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)────ZZ───────┼─────────────YY───────┼─────────────XX───────┼────────────ZZ^-0.985───YY^-0.901───XX^-0.901───\n", " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", "(0, 6): ───X───H───@────ZZ^-0.977┼─────────────YY^(-10/11)┼───────────────XX^(-10/11)┼──────────────ZZ──────────YY──────────XX───────────ZZ^-0.968┼─────────────YY^-0.898┼─────────────XX^-0.898┼────────────ZZ─────────YY───────────XX────────────ZZ^-0.962┼─────────────YY^-0.869┼─────────────XX^-0.869┼────────────ZZ─────────YY───────────XX────────────ZZ^-0.954┼─────────────YY^-0.904┼─────────────XX^-0.904┼────────────ZZ──────────YY──────────XX──────────\n", " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", "(0, 7): ───X───────X─────────────ZZ^-0.977────────────────YY^(-10/11)────────────────XX^(-10/11)────ZZ^-0.941───YY^-0.767───XX^-0.767─────────────ZZ^-0.968──────────────YY^-0.898──────────────XX^-0.898────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)─────────────ZZ^-0.962──────────────YY^-0.869──────────────XX^-0.869────ZZ^-0.98───YY^(-9/11)───XX^(-9/11)─────────────ZZ^-0.954──────────────YY^-0.904──────────────XX^-0.904────ZZ^-0.985───YY^-0.901───XX^-0.901───\n", " └──────────────────┘ └──────────────────────┘ └──────────────────────┘ └──────────────────┘ └──────────────────┘ └──────────────────┘ └──────────────────┘ └──────────────────┘ └──────────────────┘ └──────────────────┘ └──────────────────┘ └──────────────────┘" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qubits = cirq.GridQubit.rect(1, 8)\n", "circuits, labels, pauli_sums, _ = tfq.datasets.xxz_chain(qubits, 'closed')\n", "circuits[0]" ] }, { "cell_type": "markdown", "metadata": { "id": "MFgNU_nBGeTm" }, "source": [ "Writing a small helper function will help to generate the data for the noisy vs noiseless case:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:55.777006Z", "iopub.status.busy": "2024-05-18T11:48:55.776358Z", "iopub.status.idle": "2024-05-18T11:48:55.781754Z", "shell.execute_reply": "2024-05-18T11:48:55.781078Z" }, "id": "zkQofAqqGibQ" }, "outputs": [], "source": [ "def get_data(qubits, depolarize_p=0.):\n", " \"\"\"Return quantum data circuits and labels in `tf.Tensor` form.\"\"\"\n", " circuits, labels, pauli_sums, _ = tfq.datasets.xxz_chain(qubits, 'closed')\n", " if depolarize_p >= 1e-5:\n", " circuits = [circuit.with_noise(cirq.depolarize(depolarize_p)) for circuit in circuits]\n", " tmp = list(zip(circuits, labels))\n", " random.shuffle(tmp)\n", " circuits_tensor = tfq.convert_to_tensor([x[0] for x in tmp])\n", " labels_tensor = tf.convert_to_tensor([x[1] for x in tmp])\n", "\n", " return circuits_tensor, labels_tensor" ] }, { "cell_type": "markdown", "metadata": { "id": "FtJrfsLCF9Z3" }, "source": [ "### 3.2 Define a model circuit\n", "Now that you have quantum data in the form of circuits, you will need a circuit to model this data, like with the data you can write a helper function to generate this circuit optionally containing noise:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:55.785230Z", "iopub.status.busy": "2024-05-18T11:48:55.784662Z", "iopub.status.idle": "2024-05-18T11:48:55.808296Z", "shell.execute_reply": "2024-05-18T11:48:55.807647Z" }, "id": "TwryFaFIG2Ya" }, "outputs": [ { "data": { "text/html": [ "
(0, 0): ───H───@───────X^(layer-0)───@───────Y^(layer-1)───@───────X^(layer-2)───\n",
       "               │                     │                     │\n",
       "(0, 1): ───H───X───@───X^(layer-0)───X───@───Y^(layer-1)───X───@───X^(layer-2)───\n",
       "                   │                     │                     │\n",
       "(0, 2): ───H───@───X───X^(layer-0)───@───X───Y^(layer-1)───@───X───X^(layer-2)───\n",
       "               │                     │                     │\n",
       "(0, 3): ───H───X───@───X^(layer-0)───X───@───Y^(layer-1)───X───@───X^(layer-2)───\n",
       "                   │                     │                     │\n",
       "(0, 4): ───H───@───X───X^(layer-0)───@───X───Y^(layer-1)───@───X───X^(layer-2)───\n",
       "               │                     │                     │\n",
       "(0, 5): ───H───X───@───X^(layer-0)───X───@───Y^(layer-1)───X───@───X^(layer-2)───\n",
       "                   │                     │                     │\n",
       "(0, 6): ───H───@───X───X^(layer-0)───@───X───Y^(layer-1)───@───X───X^(layer-2)───\n",
       "               │                     │                     │\n",
       "(0, 7): ───H───X───────X^(layer-0)───X───────Y^(layer-1)───X───────X^(layer-2)───
" ], "text/plain": [ "(0, 0): ───H───@───────X^(layer-0)───@───────Y^(layer-1)───@───────X^(layer-2)───\n", " │ │ │\n", "(0, 1): ───H───X───@───X^(layer-0)───X───@───Y^(layer-1)───X───@───X^(layer-2)───\n", " │ │ │\n", "(0, 2): ───H───@───X───X^(layer-0)───@───X───Y^(layer-1)───@───X───X^(layer-2)───\n", " │ │ │\n", "(0, 3): ───H───X───@───X^(layer-0)───X───@───Y^(layer-1)───X───@───X^(layer-2)───\n", " │ │ │\n", "(0, 4): ───H───@───X───X^(layer-0)───@───X───Y^(layer-1)───@───X───X^(layer-2)───\n", " │ │ │\n", "(0, 5): ───H───X───@───X^(layer-0)───X───@───Y^(layer-1)───X───@───X^(layer-2)───\n", " │ │ │\n", "(0, 6): ───H───@───X───X^(layer-0)───@───X───Y^(layer-1)───@───X───X^(layer-2)───\n", " │ │ │\n", "(0, 7): ───H───X───────X^(layer-0)───X───────Y^(layer-1)───X───────X^(layer-2)───" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def modelling_circuit(qubits, depth, depolarize_p=0.):\n", " \"\"\"A simple classifier circuit.\"\"\"\n", " dim = len(qubits)\n", " ret = cirq.Circuit(cirq.H.on_each(*qubits))\n", "\n", " for i in range(depth):\n", " # Entangle layer.\n", " ret += cirq.Circuit(cirq.CX(q1, q2) for (q1, q2) in zip(qubits[::2], qubits[1::2]))\n", " ret += cirq.Circuit(cirq.CX(q1, q2) for (q1, q2) in zip(qubits[1::2], qubits[2::2]))\n", " # Learnable rotation layer.\n", " # i_params = sympy.symbols(f'layer-{i}-0:{dim}')\n", " param = sympy.Symbol(f'layer-{i}')\n", " single_qb = cirq.X\n", " if i % 2 == 1:\n", " single_qb = cirq.Y\n", " ret += cirq.Circuit(single_qb(q) ** param for q in qubits)\n", " \n", " if depolarize_p >= 1e-5:\n", " ret = ret.with_noise(cirq.depolarize(depolarize_p))\n", "\n", " return ret, [op(q) for q in qubits for op in [cirq.X, cirq.Y, cirq.Z]]\n", "\n", "modelling_circuit(qubits, 3)[0]" ] }, { "cell_type": "markdown", "metadata": { "id": "U-ZMaCpJI9TH" }, "source": [ "### 3.3 Model building and training\n", "With your data and model circuit built, the final helper function you will need is one that can assemble both a noisy or a noiseless hybrid quantum `tf.keras.Model`:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:55.811681Z", "iopub.status.busy": "2024-05-18T11:48:55.811144Z", "iopub.status.idle": "2024-05-18T11:48:55.816494Z", "shell.execute_reply": "2024-05-18T11:48:55.815851Z" }, "id": "r09CT5N9DWa_" }, "outputs": [], "source": [ "def build_keras_model(qubits, depolarize_p=0.):\n", " \"\"\"Prepare a noisy hybrid quantum classical Keras model.\"\"\"\n", " spin_input = tf.keras.Input(shape=(), dtype=tf.dtypes.string)\n", "\n", " circuit_and_readout = modelling_circuit(qubits, 4, depolarize_p)\n", " if depolarize_p >= 1e-5:\n", " quantum_model = tfq.layers.NoisyPQC(*circuit_and_readout, sample_based=False, repetitions=10)(spin_input)\n", " else:\n", " quantum_model = tfq.layers.PQC(*circuit_and_readout)(spin_input)\n", "\n", " intermediate = tf.keras.layers.Dense(4, activation='sigmoid')(quantum_model)\n", " post_process = tf.keras.layers.Dense(1)(intermediate)\n", "\n", " return tf.keras.Model(inputs=[spin_input], outputs=[post_process])" ] }, { "cell_type": "markdown", "metadata": { "id": "QbMtT7BZmhfm" }, "source": [ "## 4. Compare performance\n", "\n", "### 4.1 Noiseless baseline\n", "\n", "With your data generation and model building code, you can now compare and contrast model performance in the noiseless and noisy settings, first you can run a reference noiseless training:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:55.819755Z", "iopub.status.busy": "2024-05-18T11:48:55.819313Z", "iopub.status.idle": "2024-05-18T11:48:56.977630Z", "shell.execute_reply": "2024-05-18T11:48:56.976666Z" }, "id": "QAgpq9c-EakW" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "training_histories = dict()\n", "depolarize_p = 0.\n", "n_epochs = 50\n", "phase_classifier = build_keras_model(qubits, depolarize_p)\n", "\n", "phase_classifier.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.02),\n", " loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),\n", " metrics=['accuracy'])\n", "\n", "\n", "# Show the keras plot of the model\n", "tf.keras.utils.plot_model(phase_classifier, show_shapes=True, dpi=70)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:48:56.981842Z", "iopub.status.busy": "2024-05-18T11:48:56.981070Z", "iopub.status.idle": "2024-05-18T11:49:13.242848Z", "shell.execute_reply": "2024-05-18T11:49:13.242057Z" }, "id": "9tKimWRMlVfL" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 2s - loss: 0.6852 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 0s - loss: 0.6607 - accuracy: 0.3750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.6970 - accuracy: 0.4844" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 1s 129ms/step - loss: 0.6970 - accuracy: 0.4844 - val_loss: 0.6656 - val_accuracy: 0.4167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 2/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.6742 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.6913 - accuracy: 0.5208" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 62ms/step - loss: 0.6841 - accuracy: 0.4844 - val_loss: 0.6620 - val_accuracy: 0.4167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 3/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.7013 - accuracy: 0.6250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.6804 - accuracy: 0.5208" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.6754 - accuracy: 0.4844" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 66ms/step - loss: 0.6754 - accuracy: 0.4844 - val_loss: 0.6578 - val_accuracy: 0.4167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 4/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.6585 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.6637 - accuracy: 0.4792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 62ms/step - loss: 0.6622 - accuracy: 0.4844 - val_loss: 0.6480 - val_accuracy: 0.4167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 5/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.6473 - accuracy: 0.2500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.6534 - accuracy: 0.4792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 63ms/step - loss: 0.6539 - accuracy: 0.4844 - val_loss: 0.6344 - val_accuracy: 0.4167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 6/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.6355 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.6396 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 62ms/step - loss: 0.6417 - accuracy: 0.4844 - val_loss: 0.6193 - val_accuracy: 0.4167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 7/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.6387 - accuracy: 0.5000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.6309 - accuracy: 0.5000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 61ms/step - loss: 0.6276 - accuracy: 0.4844 - val_loss: 0.6020 - val_accuracy: 0.4167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 8/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.6303 - accuracy: 0.5000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.6116 - accuracy: 0.4167" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.6129 - accuracy: 0.4844 - val_loss: 0.5817 - val_accuracy: 0.4167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 9/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.5913 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.5927 - accuracy: 0.5000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 61ms/step - loss: 0.5952 - accuracy: 0.5000 - val_loss: 0.5595 - val_accuracy: 0.6667\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 10/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.5729 - accuracy: 0.3750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.5741 - accuracy: 0.6042" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.5758 - accuracy: 0.6250 - val_loss: 0.5357 - val_accuracy: 0.7500\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 11/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.5787 - accuracy: 0.6250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.5539 - accuracy: 0.6250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 61ms/step - loss: 0.5531 - accuracy: 0.6562 - val_loss: 0.5101 - val_accuracy: 0.9167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 12/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.4802 - accuracy: 0.6875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.5192 - accuracy: 0.6667" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.5314 - accuracy: 0.7031 - val_loss: 0.4837 - val_accuracy: 0.9167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 13/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.4872 - accuracy: 0.6250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.5070 - accuracy: 0.7500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.5048 - accuracy: 0.7656 - val_loss: 0.4573 - val_accuracy: 0.9167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 14/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.4547 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.4806 - accuracy: 0.7917" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.4801 - accuracy: 0.7812 - val_loss: 0.4296 - val_accuracy: 0.9167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 15/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.4916 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.4536 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 61ms/step - loss: 0.4558 - accuracy: 0.7812 - val_loss: 0.4025 - val_accuracy: 0.9167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 16/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.4225 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.4327 - accuracy: 0.7917" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.4295 - accuracy: 0.8281 - val_loss: 0.3758 - val_accuracy: 0.9167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 17/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.4267 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.4107 - accuracy: 0.8542" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.4047 - accuracy: 0.8438 - val_loss: 0.3518 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 18/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.3734 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.3797 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.3803 - accuracy: 0.8594 - val_loss: 0.3289 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 19/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.3361 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.3590 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 61ms/step - loss: 0.3571 - accuracy: 0.8750 - val_loss: 0.3087 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 20/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.3331 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.3379 - accuracy: 0.8958" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.3358 - accuracy: 0.9062 - val_loss: 0.2889 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 21/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.3659 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.3187 - accuracy: 0.9583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.3169 - accuracy: 0.9062 - val_loss: 0.2698 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 22/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.2715 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.3013 - accuracy: 0.9167" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.2975 - accuracy: 0.9062 - val_loss: 0.2526 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 23/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.2091 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.2792 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.2826 - accuracy: 0.9062 - val_loss: 0.2349 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 24/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.2810 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.2644 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.2642 - accuracy: 0.9219 - val_loss: 0.2246 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 25/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.2190 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.2482 - accuracy: 0.9167" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.2503 - accuracy: 0.9375 - val_loss: 0.2138 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 26/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.2313 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.2459 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.2378 - accuracy: 0.9375 - val_loss: 0.2049 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 27/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.2190 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.2384 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.2265 - accuracy: 0.9531 - val_loss: 0.1962 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 28/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1689 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.2126 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.2158 - accuracy: 0.9531 - val_loss: 0.1866 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 29/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.2142 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.2241 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.2066 - accuracy: 0.9531 - val_loss: 0.1747 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 30/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1733 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.2067 - accuracy: 0.9792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.1975 - accuracy: 0.9531 - val_loss: 0.1639 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 31/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1505 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1788 - accuracy: 0.9583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1909 - accuracy: 0.9375 - val_loss: 0.1539 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 32/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1290 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1889 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1819 - accuracy: 0.9375 - val_loss: 0.1524 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 33/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1351 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1462 - accuracy: 0.9792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1757 - accuracy: 0.9531 - val_loss: 0.1474 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 34/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1378 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1756 - accuracy: 0.9583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1690 - accuracy: 0.9531 - val_loss: 0.1460 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 35/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1422 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1571 - accuracy: 0.9792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 58ms/step - loss: 0.1656 - accuracy: 0.9531 - val_loss: 0.1391 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 36/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1624 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1450 - accuracy: 0.9583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1594 - accuracy: 0.9688 - val_loss: 0.1390 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 37/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1393 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1325 - accuracy: 0.9792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1547 - accuracy: 0.9688 - val_loss: 0.1550 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 38/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.0709 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1463 - accuracy: 0.9583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.1542 - accuracy: 0.9688 - val_loss: 0.1244 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 39/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1354 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1528 - accuracy: 0.9583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1467 - accuracy: 0.9688 - val_loss: 0.1275 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 40/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1337 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1447 - accuracy: 0.9583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.1485 - accuracy: 0.9688 - val_loss: 0.1254 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 41/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1278 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1406 - accuracy: 0.9583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1421 - accuracy: 0.9531 - val_loss: 0.1239 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 42/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1197 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1329 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1453 - accuracy: 0.9844 - val_loss: 0.1243 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 43/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1429 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1302 - accuracy: 0.9792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1333 - accuracy: 0.9844 - val_loss: 0.1065 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 44/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.0984 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1361 - accuracy: 0.9583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 58ms/step - loss: 0.1361 - accuracy: 0.9375 - val_loss: 0.0930 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 45/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1474 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1301 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1303 - accuracy: 0.9531 - val_loss: 0.1082 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 46/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.0911 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1089 - accuracy: 0.9792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 60ms/step - loss: 0.1237 - accuracy: 0.9688 - val_loss: 0.1091 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 47/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.0611 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1186 - accuracy: 0.9792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1202 - accuracy: 0.9844 - val_loss: 0.1053 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 48/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.0532 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1102 - accuracy: 0.9583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1169 - accuracy: 0.9688 - val_loss: 0.0991 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 49/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.1300 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1091 - accuracy: 0.9792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 59ms/step - loss: 0.1142 - accuracy: 0.9688 - val_loss: 0.0982 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 50/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 0s - loss: 0.0739 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 0s - loss: 0.1097 - accuracy: 0.9583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 0s 61ms/step - loss: 0.1129 - accuracy: 0.9688 - val_loss: 0.1005 - val_accuracy: 1.0000\n" ] } ], "source": [ "noiseless_data, noiseless_labels = get_data(qubits, depolarize_p)\n", "training_histories['noiseless'] = phase_classifier.fit(x=noiseless_data,\n", " y=noiseless_labels,\n", " batch_size=16,\n", " epochs=n_epochs,\n", " validation_split=0.15,\n", " verbose=1)" ] }, { "cell_type": "markdown", "metadata": { "id": "A9oql6Synv3f" }, "source": [ "And explore the results and accuracy:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:49:13.247011Z", "iopub.status.busy": "2024-05-18T11:49:13.246340Z", "iopub.status.idle": "2024-05-18T11:49:13.455348Z", "shell.execute_reply": "2024-05-18T11:49:13.454343Z" }, "id": "TG87YNUWKKLY" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "loss_plotter = tfdocs.plots.HistoryPlotter(metric = 'loss', smoothing_std=10)\n", "loss_plotter.plot(training_histories)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:49:13.459305Z", "iopub.status.busy": "2024-05-18T11:49:13.458527Z", "iopub.status.idle": "2024-05-18T11:49:13.623750Z", "shell.execute_reply": "2024-05-18T11:49:13.622794Z" }, "id": "O2ZwM18YUxxm" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "acc_plotter = tfdocs.plots.HistoryPlotter(metric = 'accuracy', smoothing_std=10)\n", "acc_plotter.plot(training_histories)" ] }, { "cell_type": "markdown", "metadata": { "id": "JlOwBxvSnzid" }, "source": [ "### 4.2 Noisy comparison\n", "Now you can build a new model with noisy structure and compare to the above, the code is nearly identical:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:49:13.627672Z", "iopub.status.busy": "2024-05-18T11:49:13.626890Z", "iopub.status.idle": "2024-05-18T11:49:13.844672Z", "shell.execute_reply": "2024-05-18T11:49:13.843470Z" }, "id": "0jy54uWpgwhi" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "depolarize_p = 0.001\n", "n_epochs = 50\n", "noisy_phase_classifier = build_keras_model(qubits, depolarize_p)\n", "\n", "noisy_phase_classifier.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.02),\n", " loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),\n", " metrics=['accuracy'])\n", "\n", "\n", "# Show the keras plot of the model\n", "tf.keras.utils.plot_model(noisy_phase_classifier, show_shapes=True, dpi=70)" ] }, { "cell_type": "markdown", "metadata": { "id": "r-vYU6S3oN-J" }, "source": [ "Note: in the model diagram there is now a `tfq.layers.NoisyPQC` instead of a `tfq.layers.PQC` since the depolarization probability is no longer zero. Training will take significantly longer since noisy simulation is far more expensive than noiseless." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:49:13.848996Z", "iopub.status.busy": "2024-05-18T11:49:13.848270Z", "iopub.status.idle": "2024-05-18T11:53:36.562878Z", "shell.execute_reply": "2024-05-18T11:53:36.562019Z" }, "id": "210cLP5AoClJ" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 12s - loss: 0.7062 - accuracy: 0.3125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.6932 - accuracy: 0.5000 " ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.6894 - accuracy: 0.4792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.6851 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 9s 1s/step - loss: 0.6851 - accuracy: 0.4375 - val_loss: 0.6770 - val_accuracy: 0.6667\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 2/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.6730 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.6699 - accuracy: 0.4062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.6701 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.6696 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.6696 - accuracy: 0.4375 - val_loss: 0.6996 - val_accuracy: 0.6667\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 3/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.6750 - accuracy: 0.5000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.6504 - accuracy: 0.3750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.6526 - accuracy: 0.3958" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.6609 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.6609 - accuracy: 0.4375 - val_loss: 0.7085 - val_accuracy: 0.6667\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 4/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.6583 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.6528 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.6580 - accuracy: 0.4583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.6501 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.6501 - accuracy: 0.4375 - val_loss: 0.7097 - val_accuracy: 0.6667\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 5/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.7155 - accuracy: 0.6250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.6485 - accuracy: 0.5000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.6403 - accuracy: 0.4792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.6461 - accuracy: 0.4844" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.6461 - accuracy: 0.4844 - val_loss: 0.6984 - val_accuracy: 0.7500\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 6/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.7000 - accuracy: 0.6250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.6879 - accuracy: 0.6250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.6582 - accuracy: 0.5417" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.6379 - accuracy: 0.4844" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.6379 - accuracy: 0.4844 - val_loss: 0.6806 - val_accuracy: 0.6667\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 7/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.6334 - accuracy: 0.5000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.6126 - accuracy: 0.4375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.6239 - accuracy: 0.5000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.6281 - accuracy: 0.5156" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.6281 - accuracy: 0.5156 - val_loss: 0.6689 - val_accuracy: 0.7500\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 8/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.6279 - accuracy: 0.5625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.6023 - accuracy: 0.5625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.6183 - accuracy: 0.5833" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.6176 - accuracy: 0.5781" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.6176 - accuracy: 0.5781 - val_loss: 0.6502 - val_accuracy: 0.7500\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 9/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.5995 - accuracy: 0.5625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.5863 - accuracy: 0.5625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.6123 - accuracy: 0.6042" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.6082 - accuracy: 0.5938" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.6082 - accuracy: 0.5938 - val_loss: 0.6304 - val_accuracy: 0.8333\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 10/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.5776 - accuracy: 0.6250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.5969 - accuracy: 0.6562" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.5885 - accuracy: 0.5833" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.5994 - accuracy: 0.5781" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.5994 - accuracy: 0.5781 - val_loss: 0.6079 - val_accuracy: 0.8333\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 11/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.6057 - accuracy: 0.6875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.5983 - accuracy: 0.6875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.5896 - accuracy: 0.7083" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.5889 - accuracy: 0.6250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.5889 - accuracy: 0.6250 - val_loss: 0.5922 - val_accuracy: 0.9167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 12/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.5921 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.5843 - accuracy: 0.6250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.5798 - accuracy: 0.6458" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.5698 - accuracy: 0.6875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.5698 - accuracy: 0.6875 - val_loss: 0.5856 - val_accuracy: 0.8333\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 13/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.6156 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.5649 - accuracy: 0.7188" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.5589 - accuracy: 0.6875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.5624 - accuracy: 0.6875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.5624 - accuracy: 0.6875 - val_loss: 0.5666 - val_accuracy: 0.8333\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 14/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.5643 - accuracy: 0.7500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.5573 - accuracy: 0.6562" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.5583 - accuracy: 0.6667" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.5419 - accuracy: 0.6719" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.5419 - accuracy: 0.6719 - val_loss: 0.5141 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 15/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.5012 - accuracy: 0.7500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.5270 - accuracy: 0.6562" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.5261 - accuracy: 0.6875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.5321 - accuracy: 0.7188" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.5321 - accuracy: 0.7188 - val_loss: 0.5024 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 16/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.5585 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.5182 - accuracy: 0.7500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.5086 - accuracy: 0.7083" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.5228 - accuracy: 0.6875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.5228 - accuracy: 0.6875 - val_loss: 0.4970 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 17/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.5075 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.4898 - accuracy: 0.7500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.4967 - accuracy: 0.7500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.4946 - accuracy: 0.7812" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.4946 - accuracy: 0.7812 - val_loss: 0.4924 - val_accuracy: 0.9167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 18/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.5020 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.5016 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.4912 - accuracy: 0.8542" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.4873 - accuracy: 0.7969" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.4873 - accuracy: 0.7969 - val_loss: 0.4714 - val_accuracy: 0.8333\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 19/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.4459 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.4462 - accuracy: 0.8438" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.4445 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.4708 - accuracy: 0.8281" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.4708 - accuracy: 0.8281 - val_loss: 0.4329 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 20/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.4404 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.4689 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.4770 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.4628 - accuracy: 0.7969" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.4628 - accuracy: 0.7969 - val_loss: 0.3888 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 21/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.4744 - accuracy: 0.7500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.4846 - accuracy: 0.7812" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.4457 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.4419 - accuracy: 0.7969" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.4419 - accuracy: 0.7969 - val_loss: 0.3807 - val_accuracy: 0.9167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 22/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.4324 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.4223 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.4305 - accuracy: 0.8333" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.4307 - accuracy: 0.7969" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.4307 - accuracy: 0.7969 - val_loss: 0.3384 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 23/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.3666 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.3948 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.3859 - accuracy: 0.8333" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.4010 - accuracy: 0.7969" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.4010 - accuracy: 0.7969 - val_loss: 0.3665 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 24/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.4323 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.3918 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.4044 - accuracy: 0.7708" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.3922 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.3922 - accuracy: 0.8125 - val_loss: 0.3271 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 25/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.4178 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.3778 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.3686 - accuracy: 0.9167" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.3638 - accuracy: 0.8906" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.3638 - accuracy: 0.8906 - val_loss: 0.3407 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 26/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.3863 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.3562 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.3684 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.3456 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.3456 - accuracy: 0.9062 - val_loss: 0.2935 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 27/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.4075 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.3801 - accuracy: 0.9688" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.3727 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.3580 - accuracy: 0.9219" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.3580 - accuracy: 0.9219 - val_loss: 0.2527 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 28/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.3505 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.3462 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.3456 - accuracy: 0.8958" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.3323 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.3323 - accuracy: 0.9062 - val_loss: 0.3143 - val_accuracy: 0.9167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 29/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.3586 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.3596 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.3575 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.3380 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.3380 - accuracy: 0.9062 - val_loss: 0.3100 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 30/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2760 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2818 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2836 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2893 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2893 - accuracy: 0.9375 - val_loss: 0.2266 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 31/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2889 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.3094 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2950 - accuracy: 0.9167" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.3008 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.3008 - accuracy: 0.9062 - val_loss: 0.2205 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 32/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.3071 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2796 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2842 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2806 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2806 - accuracy: 0.9062 - val_loss: 0.2191 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 33/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2348 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2379 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2452 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2657 - accuracy: 0.9219" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2657 - accuracy: 0.9219 - val_loss: 0.1817 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 34/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.3171 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2822 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2529 - accuracy: 0.9167" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2722 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2722 - accuracy: 0.9375 - val_loss: 0.2123 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 35/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2174 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2509 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2621 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2790 - accuracy: 0.8906" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2790 - accuracy: 0.8906 - val_loss: 0.1979 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 36/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2124 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2375 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2366 - accuracy: 0.9792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2423 - accuracy: 0.9844" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2423 - accuracy: 0.9844 - val_loss: 0.2043 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 37/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2925 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.3047 - accuracy: 0.9688" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2649 - accuracy: 0.9792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2493 - accuracy: 0.9688" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2493 - accuracy: 0.9688 - val_loss: 0.1863 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 38/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2509 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.3253 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2972 - accuracy: 0.8542" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2604 - accuracy: 0.8906" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2604 - accuracy: 0.8906 - val_loss: 0.1987 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 39/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2557 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2455 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2488 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2329 - accuracy: 0.8906" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2329 - accuracy: 0.8906 - val_loss: 0.1580 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 40/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2892 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2708 - accuracy: 0.8438" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2486 - accuracy: 0.8958" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2420 - accuracy: 0.8906" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2420 - accuracy: 0.8906 - val_loss: 0.1558 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 41/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2600 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2544 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2357 - accuracy: 0.8958" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2384 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2384 - accuracy: 0.8750 - val_loss: 0.2039 - val_accuracy: 0.9167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 42/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2805 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2912 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2719 - accuracy: 0.9167" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2396 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2396 - accuracy: 0.9375 - val_loss: 0.1347 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 43/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2029 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.1896 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.1995 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2038 - accuracy: 0.9531" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2038 - accuracy: 0.9531 - val_loss: 0.1266 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 44/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.1934 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2330 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2244 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2223 - accuracy: 0.9531" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2223 - accuracy: 0.9531 - val_loss: 0.1334 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 45/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.1709 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.1964 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2161 - accuracy: 0.9583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.2050 - accuracy: 0.9688" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.2050 - accuracy: 0.9688 - val_loss: 0.1155 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 46/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2772 - accuracy: 0.8125" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.1999 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.1836 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.1815 - accuracy: 0.9531" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.1815 - accuracy: 0.9531 - val_loss: 0.1298 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 47/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.1650 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.1668 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.1590 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.1666 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.1666 - accuracy: 1.0000 - val_loss: 0.0986 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 48/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.1778 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2160 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.1971 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.1885 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.1885 - accuracy: 0.9375 - val_loss: 0.0958 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 49/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.1913 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.2212 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.2240 - accuracy: 0.8958" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.1865 - accuracy: 0.9219" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.1865 - accuracy: 0.9219 - val_loss: 0.1410 - val_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 50/50\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/4 [======>.......................] - ETA: 3s - loss: 0.2049 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "2/4 [==============>...............] - ETA: 2s - loss: 0.1747 - accuracy: 0.9688" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "3/4 [=====================>........] - ETA: 1s - loss: 0.1919 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - ETA: 0s - loss: 0.1887 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "4/4 [==============================] - 5s 1s/step - loss: 0.1887 - accuracy: 0.9375 - val_loss: 0.1307 - val_accuracy: 1.0000\n" ] } ], "source": [ "noisy_data, noisy_labels = get_data(qubits, depolarize_p)\n", "training_histories['noisy'] = noisy_phase_classifier.fit(x=noisy_data,\n", " y=noisy_labels,\n", " batch_size=16,\n", " epochs=n_epochs,\n", " validation_split=0.15,\n", " verbose=1)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:53:36.566988Z", "iopub.status.busy": "2024-05-18T11:53:36.566301Z", "iopub.status.idle": "2024-05-18T11:53:36.798923Z", "shell.execute_reply": "2024-05-18T11:53:36.798236Z" }, "id": "eQ8pknNdohzy" }, "outputs": [ { "data": { "image/png": "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PV27dm1xPDExEb1e36JfsrOzyc3NlX5pQ3a7HavVKv3hJGPGjCEzM5O9e/c6tqSkJKZMmeL4WfrFtXSqy1Jz5sxh6tSpJCUlkZKSwqJFi6ipqWHatGnOblqnUF1dzbFjxxz3c3Jy2Lt3LwEBAcTExDB79mz++Mc/0rNnT7p27cozzzxDREQEEyZMcF6jO7gZM2awbNkyvvzyS3x8fBzzA3x9ffHw8MDX15cHHniAOXPmEBAQgMlkYtasWaSlpTFkyBAnt75jmjt3LuPHjycmJgaLxcKyZcvYsGED33zzjfSHk/j4+DjmoZ3j5eVFYGCgY7/0i4tx9nKttvbmm28qMTExisFgUFJSUpStW7c6u0mdxvr16xXggm3q1KmKoqjLwZ955hklNDRUMRqNypgxY5Ts7GznNrqDu1h/AMqHH37oOKeurk6ZPn264u/vr3h6eiq33nqrcubMGec1uoO7//77lS5duigGg0EJDg5WxowZo3z77beO49IfruH8peCKIv3iajSKoihOiquEEEIIIa64TjPnRgghhBCdgwQ3QgghhOhQJLgRQgghRIciwY0QQgghOhQJboQQQgjRoUhwI4QQQogORYIbIYQQQnQoEtwIIYQQokOR4EYI0SlpNBq++OILZzdDCNEKJLgRQrS5++67D41Gc8F23XXXObtpQogOoFMVzhRCuI7rrruODz/8sMU+o9HopNYIIToSGbkRQjiF0WgkLCysxebv7w+ol4yWLFnC+PHj8fDwoFu3bnz66actHp+Zmcno0aPx8PAgMDCQhx9+mOrq6hbnfPDBB8THx2M0GgkPD2fmzJktjpeWlnLrrbfi6elJz549+eqrrxzHKioqmDJlCsHBwXh4eNCzZ88LgjEhhGuS4EYI4ZKeeeYZJk2axL59+5gyZQp33XUXhw8fBqCmpoZx48bh7+/Pjh07WLFiBd99912L4GXJkiXMmDGDhx9+mMzMTL766it69OjR4jWee+457rjjDvbv38/111/PlClTKC8vd7z+oUOHWLNmDYcPH2bJkiUEBQW13QcghPjPObssuRCi85k6daqi0+kULy+vFtuf/vQnRVEUBVAeeeSRFo9JTU1VHn30UUVRFOWdd95R/P39lerqasfxVatWKVqtViksLFQURVEiIiKUP/zhDz/ZBkB5+umnHferq6sVQFmzZo2iKIpy0003KdOmTbsyb1gI0aZkzo0QwilGjRrFkiVLWuwLCAhw/JyWltbiWFpaGnv37gXg8OHDJCQk4OXl5Tg+bNgw7HY72dnZaDQaCgoKGDNmzCXbMGDAAMfPXl5emEwmiouLAXj00UeZNGkSu3fv5tprr2XChAkMHTr0P3qvQoi2JcGNEMIpvLy8LrhMdKV4eHhc1nl6vb7FfY1Gg91uB2D8+PGcOnWK1atXs27dOsaMGcOMGTNYuHDhFW+vEOLKkjk3QgiXtHXr1gvu9+nTB4A+ffqwb98+ampqHMc3bdqEVqslLi4OHx8fYmNjSU9P/1VtCA4OZurUqfzjH/9g0aJFvPPOO7/q+YQQbUNGboQQTmG1WiksLGyxz83NzTFpd8WKFSQlJTF8+HA++ugjtm/fzvvvvw/AlClTePbZZ5k6dSrz58+npKSEWbNmcc899xAaGgrA/PnzeeSRRwgJCWH8+PFYLBY2bdrErFmzLqt98+bNIzExkfj4eKxWK19//bUjuBJCuDYJboQQTrF27VrCw8Nb7IuLiyMrKwtQVzItX76c6dOnEx4ezscff0zfvn0B8PT05JtvvuGxxx4jOTkZT09PJk2axKuvvup4rqlTp1JfX89rr73GE088QVBQELfddttlt89gMDB37lxOnjyJh4cHI0aMYPny5VfgnQshWptGURTF2Y0QQojzaTQaVq5cyYQJE5zdFCFEOyRzboQQQgjRoUhwI4QQQogORebcCCFcjlwtF0L8GjJyI4QQQogORYIbIYQQQnQoEtwIIYQQokOR4EYIIYQQHYoEN0IIIYToUCS4EUIIIUSHIsGNEEIIIToUCW6EEEII0aH8P2Wp9cirLpr4AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "loss_plotter.plot(training_histories)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "execution": { "iopub.execute_input": "2024-05-18T11:53:36.802445Z", "iopub.status.busy": "2024-05-18T11:53:36.801826Z", "iopub.status.idle": "2024-05-18T11:53:36.984502Z", "shell.execute_reply": "2024-05-18T11:53:36.983846Z" }, "id": "nBtgnKWtuWRR" }, "outputs": [ { "data": { "image/png": "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oW2DcXBwsEvoZakT16WOkWtS89jrmlitVjQaDVqtFq322rtsaqBc5YuVLePLV3mOpx5GHV17++2388477zB16lS+/vrrwuMU/Jw1axY33ngjkyerk6A2b96cI0eOMHPmTB588MFix9NqtcTFxREQEMCAAQNwdHQkIiKCrl27AhAbG8vcuXOJjY0lODgYgP/7v//jzz//ZN68ebz55pslzv/aa6/xwgsvMHbsWAAaN27Ma6+9xnPPPcerr77KuXPnCAwM5KabbsJgMBQ737lz53B1dWX48OG4u7sTGRlJx44dy/ybtG7dmq5duzJ37lz69OkDwOLFi1EUhVGjRqHVann66acLy0dFRfH666/z6KOP8umnnxaLu7zXoyxarRaNRlPqa7w8r3m7JjcODg507NiR1atXM2LECEBtb1u9enWxKsArsVqt7N+/n8GDB1dhpDWQ1QI/PwxZiWR5NOG+M7ex+5+dgJrUjO0RwUM9I/FyKZm8PDeoGa1CPOjfQjpiCyEqx6FpA8t8TvuvBGXnK/2vuezfz/e9vsBKMWPGDPr168ezzz5b4rnDhw9zyy23FNvWo0cPZs2ahdVqLdEP5I477uC9996jcePGDBo0iMGDBzNs2DD0ej379+/HarXStGnTYvsYjcYyWw727t3Lpk2beOONNwq3Wa1W8vLyyMnJ4c4772TWrFlERUWVON+AAQMIDw8vfG7QoEHceuutV+yC8eCDD/L000/z4Ycf4u7uzuzZs7nzzjtxd1cXT/7rr7+YPn06R44cISMjA4vFUhhLTe7aYffRUhMnTuTLL79k3rx5HD58mMcee4zs7OzCrHXMmDHFOjtNmzaNlStXcurUKXbt2sW9997L2bNnefjhkrPw1lk2G7k/PQ6nN5CLE7ckP8LuBBOuDjrG923Exuf68sxNzUpNbADCfV15vE9jWflbCFFpXBz0Zd7+Pft5ZZS9Hr1792bgwIElOtJWRGhoKNu3b+ejjz7C2dmZxx9/nN69e2M2m8nKykKn07Fz50727NlTeDt8+DDvv/9+qcfLyspi6tSpxcrv37+f48eP4+TkRGhoKEePHuWTTz4pcT53d3d27drFggULCAoKYvLkybRr1460tLQy47/77rsB+OGHHzh+/DibNm3ioYceAuDMmTMMHTqUtm3b8tNPP7Fz587C5qh/97mqaeze5+auu+4i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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "acc_plotter.plot(training_histories)" ] }, { "cell_type": "markdown", "metadata": { "id": "r86TeFxlubls" }, "source": [ "Success: The noisy model still managed to train under some mild depolarization noise. Try experimenting with different noise models to see how and when training might fail. Also look out for noisy functionality under `tfq.layers` and `tfq.noise`." ] } ], "metadata": { "colab": { "name": "noise.ipynb", "provenance": [] }, "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" } }, "nbformat": 4, "nbformat_minor": 0 }