{ "cells": [ { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "xLOXFOT5Q40E" }, "source": [ "##### Copyright 2020 The TensorFlow Authors." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:44:31.071683Z", "iopub.status.busy": "2024-05-18T11:44:31.071151Z", "iopub.status.idle": "2024-05-18T11:44:31.075182Z", "shell.execute_reply": "2024-05-18T11:44:31.074516Z" }, "id": "iiQkM5ZgQ8r2", "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", "# https://www.apache.org/licenses/LICENSE-2.0\n", "#\n", "# Unless required by applicable law or agreed to in writing, software\n", "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "# See the License for the specific language governing permissions and\n", "# limitations under the License." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "uLeF5Nmdef0V" }, "source": [ "# Quantum Convolutional Neural Network" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "i9Jcnb8bQQyd" }, "source": [ "\n", " \n", " \n", " \n", " \n", "
\n", " View on TensorFlow.org\n", " \n", " Run in Google Colab\n", " \n", " View source on GitHub\n", " \n", " Download notebook\n", "
" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "4D3xaWBHOIVg" }, "source": [ "This tutorial implements a simplified Quantum Convolutional Neural Network (QCNN), a proposed quantum analogue to a classical convolutional neural network that is also *translationally invariant*.\n", "\n", "This example demonstrates how to detect certain properties of a quantum data source, such as a quantum sensor or a complex simulation from a device. The quantum data source being a cluster state that may or may not have an excitation—what the QCNN will learn to detect (The dataset used in the paper was SPT phase classification)." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "FnjolLuz8o5C" }, "source": [ "## Setup" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:44:31.078781Z", "iopub.status.busy": "2024-05-18T11:44:31.078385Z", "iopub.status.idle": "2024-05-18T11:44:56.454726Z", "shell.execute_reply": "2024-05-18T11:44:56.453821Z" }, "id": "Aquwcz-0aHqz", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting tensorflow==2.15.0\r\n", " Using cached tensorflow-2.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.4 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: absl-py>=1.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (2.1.0)\r\n", "Requirement already satisfied: astunparse>=1.6.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (1.6.3)\r\n", "Requirement already satisfied: flatbuffers>=23.5.26 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (24.3.25)\r\n", "Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (0.5.4)\r\n", "Requirement already satisfied: google-pasta>=0.1.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (0.2.0)\r\n", "Requirement already satisfied: h5py>=2.9.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (3.11.0)\r\n", "Requirement already satisfied: libclang>=13.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (18.1.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting ml-dtypes~=0.2.0 (from tensorflow==2.15.0)\r\n", " Using cached ml_dtypes-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (20 kB)\r\n", "Requirement already satisfied: numpy<2.0.0,>=1.23.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (1.26.4)\r\n", "Requirement already satisfied: opt-einsum>=2.3.2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (3.3.0)\r\n", "Requirement already satisfied: packaging in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (24.0)\r\n", "Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (3.20.3)\r\n", "Requirement already satisfied: setuptools in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (69.5.1)\r\n", "Requirement already satisfied: six>=1.12.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (1.16.0)\r\n", "Requirement already satisfied: termcolor>=1.1.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (2.4.0)\r\n", "Requirement already satisfied: typing-extensions>=3.6.6 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (4.12.0rc1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting wrapt<1.15,>=1.11.0 (from tensorflow==2.15.0)\r\n", " Using cached wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.7 kB)\r\n", "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (0.37.0)\r\n", "Requirement already satisfied: grpcio<2.0,>=1.24.3 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow==2.15.0) (1.64.0rc1)\r\n" ] }, { "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", "Collecting tensorflow-estimator<2.16,>=2.15.0 (from tensorflow==2.15.0)\r\n", " Using cached tensorflow_estimator-2.15.0-py2.py3-none-any.whl.metadata (1.3 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting keras<2.16,>=2.15.0 (from tensorflow==2.15.0)\r\n", " Using cached keras-2.15.0-py3-none-any.whl.metadata (2.4 kB)\r\n", "Requirement already satisfied: wheel<1.0,>=0.23.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from astunparse>=1.6.0->tensorflow==2.15.0) (0.41.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting google-auth<3,>=1.6.3 (from tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached google_auth-2.29.0-py2.py3-none-any.whl.metadata (4.7 kB)\r\n", "Collecting google-auth-oauthlib<2,>=0.5 (from tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached google_auth_oauthlib-1.2.0-py2.py3-none-any.whl.metadata (2.7 kB)\r\n", "Requirement already satisfied: markdown>=2.6.8 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow==2.15.0) (3.6)\r\n", "Requirement already satisfied: requests<3,>=2.21.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow==2.15.0) (2.31.0)\r\n", "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow==2.15.0) (0.7.2)\r\n", "Requirement already satisfied: werkzeug>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.16,>=2.15->tensorflow==2.15.0) (3.0.3)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (5.3.3)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting pyasn1-modules>=0.2.1 (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached pyasn1_modules-0.4.0-py3-none-any.whl.metadata (3.4 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting rsa<5,>=3.1.4 (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached rsa-4.9-py3-none-any.whl.metadata (4.2 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting requests-oauthlib>=0.7.0 (from google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached requests_oauthlib-2.0.0-py2.py3-none-any.whl.metadata (11 kB)\r\n" ] }, { "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: 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", "Requirement already satisfied: MarkupSafe>=2.1.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from werkzeug>=1.0.1->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (2.1.5)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: zipp>=0.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from importlib-metadata>=4.4->markdown>=2.6.8->tensorboard<2.16,>=2.15->tensorflow==2.15.0) (3.18.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting pyasn1<0.7.0,>=0.4.6 (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached pyasn1-0.6.0-py2.py3-none-any.whl.metadata (8.3 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting oauthlib>=3.0.0 (from requests-oauthlib>=0.7.0->google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow==2.15.0)\r\n", " Using cached oauthlib-3.2.2-py3-none-any.whl.metadata (7.5 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Using cached tensorflow-2.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (475.2 MB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Using cached keras-2.15.0-py3-none-any.whl (1.7 MB)\r\n", "Using cached ml_dtypes-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB)\r\n", "Using cached tensorboard-2.15.2-py3-none-any.whl (5.5 MB)\r\n", "Using cached tensorflow_estimator-2.15.0-py2.py3-none-any.whl (441 kB)\r\n", "Using cached wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (77 kB)\r\n", "Using cached google_auth-2.29.0-py2.py3-none-any.whl (189 kB)\r\n", "Using cached google_auth_oauthlib-1.2.0-py2.py3-none-any.whl (24 kB)\r\n", "Using cached pyasn1_modules-0.4.0-py3-none-any.whl (181 kB)\r\n", "Using cached requests_oauthlib-2.0.0-py2.py3-none-any.whl (24 kB)\r\n", "Using cached rsa-4.9-py3-none-any.whl (34 kB)\r\n", "Using cached oauthlib-3.2.2-py3-none-any.whl (151 kB)\r\n", "Using cached pyasn1-0.6.0-py2.py3-none-any.whl (85 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Installing collected packages: wrapt, tensorflow-estimator, pyasn1, oauthlib, ml-dtypes, keras, rsa, requests-oauthlib, pyasn1-modules, google-auth, google-auth-oauthlib, tensorboard, tensorflow\r\n", " Attempting uninstall: wrapt\r\n", " Found existing installation: wrapt 1.16.0\r\n", " Uninstalling wrapt-1.16.0:\r\n", " Successfully uninstalled wrapt-1.16.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: ml-dtypes\r\n", " Found existing installation: ml-dtypes 0.3.2\r\n", " Uninstalling ml-dtypes-0.3.2:\r\n", " Successfully uninstalled ml-dtypes-0.3.2\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: keras\r\n", " Found existing installation: keras 3.3.3\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Uninstalling keras-3.3.3:\r\n", " Successfully uninstalled keras-3.3.3\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: tensorboard\r\n", " Found existing installation: tensorboard 2.16.2\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Uninstalling tensorboard-2.16.2:\r\n", " Successfully uninstalled tensorboard-2.16.2\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: tensorflow\r\n", " Found existing installation: tensorflow 2.16.1\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Uninstalling tensorflow-2.16.1:\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Successfully uninstalled tensorflow-2.16.1\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\r\n", "tf-keras 2.16.0 requires tensorflow<2.17,>=2.16, but you have tensorflow 2.15.0 which is incompatible.\u001b[0m\u001b[31m\r\n", "\u001b[0mSuccessfully installed google-auth-2.29.0 google-auth-oauthlib-1.2.0 keras-2.15.0 ml-dtypes-0.2.0 oauthlib-3.2.2 pyasn1-0.6.0 pyasn1-modules-0.4.0 requests-oauthlib-2.0.0 rsa-4.9 tensorboard-2.15.2 tensorflow-2.15.0 tensorflow-estimator-2.15.0 wrapt-1.14.1\r\n" ] } ], "source": [ "!pip install tensorflow==2.15.0" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "e_ZuLN_N8yhT" }, "source": [ "Install TensorFlow Quantum:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:44:56.459187Z", "iopub.status.busy": "2024-05-18T11:44:56.458567Z", "iopub.status.idle": "2024-05-18T11:45:08.961051Z", "shell.execute_reply": "2024-05-18T11:45:08.960112Z" }, "id": "3Pl5PW-ACO9J", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting tensorflow-quantum==0.7.3\r\n", " Using cached tensorflow_quantum-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.7 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting cirq-core==1.3.0 (from tensorflow-quantum==0.7.3)\r\n", " Using cached cirq_core-1.3.0-py3-none-any.whl.metadata (1.9 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting cirq-google==1.3.0 (from tensorflow-quantum==0.7.3)\r\n", " Using cached cirq_google-1.3.0-py3-none-any.whl.metadata (2.0 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting sympy==1.12 (from tensorflow-quantum==0.7.3)\r\n", " Using cached sympy-1.12-py3-none-any.whl.metadata (12 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting duet~=0.2.8 (from cirq-core==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached duet-0.2.9-py3-none-any.whl.metadata (2.3 kB)\r\n", "Requirement already satisfied: matplotlib~=3.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (3.9.0)\r\n", "Requirement already satisfied: networkx>=2.4 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (3.2.1)\r\n", "Requirement already satisfied: numpy~=1.16 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.26.4)\r\n", "Requirement already satisfied: pandas in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (2.2.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting sortedcontainers~=2.0 (from cirq-core==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl.metadata (10 kB)\r\n", "Requirement already satisfied: scipy in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.13.0)\r\n", "Requirement already satisfied: typing-extensions>=4.2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (4.12.0rc1)\r\n", "Requirement already satisfied: tqdm in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-core==1.3.0->tensorflow-quantum==0.7.3) (4.66.4)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting google-api-core>=1.14.0 (from google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached google_api_core-2.19.0-py3-none-any.whl.metadata (2.7 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting proto-plus>=1.20.0 (from cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached proto_plus-1.23.0-py3-none-any.whl.metadata (2.2 kB)\r\n", "Requirement already satisfied: protobuf>=3.15.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from cirq-google==1.3.0->tensorflow-quantum==0.7.3) (3.20.3)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting mpmath>=0.19 (from sympy==1.12->tensorflow-quantum==0.7.3)\r\n", " Using cached mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting googleapis-common-protos<2.0.dev0,>=1.56.2 (from google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached googleapis_common_protos-1.63.0-py2.py3-none-any.whl.metadata (1.5 kB)\r\n", "Requirement already satisfied: google-auth<3.0.dev0,>=2.14.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (2.29.0)\r\n", "Requirement already satisfied: requests<3.0.0.dev0,>=2.18.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (2.31.0)\r\n", "Requirement already satisfied: grpcio<2.0dev,>=1.33.2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (1.64.0rc1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting grpcio-status<2.0.dev0,>=1.33.2 (from google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached grpcio_status-1.63.0-py3-none-any.whl.metadata (1.1 kB)\r\n", "Requirement already satisfied: contourpy>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.2.1)\r\n", "Requirement already satisfied: cycler>=0.10 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (0.12.1)\r\n", "Requirement already satisfied: fonttools>=4.22.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (4.51.0)\r\n", "Requirement already satisfied: kiwisolver>=1.3.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.4.5)\r\n", "Requirement already satisfied: packaging>=20.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (24.0)\r\n", "Requirement already satisfied: pillow>=8 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (10.3.0)\r\n", "Requirement already satisfied: pyparsing>=2.3.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (3.1.2)\r\n", "Requirement already satisfied: python-dateutil>=2.7 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (2.9.0.post0)\r\n", "Requirement already satisfied: importlib-resources>=3.2.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (6.4.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pytz>=2020.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from pandas->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (2024.1)\r\n", "Requirement already satisfied: tzdata>=2022.7 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from pandas->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (2024.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3.0.dev0,>=2.14.1->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (5.3.3)\r\n", "Requirement already satisfied: pyasn1-modules>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3.0.dev0,>=2.14.1->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (0.4.0)\r\n", "Requirement already satisfied: rsa<5,>=3.1.4 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3.0.dev0,>=2.14.1->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (4.9)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO: pip is looking at multiple versions of grpcio-status to determine which version is compatible with other requirements. This could take a while.\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Using cached grpcio_status-1.62.2-py3-none-any.whl.metadata (1.3 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting protobuf>=3.15.0 (from cirq-google==1.3.0->tensorflow-quantum==0.7.3)\r\n", " Using cached protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl.metadata (541 bytes)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: zipp>=3.1.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (3.18.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: six>=1.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib~=3.0->cirq-core==1.3.0->tensorflow-quantum==0.7.3) (1.16.0)\r\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3.0.0.dev0,>=2.18.0->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (3.3.2)\r\n", "Requirement already satisfied: idna<4,>=2.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3.0.0.dev0,>=2.18.0->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (3.7)\r\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3.0.0.dev0,>=2.18.0->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (2.2.1)\r\n", "Requirement already satisfied: certifi>=2017.4.17 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3.0.0.dev0,>=2.18.0->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (2024.2.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth<3.0.dev0,>=2.14.1->google-api-core>=1.14.0->google-api-core[grpc]>=1.14.0->cirq-google==1.3.0->tensorflow-quantum==0.7.3) (0.6.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Using cached tensorflow_quantum-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.8 MB)\r\n", "Using cached cirq_core-1.3.0-py3-none-any.whl (1.8 MB)\r\n", "Using cached cirq_google-1.3.0-py3-none-any.whl (598 kB)\r\n", "Using cached sympy-1.12-py3-none-any.whl (5.7 MB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Using cached duet-0.2.9-py3-none-any.whl (29 kB)\r\n", "Using cached google_api_core-2.19.0-py3-none-any.whl (139 kB)\r\n", "Using cached mpmath-1.3.0-py3-none-any.whl (536 kB)\r\n", "Using cached proto_plus-1.23.0-py3-none-any.whl (48 kB)\r\n", "Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)\r\n", "Using cached googleapis_common_protos-1.63.0-py2.py3-none-any.whl (229 kB)\r\n", "Using cached grpcio_status-1.62.2-py3-none-any.whl (14 kB)\r\n", "Using cached protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl (294 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Installing collected packages: sortedcontainers, mpmath, sympy, protobuf, duet, proto-plus, googleapis-common-protos, grpcio-status, google-api-core, cirq-core, cirq-google, tensorflow-quantum\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: protobuf\r\n", " Found existing installation: protobuf 3.20.3\r\n", " Uninstalling protobuf-3.20.3:\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Successfully uninstalled protobuf-3.20.3\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\r\n", "tensorflow-metadata 1.15.0 requires protobuf<4.21,>=3.20.3; python_version < \"3.11\", but you have protobuf 4.25.3 which is incompatible.\r\n", "tf-keras 2.16.0 requires tensorflow<2.17,>=2.16, but you have tensorflow 2.15.0 which is incompatible.\u001b[0m\u001b[31m\r\n", "\u001b[0mSuccessfully installed cirq-core-1.3.0 cirq-google-1.3.0 duet-0.2.9 google-api-core-2.19.0 googleapis-common-protos-1.63.0 grpcio-status-1.62.2 mpmath-1.3.0 proto-plus-1.23.0 protobuf-4.25.3 sortedcontainers-2.4.0 sympy-1.12 tensorflow-quantum-0.7.3\r\n" ] } ], "source": [ "!pip install tensorflow-quantum==0.7.3" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:08.965430Z", "iopub.status.busy": "2024-05-18T11:45:08.964812Z", "iopub.status.idle": "2024-05-18T11:45:09.065629Z", "shell.execute_reply": "2024-05-18T11:45:09.064996Z" }, "id": "4Ql5PW-ACO0J", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/tmp/ipykernel_26901/1875984233.py:2: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html\n", " import importlib, pkg_resources\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Update package resources to account for version changes.\n", "import importlib, pkg_resources\n", "importlib.reload(pkg_resources)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "TL_LvHXzPNjW" }, "source": [ "Now import TensorFlow and the module dependencies:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:09.069568Z", "iopub.status.busy": "2024-05-18T11:45:09.069003Z", "iopub.status.idle": "2024-05-18T11:45:13.003494Z", "shell.execute_reply": "2024-05-18T11:45:13.002580Z" }, "id": "QytLEAtoejW5", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2024-05-18 11:45:09.533738: 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:45:09.533782: 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:45:09.535253: 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:45:12.910225: E external/local_xla/xla/stream_executor/cuda/cuda_driver.cc:274] failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected\n" ] } ], "source": [ "import tensorflow as tf\n", "import tensorflow_quantum as tfq\n", "\n", "import cirq\n", "import sympy\n", "import numpy as np\n", "\n", "# visualization tools\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "from cirq.contrib.svg import SVGCircuit" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "j6331ZSsQGY3" }, "source": [ "## 1. Build a QCNN" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Qg85u3G--CGq" }, "source": [ "### 1.1 Assemble circuits in a TensorFlow graph\n", "\n", "TensorFlow Quantum (TFQ) provides layer classes designed for in-graph circuit construction. One example is the `tfq.layers.AddCircuit` layer that inherits from `tf.keras.Layer`. This layer can either prepend or append to the input batch of circuits, as shown in the following figure.\n", "\n", "\n", "\n", "The following snippet uses this layer:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.008455Z", "iopub.status.busy": "2024-05-18T11:45:13.007142Z", "iopub.status.idle": "2024-05-18T11:45:13.032539Z", "shell.execute_reply": "2024-05-18T11:45:13.031858Z" }, "id": "FhNf0G_OPLqZ", "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "qubit = cirq.GridQubit(0, 0)\n", "\n", "# Define some circuits.\n", "circuit1 = cirq.Circuit(cirq.X(qubit))\n", "circuit2 = cirq.Circuit(cirq.H(qubit))\n", "\n", "# Convert to a tensor.\n", "input_circuit_tensor = tfq.convert_to_tensor([circuit1, circuit2])\n", "\n", "# Define a circuit that we want to append\n", "y_circuit = cirq.Circuit(cirq.Y(qubit))\n", "\n", "# Instantiate our layer\n", "y_appender = tfq.layers.AddCircuit()\n", "\n", "# Run our circuit tensor through the layer and save the output.\n", "output_circuit_tensor = y_appender(input_circuit_tensor, append=y_circuit)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "ShZbRZCXkvk5" }, "source": [ "Examine the input tensor:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.036042Z", "iopub.status.busy": "2024-05-18T11:45:13.035457Z", "iopub.status.idle": "2024-05-18T11:45:13.040639Z", "shell.execute_reply": "2024-05-18T11:45:13.039985Z" }, "id": "ImRynsUN4BSG", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[cirq.Circuit([\n", " cirq.Moment(\n", " cirq.X(cirq.GridQubit(0, 0)),\n", " ),\n", " ])\n", " cirq.Circuit([\n", " cirq.Moment(\n", " cirq.H(cirq.GridQubit(0, 0)),\n", " ),\n", " ]) ]\n" ] } ], "source": [ "print(tfq.from_tensor(input_circuit_tensor))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "xkGU4ZTUk4gf" }, "source": [ "And examine the output tensor:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.044014Z", "iopub.status.busy": "2024-05-18T11:45:13.043483Z", "iopub.status.idle": "2024-05-18T11:45:13.047858Z", "shell.execute_reply": "2024-05-18T11:45:13.047191Z" }, "id": "tfff6dJp39Fg", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[cirq.Circuit([\n", " cirq.Moment(\n", " cirq.X(cirq.GridQubit(0, 0)),\n", " ),\n", " cirq.Moment(\n", " cirq.Y(cirq.GridQubit(0, 0)),\n", " ),\n", " ])\n", " cirq.Circuit([\n", " cirq.Moment(\n", " cirq.H(cirq.GridQubit(0, 0)),\n", " ),\n", " cirq.Moment(\n", " cirq.Y(cirq.GridQubit(0, 0)),\n", " ),\n", " ]) ]\n" ] } ], "source": [ "print(tfq.from_tensor(output_circuit_tensor))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "23JeZ7Ns5qy5" }, "source": [ "While it is possible to run the examples below without using `tfq.layers.AddCircuit`, it's a good opportunity to understand how complex functionality can be embedded into TensorFlow compute graphs." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "GcVplt9455Hi" }, "source": [ "### 1.2 Problem overview\n", "\n", "You will prepare a *cluster state* and train a quantum classifier to detect if it is \"excited\" or not. The cluster state is highly entangled but not necessarily difficult for a classical computer. For clarity, this is a simpler dataset than the one used in the paper.\n", "\n", "For this classification task you will implement a deep MERA-like QCNN architecture since:\n", "\n", "1. Like the QCNN, the cluster state on a ring is translationally invariant.\n", "2. The cluster state is highly entangled.\n", "\n", "This architecture should be effective at reducing entanglement, obtaining the classification by reading out a single qubit.\n", "\n", "\n", "\n", "An \"excited\" cluster state is defined as a cluster state that had a `cirq.rx` gate applied to any of its qubits. Qconv and QPool are discussed later in this tutorial." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "jpqtsGJH_I1d" }, "source": [ "### 1.3 Building blocks for TensorFlow\n", "\n", "\n", "\n", "One way to solve this problem with TensorFlow Quantum is to implement the following:\n", "\n", "1. The input to the model is a circuit tensor—either an empty circuit or an X gate on a particular qubit indicating an excitation.\n", "2. The rest of the model's quantum components are constructed with `tfq.layers.AddCircuit` layers.\n", "3. For inference a `tfq.layers.PQC` layer is used. This reads $\\langle \\hat{Z} \\rangle$ and compares it to a label of 1 for an excited state, or -1 for a non-excited state." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "oa7Q3m_ThDgO" }, "source": [ "### 1.4 Data\n", "Before building your model, you can generate your data. In this case it's going to be excitations to the cluster state (The original paper uses a more complicated dataset). Excitations are represented with `cirq.rx` gates. A large enough rotation is deemed an excitation and is labeled `1` and a rotation that isn't large enough is labeled `-1` and deemed not an excitation." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.051534Z", "iopub.status.busy": "2024-05-18T11:45:13.050985Z", "iopub.status.idle": "2024-05-18T11:45:13.057152Z", "shell.execute_reply": "2024-05-18T11:45:13.056506Z" }, "id": "iUrvTCU1hDgP", "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "def generate_data(qubits):\n", " \"\"\"Generate training and testing data.\"\"\"\n", " n_rounds = 20 # Produces n_rounds * n_qubits datapoints.\n", " excitations = []\n", " labels = []\n", " for n in range(n_rounds):\n", " for bit in qubits:\n", " rng = np.random.uniform(-np.pi, np.pi)\n", " excitations.append(cirq.Circuit(cirq.rx(rng)(bit)))\n", " labels.append(1 if (-np.pi / 2) <= rng <= (np.pi / 2) else -1)\n", "\n", " split_ind = int(len(excitations) * 0.7)\n", " train_excitations = excitations[:split_ind]\n", " test_excitations = excitations[split_ind:]\n", "\n", " train_labels = labels[:split_ind]\n", " test_labels = labels[split_ind:]\n", "\n", " return tfq.convert_to_tensor(train_excitations), np.array(train_labels), \\\n", " tfq.convert_to_tensor(test_excitations), np.array(test_labels)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "wGsDkZnrhDgS" }, "source": [ "You can see that just like with regular machine learning you create a training and testing set to use to benchmark the model. You can quickly look at some datapoints with:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.060369Z", "iopub.status.busy": "2024-05-18T11:45:13.059965Z", "iopub.status.idle": "2024-05-18T11:45:13.097312Z", "shell.execute_reply": "2024-05-18T11:45:13.096655Z" }, "id": "eLJ-JHOihDgT", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input: (0, 0): ───X^0.701─── Output: -1\n", "Input: (0, 1): ───X^-0.136─── Output: 1\n" ] } ], "source": [ "sample_points, sample_labels, _, __ = generate_data(cirq.GridQubit.rect(1, 4))\n", "print('Input:', tfq.from_tensor(sample_points)[0], 'Output:', sample_labels[0])\n", "print('Input:', tfq.from_tensor(sample_points)[1], 'Output:', sample_labels[1])" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "sFiRlDt_0-DL" }, "source": [ "### 1.5 Define layers\n", "\n", "Now define the layers shown in the figure above in TensorFlow." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "s2B9geIqLWHK" }, "source": [ "#### 1.5.1 Cluster state\n", "\n", "The first step is to define the cluster state using Cirq, a Google-provided framework for programming quantum circuits. Since this is a static part of the model, embed it using the `tfq.layers.AddCircuit` functionality." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.100791Z", "iopub.status.busy": "2024-05-18T11:45:13.100231Z", "iopub.status.idle": "2024-05-18T11:45:13.104443Z", "shell.execute_reply": "2024-05-18T11:45:13.103794Z" }, "id": "qpQwVWKazU8g", "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "def cluster_state_circuit(bits):\n", " \"\"\"Return a cluster state on the qubits in `bits`.\"\"\"\n", " circuit = cirq.Circuit()\n", " circuit.append(cirq.H.on_each(bits))\n", " for this_bit, next_bit in zip(bits, bits[1:] + [bits[0]]):\n", " circuit.append(cirq.CZ(this_bit, next_bit))\n", " return circuit" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "e9qX1uN740vJ" }, "source": [ "Display a cluster state circuit for a rectangle of cirq.GridQubits:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.107676Z", "iopub.status.busy": "2024-05-18T11:45:13.107142Z", "iopub.status.idle": "2024-05-18T11:45:13.300001Z", "shell.execute_reply": "2024-05-18T11:45:13.299344Z" }, "id": "9tZt0aAO4r4F", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "data": { "image/svg+xml": [ "(0, 0): (0, 1): (0, 2): (0, 3): HHHH" ], "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SVGCircuit(cluster_state_circuit(cirq.GridQubit.rect(1, 4)))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "4xElWnRf1ZC7" }, "source": [ "#### 1.5.2 QCNN layers\n", "\n", "Define the layers that make up the model using the Cong and Lukin QCNN paper. There are a few prerequisites:\n", "\n", "* The one- and two-qubit parameterized unitary matrices from the Tucci paper.\n", "* A general parameterized two-qubit pooling operation." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.303202Z", "iopub.status.busy": "2024-05-18T11:45:13.302871Z", "iopub.status.idle": "2024-05-18T11:45:13.310540Z", "shell.execute_reply": "2024-05-18T11:45:13.309881Z" }, "id": "oNRGOqky2exY", "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "def one_qubit_unitary(bit, symbols):\n", " \"\"\"Make a Cirq circuit enacting a rotation of the bloch sphere about the X,\n", " Y and Z axis, that depends on the values in `symbols`.\n", " \"\"\"\n", " return cirq.Circuit(\n", " cirq.X(bit)**symbols[0],\n", " cirq.Y(bit)**symbols[1],\n", " cirq.Z(bit)**symbols[2])\n", "\n", "\n", "def two_qubit_unitary(bits, symbols):\n", " \"\"\"Make a Cirq circuit that creates an arbitrary two qubit unitary.\"\"\"\n", " circuit = cirq.Circuit()\n", " circuit += one_qubit_unitary(bits[0], symbols[0:3])\n", " circuit += one_qubit_unitary(bits[1], symbols[3:6])\n", " circuit += [cirq.ZZ(*bits)**symbols[6]]\n", " circuit += [cirq.YY(*bits)**symbols[7]]\n", " circuit += [cirq.XX(*bits)**symbols[8]]\n", " circuit += one_qubit_unitary(bits[0], symbols[9:12])\n", " circuit += one_qubit_unitary(bits[1], symbols[12:])\n", " return circuit\n", "\n", "\n", "def two_qubit_pool(source_qubit, sink_qubit, symbols):\n", " \"\"\"Make a Cirq circuit to do a parameterized 'pooling' operation, which\n", " attempts to reduce entanglement down from two qubits to just one.\"\"\"\n", " pool_circuit = cirq.Circuit()\n", " sink_basis_selector = one_qubit_unitary(sink_qubit, symbols[0:3])\n", " source_basis_selector = one_qubit_unitary(source_qubit, symbols[3:6])\n", " pool_circuit.append(sink_basis_selector)\n", " pool_circuit.append(source_basis_selector)\n", " pool_circuit.append(cirq.CNOT(source_qubit, sink_qubit))\n", " pool_circuit.append(sink_basis_selector**-1)\n", " return pool_circuit" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "LoG0a3U_2qGA" }, "source": [ "To see what you created, print out the one-qubit unitary circuit:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.313898Z", "iopub.status.busy": "2024-05-18T11:45:13.313305Z", "iopub.status.idle": "2024-05-18T11:45:13.350336Z", "shell.execute_reply": "2024-05-18T11:45:13.349699Z" }, "id": "T5uhvF-g2rpZ", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "data": { "image/svg+xml": [ "(0, 0): X^x0Y^x1Z^x2" ], "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SVGCircuit(one_qubit_unitary(cirq.GridQubit(0, 0), sympy.symbols('x0:3')))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "NWuMb_Us8ar2" }, "source": [ "And the two-qubit unitary circuit:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.353676Z", "iopub.status.busy": "2024-05-18T11:45:13.353110Z", "iopub.status.idle": "2024-05-18T11:45:13.483443Z", "shell.execute_reply": "2024-05-18T11:45:13.482784Z" }, "id": "aJTdRrfS2uIo", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "data": { "image/svg+xml": [ "(0, 0): (0, 1): X^x0Y^x1Z^x2X^x3Y^x4Z^x5ZZZZ^x6YYYY^x7XXXX^x8X^x9Y^x10Z^x11X^x12Y^x13Z^x14" ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SVGCircuit(two_qubit_unitary(cirq.GridQubit.rect(1, 2), sympy.symbols('x0:15')))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "EXQD1R_V8jyk" }, "source": [ "And the two-qubit pooling circuit:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.486803Z", "iopub.status.busy": "2024-05-18T11:45:13.486251Z", "iopub.status.idle": "2024-05-18T11:45:13.600200Z", "shell.execute_reply": "2024-05-18T11:45:13.599550Z" }, "id": "DOHRbkvH2xGK", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "data": { "image/svg+xml": [ "(0, 0): (0, 1): X^x0Y^x1Z^x2X^x3Y^x4Z^x5XZ^(-x2)Y^(-x1)X^(-x0)" ], "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SVGCircuit(two_qubit_pool(*cirq.GridQubit.rect(1, 2), sympy.symbols('x0:6')))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "AzVauXWD3v8C" }, "source": [ "##### 1.5.2.1 Quantum convolution\n", "\n", "As in the Cong and Lukin paper, define the 1D quantum convolution as the application of a two-qubit parameterized unitary to every pair of adjacent qubits with a stride of one." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.603604Z", "iopub.status.busy": "2024-05-18T11:45:13.603056Z", "iopub.status.idle": "2024-05-18T11:45:13.607697Z", "shell.execute_reply": "2024-05-18T11:45:13.607067Z" }, "id": "1Fa19Lzb3wnR", "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "def quantum_conv_circuit(bits, symbols):\n", " \"\"\"Quantum Convolution Layer following the above diagram.\n", " Return a Cirq circuit with the cascade of `two_qubit_unitary` applied\n", " to all pairs of qubits in `bits` as in the diagram above.\n", " \"\"\"\n", " circuit = cirq.Circuit()\n", " for first, second in zip(bits[0::2], bits[1::2]):\n", " circuit += two_qubit_unitary([first, second], symbols)\n", " for first, second in zip(bits[1::2], bits[2::2] + [bits[0]]):\n", " circuit += two_qubit_unitary([first, second], symbols)\n", " return circuit" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "fTzOm_t394Gj" }, "source": [ "Display the (very horizontal) circuit:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:13.610952Z", "iopub.status.busy": "2024-05-18T11:45:13.610450Z", "iopub.status.idle": "2024-05-18T11:45:14.512166Z", "shell.execute_reply": "2024-05-18T11:45:14.511483Z" }, "id": "Bi6q2nmY3z_U", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "data": { "image/svg+xml": [ "(0, 0): (0, 1): (0, 2): (0, 3): (0, 4): (0, 5): (0, 6): (0, 7): X^x0Y^x1Z^x2X^x3Y^x4Z^x5ZZZZ^x6YYYY^x7XXXX^x8X^x9Y^x10Z^x11X^x12Y^x13Z^x14X^x0Y^x1Z^x2X^x3Y^x4Z^x5ZZZZ^x6YYYY^x7XXXX^x8X^x9Y^x10Z^x11X^x12Y^x13Z^x14X^x0Y^x1Z^x2X^x3Y^x4Z^x5ZZZZ^x6YYYY^x7XXXX^x8X^x9Y^x10Z^x11X^x12Y^x13Z^x14X^x0Y^x1Z^x2X^x3Y^x4Z^x5ZZZZ^x6YYYY^x7XXXX^x8X^x9Y^x10Z^x11X^x12Y^x13Z^x14X^x0Y^x1Z^x2X^x3Y^x4Z^x5ZZZZ^x6YYYY^x7XXXX^x8X^x9Y^x10Z^x11X^x12Y^x13Z^x14X^x0Y^x1Z^x2X^x3Y^x4Z^x5ZZZZ^x6YYYY^x7XXXX^x8X^x9Y^x10Z^x11X^x12Y^x13Z^x14X^x0Y^x1Z^x2X^x3Y^x4Z^x5ZZZZ^x6YYYY^x7XXXX^x8X^x9Y^x10Z^x11X^x12Y^x13Z^x14X^x0Y^x1Z^x2X^x3Y^x4Z^x5ZZ^x6ZZYY^x7YYXX^x8XXX^x9Y^x10Z^x11X^x12Y^x13Z^x14" ], "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SVGCircuit(\n", " quantum_conv_circuit(cirq.GridQubit.rect(1, 8), sympy.symbols('x0:15')))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "3svBAfap4xhP" }, "source": [ "##### 1.5.2.2 Quantum pooling\n", "\n", "A quantum pooling layer pools from $N$ qubits to $\\frac{N}{2}$ qubits using the two-qubit pool defined above." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:14.515812Z", "iopub.status.busy": "2024-05-18T11:45:14.515269Z", "iopub.status.idle": "2024-05-18T11:45:14.519605Z", "shell.execute_reply": "2024-05-18T11:45:14.518939Z" }, "id": "jD3fgcWO4yEU", "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "def quantum_pool_circuit(source_bits, sink_bits, symbols):\n", " \"\"\"A layer that specifies a quantum pooling operation.\n", " A Quantum pool tries to learn to pool the relevant information from two\n", " qubits onto 1.\n", " \"\"\"\n", " circuit = cirq.Circuit()\n", " for source, sink in zip(source_bits, sink_bits):\n", " circuit += two_qubit_pool(source, sink, symbols)\n", " return circuit" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "NX83NHDP_Q_Z" }, "source": [ "Examine a pooling component circuit:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:14.523013Z", "iopub.status.busy": "2024-05-18T11:45:14.522456Z", "iopub.status.idle": "2024-05-18T11:45:14.977520Z", "shell.execute_reply": "2024-05-18T11:45:14.976883Z" }, "id": "pFXow2OX47O5", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "findfont: Font family 'Arial' not found.\n" ] }, { "data": { "image/svg+xml": [ "(0, 0): (0, 1): (0, 2): (0, 3): (0, 4): (0, 5): (0, 6): (0, 7): X^x0Y^x1Z^x2X^x3Y^x4Z^x5XZ^(-x2)Y^(-x1)X^(-x0)X^x0Y^x1Z^x2X^x3Y^x4Z^x5XZ^(-x2)Y^(-x1)X^(-x0)X^x0Y^x1Z^x2X^x3Y^x4Z^x5XZ^(-x2)Y^(-x1)X^(-x0)X^x0Y^x1Z^x2X^x3Y^x4Z^x5XZ^(-x2)Y^(-x1)X^(-x0)" ], "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_bits = cirq.GridQubit.rect(1, 8)\n", "\n", "SVGCircuit(\n", " quantum_pool_circuit(test_bits[:4], test_bits[4:], sympy.symbols('x0:6')))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "23VcPLT45Lg7" }, "source": [ "### 1.6 Model definition\n", "\n", "Now use the defined layers to construct a purely quantum CNN. Start with eight qubits, pool down to one, then measure $\\langle \\hat{Z} \\rangle$." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:14.980987Z", "iopub.status.busy": "2024-05-18T11:45:14.980461Z", "iopub.status.idle": "2024-05-18T11:45:16.372820Z", "shell.execute_reply": "2024-05-18T11:45:16.371749Z" }, "id": "vzEsY6-n5NR0", "vscode": { "languageId": "python" } }, "outputs": [ { "data": { "image/png": "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z9vbmzF2Lz1RoVCwgIAA9tRTT7Fly5YxAEwqlQqOMSIigiUmJnY7dlPpfQ/Owfbt203Oo3EuHZkp5qrMzRQjQk5P/XTV1MMHpaamsn//+9923w8F9D0U0P1jk9RPsWtra8OFCxf6nXpH7IfK+PbNYQHt6qmHK1asAMdxmDBhAlauXGnx02pXZ8/yu44s7UtlfPvo29rBmcvVUw/ffvttMMZw8+ZNzJ0719nDIWaiMr5C4joNiZSpMrPW5MC7Qn69taiMrxAFtBswVWbWmhx4V8ivtxaV8RWigHZx5paZtYY7l/alMr5CFNAuztwys9Zw59K+VMZXiMr4ujhTwdBTKVkjS3Lg3bm0L5XxFaIztIszp8ystTnw7lzal8r4ClFAuzhzysxaU34XcO/SvlTG9wH3p41R1U/HMjf101SZWaP+lt91hdK+VMb3e1TG1425Qi63K+TXUxnfe2xRxpceihG3UVFR0eP6l156CT4+PigqKnLJyp/GMr5Gpsr4WosCegBLTU1FXl4eAPB101wtJddczvhDef1lLONrl77t0itxC66eX08sRwFNiIhQQBMiIt3uocvKyqDX650xlgHnypUruHHjBt577z1nD8Wpmpqa0NbWNuDnwVKffvppt3UcY9/nvu3fvx9lZWUOHdRAZjAYoNPpBE867aG6uhoGgwETJ0606376izEGjUYDX19fZw/F7UydOhUvvPACvywIaCJOmzdv5v9cDxE3uocmREQooAkREQpoQkSEApoQEaGAJkREKKAJEREKaEJEhAKaEBGhgCZERCigCRERCmhCRIQCmhARoYAmREQooAkREQpoQkSEApoQEaGAJkREKKAJEREKaEJEhAKaEBGhgCZERCigCRERCmhCRIT++qQIGQwGfPTRR/zy1atX0dnZiRMnTvDrpk+fDk9P+s8vNlRoX6QiIiJQV1cHiUQC439ijuOg0+kwZMgQfP31104eIbEHuuQWqYULF6KrqwstLS1QqVRQqVRoaWmBVqsV/OkUIi50hhapa9euISIiAnfu3BGs9/f3x+eff47x48c7aWTEnugMLVJhYWFQKBTd1g8fPpyCWcQooEVs8eLFkEql/LKvry9++9vfOnFExN7oklvEmpqaMHLkSNy9excA4Ofnh5qaGgwfPtzJIyP2QmdoEQsODsbkyZP55YkTJ1IwixwFtMilpqYi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", "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def create_model_circuit(qubits):\n", " \"\"\"Create sequence of alternating convolution and pooling operators \n", " which gradually shrink over time.\"\"\"\n", " model_circuit = cirq.Circuit()\n", " symbols = sympy.symbols('qconv0:63')\n", " # Cirq uses sympy.Symbols to map learnable variables. TensorFlow Quantum\n", " # scans incoming circuits and replaces these with TensorFlow variables.\n", " model_circuit += quantum_conv_circuit(qubits, symbols[0:15])\n", " model_circuit += quantum_pool_circuit(qubits[:4], qubits[4:],\n", " symbols[15:21])\n", " model_circuit += quantum_conv_circuit(qubits[4:], symbols[21:36])\n", " model_circuit += quantum_pool_circuit(qubits[4:6], qubits[6:],\n", " symbols[36:42])\n", " model_circuit += quantum_conv_circuit(qubits[6:], symbols[42:57])\n", " model_circuit += quantum_pool_circuit([qubits[6]], [qubits[7]],\n", " symbols[57:63])\n", " return model_circuit\n", "\n", "\n", "# Create our qubits and readout operators in Cirq.\n", "cluster_state_bits = cirq.GridQubit.rect(1, 8)\n", "readout_operators = cirq.Z(cluster_state_bits[-1])\n", "\n", "# Build a sequential model enacting the logic in 1.3 of this notebook.\n", "# Here you are making the static cluster state prep as a part of the AddCircuit and the\n", "# \"quantum datapoints\" are coming in the form of excitation\n", "excitation_input = tf.keras.Input(shape=(), dtype=tf.dtypes.string)\n", "cluster_state = tfq.layers.AddCircuit()(\n", " excitation_input, prepend=cluster_state_circuit(cluster_state_bits))\n", "\n", "quantum_model = tfq.layers.PQC(create_model_circuit(cluster_state_bits),\n", " readout_operators)(cluster_state)\n", "\n", "qcnn_model = tf.keras.Model(inputs=[excitation_input], outputs=[quantum_model])\n", "\n", "# Show the keras plot of the model\n", "tf.keras.utils.plot_model(qcnn_model,\n", " show_shapes=True,\n", " show_layer_names=False,\n", " dpi=70)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "9jqTEe5VSbug" }, "source": [ "### 1.7 Train the model\n", "\n", "Train the model over the full batch to simplify this example." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:16.377620Z", "iopub.status.busy": "2024-05-18T11:45:16.376966Z", "iopub.status.idle": "2024-05-18T11:45:34.426095Z", "shell.execute_reply": "2024-05-18T11:45:34.425123Z" }, "id": "_TFkAm1sQZEN", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 3s - loss: 0.9657 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.9541 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.9391 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.8807 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.9039 - custom_accuracy: 0.6750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.8840 - custom_accuracy: 0.6771" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.8633 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - 2s 146ms/step - loss: 0.8633 - custom_accuracy: 0.6875 - val_loss: 0.8743 - val_custom_accuracy: 0.5833\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 2/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.8713 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.8351 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.8448 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.8224 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.7733 - custom_accuracy: 0.7000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.7706 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.7570 - custom_accuracy: 0.7321" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 105ms/step - loss: 0.7570 - custom_accuracy: 0.7321 - val_loss: 0.8544 - val_custom_accuracy: 0.6458\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 3/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.7262 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.7748 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.7167 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.6881 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.6843 - custom_accuracy: 0.7750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.6844 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.6833 - custom_accuracy: 0.7679" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 104ms/step - loss: 0.6833 - custom_accuracy: 0.7679 - val_loss: 0.8004 - val_custom_accuracy: 0.7083\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 4/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.5187 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.5647 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5777 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.6302 - custom_accuracy: 0.7656" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.6389 - custom_accuracy: 0.7875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.6230 - custom_accuracy: 0.8021" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.6179 - custom_accuracy: 0.8304" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 103ms/step - loss: 0.6179 - custom_accuracy: 0.8304 - val_loss: 0.7718 - val_custom_accuracy: 0.7083\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 5/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.6195 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.5951 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5898 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.6286 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.6459 - custom_accuracy: 0.8000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.6331 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.6308 - custom_accuracy: 0.8393" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 103ms/step - loss: 0.6308 - custom_accuracy: 0.8393 - val_loss: 0.7734 - val_custom_accuracy: 0.6667\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 6/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.6297 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.6364 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.6176 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.6328 - custom_accuracy: 0.7656" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.6232 - custom_accuracy: 0.7625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.6291 - custom_accuracy: 0.7604" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.6147 - custom_accuracy: 0.7768" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 101ms/step - loss: 0.6147 - custom_accuracy: 0.7768 - val_loss: 0.7765 - val_custom_accuracy: 0.7083\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 7/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.5632 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.5962 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.6137 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.6520 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.6515 - custom_accuracy: 0.8000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.6379 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.6029 - custom_accuracy: 0.8036" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 100ms/step - loss: 0.6029 - custom_accuracy: 0.8036 - val_loss: 0.7487 - val_custom_accuracy: 0.7292\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 8/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.7539 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.6307 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.6164 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.6115 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5948 - custom_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\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5844 - custom_accuracy: 0.8021" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5764 - custom_accuracy: 0.8036" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 102ms/step - loss: 0.5764 - custom_accuracy: 0.8036 - val_loss: 0.7421 - val_custom_accuracy: 0.7083\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 9/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.6526 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.5174 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5470 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5777 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5715 - custom_accuracy: 0.8375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5713 - custom_accuracy: 0.8229" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5695 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 101ms/step - loss: 0.5695 - custom_accuracy: 0.8125 - val_loss: 0.7577 - val_custom_accuracy: 0.7083\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 10/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.5094 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.5471 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5258 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5368 - custom_accuracy: 0.8594" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5603 - custom_accuracy: 0.8375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5782 - custom_accuracy: 0.8229" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5777 - custom_accuracy: 0.8214" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 101ms/step - loss: 0.5777 - custom_accuracy: 0.8214 - val_loss: 0.7220 - val_custom_accuracy: 0.7292\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 11/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.6695 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.5910 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5771 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5941 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5825 - custom_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\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5879 - custom_accuracy: 0.8021" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5630 - custom_accuracy: 0.8214" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 101ms/step - loss: 0.5630 - custom_accuracy: 0.8214 - val_loss: 0.7224 - val_custom_accuracy: 0.7500\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 12/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.7039 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.5962 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5835 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5461 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5426 - custom_accuracy: 0.8375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5417 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5558 - custom_accuracy: 0.8393" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 102ms/step - loss: 0.5558 - custom_accuracy: 0.8393 - val_loss: 0.7251 - val_custom_accuracy: 0.7500\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 13/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.5158 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.5291 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5669 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5544 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5319 - custom_accuracy: 0.8375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5589 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5592 - custom_accuracy: 0.8393" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 100ms/step - loss: 0.5592 - custom_accuracy: 0.8393 - val_loss: 0.7175 - val_custom_accuracy: 0.7708\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 14/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.5636 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.5582 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5754 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5869 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5839 - custom_accuracy: 0.8000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5664 - custom_accuracy: 0.8229" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5563 - custom_accuracy: 0.8393" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 102ms/step - loss: 0.5563 - custom_accuracy: 0.8393 - val_loss: 0.7030 - val_custom_accuracy: 0.7292\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 15/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.6314 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.6022 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.6178 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.6124 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5854 - custom_accuracy: 0.7875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5648 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5590 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 101ms/step - loss: 0.5590 - custom_accuracy: 0.8125 - val_loss: 0.7180 - val_custom_accuracy: 0.7292\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 16/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.5630 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.5602 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5608 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5524 - custom_accuracy: 0.8594" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5450 - custom_accuracy: 0.8625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5542 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5666 - custom_accuracy: 0.8304" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 100ms/step - loss: 0.5666 - custom_accuracy: 0.8304 - val_loss: 0.7338 - val_custom_accuracy: 0.7292\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 17/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.3881 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.4361 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.4413 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5063 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5257 - custom_accuracy: 0.8500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5808 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5675 - custom_accuracy: 0.8214" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 99ms/step - loss: 0.5675 - custom_accuracy: 0.8214 - val_loss: 0.7164 - val_custom_accuracy: 0.7500\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 18/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.4961 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.4609 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5356 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5960 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.6080 - custom_accuracy: 0.8250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5846 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5673 - custom_accuracy: 0.8482" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 99ms/step - loss: 0.5673 - custom_accuracy: 0.8482 - val_loss: 0.7076 - val_custom_accuracy: 0.7292\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 19/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.7068 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.6172 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.6226 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5792 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5536 - custom_accuracy: 0.9000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5419 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5629 - custom_accuracy: 0.8661" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 102ms/step - loss: 0.5629 - custom_accuracy: 0.8661 - val_loss: 0.7252 - val_custom_accuracy: 0.7292\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 20/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.4915 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.6077 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5909 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5573 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5373 - custom_accuracy: 0.8250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5446 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5693 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 100ms/step - loss: 0.5693 - custom_accuracy: 0.8125 - val_loss: 0.7171 - val_custom_accuracy: 0.7292\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 21/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.6080 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.6305 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5491 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5886 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5657 - custom_accuracy: 0.8500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5822 - custom_accuracy: 0.8229" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5686 - custom_accuracy: 0.8393" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 100ms/step - loss: 0.5686 - custom_accuracy: 0.8393 - val_loss: 0.7164 - val_custom_accuracy: 0.7292\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 22/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.5425 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.5546 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5852 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5805 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5696 - custom_accuracy: 0.8000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5368 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5561 - custom_accuracy: 0.8214" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 100ms/step - loss: 0.5561 - custom_accuracy: 0.8214 - val_loss: 0.7175 - val_custom_accuracy: 0.7292\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 23/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.6508 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.6958 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.6766 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.6549 - custom_accuracy: 0.7344" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.6164 - custom_accuracy: 0.7875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5653 - custom_accuracy: 0.8229" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5549 - custom_accuracy: 0.8393" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 100ms/step - loss: 0.5549 - custom_accuracy: 0.8393 - val_loss: 0.7078 - val_custom_accuracy: 0.7292\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 24/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.4400 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.5169 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5145 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5414 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5211 - custom_accuracy: 0.8500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5557 - custom_accuracy: 0.8229" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5527 - custom_accuracy: 0.8214" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 99ms/step - loss: 0.5527 - custom_accuracy: 0.8214 - val_loss: 0.7096 - val_custom_accuracy: 0.7292\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 25/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.5154 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.4874 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.5385 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.5198 - custom_accuracy: 0.8594" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.5107 - custom_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\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.5432 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.5480 - custom_accuracy: 0.8393" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 99ms/step - loss: 0.5480 - custom_accuracy: 0.8393 - val_loss: 0.7232 - val_custom_accuracy: 0.7500\n" ] } ], "source": [ "# Generate some training data.\n", "train_excitations, train_labels, test_excitations, test_labels = generate_data(\n", " cluster_state_bits)\n", "\n", "\n", "# Custom accuracy metric.\n", "@tf.function\n", "def custom_accuracy(y_true, y_pred):\n", " y_true = tf.squeeze(y_true)\n", " y_pred = tf.map_fn(lambda x: 1.0 if x >= 0 else -1.0, y_pred)\n", " return tf.keras.backend.mean(tf.keras.backend.equal(y_true, y_pred))\n", "\n", "\n", "qcnn_model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.02),\n", " loss=tf.losses.mse,\n", " metrics=[custom_accuracy])\n", "\n", "history = qcnn_model.fit(x=train_excitations,\n", " y=train_labels,\n", " batch_size=16,\n", " epochs=25,\n", " verbose=1,\n", " validation_data=(test_excitations, test_labels))" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:34.430182Z", "iopub.status.busy": "2024-05-18T11:45:34.429424Z", "iopub.status.idle": "2024-05-18T11:45:34.645985Z", "shell.execute_reply": "2024-05-18T11:45:34.644948Z" }, "id": "2tiCJOb5Qzcr", "vscode": { "languageId": "python" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(history.history['loss'][1:], label='Training')\n", "plt.plot(history.history['val_loss'][1:], label='Validation')\n", "plt.title('Training a Quantum CNN to Detect Excited Cluster States')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Loss')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "GyrkcEReQ5Bc" }, "source": [ "## 2. Hybrid models\n", "\n", "You don't have to go from eight qubits to one qubit using quantum convolution—you could have done one or two rounds of quantum convolution and fed the results into a classical neural network. This section explores quantum-classical hybrid models." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "A2tOK22t7Kjm" }, "source": [ "### 2.1 Hybrid model with a single quantum filter\n", "\n", "Apply one layer of quantum convolution, reading out $\\langle \\hat{Z}_n \\rangle$ on all bits, followed by a densely-connected neural network.\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "lKXuOApgWYFa" }, "source": [ "#### 2.1.1 Model definition" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:34.650191Z", "iopub.status.busy": "2024-05-18T11:45:34.649465Z", "iopub.status.idle": "2024-05-18T11:45:34.843930Z", "shell.execute_reply": "2024-05-18T11:45:34.843008Z" }, "id": "Ut-U1hBkQ8Fs", "vscode": { "languageId": "python" } }, "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": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 1-local operators to read out\n", "readouts = [cirq.Z(bit) for bit in cluster_state_bits[4:]]\n", "\n", "\n", "def multi_readout_model_circuit(qubits):\n", " \"\"\"Make a model circuit with less quantum pool and conv operations.\"\"\"\n", " model_circuit = cirq.Circuit()\n", " symbols = sympy.symbols('qconv0:21')\n", " model_circuit += quantum_conv_circuit(qubits, symbols[0:15])\n", " model_circuit += quantum_pool_circuit(qubits[:4], qubits[4:],\n", " symbols[15:21])\n", " return model_circuit\n", "\n", "\n", "# Build a model enacting the logic in 2.1 of this notebook.\n", "excitation_input_dual = tf.keras.Input(shape=(), dtype=tf.dtypes.string)\n", "\n", "cluster_state_dual = tfq.layers.AddCircuit()(\n", " excitation_input_dual, prepend=cluster_state_circuit(cluster_state_bits))\n", "\n", "quantum_model_dual = tfq.layers.PQC(\n", " multi_readout_model_circuit(cluster_state_bits),\n", " readouts)(cluster_state_dual)\n", "\n", "d1_dual = tf.keras.layers.Dense(8)(quantum_model_dual)\n", "\n", "d2_dual = tf.keras.layers.Dense(1)(d1_dual)\n", "\n", "hybrid_model = tf.keras.Model(inputs=[excitation_input_dual], outputs=[d2_dual])\n", "\n", "# Display the model architecture\n", "tf.keras.utils.plot_model(hybrid_model,\n", " show_shapes=True,\n", " show_layer_names=False,\n", " dpi=70)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "qDqoLZJuWcgH" }, "source": [ "#### 2.1.2 Train the model" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:34.848038Z", "iopub.status.busy": "2024-05-18T11:45:34.847397Z", "iopub.status.idle": "2024-05-18T11:45:46.625924Z", "shell.execute_reply": "2024-05-18T11:45:46.625146Z" }, "id": "EyYw9kYIRCE7", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 4s - loss: 0.9030 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.8383 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.7890 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.7255 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.6887 - custom_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\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.6975 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.6982 - custom_accuracy: 0.7589" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 100ms/step - loss: 0.6982 - custom_accuracy: 0.7589 - val_loss: 0.5877 - val_custom_accuracy: 0.7708\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 2/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.5310 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.4838 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.3957 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.3080 - custom_accuracy: 0.9500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.2746 - custom_accuracy: 0.9554" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 68ms/step - loss: 0.2746 - custom_accuracy: 0.9554 - val_loss: 0.3261 - val_custom_accuracy: 0.9167\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 3/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2416 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.2062 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.2523 - custom_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\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.2287 - custom_accuracy: 0.9479" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 66ms/step - loss: 0.2351 - custom_accuracy: 0.9464 - val_loss: 0.3478 - val_custom_accuracy: 0.9375\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 4/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2636 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.2378 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.2378 - custom_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\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.2155 - custom_accuracy: 0.9479" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 67ms/step - loss: 0.2033 - custom_accuracy: 0.9554 - val_loss: 0.2885 - val_custom_accuracy: 0.9375\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 5/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1960 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1656 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.2250 - custom_accuracy: 0.9500" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.2024 - custom_accuracy: 0.9554" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 65ms/step - loss: 0.2024 - custom_accuracy: 0.9554 - val_loss: 0.3089 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 6/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2965 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.2154 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1775 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1904 - custom_accuracy: 0.9911" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 64ms/step - loss: 0.1904 - custom_accuracy: 0.9911 - val_loss: 0.2340 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 7/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1719 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1795 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1957 - custom_accuracy: 0.9625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1717 - custom_accuracy: 0.9732" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 64ms/step - loss: 0.1717 - custom_accuracy: 0.9732 - val_loss: 0.2339 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 8/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.0486 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1976 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1982 - custom_accuracy: 0.9750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1827 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 64ms/step - loss: 0.1827 - custom_accuracy: 0.9821 - val_loss: 0.2440 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 9/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1067 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1670 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1823 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1881 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 64ms/step - loss: 0.1881 - custom_accuracy: 0.9821 - val_loss: 0.2371 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 10/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1606 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1125 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1548 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1814 - custom_accuracy: 0.9911" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 64ms/step - loss: 0.1814 - custom_accuracy: 0.9911 - val_loss: 0.2549 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 11/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2283 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1777 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1602 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1745 - custom_accuracy: 0.9911" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 64ms/step - loss: 0.1745 - custom_accuracy: 0.9911 - val_loss: 0.2521 - val_custom_accuracy: 0.9583\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 12/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1169 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1328 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1664 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1726 - custom_accuracy: 0.9911" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 64ms/step - loss: 0.1726 - custom_accuracy: 0.9911 - val_loss: 0.2241 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 13/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.0799 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1272 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1640 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1596 - custom_accuracy: 0.9896" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 65ms/step - loss: 0.1775 - custom_accuracy: 0.9911 - val_loss: 0.2386 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 14/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.3561 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.2446 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.2125 - custom_accuracy: 0.9625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.2061 - custom_accuracy: 0.9643" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 63ms/step - loss: 0.2061 - custom_accuracy: 0.9643 - val_loss: 0.2496 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 15/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2166 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1553 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1687 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1840 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 63ms/step - loss: 0.1840 - custom_accuracy: 0.9821 - val_loss: 0.3156 - val_custom_accuracy: 0.9375\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 16/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2686 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.2007 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1964 - custom_accuracy: 0.9750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1860 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 63ms/step - loss: 0.1860 - custom_accuracy: 0.9821 - val_loss: 0.2323 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 17/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1291 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1372 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1739 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1755 - custom_accuracy: 0.9911" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 63ms/step - loss: 0.1755 - custom_accuracy: 0.9911 - val_loss: 0.2253 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 18/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1882 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1850 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1962 - custom_accuracy: 0.9625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1917 - custom_accuracy: 0.9732" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 63ms/step - loss: 0.1917 - custom_accuracy: 0.9732 - val_loss: 0.2386 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 19/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1793 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1802 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1776 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1814 - custom_accuracy: 0.9911" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 62ms/step - loss: 0.1814 - custom_accuracy: 0.9911 - val_loss: 0.2515 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 20/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2247 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1593 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1529 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1899 - custom_accuracy: 0.9643" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 63ms/step - loss: 0.1899 - custom_accuracy: 0.9643 - val_loss: 0.2307 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 21/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1327 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1496 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1755 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1722 - custom_accuracy: 0.9911" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 63ms/step - loss: 0.1722 - custom_accuracy: 0.9911 - val_loss: 0.2353 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 22/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1421 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1786 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1393 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1755 - custom_accuracy: 0.9732" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 64ms/step - loss: 0.1755 - custom_accuracy: 0.9732 - val_loss: 0.2237 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 23/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1923 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1906 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.2098 - custom_accuracy: 0.9750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1973 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 63ms/step - loss: 0.1973 - custom_accuracy: 0.9821 - val_loss: 0.2977 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 24/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1452 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1754 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1827 - custom_accuracy: 0.9750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1862 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 63ms/step - loss: 0.1862 - custom_accuracy: 0.9821 - val_loss: 0.2310 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 25/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1381 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1709 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1706 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1853 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 63ms/step - loss: 0.1853 - custom_accuracy: 0.9821 - val_loss: 0.2680 - val_custom_accuracy: 0.9792\n" ] } ], "source": [ "hybrid_model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.02),\n", " loss=tf.losses.mse,\n", " metrics=[custom_accuracy])\n", "\n", "hybrid_history = hybrid_model.fit(x=train_excitations,\n", " y=train_labels,\n", " batch_size=16,\n", " epochs=25,\n", " verbose=1,\n", " validation_data=(test_excitations,\n", " test_labels))" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:46.629799Z", "iopub.status.busy": "2024-05-18T11:45:46.629150Z", "iopub.status.idle": "2024-05-18T11:45:46.827726Z", "shell.execute_reply": "2024-05-18T11:45:46.827076Z" }, "id": "yL3jhGiBRJHt", "vscode": { "languageId": "python" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(history.history['val_custom_accuracy'], label='QCNN')\n", "plt.plot(hybrid_history.history['val_custom_accuracy'], label='Hybrid CNN')\n", "plt.title('Quantum vs Hybrid CNN performance')\n", "plt.xlabel('Epochs')\n", "plt.legend()\n", "plt.ylabel('Validation Accuracy')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "NCNiNvheRNzq" }, "source": [ "As you can see, with very modest classical assistance, the hybrid model will usually converge faster than the purely quantum version." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "nVUtWLZnRRDE" }, "source": [ "### 2.2 Hybrid convolution with multiple quantum filters\n", "\n", "Now let's try an architecture that uses multiple quantum convolutions and a classical neural network to combine them.\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Ldo_m5P3YBV7" }, "source": [ "#### 2.2.1 Model definition" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:46.831376Z", "iopub.status.busy": "2024-05-18T11:45:46.830863Z", "iopub.status.idle": "2024-05-18T11:45:47.156813Z", "shell.execute_reply": "2024-05-18T11:45:47.155899Z" }, "id": "W3TkNVm9RTBj", "vscode": { "languageId": "python" } }, "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", "/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", "/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": { "image/png": "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7r33Xnn++efNZlOWlJQoj8twcnKS0NBQOXnypIiIrF692uzxKiaTSQICApTlSZMmiYj5Izf0er2EhITIkSNHlDaSkpLEaDSKq6urDBs2TGbOnCkAxGAwiIjI9evXZfDgweLs7CxDhgyR3NxcKS0tlVmzZimPAenXr59s27atQXE1pt3q/amr7fpYM0vaUp9Xmz59uri7u0vPnj0lLS1NDAaDAJAFCxZYjH3Dhg3So0cPSU5Olh49eoher5fnnntOeayONfXXVXdSUpJ4enpKdnZ2vf3AWdK2k5OTI+7u7nLp0iUREUlJSTE7/u+cDS0icvXqVfHz8zNb39RxXt+YeOWVV2TChAkW96O8vLzGI5s6d+6sbC8uLhZXV9caZQDI7NmzzeqKjIyU+fPnN65DqQbOkm5fNCK8E709qKyshJubG27duqV2KFQLg8GAgoKCGveDtZSNGzdiyZIl+PHHH1Vpv1pgYCD27t0Lf39/VeNoKxITE/H5559j69atcHCwrwtKx44dw9KlS7FlyxazyVbN5euvv8aMGTNw+PBhODk5NXt77UFsbCxCQkIQFRWldijUAuzrNwgREdnMiy++iKeffhrJyclqh1LDoEGDkJKS0iLJYlVVFRITE7Fnzx4mi0SNpK2/CBG1ZbGxsVi/fj2AXyaumEwmuLu7qxwV2cr48ePVDkF1Dg4O2Lhxo9phELVqPMNI1M6tW7fO7JEnTBaJiOhuTBiJiIiIyCImjERERERkEe9hbEcqKyvxySefqB0G1aKyshKpqal2N5O1pRUVFWH//v3w8fFROxQiqse//vUvhISEqB0GtRA+VqedEBGMGzdO7TCoDjdv3kSnTp3UDkN1hYWFMBgMqibOJpMJ169fR58+fVSLgai1iIuLQ2hoqNphUAtgwkhEdIdPPvkEH330EZKSktQOhYjIbrTv619EREREVC8mjERERERkERNGIiIiIrKICSMRERERWcSEkYiIiIgsYsJIRERERBYxYSQiIiIii5gwEhEREZFFTBiJiIiIyCImjERERERkERNGIiIiIrKICSMRERERWcSEkYiIiIgsYsJIRERERBYxYSQiIiIii5gwEhEREZFFTBiJiIiIyCImjERERERkERNGIiIiIrKICSMRERERWcSEkYiIiIgsYsJIRERERBYxYSQiIiIii7RqB0BEpLaffvoJFRUVAIArV67g1q1b+Oc//6ls79q1K5ydndUKj4hIdRoREbWDICJS01NPPYX9+/fD2dkZIgIRgYODA6qqqnD79m1cu3YN7u7uaodJRKQaXpImonZv0qRJcHR0hMlkQn5+Pm7evAmTyYSbN2/iN7/5DZNFImr3mDASUbs3cuRIVFZW1ljv5uaGKVOmqBAREZF9YcJIRO2es7MzRowYAY1GY7a+srISo0aNUikqIiL7wYSRiAjASy+9BDc3N2VZo9Hgv/7rv6DX61WMiojIPjBhJCICEBYWZrbs5uaGmJgYlaIhIrIvTBiJiAB06NABERER6NChAwCgqqqqRhJJRNReMWEkIvpVdHQ0OnbsCAcHB4wdOxZaLR9VS0QEMGEkIlI8/PDD0Ol00Ol0ePHFF9UOh4jIbvDPZyIbqaioQEpKitphUBOFhITg73//O37++WckJyerHQ41wcCBA9G7d2+1wyBqE/imFyIbKSgogI+PDyIiItQOxS6VlJTgq6++wrBhw9QOxaL8/HxcuHABAwYMaLY2du/ezcf1NLPvvvsO06dPx7Rp09QOhahNYMJIZCMFBQUwGo24du2a2qHYpUuXLuHRRx/F+fPn1Q6lXlevXkWXLl2arX5nZ2eUlJQ0W/0ExMfHw2g0MmEkshHew0hEdJfmTBaJiFojJoxEREREZBETRiIVXblyBRqNBhqNBtu2bVM7HLv19ttv46mnnlI7DFVs3boVSUlJaoehqqqqKsTExODGjRtqh0LUbjFhJFLRPffcAxFpVZdAv/rqK4waNQqurq7w8vLCyJEj8f333zdrmyICNW63XrJkCUJCQlq83WqJiYlISUlBREQEdu3apfxxER4eXqM/OnbsqGyfMGGCShFbtmrVKjg6Ota4j7W+Y8rBwQHR0dEYMWIESktLWzpsIgITRiJqoGHDhiE4OBgXL15Eeno6AGD48OHIy8trtjbj4+ORmprabPXboytXriA+Ph4JCQlwcHDA6NGjISJwd3fH7t278cYbb5iVLyoqQlxcHNLS0vDhhx+qFHXtSkpKEBkZie3bt6OioqLGdmuOqSFDhiAoKAjLli1rsbiJ6N+YMBK1sPz8fIwdOxYuLi7o1atXrYlQWVkZ4uPj4ePjA71ej8ceewynTp0CACxcuBAajQbOzs744osvYDQa4e7ujqlTp5qdddq9ezeCg4Oh1+sxYMAA7Ny506r669OlSxcsW7YM7u7u6NatGxISEnD16lUcOnSoiT1Tuzv39+7luvY/NjYWGo0G/v7++OCDD+Dn5wcXFxeMHz8eRUVFiIqKgkajUc4eFhUVKWfndu3apdQxb948HD16VNnWkjO8t2/fjuDgYPj6+pqt9/HxwdixY7Fo0aJ6k+jqn3OXLl0afRw15Vipdvr0aUycOBErV66sdbu1x9TYsWOxadMmVc42E7V7QkQ2cfPmTfH29q633AsvvCD33XefnD59Wq5fvy4xMTFiMBhk69atSpmZM2fKwIEDJSsrS/Lz8yU+Pl58fX2luLhYRERSU1NFq9XKrFmzxGQyyYEDB0Sj0ci+ffuUWPR6vezbt09KS0slMzNTjEajXL9+3ar6GyInJ0cAyN69ey2Wu3jxovTu3bvB9Yv8sr9OTk5my5b2X0Rkw4YN4uLiItOmTZPc3Fw5ceKE+Pn5yeTJk0VEZPHixTJ48GCzdgwGg6SkpCjLtZWxhTv3pS7h4eESExNTY31AQIAUFRVJ//79xc3NTc6ePatsi4uLk7S0NGX55ZdfFn9/fzl+/Ljk5ubK9OnTxdvbW/Lz80XEun605bFy6NAhASBZWVkWy9V1TGVlZQkAycjIqLetV199VdauXdvgGImodjzDSNSCrl+/jq1bt+IPf/gD7r//fnh5eWHJkiW4deuWUsZkMmHt2rVYtGgRjEYjOnXqhBUrVuDGjRvYsWOHUq6iogIzZ86Eu7s7QkNDERgYqNz3lZOTg+LiYlRVVUGn0yEgIABZWVnw8vKyun5rVZ+daukHclva/2plZWVYuXIlPD098cADDyA+Ph7vv/8+CgoKmtT21q1b4eXlhQsXLjSpHksuX74MLy+vWrcZDAbs2rULOp0Oo0ePRmFhYY0yJpMJ7777LubMmYMBAwbA09MTb775JkpLS7Fu3TqlnKV+tPWxYq26jqnq/vj555+brW0iqh0TRqIWdO7cOVRVVeE//uM/lHU+Pj5wd3dXljMzM1FeXo5Ro0Ypl0J1Oh1KSkpw5swZpZxWqzW7XOnh4aEkQn369MHIkSPxxBNPIDAwEG+99RZMJlOD6rdGfn4+Fi1ahM2bN0Orbdk3jVra/2pdunRBx44dleW+ffuivLy8yZeW5ddJONKMl0ZNJhMcHR3r3O7v748dO3YgKysLUVFRNWLJzMxERUUFgoODlXV6vR5Go9HskrKlfrTlsWItS8eUTqcDgGa9X5aIaseEkagF1ZVgdOjQoUaZI0eOmCUmIoKlS5fW+hkA0Gg0Zv9PTU3Fp59+il69emHu3LkICgrCTz/9ZHX99SksLMSYMWOwdOlSPPzww1Z/zlYs7X+1qqoqs+W7+//u5domZNRm/PjxyM3NRa9evawq3xgeHh4oLy+3WCY0NBSrVq3Czp07sXz5crNtlpLZO/vKUj/a6lixVn3HVFlZGQDA09PT5m0TkWVMGIlaUEBAABwcHJCRkaGsM5lMyM3NVZaDgoLg6OjY4IkFd9NoNHjyySfx2WefITs7G+Xl5UhNTbVJ/ZcvX8aoUaMwZ84cjB07tklxNqdr164hPz9fWc7IyICjoyOMRiNcXV1x8+ZNZVtOTk6NR7bUloS2lG7duln13MFp06YhJiYG8+bNw8GDB5X1QUFB0Gq1OH36tLKupKQE2dnZZmcdLbHVsWgNa46p6v7o2rVrs8dDROaYMBK1IG9vbzz//PNYsWIFMjIykJeXh9mzZyszgIFfzizFxcVh6dKlOHr0KEpLS3Hs2DH06dMH33zzjVXtHDlyBEOHDsXFixdRXl6Oq1evoqysDIGBgU2u/9SpU3j22Wfxl7/8BcOHDwcA7N+/H6+//nrjOqUZGQwGzJ07F3l5eUhPT0dCQgKio6Ph5uaGfv364dy5czh06BDy8/ORkJCgXPKs5u3tjStXrqCoqAgxMTFYs2YNgJa5hzEsLAyZmZlWlV27di2GDBlidg+nh4cHpk6diuXLlyM9PR0mkwmzZ8+GTqdDbGysVfVac6zs3bsXOp2u3rOhllh7TGVkZKB79+4IDAxsdFtE1EgtOMGGqE2zdpa0yWSS//7v/xZnZ2fp3r27bNu2Tbp06SIAZNasWSIiUlpaKrNmzRIfHx9xdnaWfv36ybZt20REZPXq1QJA+WcymSQgIEBZnjRpklRUVMi6deukf//+otfrpVevXvLOO+8oMViq35Li4mJxdXU1a7/63+zZsy1+trGzpBcsWGDWTlxcXL37L/LLLOkePXpIcnKy9OjRQ/R6vTz33HNSWFio1D19+nRxd3eXnj17SlpamhgMBgEgCxYsEBGR69evy+DBg8XZ2VmGDBkiubm5IiKSlJQknp6ekp2d3eD9EbFulnROTo64u7vLpUuXREQkJSXFbL/vnA0tInL16lXx8/MzW19SUiKvvvqqeHt7i5OTk4SGhsrJkydFxLrjSKT+Y+WVV16RCRMmWNyX8vLyGsdL586dRaRhx1RkZKTMnz+/3r4T4SxpIlvTiPCBVkS2UFBQAKPRiGvXrqkdil26dOkSHn300RZ7luHGjRuxZMkS/Pjjjy3SXkM4OzujpKSk3nKJiYn4/PPPsXXrVjg42N8FoWPHjmHp0qXYsmWL2eSi5vD1119jxowZOHz4MJycnOotHx8fD6PRiGnTpjVrXETthf39BiIiIgDAiy++iKeffhrJyclqh1KrQYMGISUlpdmTxaqqKiQmJmLPnj1WJYtEZHst+xwMIrJ7liZ6tJYLErGxsVi/fj2AX/bHZDKZPbqoNRk/frzaIajOwcEBGzduVDsMonaNZxiJyIzc9fgUaYFnDtraunXrzOJurckiEZG9YMJIRERERBYxYSQiIiIii5gwEhEREZFFnPRCZENFRUVmD+GmfxMRdOjQgf0DoLy8nP3QzLRaLd588021wyBqM5gwEtlQx44d+RzGOrT0cxjtmbXPYaTGi4+PVzsEojaFl6SJiIiIyCImjERERERkERNGIqJWZuvWrUhKSlI7jGZTVVWFmJgY3LhxQ+1QiOhXTBiJ7MThw4eh0WjM/rm6uqJ///6YO3cuvzwbYMmSJQgJCWl1dVsjMTERKSkpiIiIwK5du5RjJTw8vMbD1Tt27KhsnzBhgkoR11ReXo7Zs2ejR48e0Ov1MBqNWLlypbLdwcEB0dHRGDFiBEpLS1WMlIiqMWEkshNDhw6FiKBz58546623ICK4ePEiVqxYgX379qFfv344c+aM2mGSiq5cuYL4+HgkJCTAwcEBo0ePVt5ks3v3brzxxhtm5YuKihAXF4e0tDR8+OGHKkVd0/Lly/Hee+/h448/hslkwqpVqzB//nxs2rRJKTNkyBAEBQVh2bJl6gVKRAomjER2zN3dHSNGjMDBgwfRuXNnjBs3DlVVVSgrK0N8fDx8fHyg1+vx2GOP4dSpUwCAhQsXQqPRwNnZGV988QWMRiPc3d0xdepUszNQu3fvRnBwMPR6PQYMGICdO3eatW2pjeZU3W6XLl1qtBsVFQWNRqOc4SsqKlLOoO3atQvAL++RnjdvHo4ePapsO3/+PGJjY6HRaODv748PPvgAfn5+cHFxwfjx41FUVGRV/XXV3VK2b9+O4OBg+Pr6mq338fHB2LFjsWjRIqSmptb5eUt9a+1xY4vj4sSJExg6dCgeeeQRODs7Y+TIkQgKCsJ3331nVm7s2LHYtGlTq3otJVGbJURkEzdv3hRvb+8m19O5c2d56623aqx///33BYAcOXJEZs6cKQMHDpSsrCzJz8+X+Ph48fX1leLiYhERSU1NFa1WK7NmzRKTySQHDhwQjUYj+/btU2LV6/Wyb98+KS0tlczMTDEajXL9+nWlvfraaKiLFy9K79696y338ssvi7+/vxw/flxyc3Nl+vTp4u3tLfn5+SIisnjxYhk8eLDZZwwGg6SkpCjLtZUREdmwYYO4uLjItGnTJDc3V06cOCF+fn4yefJki5+9s/666m4IJyenRn0uPDxcYmJiaqwPCAiQoqIi6d+/v7i5ucnZs2eVbXFxcZKWliYi9fdtfceNiG2Oi82bN4unp6d8/fXXUlxcLHv27BGDwaDEWS0rK0sASEZGRoP6SUTk1VdflbVr1zb4c0RUO55hJGol+vfvDwD46quvsHbtWixatAhGoxGdOnXCihUrcOPGDezYsUMpX1FRgZkzZ8Ld3R2hoaEIDAzE999/DwDIyclBcXExqqqqoP7U5SgAAB35SURBVNPpEBAQgKysLHh5eQEATCaTVW3Ymslkwrvvvos5c+ZgwIAB8PT0xJtvvonS0lKsW7fOJm2UlZVh5cqV8PT0xAMPPID4+Hi8//77KCgoaFK9W7duhZeXFy5cuGCTOGtz+fJl5Wd0N4PBgF27dkGn02H06NEoLCw0225t31o6bmx1XEycOBFvvPEGhg8fDr1ej/Hjx2PDhg0ICwszK1e9rz///LPVdRNR82DCSNRKyK+X5c6ePYvy8nKMGjVKuSyq0+lQUlJido+jVqs1u3Tp4eGhJEV9+vTByJEj8cQTTyAwMBBvvfUWTCaTUjYzM9OqNmwtMzMTFRUVCA4OVtZVT4qw1eXwLl26oGPHjspy3759UV5e3uRLyyKi/GsuJpMJjo6OdW739/fHjh07kJWVhaioKLNYrO1bS8eNrY6L5cuXY+XKldi/fz9u3bqF7du3Iy4uzuweRgDQ6XQAgLy8PKvrJqLmwYSRqJU4efIkACAoKAgAcOTIEbMkRUSwdOlSpXyHDh3MPq/RaMz+n5qaik8//RS9evXC3LlzERQUhJ9++gnAv5PT+tqwNUvJ1p3x312uoqLC6jaqqqrqbbMx9Y8fPx65ubno1auX1bE0lIeHB8rLyy2WCQ0NxapVq7Bz504sX75cWW9t31o6bmxxXFSXffnllxESEgIXFxeEhYVhwoQJWLx4sVnZsrIyAICnp6dVdRNR82HCSNQKFBcXIyEhAf369cPEiRPh6OjY5DNuGo0GTz75JD777DNkZ2ejvLxcmTARFBRkkzYaKigoCFqtFqdPn1bWlZSUIDs7Wzkz5urqips3byrbc3Jyajx65c4k527Xrl1Dfn6+spyRkQFHR0cYjUar6rdUd3Pr1q2bVY9XmjZtGmJiYjBv3jwcPHgQgHV9Wx9bHBdVVVWoqKiotR/v/jlW72vXrl0b3R4R2QYTRiI7dvPmTezZswe/+c1vkJubi23btqFz586Ii4vD0qVLcfToUZSWluLYsWPo06cPvvnmG6vqPXLkCIYOHYqLFy+ivLwcV69eRVlZGQIDAwH8ciarqW00hoeHB6ZOnYrly5cjPT0dJpMJs2fPhk6nQ2xsLACgX79+OHfuHA4dOoT8/HwkJCQoly6reXt748qVKygqKkJMTAzWrFmjbDMYDJg7dy7y8vKQnp6OhIQEREdHw83Nzar666q7Je5hDAsLQ2ZmplVl165diyFDhij3H1rTt/Wx5rjYu3cvdDpdnWdCO3TogJEjR2L16tX4xz/+geLiYvzf//0fNm/ejKefftqsbEZGBrp3764cl0SkohabXkPUxjV1lvShQ4cEgNk/FxcXCQ4Olj/84Q9mM5hLS0tl1qxZ4uPjI87OztKvXz/Ztm2biIisXr3arA6TySQBAQHK8qRJk6SiokLWrVsn/fv3F71eL7169ZJ33nnHLB5LbTSGtbOkS0pK5NVXXxVvb29xcnKS0NBQOXnypFmZ6dOni7u7u/Ts2VPS0tLEYDAIAFmwYIGIiFy/fl0GDx4szs7OMmTIEMnNzRWRX2ZJ9+jRQ5KTk6VHjx6i1+vlueeek8LCQqvrr6vupKQk8fT0lOzs7Hr3sbGzpHNycsTd3V0uXbokIiIpKSlmP+u7ZxlfvXpV/Pz8lPWW+taa40ak/uPilVdekQkTJljcj7y8PJk2bZr4+fmJk5OT9OzZU1577TW5deuWWbnIyEiZP39+o/qKs6SJbEsjwgdcEdlCQUEBjEYjrl27pnYodunSpUt49NFHW/S5hXfbuHEjlixZgh9//FG1GADA2dkZJSUljfpsYmIiPv/8c2zduhUODvZ1kejYsWNYunQptmzZYjaxqDG+/vprzJgxA4cPH4aTk1ODPx8fHw+j0Yhp06Y1KQ4i+oV9/bYhIiKLXnzxRTz99NNITk5WO5QaBg0ahJSUlCYni1VVVUhMTMSePXsalSwSke1p1Q6AiKglxMbGYv369QB+mbhiMpng7u6uclSNM378eLVDaFYODg7YuHGj2mEQ0R14hpGI2oV169aZPQamtSaLRERqYMJIRERERBYxYSQiIiIii5gwEhEREZFFnPRCZEOFhYV46aWX1A7DLhUXF+PWrVvsH/zyWB32Q/M6evSo8vYeImo6PoeRyEbKy8uRlJSkdhjURMePH8fXX3+N6dOnqx0KNdFDDz2EPn36qB0GUZvAM4xENuLo6IgJEyaoHQY1kZubGy5fvsyfJRHRHXgPIxERERFZxISRiIiIiCxiwkhEREREFjFhJCIiIiKLmDASERERkUVMGImIiIjIIiaMRERERGQRE0YiIiIisogJIxERERFZxISRiIiIiCxiwkhEREREFjFhJCIiIiKLmDASERERkUVMGImIiIjIIiaMRERERGQRE0YiIiIisogJIxERERFZxISRiIiIiCxiwkhEREREFjFhJCIiIiKLmDASERERkUVMGImIiIjIIiaMRERERGSRRkRE7SCIiNSUmJiI69evAwDOnj2L77//HmPHjlW2R0dHw8fHR63wiIhUx4SRiNq9KVOmYMOGDajt16Grqyvy8vKg1WpViIyIyD7wkjQRtXvR0dFwdXWtsd7BwQHjxo1jskhE7R4TRiJq90JCQuDi4lJjvaurK1588UUVIiIisi9MGImIAERGRkKn05mtc3R0REhIiEoRERHZDyaMREQAoqKizBJGrVaLSZMmQaPRqBgVEZF9YMJIRAQgKCgIXl5eyrJer0dUVJR6ARER2REmjEREv3rppZfg7OwMAHB3d0ffvn1VjoiIyD4wYSQi+tXEiRPh4OAAJycnxMTEqB0OEZHd4HMYiYjuEBwcjDNnziArKws9e/ZUOxwiIrvAh4sRNaM///nP+Pbbb9UOw27dvn0bTk5O6NChg9qhKPR6Pdzc3DB//vwWa7O4uBharRaOjo4t1mZb9Ne//rXGTHcisg2eYSRqRs888wwCAwMxYMAAtUOxS4sX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", "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "excitation_input_multi = tf.keras.Input(shape=(), dtype=tf.dtypes.string)\n", "\n", "cluster_state_multi = tfq.layers.AddCircuit()(\n", " excitation_input_multi, prepend=cluster_state_circuit(cluster_state_bits))\n", "\n", "# apply 3 different filters and measure expectation values\n", "\n", "quantum_model_multi1 = tfq.layers.PQC(\n", " multi_readout_model_circuit(cluster_state_bits),\n", " readouts)(cluster_state_multi)\n", "\n", "quantum_model_multi2 = tfq.layers.PQC(\n", " multi_readout_model_circuit(cluster_state_bits),\n", " readouts)(cluster_state_multi)\n", "\n", "quantum_model_multi3 = tfq.layers.PQC(\n", " multi_readout_model_circuit(cluster_state_bits),\n", " readouts)(cluster_state_multi)\n", "\n", "# concatenate outputs and feed into a small classical NN\n", "concat_out = tf.keras.layers.concatenate(\n", " [quantum_model_multi1, quantum_model_multi2, quantum_model_multi3])\n", "\n", "dense_1 = tf.keras.layers.Dense(8)(concat_out)\n", "\n", "dense_2 = tf.keras.layers.Dense(1)(dense_1)\n", "\n", "multi_qconv_model = tf.keras.Model(inputs=[excitation_input_multi],\n", " outputs=[dense_2])\n", "\n", "# Display the model architecture\n", "tf.keras.utils.plot_model(multi_qconv_model,\n", " show_shapes=True,\n", " show_layer_names=True,\n", " dpi=70)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "2eNhDWwKY9N4" }, "source": [ "#### 2.2.2 Train the model" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:45:47.161027Z", "iopub.status.busy": "2024-05-18T11:45:47.160315Z", "iopub.status.idle": "2024-05-18T11:46:00.839007Z", "shell.execute_reply": "2024-05-18T11:46:00.838243Z" }, "id": "suRvxcAKRZK6", "vscode": { "languageId": "python" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 6s - loss: 0.9606 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.8444 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.8806 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.8285 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.7711 - custom_accuracy: 0.7250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.6871 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.6554 - custom_accuracy: 0.7857" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 2s 116ms/step - loss: 0.6554 - custom_accuracy: 0.7857 - val_loss: 0.4377 - val_custom_accuracy: 0.8958\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 2/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2162 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.2732 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.2995 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.2753 - custom_accuracy: 0.9250" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.2563 - custom_accuracy: 0.9271" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.2390 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 74ms/step - loss: 0.2390 - custom_accuracy: 0.9375 - val_loss: 0.2941 - val_custom_accuracy: 0.9375\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 3/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2695 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.2536 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.2273 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.2120 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.2095 - custom_accuracy: 0.9750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.2064 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.2300 - custom_accuracy: 0.9643" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 79ms/step - loss: 0.2300 - custom_accuracy: 0.9643 - val_loss: 0.2889 - val_custom_accuracy: 0.9583\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 4/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2091 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1574 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1788 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1611 - custom_accuracy: 0.9750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1769 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1848 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 72ms/step - loss: 0.1848 - custom_accuracy: 0.9821 - val_loss: 0.2479 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 5/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2500 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.2093 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1840 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1841 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1806 - custom_accuracy: 0.9750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1982 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1928 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 72ms/step - loss: 0.1928 - custom_accuracy: 0.9821 - val_loss: 0.2408 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 6/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1809 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.2662 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.2273 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.2251 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.2128 - custom_accuracy: 0.9750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1789 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 77ms/step - loss: 0.1789 - custom_accuracy: 0.9821 - val_loss: 0.2372 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 7/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1676 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.1464 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1561 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1352 - custom_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\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1642 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 69ms/step - loss: 0.1675 - custom_accuracy: 0.9821 - val_loss: 0.2517 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 8/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1622 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1646 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1694 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1608 - custom_accuracy: 0.9911" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 71ms/step - loss: 0.1608 - custom_accuracy: 0.9911 - val_loss: 0.2438 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 9/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.0715 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.0938 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.0892 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1615 - custom_accuracy: 0.9750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1638 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1718 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 70ms/step - loss: 0.1718 - custom_accuracy: 0.9821 - val_loss: 0.2568 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 10/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2642 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1699 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1752 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1649 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1730 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1780 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 73ms/step - loss: 0.1780 - custom_accuracy: 0.9821 - val_loss: 0.2741 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 11/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1545 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1627 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1851 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1704 - custom_accuracy: 0.9896" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1794 - custom_accuracy: 0.9911" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 70ms/step - loss: 0.1794 - custom_accuracy: 0.9911 - val_loss: 0.2458 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 12/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1678 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.1292 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1745 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1749 - custom_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\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1948 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1843 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 70ms/step - loss: 0.1843 - custom_accuracy: 0.9821 - val_loss: 0.2515 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 13/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1379 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.1638 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1820 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1803 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1674 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1788 - custom_accuracy: 0.9896" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 71ms/step - loss: 0.1775 - custom_accuracy: 0.9911 - val_loss: 0.2820 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 14/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2143 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.1574 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1748 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1762 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1741 - custom_accuracy: 0.9896" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 72ms/step - loss: 0.1771 - custom_accuracy: 0.9911 - val_loss: 0.2586 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 15/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2469 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1806 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1801 - custom_accuracy: 0.9625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1665 - custom_accuracy: 0.9732" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 79ms/step - loss: 0.1665 - custom_accuracy: 0.9732 - val_loss: 0.2348 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 16/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1454 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.1655 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1491 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1844 - custom_accuracy: 0.9750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1777 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 73ms/step - loss: 0.1962 - custom_accuracy: 0.9732 - val_loss: 0.2533 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 17/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1301 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.1014 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1642 - custom_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\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1914 - custom_accuracy: 0.9896" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1769 - custom_accuracy: 0.9911" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 79ms/step - loss: 0.1769 - custom_accuracy: 0.9911 - val_loss: 0.2565 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 18/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1455 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1344 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1616 - custom_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\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1658 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 74ms/step - loss: 0.1648 - custom_accuracy: 0.9911 - val_loss: 0.2618 - val_custom_accuracy: 0.9583\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 19/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1412 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.1916 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1840 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1761 - custom_accuracy: 0.9625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1722 - custom_accuracy: 0.9732" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 71ms/step - loss: 0.1722 - custom_accuracy: 0.9732 - val_loss: 0.2442 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 20/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1397 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.1524 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1993 - custom_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\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1711 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1646 - custom_accuracy: 0.9732" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 78ms/step - loss: 0.1646 - custom_accuracy: 0.9732 - val_loss: 0.2327 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 21/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.0850 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1247 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1496 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1748 - custom_accuracy: 0.9625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1632 - custom_accuracy: 0.9732" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 70ms/step - loss: 0.1632 - custom_accuracy: 0.9732 - val_loss: 0.2418 - val_custom_accuracy: 0.9792\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 22/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1212 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.0916 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1142 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1540 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1560 - custom_accuracy: 0.9911" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 71ms/step - loss: 0.1560 - custom_accuracy: 0.9911 - val_loss: 0.2440 - val_custom_accuracy: 1.0000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 23/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.0922 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.0795 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.0946 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1113 - custom_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\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1399 - custom_accuracy: 0.9896" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 72ms/step - loss: 0.1594 - custom_accuracy: 0.9821 - val_loss: 0.2495 - val_custom_accuracy: 0.9375\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 24/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.1918 - custom_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\b\b\b\b\b\b\b\r", "2/7 [=======>......................] - ETA: 0s - loss: 0.1379 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.1963 - custom_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\b\b\b\b\b\b\b\r", "4/7 [================>.............] - ETA: 0s - loss: 0.1881 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1752 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1682 - custom_accuracy: 0.9896" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 1s 80ms/step - loss: 0.1669 - custom_accuracy: 0.9821 - val_loss: 0.3298 - val_custom_accuracy: 0.9583\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 25/25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", "1/7 [===>..........................] - ETA: 0s - loss: 0.2021 - custom_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\b\b\b\b\b\b\b\r", "3/7 [===========>..................] - ETA: 0s - loss: 0.2194 - custom_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\b\b\b\b\b\b\b\r", "5/7 [====================>.........] - ETA: 0s - loss: 0.1833 - custom_accuracy: 0.9875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6/7 [========================>.....] - ETA: 0s - loss: 0.1760 - custom_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\b\b\b\b\b\b\b\r", "7/7 [==============================] - ETA: 0s - loss: 0.1758 - custom_accuracy: 0.9821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "7/7 [==============================] - 0s 68ms/step - loss: 0.1758 - custom_accuracy: 0.9821 - val_loss: 0.2492 - val_custom_accuracy: 0.9792\n" ] } ], "source": [ "multi_qconv_model.compile(\n", " optimizer=tf.keras.optimizers.Adam(learning_rate=0.02),\n", " loss=tf.losses.mse,\n", " metrics=[custom_accuracy])\n", "\n", "multi_qconv_history = multi_qconv_model.fit(x=train_excitations,\n", " y=train_labels,\n", " batch_size=16,\n", " epochs=25,\n", " verbose=1,\n", " validation_data=(test_excitations,\n", " test_labels))" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "colab": {}, "colab_type": "code", "execution": { "iopub.execute_input": "2024-05-18T11:46:00.842853Z", "iopub.status.busy": "2024-05-18T11:46:00.842289Z", "iopub.status.idle": "2024-05-18T11:46:01.050581Z", "shell.execute_reply": "2024-05-18T11:46:01.049946Z" }, "id": "-6NR7yAQRmOU", "vscode": { "languageId": "python" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAHHCAYAAAC7soLdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACcXklEQVR4nOzddXhTZxvA4V9SF9oCNby4Q3G3IUWGb9igFBuwMWwwZEM3ZAIDJjAYDttgOMNdhvuGu7a0pVSoNznfH6Ed/So0bdJUnvu6cpGevOc9T0LTPHlVpSiKghBCCCFEDqY2dQBCCCGEEMYmCY8QQgghcjxJeIQQQgiR40nCI4QQQogcTxIeIYQQQuR4kvAIIYQQIseThEcIIYQQOZ4kPEIIIYTI8SThEUIIIUSOJwmPEMLofHx8sLe3z1AdDx48QKVSsWLFijRdz8PDI0PXy83Onj1L/fr1sbOzQ6VScenSJVOHJESGScIjMs3Vq1fp3bs3hQoVwsrKioIFC9K7d2+uXbtm6tASuXbtGlOnTuXBgwemDiXTeXh48O677yb72OHDh1GpVGzYsCGTozK+zZs306ZNG5ydnbG0tKRgwYJ069aNgwcPJpSJf/4qlYrz588nqSO5pK5p06aoVCrat2+fpHx8Avfdd98Z/gllQGxsLO+//z5BQUF8//33rF69mmLFipk6LCEyzNzUAYjcYdOmTfTs2ZN8+fIxYMAAihcvzoMHD1i6dCkbNmxg3bp1dOzY0dRhArqEZ9q0aTRt2lRaCbKQYsWKERkZiYWFhcHqVBSF/v37s2LFCqpVq8bo0aNxd3fH19eXzZs307x5c/7++2/q16+f6LypU6eyffv2NF/nr7/+4vz589SoUcNgsRvL3bt3efjwIUuWLGHgwIGmDkcIg5GERxjd3bt36dOnDyVKlODo0aO4uLgkPDZixAgaNWpE7969uXLlCsWLFzdhpCIriouLQ6vVYmlpibW1tUHrnjNnDitWrGDkyJHMnTsXlUqV8Njnn3/O6tWrMTdP/GfS09OTv/76iwsXLlC9evW3XqNo0aKEhYUxbdo0tm3bZtD4DSk8PBw7Ozv8/f0BcHJyMnjdQpiSdGkJo/v222+JiIhg8eLFiZIdAGdnZ3755RdevXrFt99+m3A8pTEYU6dOTfShBLB8+XLeeecdXF1dsbKyokKFCixcuDDJufHdNcePH6d27dpYW1tTokQJVq1alVBmxYoVvP/++wA0a9YsoQvj8OHDAKhUKqZOnZps3T4+PonqUalUHD9+nOHDh+Pi4oKTkxODBw8mJiaG4OBgvL29yZs3L3nz5uWzzz5DUZRUX8d3332XEiVKJPtYvXr1qFmzZsLP+/bto2HDhjg5OWFvb0/ZsmWZOHFiqvXr69ChQ6hUKjZv3pzksd9++w2VSsXJkycTHb937x5eXl7Y2dlRsGBBpk+fnuh5v9nNM2/ePEqWLImVlRXXrl1LcQzPli1bqFSpEtbW1lSqVCnZeJITGRnJrFmzKFeuHN99912S3yuAPn36ULt27UTHPvnkE/LmzZvs70Fy8uTJw6hRo9i+fTsXLlxI0zlvevM1+f777ylWrBg2NjY0adKEf//9N0n5Gzdu8N5775EvXz6sra2pWbNmkkQr/vfzyJEjfPTRR7i6ulK4cGF8fHxo0qQJAO+//z4qlYqmTZsmnHfw4EEaNWqEnZ0dTk5OdOzYkevXryeqO/49eu3aNXr16kXevHlp2LAh8N978PDhw9SsWRMbGxsqV66c8P7atGkTlStXxtramho1anDx4sVEdV+5cgUfHx9KlCiBtbU17u7u9O/fnxcvXiQbw507d/Dx8cHJyQlHR0f69etHREREktdszZo11K5dG1tbW/LmzUvjxo3Zu3dvojK7du1KeO558uShXbt2XL16NZX/OZHVSAuPMLrt27fj4eFBo0aNkn28cePGeHh4sH37dn7++We961+4cCEVK1akQ4cOmJubs337dj766CO0Wi0ff/xxorJ37tzhvffeY8CAAfTt25dly5bh4+NDjRo1qFixIo0bN2b48OEsWLCAiRMnUr58eYCEf/X1ySef4O7uzrRp0zh16hSLFy/GycmJEydOULRoUWbOnMnOnTv59ttvqVSpEt7e3inW1b17d7y9vTl79iy1atVKOP7w4UNOnTqVkDBevXqVd999lypVqjB9+nSsrKy4c+cOf//9d5pijo2NJTAwMMnxkJCQRD83bdqUIkWKsHbtWjp37pzosbVr11KyZEnq1auXcEyj0dC6dWvq1q3LN998w+7du5kyZQpxcXFMnz490fnLly8nKiqKDz/8ECsrK/Lly4dWq00S0969e+natSsVKlRg1qxZvHjxgn79+lG4cOG3Ps/jx48TFBTEyJEjMTMze2v5eA4ODowaNYrJkyenuZVnxIgRfP/990ydOjXdrTyrVq0iLCyMjz/+mKioKObPn88777zDP//8g5ubG6D7v2/QoAGFChVi/Pjx2NnZsX79ejp16sTGjRuT/D999NFHuLi4MHnyZMLDw2ncuDGFChVi5syZDB8+nFq1aiXUvX//ftq0aUOJEiWYOnUqkZGR/PDDDzRo0IALFy4k+YLy/vvvU7p0aWbOnJkoqb1z5w69evVi8ODB9O7dm++++4727duzaNEiJk6cyEcffQTArFmz6NatGzdv3kSt1n0337dvH/fu3aNfv364u7tz9epVFi9ezNWrVzl16lSSpLVbt24UL16cWbNmceHCBX799VdcXV35+uuvE8pMmzaNqVOnUr9+faZPn46lpSWnT5/m4MGDtGrVCoDVq1fTt29fvLy8+Prrr4mIiGDhwoU0bNiQixcvStd3dqEIYUTBwcEKoHTs2DHVch06dFAAJTQ0VFEURenbt69SrFixJOWmTJmi/P+vbURERJJyXl5eSokSJRIdK1asmAIoR48eTTjm7++vWFlZKZ9++mnCsT///FMBlEOHDiWpF1CmTJmS5HixYsWUvn37Jvy8fPlyBVC8vLwUrVabcLxevXqKSqVShgwZknAsLi5OKVy4sNKkSZMk9b4pJCQkSayKoijffPONolKplIcPHyqKoijff/+9AigBAQGp1pec+Ncotduff/6ZUH7ChAmKlZWVEhwcnHDM399fMTc3T/Q69e3bVwGUTz75JOGYVqtV2rVrp1haWibEev/+fQVQHBwcFH9//0SxxT+2fPnyhGOenp5KgQIFEl1/7969CpDs78+b5s+frwDK5s2b0/TaHDp0KOH5BwcHK3nz5lU6dOiQ6Dna2dklOqdJkyZKxYoVFUVRlGnTpimAcv78+UTP59tvv031uvHlbGxslCdPniQcP336tAIoo0aNSjjWvHlzpXLlykpUVFTCMa1Wq9SvX18pXbp0wrH438+GDRsqcXFxKT7PN3l6eiqurq7KixcvEo5dvnxZUavVire3d8Kx+Pdoz549kzyX+N+vEydOJBzbs2dPwvOL/x1WFEX55ZdfkrwPk3uv//7770ne1/Ex9O/fP1HZzp07K/nz50/4+fbt24parVY6d+6saDSaRGXj37dhYWGKk5OTMmjQoESP+/n5KY6OjkmOi6xLurSEUYWFhQG6Zv3UxD8eX14fNjY2CfdDQkIIDAykSZMm3Lt3L0mrRIUKFRK1NLm4uFC2bFnu3bun93XTYsCAAYm+ddapUwdFURgwYEDCMTMzM2rWrPnWGBwcHGjTpg3r169P9I153bp11K1bl6JFiwL/jb3YunVrsq0ib1OnTh327duX5JbcbCJvb2+io6MTzdxat24dcXFx9O7dO0n5YcOGJdxXqVQMGzaMmJgY9u/fn6hc165dk3R//j9fX18uXbpE3759cXR0TDjesmVLKlSo8NbnGRoaCrz9dzM5jo6OjBw5km3btiXpdknJiBEjyJs3L9OmTdP7egCdOnWiUKFCCT/Xrl2bOnXqsHPnTgCCgoI4ePAg3bp1IywsjMDAQAIDA3nx4gVeXl7cvn2bp0+fJqpz0KBBaWrdin+tfXx8yJcvX8LxKlWq0LJly4QY3jRkyJBk66pQoUKilr86deoA8M477yT8Dr95/M33xZvv9aioKAIDA6lbty5Ast2F/x9Do0aNePHiRcL//ZYtW9BqtUyePDmhFSle/Pt23759BAcH07Nnz4TXNDAwEDMzM+rUqcOhQ4eSfZ4i65GERxhVWhOZsLAwVCoVzs7Oel/j77//pkWLFgnjClxcXBLGq/x/wvPmH9R4efPm5eXLl3pfNy3+/3rxH8xFihRJcjwtMXTv3p3Hjx8njI25e/cu58+fp3v37onKNGjQgIEDB+Lm5kaPHj1Yv359mpMfZ2dnWrRokeSW3AyjcuXKUatWLdauXZtwbO3atdStW5dSpUolKqtWq5OMQSpTpgxAkiUA0jJ4/eHDhwCULl06yWNly5Z96/kODg5A+pJs0CUwTk5OaR7Lk54k6U3JPc8yZcokvHZ37txBURQmTZqEi4tLotuUKVMAEgYkx0vrJIH41zq517V8+fIEBgYSHh6eprr1eU8Aid4XQUFBjBgxAjc3N2xsbHBxcUm4zv+/15O7Vt68eRPVeffuXdRqdaoJ8u3btwFdQvb/r+vevXuTvKYi65IxPMKoHB0dKViwIFeuXEm13JUrVyhcuDCWlpYAyQ4gBd04kDfdvXuX5s2bU65cOebOnUuRIkWwtLRk586dfP/990k+5FP6Nqu8ZcDw2/x/XG+7XnLH0xJD+/btsbW1Zf369dSvX5/169ejVqsTBlqD7lvw0aNHOXToEDt27GD37t2sW7eOd955h7179+o1XiUtvL29GTFiBE+ePCE6OppTp07x448/ZqjON7/JG0u5cuUA+Oeff+jUqZPe58cnMFOnTtWrlef7779n2rRpzJs3T+9rpib+d33MmDF4eXklW+b/k1Bjvs4p1a3PewISvy+6devGiRMnGDt2LJ6entjb26PVamndunWyCb0h3u/x9a5evRp3d/ckj///LD6Rdcn/lDC69u3b88svv3D8+PGE2RpvOnbsGA8ePGD06NEJx/LmzUtwcHCSsvHfNONt376d6Ohotm3blujbXEaamVNKtlKKKyYmBl9f33RfTx92dna8++67/Pnnn8ydO5d169bRqFEjChYsmKicWq2mefPmNG/enLlz5zJz5kw+//xzDh06RIsWLQwaU48ePRg9ejS///57wjo5b7Y4xdNqtdy7dy+hVQfg1q1bAOka9Bm/GF78N/A33bx5863nN2zYkLx58/L7778zceLEdCWCI0eOZN68eUybNi1N07jfTJL69u2r17WSe563bt1KeO3iW88sLCwM/n8c/1on97reuHEDZ2dno087f/nyJQcOHGDatGlMnjw54Xhyr0talSxZEq1Wy7Vr1/D09EyxDICrq6vBX1eRuaRLSxjdmDFjsLW1ZfDgwUmmjwYFBTFkyBAcHBwSje8oWbIkISEhiVqG4heDe1P8h9Sb39hCQkJYvnx5uuON/8OdXMJVsmRJjh49mujY4sWLU2zhMYbu3bvz7Nkzfv31Vy5fvpwkuQgKCkpyTvwf8+joaIPH4+zsTJs2bVizZg1r166ldevWKXZNvtnyoygKP/74IxYWFjRv3lzv6xYoUABPT09WrlyZqDtj3759aVq929bWlnHjxnH9+nXGjRuX7Lf+NWvWcObMmRTriE9gtm7dmubtF0aOHImTk1OSmWlvs2XLlkRjcM6cOcPp06dp06YNoPtAbtq0Kb/88kuyCXhAQIBe13vTm6/1m++Lf//9l71799K2bdt0151Wyb3XgQy1lHXq1Am1Ws306dOTtBDFX8fLywsHBwdmzpxJbGxskjoy8rqKzCUtPMLoSpUqxapVq+jZsyeVK1dOstLyy5cv+eOPPxL1+ffo0YNx48bRuXNnhg8fnjANtEyZMokGJ7Zq1QpLS0vat2/P4MGDefXqFUuWLMHV1TXdrS6enp6YmZnx9ddfExISgpWVVcI6PwMHDmTIkCF07dqVli1bcvnyZfbs2ZOusUfp1bZtW/LkycOYMWMwMzOja9euiR6fPn06R48epV27dhQrVgx/f39+/vlnChcunGwLmyF4e3vz3nvvAfDll18mW8ba2prdu3fTt29f6tSpw65du9ixYwcTJ0586wDllMyaNYt27drRsGFD+vfvT1BQED/88AMVK1bk1atXbz1/7NixXL16lTlz5nDo0CHee+893N3d8fPzY8uWLZw5c4YTJ06kWkd8N9Xly5fT1Mrh6OjIiBEj9B68XKpUKRo2bMjQoUOJjo5m3rx55M+fn88++yyhzE8//UTDhg2pXLkygwYNokSJEjx//pyTJ0/y5MkTLl++rNc13/Ttt9/Spk0b6tWrx4ABAxKmpTs6OqZ5HFNGODg40LhxY7755htiY2MpVKgQe/fu5f79++mus1SpUnz++ed8+eWXNGrUiC5dumBlZcXZs2cpWLAgs2bNwsHBgYULF9KnTx+qV69Ojx49cHFx4dGjR+zYsYMGDRpkuAtXZBLTTA4TudE///yj9OrVS3F3d1fUarUCKNbW1srVq1eTLb93716lUqVKiqWlpVK2bFllzZo1yU5L37Ztm1KlShXF2tpa8fDwUL7++mtl2bJlCqDcv38/oVyxYsWUdu3aJblOkyZNkkwJX7JkiVKiRAnFzMws0dRYjUajjBs3TnF2dlZsbW0VLy8v5c6dOylOSz979myieuPj//8p48lNaU7NBx98oABKixYtkjx24MABpWPHjkrBggUVS0tLpWDBgkrPnj2VW7duvbXelF4jRUl5urKiKEp0dLSSN29exdHRUYmMjEzyePzzu3v3rtKqVSvF1tZWcXNzU6ZMmZJoOnBqU7WTm5auKIqyceNGpXz58oqVlZVSoUIFZdOmTSkua5CSDRs2KK1atVLy5cunmJubKwUKFFC6d++uHD58OE3PP/7/NbVp6W96+fKl4ujoqNe09G+//VaZM2eOUqRIEcXKykpp1KiRcvny5STl7969q3h7eyvu7u6KhYWFUqhQIeXdd99VNmzYkFAmpd/Ptz3P/fv3Kw0aNFBsbGwUBwcHpX379sq1a9eSfS2SWxYhpd8vQPn4449TfN7xnjx5onTu3FlxcnJSHB0dlffff1959uxZkuUiUooh/nm/+XdBURRl2bJlSrVq1RQrKyslb968SpMmTZR9+/YleV28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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(history.history['val_custom_accuracy'][:25], label='QCNN')\n", "plt.plot(hybrid_history.history['val_custom_accuracy'][:25], label='Hybrid CNN')\n", "plt.plot(multi_qconv_history.history['val_custom_accuracy'][:25],\n", " label='Hybrid CNN \\n Multiple Quantum Filters')\n", "plt.title('Quantum vs Hybrid CNN performance')\n", "plt.xlabel('Epochs')\n", "plt.legend()\n", "plt.ylabel('Validation Accuracy')\n", "plt.show()" ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "qcnn.ipynb", "private_outputs": true, "provenance": [], "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.19" } }, "nbformat": 4, "nbformat_minor": 0 }