Download this file

1743 lines (1743 with data), 130.5 kB

{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "machine_shape": "hm"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8XnVMPBXmtRa"
      },
      "source": [
        "# TensorNetworks in Neural Networks.\n",
        "\n",
        "Here, we have a small toy example of how to use a TN inside of a fully connected neural network.\n",
        "\n",
        "First off, let's install tensornetwork"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7HGRsYNAFxME"
      },
      "source": [
        "# !pip install tensornetwork\n",
        "\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import tensorflow as tf\n",
        "# Import tensornetwork\n",
        "import tensornetwork as tn\n",
        "from keras.optimizers import Adam\n",
        "import random\n",
        "import time\n",
        "# Set the backend to tesorflow\n",
        "# (default is numpy)\n",
        "tn.set_default_backend(\"tensorflow\")\n",
        "np.random.seed(42)\n",
        "random.seed(42)\n",
        "tf.random.set_seed(42)"
      ],
      "execution_count": 195,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "g1OMCo5XmrYu"
      },
      "source": [
        "# TensorNetwork layer definition\n",
        "\n",
        "Here, we define the TensorNetwork layer we wish to use to replace the fully connected layer. Here, we simply use a 2 node Matrix Product Operator network to replace the normal dense weight matrix.\n",
        "\n",
        "We TensorNetwork's NCon API to keep the code short."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wvSMKtPufnLp"
      },
      "source": [
        "class TNLayer(tf.keras.layers.Layer):\n",
        "\n",
        "  def __init__(self):\n",
        "    super(TNLayer, self).__init__()\n",
        "    # Create the variables for the layer.\n",
        "    self.a_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
        "                                              stddev=1.0/32.0),\n",
        "                             name=\"a\", trainable=True)\n",
        "    self.b_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
        "                                              stddev=1.0/32.0),\n",
        "                             name=\"b\", trainable=True)\n",
        "    self.bias = tf.Variable(tf.zeros(shape=(32, 32)),\n",
        "                            name=\"bias\", trainable=True)\n",
        "\n",
        "  def call(self, inputs):\n",
        "    # Define the contraction.\n",
        "    # We break it out so we can parallelize a batch using\n",
        "    # tf.vectorized_map (see below).\n",
        "    def f(input_vec, a_var, b_var, bias_var):\n",
        "      # Reshape to a matrix instead of a vector.\n",
        "      input_vec = tf.reshape(input_vec, (32, 32))\n",
        "\n",
        "      # Now we create the network.\n",
        "      a = tn.Node(a_var)\n",
        "      b = tn.Node(b_var)\n",
        "      x_node = tn.Node(input_vec)\n",
        "      a[1] ^ x_node[0]\n",
        "      b[1] ^ x_node[1]\n",
        "      a[2] ^ b[2]\n",
        "\n",
        "      # The TN should now look like this\n",
        "      #   |     |\n",
        "      #   a --- b\n",
        "      #    \\   /\n",
        "      #      x\n",
        "\n",
        "      # Now we begin the contraction.\n",
        "      c = a @ x_node\n",
        "      result = (c @ b).tensor\n",
        "\n",
        "      # To make the code shorter, we also could've used Ncon.\n",
        "      # The above few lines of code is the same as this:\n",
        "      # result = tn.ncon([x, a_var, b_var], [[1, 2], [-1, 1, 3], [-2, 2, 3]])\n",
        "\n",
        "      # Finally, add bias.\n",
        "      return result + bias_var\n",
        "\n",
        "    # To deal with a batch of items, we can use the tf.vectorized_map\n",
        "    # function.\n",
        "    # https://www.tensorflow.org/api_docs/python/tf/vectorized_map\n",
        "    result = tf.vectorized_map(\n",
        "        lambda vec: f(vec, self.a_var, self.b_var, self.bias), inputs)\n",
        "    return tf.nn.relu(tf.reshape(result, (-1, 1024)))"
      ],
      "execution_count": 196,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "V-CVqIhPnhY_"
      },
      "source": [
        "# Smaller model\n",
        "These two models are effectively the same, but notice how the TN layer has nearly 10x fewer parameters."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XPBvnB95jg4b",
        "outputId": "7c95dd00-13d7-49c1-dc46-4252b4a1ca95",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "Dense = tf.keras.layers.Dense\n",
        "fc_model = tf.keras.Sequential(\n",
        "    [\n",
        "     tf.keras.Input(shape=(2,)),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1, activation=None)])\n",
        "fc_model.summary()"
      ],
      "execution_count": 197,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_32\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_80 (Dense)            (None, 1024)              3072      \n",
            "                                                                 \n",
            " dense_81 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_82 (Dense)            (None, 1)                 1025      \n",
            "                                                                 \n",
            "=================================================================\n",
            "Total params: 1053697 (4.02 MB)\n",
            "Trainable params: 1053697 (4.02 MB)\n",
            "Non-trainable params: 0 (0.00 Byte)\n",
            "_________________________________________________________________\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bbKsmK8wIFTp",
        "outputId": "3731498c-3eac-497e-bf40-fd4e2b9080ec",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "tn_model = tf.keras.Sequential(\n",
        "    [\n",
        "     tf.keras.Input(shape=(2,)),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     # Here, we replace the dense layer with our MPS.\n",
        "     TNLayer(),\n",
        "     TNLayer(),\n",
        "     TNLayer(),\n",
        "     Dense(1, activation=None)])\n",
        "tn_model.summary()"
      ],
      "execution_count": 198,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_33\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_83 (Dense)            (None, 1024)              3072      \n",
            "                                                                 \n",
            " tn_layer_48 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_49 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_50 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " dense_84 (Dense)            (None, 1)                 1025      \n",
            "                                                                 \n",
            "=================================================================\n",
            "Total params: 19457 (76.00 KB)\n",
            "Trainable params: 19457 (76.00 KB)\n",
            "Non-trainable params: 0 (0.00 Byte)\n",
            "_________________________________________________________________\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GWwoYp0WnsLA"
      },
      "source": [
        "# Training a model\n",
        "\n",
        "You can train the TN model just as you would a normal neural network model! Here, we give an example of how to do it in Keras."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qDFzOC7sDBJ-"
      },
      "source": [
        "X = np.concatenate([np.random.randn(20, 2) + np.array([3, 3]),\n",
        "                    np.random.randn(20, 2) + np.array([-3, -3]),\n",
        "                    np.random.randn(20, 2) + np.array([-3, 3]),\n",
        "                    np.random.randn(20, 2) + np.array([3, -3])])\n",
        "\n",
        "Y = np.concatenate([np.ones((40)), -np.ones((40))])"
      ],
      "execution_count": 199,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since beginning of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "19TWP-1eKURB",
        "outputId": "9381d1b0-a6cf-4ad6-e24a-629076914413"
      },
      "execution_count": 200,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1710116707.8960962\n",
            "Mon Mar 11 00:25:07 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "crc0q1vbIyTj",
        "outputId": "bf59786f-ce17-4a5e-90c2-adff44490537",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "optimizer = Adam(learning_rate=0.0009)\n",
        "tn_model.compile(optimizer=optimizer, loss=\"mean_squared_error\")\n",
        "tn_model.fit(X, Y, epochs=300, verbose=2)"
      ],
      "execution_count": 201,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "3/3 - 2s - loss: 1.0017 - 2s/epoch - 718ms/step\n",
            "Epoch 2/300\n",
            "3/3 - 0s - loss: 1.0016 - 19ms/epoch - 6ms/step\n",
            "Epoch 3/300\n",
            "3/3 - 0s - loss: 1.0006 - 20ms/epoch - 7ms/step\n",
            "Epoch 4/300\n",
            "3/3 - 0s - loss: 1.0001 - 21ms/epoch - 7ms/step\n",
            "Epoch 5/300\n",
            "3/3 - 0s - loss: 1.0005 - 19ms/epoch - 6ms/step\n",
            "Epoch 6/300\n",
            "3/3 - 0s - loss: 0.9997 - 20ms/epoch - 7ms/step\n",
            "Epoch 7/300\n",
            "3/3 - 0s - loss: 0.9994 - 19ms/epoch - 6ms/step\n",
            "Epoch 8/300\n",
            "3/3 - 0s - loss: 0.9986 - 19ms/epoch - 6ms/step\n",
            "Epoch 9/300\n",
            "3/3 - 0s - loss: 0.9966 - 20ms/epoch - 7ms/step\n",
            "Epoch 10/300\n",
            "3/3 - 0s - loss: 0.9924 - 20ms/epoch - 7ms/step\n",
            "Epoch 11/300\n",
            "3/3 - 0s - loss: 0.9828 - 19ms/epoch - 6ms/step\n",
            "Epoch 12/300\n",
            "3/3 - 0s - loss: 0.9620 - 19ms/epoch - 6ms/step\n",
            "Epoch 13/300\n",
            "3/3 - 0s - loss: 0.9214 - 18ms/epoch - 6ms/step\n",
            "Epoch 14/300\n",
            "3/3 - 0s - loss: 0.8430 - 18ms/epoch - 6ms/step\n",
            "Epoch 15/300\n",
            "3/3 - 0s - loss: 0.6923 - 19ms/epoch - 6ms/step\n",
            "Epoch 16/300\n",
            "3/3 - 0s - loss: 0.4367 - 20ms/epoch - 7ms/step\n",
            "Epoch 17/300\n",
            "3/3 - 0s - loss: 0.1273 - 20ms/epoch - 7ms/step\n",
            "Epoch 18/300\n",
            "3/3 - 0s - loss: 0.1428 - 18ms/epoch - 6ms/step\n",
            "Epoch 19/300\n",
            "3/3 - 0s - loss: 0.1031 - 19ms/epoch - 6ms/step\n",
            "Epoch 20/300\n",
            "3/3 - 0s - loss: 0.0307 - 19ms/epoch - 6ms/step\n",
            "Epoch 21/300\n",
            "3/3 - 0s - loss: 0.0511 - 19ms/epoch - 6ms/step\n",
            "Epoch 22/300\n",
            "3/3 - 0s - loss: 0.0655 - 17ms/epoch - 6ms/step\n",
            "Epoch 23/300\n",
            "3/3 - 0s - loss: 0.0471 - 20ms/epoch - 7ms/step\n",
            "Epoch 24/300\n",
            "3/3 - 0s - loss: 0.0212 - 18ms/epoch - 6ms/step\n",
            "Epoch 25/300\n",
            "3/3 - 0s - loss: 0.0127 - 20ms/epoch - 7ms/step\n",
            "Epoch 26/300\n",
            "3/3 - 0s - loss: 0.0204 - 19ms/epoch - 6ms/step\n",
            "Epoch 27/300\n",
            "3/3 - 0s - loss: 0.0207 - 20ms/epoch - 7ms/step\n",
            "Epoch 28/300\n",
            "3/3 - 0s - loss: 0.0126 - 18ms/epoch - 6ms/step\n",
            "Epoch 29/300\n",
            "3/3 - 0s - loss: 0.0094 - 22ms/epoch - 7ms/step\n",
            "Epoch 30/300\n",
            "3/3 - 0s - loss: 0.0117 - 19ms/epoch - 6ms/step\n",
            "Epoch 31/300\n",
            "3/3 - 0s - loss: 0.0117 - 18ms/epoch - 6ms/step\n",
            "Epoch 32/300\n",
            "3/3 - 0s - loss: 0.0092 - 18ms/epoch - 6ms/step\n",
            "Epoch 33/300\n",
            "3/3 - 0s - loss: 0.0078 - 18ms/epoch - 6ms/step\n",
            "Epoch 34/300\n",
            "3/3 - 0s - loss: 0.0081 - 18ms/epoch - 6ms/step\n",
            "Epoch 35/300\n",
            "3/3 - 0s - loss: 0.0080 - 18ms/epoch - 6ms/step\n",
            "Epoch 36/300\n",
            "3/3 - 0s - loss: 0.0072 - 19ms/epoch - 6ms/step\n",
            "Epoch 37/300\n",
            "3/3 - 0s - loss: 0.0068 - 20ms/epoch - 7ms/step\n",
            "Epoch 38/300\n",
            "3/3 - 0s - loss: 0.0066 - 17ms/epoch - 6ms/step\n",
            "Epoch 39/300\n",
            "3/3 - 0s - loss: 0.0065 - 17ms/epoch - 6ms/step\n",
            "Epoch 40/300\n",
            "3/3 - 0s - loss: 0.0062 - 17ms/epoch - 6ms/step\n",
            "Epoch 41/300\n",
            "3/3 - 0s - loss: 0.0059 - 18ms/epoch - 6ms/step\n",
            "Epoch 42/300\n",
            "3/3 - 0s - loss: 0.0057 - 21ms/epoch - 7ms/step\n",
            "Epoch 43/300\n",
            "3/3 - 0s - loss: 0.0056 - 20ms/epoch - 7ms/step\n",
            "Epoch 44/300\n",
            "3/3 - 0s - loss: 0.0055 - 17ms/epoch - 6ms/step\n",
            "Epoch 45/300\n",
            "3/3 - 0s - loss: 0.0053 - 18ms/epoch - 6ms/step\n",
            "Epoch 46/300\n",
            "3/3 - 0s - loss: 0.0051 - 20ms/epoch - 7ms/step\n",
            "Epoch 47/300\n",
            "3/3 - 0s - loss: 0.0050 - 18ms/epoch - 6ms/step\n",
            "Epoch 48/300\n",
            "3/3 - 0s - loss: 0.0050 - 20ms/epoch - 7ms/step\n",
            "Epoch 49/300\n",
            "3/3 - 0s - loss: 0.0048 - 19ms/epoch - 6ms/step\n",
            "Epoch 50/300\n",
            "3/3 - 0s - loss: 0.0046 - 18ms/epoch - 6ms/step\n",
            "Epoch 51/300\n",
            "3/3 - 0s - loss: 0.0045 - 17ms/epoch - 6ms/step\n",
            "Epoch 52/300\n",
            "3/3 - 0s - loss: 0.0044 - 18ms/epoch - 6ms/step\n",
            "Epoch 53/300\n",
            "3/3 - 0s - loss: 0.0043 - 17ms/epoch - 6ms/step\n",
            "Epoch 54/300\n",
            "3/3 - 0s - loss: 0.0042 - 18ms/epoch - 6ms/step\n",
            "Epoch 55/300\n",
            "3/3 - 0s - loss: 0.0041 - 18ms/epoch - 6ms/step\n",
            "Epoch 56/300\n",
            "3/3 - 0s - loss: 0.0040 - 18ms/epoch - 6ms/step\n",
            "Epoch 57/300\n",
            "3/3 - 0s - loss: 0.0039 - 17ms/epoch - 6ms/step\n",
            "Epoch 58/300\n",
            "3/3 - 0s - loss: 0.0038 - 18ms/epoch - 6ms/step\n",
            "Epoch 59/300\n",
            "3/3 - 0s - loss: 0.0037 - 19ms/epoch - 6ms/step\n",
            "Epoch 60/300\n",
            "3/3 - 0s - loss: 0.0036 - 26ms/epoch - 9ms/step\n",
            "Epoch 61/300\n",
            "3/3 - 0s - loss: 0.0035 - 21ms/epoch - 7ms/step\n",
            "Epoch 62/300\n",
            "3/3 - 0s - loss: 0.0034 - 31ms/epoch - 10ms/step\n",
            "Epoch 63/300\n",
            "3/3 - 0s - loss: 0.0034 - 28ms/epoch - 9ms/step\n",
            "Epoch 64/300\n",
            "3/3 - 0s - loss: 0.0032 - 20ms/epoch - 7ms/step\n",
            "Epoch 65/300\n",
            "3/3 - 0s - loss: 0.0032 - 18ms/epoch - 6ms/step\n",
            "Epoch 66/300\n",
            "3/3 - 0s - loss: 0.0031 - 18ms/epoch - 6ms/step\n",
            "Epoch 67/300\n",
            "3/3 - 0s - loss: 0.0030 - 18ms/epoch - 6ms/step\n",
            "Epoch 68/300\n",
            "3/3 - 0s - loss: 0.0030 - 17ms/epoch - 6ms/step\n",
            "Epoch 69/300\n",
            "3/3 - 0s - loss: 0.0029 - 18ms/epoch - 6ms/step\n",
            "Epoch 70/300\n",
            "3/3 - 0s - loss: 0.0028 - 19ms/epoch - 6ms/step\n",
            "Epoch 71/300\n",
            "3/3 - 0s - loss: 0.0027 - 20ms/epoch - 7ms/step\n",
            "Epoch 72/300\n",
            "3/3 - 0s - loss: 0.0027 - 19ms/epoch - 6ms/step\n",
            "Epoch 73/300\n",
            "3/3 - 0s - loss: 0.0026 - 17ms/epoch - 6ms/step\n",
            "Epoch 74/300\n",
            "3/3 - 0s - loss: 0.0025 - 18ms/epoch - 6ms/step\n",
            "Epoch 75/300\n",
            "3/3 - 0s - loss: 0.0025 - 19ms/epoch - 6ms/step\n",
            "Epoch 76/300\n",
            "3/3 - 0s - loss: 0.0024 - 20ms/epoch - 7ms/step\n",
            "Epoch 77/300\n",
            "3/3 - 0s - loss: 0.0024 - 20ms/epoch - 7ms/step\n",
            "Epoch 78/300\n",
            "3/3 - 0s - loss: 0.0023 - 21ms/epoch - 7ms/step\n",
            "Epoch 79/300\n",
            "3/3 - 0s - loss: 0.0023 - 18ms/epoch - 6ms/step\n",
            "Epoch 80/300\n",
            "3/3 - 0s - loss: 0.0022 - 19ms/epoch - 6ms/step\n",
            "Epoch 81/300\n",
            "3/3 - 0s - loss: 0.0022 - 19ms/epoch - 6ms/step\n",
            "Epoch 82/300\n",
            "3/3 - 0s - loss: 0.0021 - 20ms/epoch - 7ms/step\n",
            "Epoch 83/300\n",
            "3/3 - 0s - loss: 0.0021 - 17ms/epoch - 6ms/step\n",
            "Epoch 84/300\n",
            "3/3 - 0s - loss: 0.0020 - 19ms/epoch - 6ms/step\n",
            "Epoch 85/300\n",
            "3/3 - 0s - loss: 0.0020 - 19ms/epoch - 6ms/step\n",
            "Epoch 86/300\n",
            "3/3 - 0s - loss: 0.0019 - 18ms/epoch - 6ms/step\n",
            "Epoch 87/300\n",
            "3/3 - 0s - loss: 0.0019 - 21ms/epoch - 7ms/step\n",
            "Epoch 88/300\n",
            "3/3 - 0s - loss: 0.0018 - 22ms/epoch - 7ms/step\n",
            "Epoch 89/300\n",
            "3/3 - 0s - loss: 0.0018 - 18ms/epoch - 6ms/step\n",
            "Epoch 90/300\n",
            "3/3 - 0s - loss: 0.0017 - 21ms/epoch - 7ms/step\n",
            "Epoch 91/300\n",
            "3/3 - 0s - loss: 0.0017 - 20ms/epoch - 7ms/step\n",
            "Epoch 92/300\n",
            "3/3 - 0s - loss: 0.0017 - 19ms/epoch - 6ms/step\n",
            "Epoch 93/300\n",
            "3/3 - 0s - loss: 0.0016 - 21ms/epoch - 7ms/step\n",
            "Epoch 94/300\n",
            "3/3 - 0s - loss: 0.0016 - 18ms/epoch - 6ms/step\n",
            "Epoch 95/300\n",
            "3/3 - 0s - loss: 0.0015 - 19ms/epoch - 6ms/step\n",
            "Epoch 96/300\n",
            "3/3 - 0s - loss: 0.0015 - 19ms/epoch - 6ms/step\n",
            "Epoch 97/300\n",
            "3/3 - 0s - loss: 0.0015 - 22ms/epoch - 7ms/step\n",
            "Epoch 98/300\n",
            "3/3 - 0s - loss: 0.0014 - 18ms/epoch - 6ms/step\n",
            "Epoch 99/300\n",
            "3/3 - 0s - loss: 0.0014 - 19ms/epoch - 6ms/step\n",
            "Epoch 100/300\n",
            "3/3 - 0s - loss: 0.0014 - 20ms/epoch - 7ms/step\n",
            "Epoch 101/300\n",
            "3/3 - 0s - loss: 0.0013 - 18ms/epoch - 6ms/step\n",
            "Epoch 102/300\n",
            "3/3 - 0s - loss: 0.0013 - 21ms/epoch - 7ms/step\n",
            "Epoch 103/300\n",
            "3/3 - 0s - loss: 0.0013 - 20ms/epoch - 7ms/step\n",
            "Epoch 104/300\n",
            "3/3 - 0s - loss: 0.0012 - 21ms/epoch - 7ms/step\n",
            "Epoch 105/300\n",
            "3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
            "Epoch 106/300\n",
            "3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
            "Epoch 107/300\n",
            "3/3 - 0s - loss: 0.0011 - 18ms/epoch - 6ms/step\n",
            "Epoch 108/300\n",
            "3/3 - 0s - loss: 0.0011 - 20ms/epoch - 7ms/step\n",
            "Epoch 109/300\n",
            "3/3 - 0s - loss: 0.0011 - 20ms/epoch - 7ms/step\n",
            "Epoch 110/300\n",
            "3/3 - 0s - loss: 0.0011 - 19ms/epoch - 6ms/step\n",
            "Epoch 111/300\n",
            "3/3 - 0s - loss: 0.0010 - 20ms/epoch - 7ms/step\n",
            "Epoch 112/300\n",
            "3/3 - 0s - loss: 0.0010 - 20ms/epoch - 7ms/step\n",
            "Epoch 113/300\n",
            "3/3 - 0s - loss: 9.8061e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 114/300\n",
            "3/3 - 0s - loss: 9.5111e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 115/300\n",
            "3/3 - 0s - loss: 9.3754e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 116/300\n",
            "3/3 - 0s - loss: 8.9569e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 117/300\n",
            "3/3 - 0s - loss: 8.8156e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 118/300\n",
            "3/3 - 0s - loss: 8.5913e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 119/300\n",
            "3/3 - 0s - loss: 8.5309e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 120/300\n",
            "3/3 - 0s - loss: 8.1638e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 121/300\n",
            "3/3 - 0s - loss: 7.6783e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 122/300\n",
            "3/3 - 0s - loss: 7.5145e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 123/300\n",
            "3/3 - 0s - loss: 7.3587e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 124/300\n",
            "3/3 - 0s - loss: 7.1878e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 125/300\n",
            "3/3 - 0s - loss: 6.9366e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 126/300\n",
            "3/3 - 0s - loss: 6.6318e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 127/300\n",
            "3/3 - 0s - loss: 6.4812e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 128/300\n",
            "3/3 - 0s - loss: 6.2484e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 129/300\n",
            "3/3 - 0s - loss: 5.9358e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 130/300\n",
            "3/3 - 0s - loss: 5.8041e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 131/300\n",
            "3/3 - 0s - loss: 5.6138e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 132/300\n",
            "3/3 - 0s - loss: 5.4586e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 133/300\n",
            "3/3 - 0s - loss: 5.2466e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 134/300\n",
            "3/3 - 0s - loss: 4.9884e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 135/300\n",
            "3/3 - 0s - loss: 4.8293e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 136/300\n",
            "3/3 - 0s - loss: 4.6662e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 137/300\n",
            "3/3 - 0s - loss: 4.4731e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 138/300\n",
            "3/3 - 0s - loss: 4.3698e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 139/300\n",
            "3/3 - 0s - loss: 4.2157e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 140/300\n",
            "3/3 - 0s - loss: 3.9818e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 141/300\n",
            "3/3 - 0s - loss: 3.8570e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 142/300\n",
            "3/3 - 0s - loss: 3.6490e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 143/300\n",
            "3/3 - 0s - loss: 3.4979e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 144/300\n",
            "3/3 - 0s - loss: 3.3897e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 145/300\n",
            "3/3 - 0s - loss: 3.1802e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 146/300\n",
            "3/3 - 0s - loss: 3.2144e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 147/300\n",
            "3/3 - 0s - loss: 2.9124e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 148/300\n",
            "3/3 - 0s - loss: 2.7918e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 149/300\n",
            "3/3 - 0s - loss: 2.7394e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 150/300\n",
            "3/3 - 0s - loss: 2.5698e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 151/300\n",
            "3/3 - 0s - loss: 2.5938e-04 - 16ms/epoch - 5ms/step\n",
            "Epoch 152/300\n",
            "3/3 - 0s - loss: 2.3591e-04 - 16ms/epoch - 5ms/step\n",
            "Epoch 153/300\n",
            "3/3 - 0s - loss: 2.2115e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 154/300\n",
            "3/3 - 0s - loss: 2.0955e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 155/300\n",
            "3/3 - 0s - loss: 2.0381e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 156/300\n",
            "3/3 - 0s - loss: 1.9254e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 157/300\n",
            "3/3 - 0s - loss: 1.8018e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 158/300\n",
            "3/3 - 0s - loss: 1.7004e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 159/300\n",
            "3/3 - 0s - loss: 1.5933e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 160/300\n",
            "3/3 - 0s - loss: 1.5782e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 161/300\n",
            "3/3 - 0s - loss: 1.5135e-04 - 16ms/epoch - 5ms/step\n",
            "Epoch 162/300\n",
            "3/3 - 0s - loss: 1.3843e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 163/300\n",
            "3/3 - 0s - loss: 1.3352e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 164/300\n",
            "3/3 - 0s - loss: 1.2716e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 165/300\n",
            "3/3 - 0s - loss: 1.1521e-04 - 15ms/epoch - 5ms/step\n",
            "Epoch 166/300\n",
            "3/3 - 0s - loss: 1.0603e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 167/300\n",
            "3/3 - 0s - loss: 1.0005e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 168/300\n",
            "3/3 - 0s - loss: 9.4751e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 169/300\n",
            "3/3 - 0s - loss: 8.9062e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 170/300\n",
            "3/3 - 0s - loss: 8.2580e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 171/300\n",
            "3/3 - 0s - loss: 7.8063e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 172/300\n",
            "3/3 - 0s - loss: 7.2363e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 173/300\n",
            "3/3 - 0s - loss: 6.7589e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 174/300\n",
            "3/3 - 0s - loss: 6.4151e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 175/300\n",
            "3/3 - 0s - loss: 6.1699e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 176/300\n",
            "3/3 - 0s - loss: 5.8471e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 177/300\n",
            "3/3 - 0s - loss: 5.4611e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 178/300\n",
            "3/3 - 0s - loss: 4.6546e-05 - 15ms/epoch - 5ms/step\n",
            "Epoch 179/300\n",
            "3/3 - 0s - loss: 4.6822e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 180/300\n",
            "3/3 - 0s - loss: 4.0003e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 181/300\n",
            "3/3 - 0s - loss: 4.0273e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 182/300\n",
            "3/3 - 0s - loss: 3.5378e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 183/300\n",
            "3/3 - 0s - loss: 3.3004e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 184/300\n",
            "3/3 - 0s - loss: 3.0208e-05 - 15ms/epoch - 5ms/step\n",
            "Epoch 185/300\n",
            "3/3 - 0s - loss: 2.7682e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 186/300\n",
            "3/3 - 0s - loss: 2.5007e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 187/300\n",
            "3/3 - 0s - loss: 2.3454e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 188/300\n",
            "3/3 - 0s - loss: 2.2166e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 189/300\n",
            "3/3 - 0s - loss: 1.9809e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 190/300\n",
            "3/3 - 0s - loss: 1.9249e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 191/300\n",
            "3/3 - 0s - loss: 1.8162e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 192/300\n",
            "3/3 - 0s - loss: 1.6623e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 193/300\n",
            "3/3 - 0s - loss: 1.4741e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 194/300\n",
            "3/3 - 0s - loss: 1.3789e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 195/300\n",
            "3/3 - 0s - loss: 1.2537e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 196/300\n",
            "3/3 - 0s - loss: 1.1243e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 197/300\n",
            "3/3 - 0s - loss: 1.0175e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 198/300\n",
            "3/3 - 0s - loss: 9.4403e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 199/300\n",
            "3/3 - 0s - loss: 8.7739e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 200/300\n",
            "3/3 - 0s - loss: 8.0308e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 201/300\n",
            "3/3 - 0s - loss: 7.9014e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 202/300\n",
            "3/3 - 0s - loss: 6.5509e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 203/300\n",
            "3/3 - 0s - loss: 6.2791e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 204/300\n",
            "3/3 - 0s - loss: 5.6451e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 205/300\n",
            "3/3 - 0s - loss: 5.4411e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 206/300\n",
            "3/3 - 0s - loss: 5.1773e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 207/300\n",
            "3/3 - 0s - loss: 4.6374e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 208/300\n",
            "3/3 - 0s - loss: 4.4346e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 209/300\n",
            "3/3 - 0s - loss: 3.9340e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 210/300\n",
            "3/3 - 0s - loss: 3.7037e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 211/300\n",
            "3/3 - 0s - loss: 3.3379e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 212/300\n",
            "3/3 - 0s - loss: 3.2173e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 213/300\n",
            "3/3 - 0s - loss: 2.9208e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 214/300\n",
            "3/3 - 0s - loss: 2.8901e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 215/300\n",
            "3/3 - 0s - loss: 2.5357e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 216/300\n",
            "3/3 - 0s - loss: 2.5156e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 217/300\n",
            "3/3 - 0s - loss: 2.2385e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 218/300\n",
            "3/3 - 0s - loss: 2.1337e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 219/300\n",
            "3/3 - 0s - loss: 2.0197e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 220/300\n",
            "3/3 - 0s - loss: 1.9052e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 221/300\n",
            "3/3 - 0s - loss: 1.8268e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 222/300\n",
            "3/3 - 0s - loss: 1.8044e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 223/300\n",
            "3/3 - 0s - loss: 1.6959e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 224/300\n",
            "3/3 - 0s - loss: 1.5798e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 225/300\n",
            "3/3 - 0s - loss: 1.5837e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 226/300\n",
            "3/3 - 0s - loss: 1.4385e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 227/300\n",
            "3/3 - 0s - loss: 1.5295e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 228/300\n",
            "3/3 - 0s - loss: 1.3563e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 229/300\n",
            "3/3 - 0s - loss: 1.4724e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 230/300\n",
            "3/3 - 0s - loss: 1.4037e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 231/300\n",
            "3/3 - 0s - loss: 1.4111e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 232/300\n",
            "3/3 - 0s - loss: 1.3048e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 233/300\n",
            "3/3 - 0s - loss: 1.4216e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 234/300\n",
            "3/3 - 0s - loss: 1.2519e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 235/300\n",
            "3/3 - 0s - loss: 1.2335e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 236/300\n",
            "3/3 - 0s - loss: 1.3513e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 237/300\n",
            "3/3 - 0s - loss: 1.1810e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 238/300\n",
            "3/3 - 0s - loss: 1.1922e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 239/300\n",
            "3/3 - 0s - loss: 1.0921e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 240/300\n",
            "3/3 - 0s - loss: 1.1038e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 241/300\n",
            "3/3 - 0s - loss: 1.0541e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 242/300\n",
            "3/3 - 0s - loss: 1.0206e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 243/300\n",
            "3/3 - 0s - loss: 1.0024e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 244/300\n",
            "3/3 - 0s - loss: 1.0123e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 245/300\n",
            "3/3 - 0s - loss: 9.4965e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 246/300\n",
            "3/3 - 0s - loss: 9.8609e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 247/300\n",
            "3/3 - 0s - loss: 9.7313e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 248/300\n",
            "3/3 - 0s - loss: 8.8357e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 249/300\n",
            "3/3 - 0s - loss: 8.9822e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 250/300\n",
            "3/3 - 0s - loss: 8.5915e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 251/300\n",
            "3/3 - 0s - loss: 8.6253e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 252/300\n",
            "3/3 - 0s - loss: 8.7509e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 253/300\n",
            "3/3 - 0s - loss: 8.4107e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 254/300\n",
            "3/3 - 0s - loss: 8.2060e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 255/300\n",
            "3/3 - 0s - loss: 7.8695e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 256/300\n",
            "3/3 - 0s - loss: 8.1465e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 257/300\n",
            "3/3 - 0s - loss: 7.5408e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 258/300\n",
            "3/3 - 0s - loss: 9.3891e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 259/300\n",
            "3/3 - 0s - loss: 1.0352e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 260/300\n",
            "3/3 - 0s - loss: 8.2072e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 261/300\n",
            "3/3 - 0s - loss: 9.5693e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 262/300\n",
            "3/3 - 0s - loss: 7.4136e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 263/300\n",
            "3/3 - 0s - loss: 7.6389e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 264/300\n",
            "3/3 - 0s - loss: 7.5685e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 265/300\n",
            "3/3 - 0s - loss: 7.1660e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 266/300\n",
            "3/3 - 0s - loss: 7.2251e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 267/300\n",
            "3/3 - 0s - loss: 7.3382e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 268/300\n",
            "3/3 - 0s - loss: 7.3733e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 269/300\n",
            "3/3 - 0s - loss: 6.9505e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 270/300\n",
            "3/3 - 0s - loss: 7.0177e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 271/300\n",
            "3/3 - 0s - loss: 6.6493e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 272/300\n",
            "3/3 - 0s - loss: 6.8950e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 273/300\n",
            "3/3 - 0s - loss: 6.6198e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 274/300\n",
            "3/3 - 0s - loss: 7.8523e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 275/300\n",
            "3/3 - 0s - loss: 6.4534e-07 - 21ms/epoch - 7ms/step\n",
            "Epoch 276/300\n",
            "3/3 - 0s - loss: 7.2646e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 277/300\n",
            "3/3 - 0s - loss: 7.0370e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 278/300\n",
            "3/3 - 0s - loss: 7.4752e-07 - 22ms/epoch - 7ms/step\n",
            "Epoch 279/300\n",
            "3/3 - 0s - loss: 6.8291e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 280/300\n",
            "3/3 - 0s - loss: 6.6001e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 281/300\n",
            "3/3 - 0s - loss: 6.6051e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 282/300\n",
            "3/3 - 0s - loss: 6.1927e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 283/300\n",
            "3/3 - 0s - loss: 6.0135e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 284/300\n",
            "3/3 - 0s - loss: 6.8741e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 285/300\n",
            "3/3 - 0s - loss: 6.2239e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 286/300\n",
            "3/3 - 0s - loss: 6.7625e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 287/300\n",
            "3/3 - 0s - loss: 6.4563e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 288/300\n",
            "3/3 - 0s - loss: 5.8530e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 289/300\n",
            "3/3 - 0s - loss: 6.7900e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 290/300\n",
            "3/3 - 0s - loss: 6.3404e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 291/300\n",
            "3/3 - 0s - loss: 6.6183e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 292/300\n",
            "3/3 - 0s - loss: 6.5207e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 293/300\n",
            "3/3 - 0s - loss: 5.6133e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 294/300\n",
            "3/3 - 0s - loss: 6.3165e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 295/300\n",
            "3/3 - 0s - loss: 5.4196e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 296/300\n",
            "3/3 - 0s - loss: 6.1091e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 297/300\n",
            "3/3 - 0s - loss: 5.5263e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 298/300\n",
            "3/3 - 0s - loss: 5.2228e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 299/300\n",
            "3/3 - 0s - loss: 5.7292e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 300/300\n",
            "3/3 - 0s - loss: 5.1907e-07 - 19ms/epoch - 6ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<keras.src.callbacks.History at 0x7bae754d0b20>"
            ]
          },
          "metadata": {},
          "execution_count": 201
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n-aNP4n3sqG_",
        "outputId": "a9346b8f-7db3-4f02-fcde-d5ce15525acc",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 443
        }
      },
      "source": [
        "# Plotting code, feel free to ignore.\n",
        "h = 1.0\n",
        "x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
        "y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
        "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
        "                     np.arange(y_min, y_max, h))\n",
        "\n",
        "# here \"model\" is your model's prediction (classification) function\n",
        "Z = tn_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
        "\n",
        "# Put the result into a color plot\n",
        "Z = Z.reshape(xx.shape)\n",
        "plt.contourf(xx, yy, Z)\n",
        "plt.axis('off')\n",
        "\n",
        "# Plot also the training points\n",
        "plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
      ],
      "execution_count": 202,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "14/14 [==============================] - 0s 4ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7bae7525fe20>"
            ]
          },
          "metadata": {},
          "execution_count": 202
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABNMElEQVR4nO3dd5hdV30v/O/a+/Rzps9oikaj3pvVZVnusnChGCNjDAkkgYRAyr0kEG4ul1xeEhLS30ASIDi8BjtgwHZwly1ky5YtW1bvvY1Gml5PL3uv948zM5py2sycvr+f5/Fjac6es9dIo1nfvcpvCSmlBBERERmWkusGEBERUW4xDBARERkcwwAREZHBMQwQEREZHMMAERGRwTEMEBERGRzDABERkcExDBARERmcKdUL76v7YibbQUQZFFo8Y9Kf2z/XmvQa90yR9JpgUyjpNbMaO5Nec0/d6aTXJLOt9OCU34OoUCyccT3pNRwZICIiMjiGASIqGOkYFSCi8RgGiCgvpDJFQESZwTBARERkcAwDRJRxqSwezBYuHiQaj2GAqMhNZScBERkDwwAREZHBMQwQEREZHMMAEU1JKgWHiCi/MQwQkWFw8SBRbAwDREREBscwQEREZHAMA0RERAbHMEBERGRwDANEZAhcPEgUH8MAERGRwTEMEFFB4PHFRJnDMEBEcfXPtWblPjy+mCi3GAaIKKPy4cRCrhcgSoxhgKiI8cRCIkoFwwAREZHBMQwQUVHjFAFRcgwDREREBscwQEREZHAMA0RUtDhFQJQahgEiIiKDYxggIiIyOIYBIpo090yR6yYQURowDBBRUeJ6AaLUMQwQEREZHMMAERGRwTEMEFFOZeLEQk4REE0MwwARZUy6Tiy8p+50Wt6HiGJjGCAqUjyxkIhSxTBAREWFUwREE8cwQEREZHAMA0RERAbHMEBERYNTBESTwzBARERkcAwDRFQUOCpANHkMA0RERAbHMEBERGRwDANEREQGxzBARERkcAwDRJQzmTikiIgmjmGAiIjI4BgGiCim/rnWXDeBiLKEYYCIJsU9UyR8nccXExUOhgEiIiKDYxggKkKhxTNy3QQiKiAMA0RERAbHMEBEBY/nEhBNDcMAERGRwTEMEBERGRzDABERkcExDBARERkcwwAREZHBMQwQUU7wkCKi/MEwQEREZHAMA0RERAbHMEBERGRwDANEREQGxzBARHmLxxcTZQfDABGlXbAplOsmENEEMAwQEREZHMMAERGRwTEMEBWZ0OIZuW4CERUYhgEimjD3TJHrJhBRGjEMEBERGRzDABEVtG2lB3PdBKKCxzBARFnHQ4qI8gvDABERkcExDBARERkcwwAREZHBMQwQEREZHMMAEY3TP9ea6yYQURYxDBARERkcwwAR5SUeX0yUPaZcN4AoHykmBfWrZsNW7oSv2422w5chdZnrZhUEHl9MVHgYBojGmLtlOdZ87m7YyhzDH/N1u/H+915D8ztnctgyIqLM4DQB0QhztyzHLX/6IVhL7aM+bq9w4favPYQZG+fnqGVERJnDMEA0SDEpWPO5uyGlhBCjT+UTigAksPb3tuSodUREmcMwQDSoftVs2Moc44LAEKEIlNRXoHpRQ5ZbVlx4LgFR/mEYIBpkr3CmeJ0rwy0hIsouhgGiQb4ud4rXDWS4JZMXWjwj100gogLEMEA0qPXwZfh7PJAy9hZCXdfR19yF7nNtWW4ZEVFmMQwQDZK6xN7vvQYhxLiaAlLXAQns+/5rOWodEVHmMAwQjdD89mns+stn4O3oH/XxgWs92Pn1p9B66HJuGkZElEEsOkQ0RvOeM2h+9wxqFk2HrcIJX5cb3Wdbc92svOGeGXu3BREVLoYBolgk0HnqWq5bQXlE6oDmExCqhGpPfj1RIWEYIKKCta30YMbvISNAz9sW9L5jhTYQnVm1NUVQdWcQriWRjN+fKBu4ZoCIKA4ZAVoed6Bruw3awI3pkcBVFdd+7ETv25Ycto4ofRgGiCjv5MvxxX3vW+A7ZwKkADBirYSM/rrjRRvCPVxDQYWPYYCIsqbQShH37kn+5N/3PkcHqPAxDBBR2gSbQrluQtpICYQ7FYwaERh3ERBqV7PWJqJMYRggIopBCEAkW2ItAGGJXbEy3aQeDShEmcDdBEREcbiWheE+agb0OKMDUqBkaThj95c60L/fjN53rAi1KYAKuBZFUHl7EPaZWsbuS8bDkQEiojgqbw8OzhLEeCRXJMw1GlxLM7O9UOrA9Z/a0f6MPRoEIABNwHPKhObvOTFw2JyR+5IxMQwQEcVha9Ax/dM+CAsASEAZ/A+ApUbHjM95ITK0ZKB/nxmeY2ZE08iIkQldABJo/bkdETd3MlB6cJqAiCgB16II5v2fAQwcsiBwTYEwRT/mmB+ByODjVO871gSvCkBK9O+zoOquYOYaQYbBMEBElIRiBco3Zm+nhNRT2KUggcA17mSg9OA0AVGRCC2ekesmULoIACLJ1gEBCBO3F1B6MAwQEeUZIQDnosjw+oSYpIBrMc9GoPRgGCCiUfrnJpqrpmypvD04uIkh9k4GU7kO17LMbWskY2EYIKKsKLRSxLnmmK2h7mF/9Ke0kADk8NSBqVRixu96oXDVF6UJv5WIiPJU2ZowHPMi6N9nQfC6CqFKuJZE4FoeZhCgtOK3E1EMiklB06aFmH3HUljLHHBf78G57UfQceJqrptGBmMuk6jewu2DlFkMA0RjWEvtuOevH0Xl3Dromg5FVVC9oB5zt6zA+deO4N1/eRlS5ypuIioeXDNANMZt/+tBlM+aBgBQ1Og/EcUU3c89954VWLptY87almvumZmveHdP3emM34OIRmMYIBqhfFYN6lfNHg4BYwkhsOShDVBM/KdDxUOPAJLnHhkapwmIRqhfNXt4aiAeW5kD5bOmoed825Tvp5hVzLp1MWbethhWlw39zV04u/0wus+2Tvm9iRKREhg4YEbPbitCbdGRL/us6ImIriWsX2A0DANEIyhKasPgicJCquxVLmz99qdQ1lgFXdehKAqqFzZg/n2rcPLZvdj/w51Tvkc2BZuyV66XpkZKoP0ZO/r3WUZVOvRfUXHtx05U3xtA1Z1ctGgkHOskGqHzzPWkHX0kEEZfc9eU73XnXzyMkrpyAICijF6bsOShDZh/36op34MoFs9JUzQIAIAcEYAHf9213YbAdXYPRsK/baIROo5fRd+VTuiR2BOouqbj3KuHEfFP7Sl42tJGVC+oH+78x5K6xLKHN446uZYoXfr2WBKXOlYk+vZastcgyjlOE1BRK5leico5tdDDEbQdbUbYl3zoc9dfPYt7/+E3YHHZh0cJhrYSdp9rxaHHd025XfWr50CPaHHDgFAESuor4Koth6etb8r3y7Viqj4Y6lTQu8cCzykzZASwz9RQsSkIx9zCWYEXuKYCeoKkqQsEW3giopEwDFBRck4rw6YvPYD6m2YNfywSDOPMCwdw8PFdkJoe93MHWrrx/Bcew6IPrcXcLcthcdngaevD2ZcO4txrR6CHp/5DX1FErIrz44g0rE2g9PGcMuHaE47ocQGDnannpIDnuBlVdwdQvbUw5tmFGYA/0RUyeg0ZBsMAFR1bhRP3/dOnYStzjvq4yWrGkoc2wF7lwtt/9/yo62sWNkBKoPNUC4IDfgR6vTj8kzdx+CdvZqSNXWeuQ40zKjAkOOCDt70vI/eniYt4BK4/6QA0YNT8zWAo6N5pg22GVhAnCZYsC6PvPUvC0QHXUh6CZCQMA1R0ln5sA2zlzpgLAYUiMOfOZTj1q33wdblx+9ceQs2i6RCDuwj0iIYLO49h3/d2IBLM3A/DlvfPw9s5AHulK2Y7pa7j9IsHoUfij2DQxGk+oH+/Be7jZsiggHW6hvKNIdibko/29O+zDO7Fj9OBConety0FEQYqbgmh/30LpJSjFxACgJBQHRJla7g7xEgYBqjozNu6MuGOAD2iYc3n7sa0pY3Dq/iHKCYVc7esQGlDJV77858mnE6YCMWkYM7dy7Hwg2tQ2lCBsC+E64cuYeYtCwGrecTaBB0QAq1HruDYU++k/P6hxTPS0s5iFmxTcPU/nNC8Q52fQLBdwcABCyw1GmyzNJTeFIJjrgYRo7/3X1JjniY8TAr4LxfGj1RLtY7pv+3FtR87IUMymm8EAF1AdUk0ftYL1ZHrVlI2FcZ3LlGKhCJgLbEnvkZVULe8Ke7riqqgdnkTmjYtxJXdp0a9d8OaOZh562JYnFYMXOvBue2H4b7em/B+ilnF3d98BHUrZwJSQigKzA4r5ty1DGF/CM1vHEf96jkw2y0YuNaDsy8dxPkdR9MWRAiQEaDlP53QfEO93tAL0V+HOlWEuhQM7LPAPjuC6Z/xQk38bVTwnPM0zP3aAAYOWuC/okIogGN+BCXLw1C4XsBwGAaoqEhdIuQJwOKyJb5OSohYj3+DdE3HvK0rhsOAtcSOu//yEVQvbIAe0SAUBVJKLHv4Zhz6yZs49rP4T/ErP7kZtSuaovcbcU9FVWC2WzBtWROe+c3vpuXwIyEErA4LImENkVD+D1dnmtQB72kT+g+aERlIshhzMBj4L6tofcqBxt/2jXrZMT8C75kEPzIVCce8wvozV21AxaYQKjbluiWUawwDVHTOvXoEix9cl/B8gWQUVYFzWtnw72//Pw+hcl5d9LXBhX9i8Alz1advh7e9HxdfPz7+fcwqFn5wzbjpiJH3KakrR8OaObi270LSdsVjspiw8q6lWLxpAWyDQajlzHUc/vUxtF3omPT7FjL/FRXXn3QMhgA5+F8KhRukgPe0GcF2BdbaG6MzZWtC6N5hgx6KMc8OALpAxa2FsZuAaCzuW6Kic/KZ9xDo90HXxi8KkzK1p28pJXzdbgBA1YJ61K2YGTdcSF1i+SdiP1qV1FckHaXQIxqqF01PqV2xmGxmfPAPt2LllmXDQQAAGubV4YEvbMWcm2ZO+r0LVahTwdUfOhFx31gfMKEKTkLCc2r0s5IeEnAuDg+uG5CjrgWAmg/64ZxXOLUGiEZiGKCi4+/1Yvuf/BgdJ1pGfVwLRXDxjRMpvYcQApd2Ra9tXDcvbkVCILqWoGxG9aiRhCEpzfsLMaX1Acse2YTKhorxiyEHw8ttn9gEs634JoG3lR6M+1r3Lmt05X+sJ/hUCEBGbnyu/6qKy/9UAvcRM24Ei2gIMJXraPojNypv5ep7KlycJqC0U8wq6lfNhrXEBk9bPzpOXM16Gzzt/Xjtq/+F0sYqVM6thRaOoO3IFYS9QUxfPRvWMkfSNQOXBof9FbOKVAYUVPP4ugHu1l54OwfgqCoZ3r44lqIquH7wUmpf2BhCEVj4wOq40xBCEVDNKuatmY1T75yd1D2y6Z6601N+DykR7bQTVdhLRhewNUQDoIwA1x53QA9hTLiI/jrSq8B/0QR7I8MAFS6GAUqrhR9ag5t+87ZRK/rdrb149zuvoO3w5ay3Z6ClGwMt3aM+tu8HO3DrVx+M+zlSSpx54cDwHv+eC+0xO/qRQt4gPB39499Llzjx9HtY/4WtMT9Pj2joPt+GrtPXknwlsdnKHEl3T+iajorBA5EMQQdkeApBQEioJRLOhdHFgO4TZmiexIOovW9bUbE5BMGxVipQ/NaltFn80fXY8MUPjOucnLVl2PKXj2Da0vzYC39p18mYi/2AaMfp7RjA0RF7/Fv2nkUkEI673kDXdJzbfihumeLTz+/H6ef3R68dnG7Q9WjQGLjei13ffHrSX0skmHz1uhDCUDsLhAqopTqSFAUY8d8IioQwAQ2f8kEM5j//FTXxoT4QiPQrI9YnTJ0WALxnTPCcMqX1fYni4cgApYXZYcGqz9we8zVFUaBLHWs+exde+ZMfZ7llsb3998+j+1wrVjx6C6yl0eoqUtfRvOcM9n3vNQT7b2wrW/Vbd0K1msZNKwyFA/f1Xhx5cnfC+73/vddw8Y3jWHDfKpQ2ViHkCeDSrhO48vbpKZ11EPYF0Xb0CqYtm5Fwx8KVY9mfqsmlio0hdO2wJsgDAk1/5Ib3lBl971mgeRQIk0TJyjAqbw+O2kWQwuaT6HVpeLTSI0DXKzb0vWe5sWZBSJQsD6P2wQBU59S3nxLFwjBAaTFj00KolvjfToqqoGbxdLjqy+Fp7ctewxI49at9OP3CAVQvqIdqMaG/uQv+Xi+qF03H/PtWQVEV9F/rwaIPr425vkAIAalLRIJhRALJSxd3nb6OrtPX0/51HPvZO9jy14/GrJ2gazo6rnSh/XLxnBqYiorNQQwcNSPUroyZ549uL6y8KwB7ow57YxDV9wShR6IjCrE6fse8CHrftia4m4S5RofikPCcNkUL+Ax+nn1O7GqGMd9FB64/6YD3tGl0m6WA+7gZwTYVM//QAyVRU1Kgh6NrKrxnTJCagG2GhrJ1IZhcDBpGxjBAaWGvcEJqOkSSw3fsFa68CQNAdLV/56nofL29won7/vkzqFk0fXg4XzGpCbcjCkWgal4dXHW5O2q49fBlvPWzPdj88Y2DozASAtEA1tnchR0/eiPl9+qfG7+ncc+M36sFm+IvnsvF8cWKFWj6fQ+6ttvQv//GU7apXKLqLj/K1o8Ob0qCn4TOhRGYqjREesYGiyECpatCuPwPLoR7bkwpdL9ug6VWw/Tf8sJSmbyj9Z03wXsqzq4PXSDUqaDvfcuUdi0E2xRcfcwJza1Et0RKwHPShO4dVtQ/6kPJcuNMJ9FoDAOUFv5uT0rH7foH9+6nm1AEGtfPw7wP3ARXbRn8vR5c+PUxXNl9KqXDfhSzinv+5pMonV4Z/X2SUDNWsloCmXZu/0U0n2zB/LVzUVFXhnAogktHmtF+yZgFhwBAtQO1Hw2g5v4AQl0KhAmw1OgTHs4PtSuAjsEgMNSpD/1aoGxjEL1vW6H7B4PCiF0MoU4FV3/gwuw/cSd9ou/fb44GiXi7ICTQv3fyYUAPAld/OFSSGTeCjQSkJnH9vxyY+Uce2KazDLYRMQxQWjTvOYMNgXthtltivq4PPoF72sevuB9iLbVDj2gI+yb2w04xq7jzL7Zh+tq50DUdiqqgrKkaDavnYMlDG7Djz3+KkCeQ8D1mbl6E8pk1MV9LVrFQ6jp8nQMTanMmBH0hHH/rVPILDUaxYtIdXLhPoPkHTuiBkcWLbrDUalBdMhoE4lQljPQB/QctqLg58fd1uFdJsh1SINw/+YUJA4cs0Dzxii8JQEj07Lai4RP+Sd+DChfDAKVFJBDGwf98HRv+8N5xc9e6pkPqOg48tnPc5wlVweIH12Hxh9cOF+3pPHUNx3+xB1ffO5fSvdf8zl1oWD0bwI1CO0P/r5g9DZv+5AHs+uYzCd9j1m2Lh4PEROgRHS3vn0Og35f8Yio4vbut0INxOnoIhNpV9HmQtLiR+7A5aRgwlcrBoft47yVhck3+qd1zOsmPe13Ae9IMgGHAiLi1kNLmzEsHseefX0Sg1zvq4/3NXXjtf/0UXWdGL54TisCdf7ENa37nLjiqS4c/XrWgHnf+34ex5KH1Se9pLbNjwQOrIRKspJ+xcQFcSfbZW1z2pEFg7NoBXdMQ9gdx4LHXk7ZzqkqnV6JhzRxULaifUFVdmpqBg8mLF+neZD9GBTR/8r+00tWhxKFCAGXrki9UjUeGB98k0TWspmxYHBmgtDr/2lFc+PUxTFvWBGupHZ62PvScb4t57bwPrMT0dXPHDcMPdcprPnc3rr53Lu4RwTWLp+Pub348aUEgIQTqVjThfIIFfgNXu1CzqCHuWgGp69DCGkxW8+DvJVrev4ADj+2EuzXxEcZTUTm3Fuu/+AFMW9I4/DFPWx8O/n9v4LLBpwT8V1X4L6qAABxzIrA1pn+uWwukkrxurB+ISZGwTEvey7oWR2CfFYnWNRgbChQJU4lE+cbJLx60NWrwXTDFDxxCwtrANGBUDAOUdlKXaD96Jel1iz60Nlo7Ns6cvNQl5t97Ew7GWA3vqi3Dlm89mnA74/D7JLjHkLPbD2P+faviXyAE9v1gB9qOXIHFZYO3YwCBPm/869OgYs403PsPn4YyJuw4a8tw259/FCabGedfO4rQ4vwo5pQt5v4wmp5tR/N11/AhQZACtqYIGj7lg7k8fVvkzOU6wj0Kkg/HJHhdFyl14kIBGn/Hi7Zn7dFyyiM6bftMDfWP+KA6Jv+1lW0IoefNBKsYpUDFLSypbFQMA5QzZTOq4g7vA9ERgvJZsRf1LfrIOqgWU0pz/EKI4e2D8XSfbcWpX+3D4gfXQepy1DkCuq6j49hVXNhxNKWdCemy9ne3QDGr475GIQSklFj3+Xtw6c2TWWtPPlACGuY8cR3mgcEtcCM6zECLiqs/cGLW/5z6Xvwh5RtD6HzFlriYYVzRTypdG4ZjbmpP3IoVaHjUj/B9gehTvA7YmrRRRZAmy1IpUftRP9qfdYzetTC4TqF0TQglKyc/DUGFjWGAckYLawm38OmaHreYz6zbF6cUBPSIhvbjV9Hf3JX02n0/2IGBaz1Y+vBGuAYXMwbdfpx96SCO/PTtrAYBZ00p6m+aFfd1IQTMDiuabl6AM+2Z2a6ZjyqOumHuj8R+DtcFwj1KSiv3U1V+cwgDhywItsWrMRCfqVSi4tZg9MyCCa7zMJdLlK1Jf8dcviEMS7UHPW9Z4T0bDRvWeh0Vm4MoXRWecDupeDAMUM5c2X0Kc+5aFjcQKKqCq3vOxHxtaO4+ESklvJ0DePvvnx//3mY1ZhngMy8ewJmXDqCkvgKKqsDd1jelcsGT5aguSXqNHtHgrCkDjBQGjiX/WgcOJF+5nyrFAsz4vAedr9jQv8+S/CREIaNVAm2AuXLiNQ2ywTFXg2OuL3oSp0xPGWUqfAwDlDMnn30fs+9cCqnr46YL9IgGT0c/rrwTOwz0XelC9cKGuKMDUkp0nrqGnV//OcK+IIBoB7vs4Zsx954VMNstCHkDOLf9CE48897oHRAScRctZksqWxWFqhhuS6Pq05PM3gto3vQ+3qp2oO6hAMrXh3DluwlCmiLhXJCZhYyZIOKVHCBDYiaknOm70onXv/FLhAdPBNQj2nAZ4IHrvdjx5z+N+1R+5sUDCacJhBB4/99fHQ4CpdMr8cF//SwWPLB6uDCSxWnD4gfX4YPf+R04a0rjvlcuuK/3ovtc6/DphrHoYQ3NcUZOCtE9daeTXhOqMCUerVckzNWZ6YxtjTpK14ZuLFocSUhAANX3JC5uRZSvGAYop1oPXsLTn/oO3vvOKzi/4yjOvnwIO//i53jhCz+EtyN+Vb/Lb55E854zkLqE1G/8cJaDneexp95Bz4X24Y/f8uUPweKyjQsQiqrAVu7Axj++L81f2dQd+NEb0U1reuzVa0efeidpZcVi07O6LGZfPEwXKN+QuRXxdQ/5ozsDlKEx9mhjTKUSMz7rLZhRAaKxOE1AORcJhHFu+2Gc23445c+RusSb33oWiz+6Hos/sm74yb6vuRsnfvkuLr5+fPjaitnTULNoetz3UkwqGtbMgau2LGG55GxrO3wZr3/jl7j5f9wPR1XJ8C6HSCCEoz99B8d/+W6um5h1/YuccM+xw3XJPz4UCAnnwghcSzJ32I5QgdoHA6i6OwjPSRP0kIB1mg7H/Ajn3qmgMQxQwZK6xMln9uLks3thL3dC1yWCMebQK+bWJn0vIQQqZk/LqzAAANf2XcAzn/5X1K+ajZK6cgQ9AbS8fx4Rv0H3gysCVx6ux7S3elB7sBcyGJ0zUKwS5ZuCqN4SzEqnbCqRKN+Q2mp/qQP+ZhWaV8BcpsM6Xeeqfco7DANU+CTg741fAEgPpfakqKV4XbZJXeL6gYu5bkbekCaB9ruqcMv9VxBsj+5EsdZpUJJvMMk691ETOl6yI9J3I6FYajXUfsSfcu0BomzgwBYVvdZDl6El2R4Y9ofQcaIFilnFtKWNqF3eBGuJPUstpMlQLIB9hgb7jPwMAgOHzLj+X05E+kYPA4Q6FFx9zAnfxYkdk02USRwZoKI3VDho0YfXxKx4KKXEyV+9j6XbNmLxR9fB4rQBiBZFuvTGcez7j18j7A1mu9lFYVZjZ66bkBMyArQ/b0PMMwtk9CyDjhfsmPU/PJN6fz0UnXqQEQFrnZbWEsxkTAwDZAgH/nMnbBVOzL59SXT7oiIAXUIxqTj/6mG4ppVhzp3LRpUhVs0q5ty9HFXz6vDKn/4kbjXEXMqHcwmCTQZdv5CA54wJui/BwKsUCF5XEWxTYK1LfQeC1IHundYbRysD0YWTiyKoe8gfPQaZaBIYBsgQ9IiO3d/+FU4+uxdz7loGe4ULvm43zr92BBanFff+w6djfl70fIRpWHD/Kpx89v0stzqxdAeB/rnxC/q7Z3LF20REBhQkPMlw6Lr+iYWB9mft6N9nHv2+UsB7xoQr/+bCzD/2wORkIKCJYxggQ+k+24rus62jPrbpSw9AjyQ+J2HB/avzLgwY3dMDq7Gt9GCumxGTyaUjlfJ+qiv1IBC4pkRLIseiC0T6gd7dFtTcyyktmjiGATI8V115wiAgFJF3FQrzYXqgmOih6II/93Ez9KCAtV5D+YYQbA2TKyLkXBSBYpPQA/ECgYS5Sod1Au/fv98y+rTBcW8p0LeXYYAmh2GADMHismHe1hWYuXkxTHYLei+14+xLB9FxogWBXi90TU9Y3jjo9mextYkxCKRXqFvB1R84Eekf6mQFAldV9L9nRdXdAVRvnXjnqpiBmvsCaP/vWDtSosP44V4FvbstqLwttTUXkX4FSJIddJ8CqUWLIxFNBMMAFb2ypmps/dtPwVZqB4SAEAJljZWYc+cynHhmLy6+cQKzbl8S9/N1Tcf5HUez2GJK1VSnCqQOtPzIgYh7zKk9g0/f3TttsEzTUXrTxBePlm+MnmPQ8bwdMjLyaX7w1zrQ+ZI9WjAphQJGqkuPbgZPEAgUq2QQoElhnQEqakJVsOUvH4G1xA6hKBCDpd+GpgWWfmwDLKU2dJxsga6N/ymrRzQEB/w4/fz+rLY7nkyNCiRaPFjMvGdMCHep8YfehUTPLmv0uN9JKFkRTvK5El07bJAp1B8qXR1OfISyIlG2ljs7aHIYBqiozdg4H85pZfGPOtZ1LPvYRuz8+s9x9b1zkFJG/xs8HKjvcie2f/kno484zpFcTQ9kayfBjrZFWbnPSN6zpsFDh+KQAsFWFbp/cn8G3jNmQEv0uQKaW4G/OfnjvH2mBuficNxTExWbRMVtXC9Ak8NpAipqdStnJdwpIBQF5TNroKgK3vyrZ+CqK0f9qtlQTAq6z7ai68z1LLc4Nq4TyJAU1+/JSR5GGF1AmHyL4XDNgASEABo+5UPH87boYsIRowTWBh31n/Cx+BBNGsMAFbWUD4QZvM7T1odzrxzKWHuKTT4UHJrKugFbkwa8l+ibRMJUJqE6JtfJWmo0pLLF0FKdWtpQzEDdx6KLGr3nTJARwNag8ehkmjJOE1BR6zjZknDboNR1DFzrQXAgf3YLjMVRgcwpWRGGYtdjD70Pqtg8+ZMQ7bM1mCq0+O8vJOyzIimHgSGmEomy1WGUrw8zCFBaMAxQUbvy9mn4ez0xFwcCAITAyf/Oz2JCocUzshIEjLp4EIg+aU//jA/ChNFrBwY7b9fSCCpumfzoh1CA+o/7oz9pxwYCRUKxALUfzd8gSsbBMEBFTQ9reP0bv0QkEB4VCIZ+fWHHUZx9Ob+q2GUrBBSTpwdWT/pzHbM1zPqSB+U3h6C6dAiLhK1RQ90jPjT8hm/KW/UcczQ0fcELx7wRR2QLCdeiCKq2+uE+ZkbPmxaEOvnjmHJHSJnappn76r6Y6bYQZYy9yoWFD6zBrNsWw2Qzo/dSB868eBAte8/lumnDchEAUhkVSLSbINmagYmeWnhP3ekJXT9SvpYmHiniFtC8Av5WgY5nHZChoTMMAEDAtSyE+kf8UOJUHSaajIUzki+EZhggyrFcjQJMNQgAicPAZI4vnkoYAAojEPTtNaP92aHKhGP/fKMnEDb+ti/bzaIilkoY4LgUUY5wOiD9pjJdkA2hHjGiRHGsoCXgPW2G/yrLCFJ2cWshUZblQwAo5kWDQ4EgH0cJet+2Ds4KJBhxERLuI2bYZ6RQlpAoTRgGiLIkH0IAUNxBYKR8DAWeY2YkrTsgMemKh0STxTBAlCH50vmPlM4gkA8Fh1Ix1cOM0imVMwgAwFzF2gGUXQwDZHj52Gmny1Q6/2SLB63NlrQHgh1ti6a8iDCWeGsJsh0SrNM1+M6OOSExBh44RKlIdY3M11K4piDDQDH/8CaainQ9+afjcKLLLTWT2lEw8sCiTASDkTKx4DBRwKi4OQTfWXPCzy/fFISpNDdnDOT7AkzKnJS3Ft59599kui1ENEGZmP+faBBId62BeDIdDLJCSjS83Imqw+6Yxxf1L3SieVtdLlpGRexrS19Mek1BjgwQGVWmF/9NZkQg2XTBZEcIxsrmiEHGCIHr99fA32hD1d5+2Dujf27+aRZ0bK7AwGJXjhtIRsUwQJSnsr3qfypTA5lYP5BIQQcDIdC7shS9K0shwjogAGliyRfKLYYBoiwwyna+eC631Iz6fbqmDoDRwSCefA0M0swQQOOl8j09EV9bmvwahgGiGIzWeadjweBERgcyGQ5iSfcP10TyIXhk8+ul4sAwQFlltE42H6Wj449nstMF2Q4HmcSOmAoRw0AeYodJ6ZDJTj/TiikcEBWCogoD7ETJiPKt08/EYkKGA6LMSjkMsKMlyq186/QTyfTuAoYDKjRjv2fzTVGNDBAVkkLq3Ccjm9sN8+kHbbqCST59TVT8GAaIUlTsnTelBztxKkQMA1Qw2BkXnmwXIyKiyWEYoJSwI6bJYiAgyn8MAwWCnTEVMmuzBUDyQ42ICsHQ93MxYRiYJHbOVIiSdcaZ/iGXyffPh6BRjJ0EGUNRhQF20FRsst3BxbtfIXRyhdBGonw1qTDATpeMKh+ePnMh2BRiZ0tUxFIOAwwAlGtG7YiJiDKtqKYJKL3Y+RIRGQPDQJ5gx0tENFrJFZnrJhiGIcMAO16iiTPaugF2RGQkGQsD7HCJKBvYaRNNXcphgJ07FbJiOdXOiHXv2dkTZZ4hpwko/Yqls813I/+ciykYsMMnyi2GgQLBzpbGKrRgwA6fKH8xDIzBTpcK0djv23wLBwwCRPktZ2GAnS5R5hTaqAHF5rBbMXf2dFitZvT1uXHxSit0fXywKrsQzEHrqJikHAbYeRMVplyPGuTrqEA+d6BCEVj/wdVYeusiCEVA6hKKqsDvDuCtp/bg6qlruW4iFRlOE1BO3FN3OtdNKCg72hal7b2yOWqQzSCQz537RG38yFos2bwQQkTLwAs1+n+b04p7PnsHXv73HWi72JHLJlKRYRgoEuxci9vIv99CDQbpVkyd/0jOcgeW3HIjCIw0NEqw5r6b8NK/vZaD1lGxYhhIETtbyhdD34vpDAWZkIlRgWINACPNuWkWJCQEYh8OpygK6ufWwlFqh2/An+XWUbHK2zDAzpcosXSHglmNnWkbHUhXEDBC5z+W1WGB1CWgJLvOyjBAaZNyGGDnTJSfMjWFkCtGDAAjuXu8UNTESUDXdHj7fVlqERlB3o4MEE3GttKDuW4Cnh5YnbN758MUwkRHBfK587ecupr1e7Zc6YD2kTVQLaaY6wb0iIYr75wBDl6AcY6NokxjGKCk8qGDLSST/fNKZ4iYbCiY6lRBqkEglwEgFx38RIR9Qez7wQ7c/Mf3Q+oSQrkRCHRNQ8gXxKHHd+WugVSUGAZoGDv93NpWejCnowrZkI0QkO+dfSrOvXIYIU8Qqz5zO0qnVwIApC5xbd9F7P+PX8PT1pfbBlLRYRgwIHb6+Wvo76YYQwGDwMRc2X0KV3afQvmsGlicVrhb++Dv8eS6WVSkGAaKGDv9wpWrUJCNKYJMKaYgMFLfZVZ/pcxjGChw7PDTJ9imoPcdC7xnzJA6YJ8VQcUtIThma+OvbVfgv6JCCMAxLwJzRWY6QiNMHeQD1WLCzNsWo3ZJIySAtiNX0PzOaegRPddNI8oKhoECwA4/8waOmNH6MzsgAOjRBVueE2Z4jllQfW8AVXdGh7jDfQKtTzngvzTin46QcC0No26bH6o9/W1jIEhuKqMC1YsacNc3Pg5bmQN6JBr8Fty3Cr4uN3799af4ZE6GwDCQY+zocy/cK9D6lB2QAOSIrVyDoaBruw32pgis9Rqav+dCZGDMdi8p4DlhRku/gqYveCHU7LU9m6zNxbeRzVFdgnu+9ShUqxkAoJhu/OXZKpzY+u1P4Vef+z5CnkCumkiUFQwDGcSOvjD07bVEg0Cc8q9QJHretsLepCHSL0YHhiFSIHDVBM8JE0pWRMa/rAFSBxRzWpueUD4VIMrk4sGpjAosfGA1VKs5ZpEfRVVgLbFh/gdW4sQze6fSRKK8xzAwQezgi4//kil2Bz9EF/BfUhHqUAZDQxxCov+AZVQY8J4xoedNC3wXTAAELDUaKjaHULY+BJGk3Cxl3sxbFyeu9icEmjYvylgYsLhssLhsCPR5EQmEM3IPolQYOgywYycAgwMCEnFHBgav0bwi8TVSIOK+8XrvHgs6nrMD4sZ7hzoVtP+3Db4LKuof9edVICjEnQRT3UFgsiUeqhFCwGRL//RI1fw6rPzN2zB97VwIIaCFNVzadQJHnnwL3o6BtN+PKJmCDgPszCkdnPMj8F9W4z/1KxLO+REE21WE/AlCgyKHdxWEuhR0PG+LfnzUqEP01+6jFjgXR1C2OrWnQS4izIyei+2wlTugqLEXeugRDT0X29J6z9oVM7Hlrx6BUJThcsOqWcWcO5eicf1cvPylH8PT2pfWexIlk/UwwA6c8k3Z+hC637BCRmTs6QIdqNgcQuCqeqODj0UXKFsXAgD0vZ/kaVJI9L5jSTkM0HjpqCtw5oUDaFw3L+7riknF2RfT9zNLKAKbv/whCEUZNz2hmFRYnHas//2teP3//iJt9yRKRcphgJ04FStTicT0z3hx7XEnpDYiECgSkEDtR/2wN2mw1mno32dBsF0Z3mkwTEg4F0bgXBBdLxC8piRehyAFQq2Fs+1gKjsJ8vkgomv7LuDsy4ew4P5Vo84B0DUdiqrg+C/fReepa2m7X/2q2XDWlMZ9XTEpmL5uLhzVJfB1udN2X6JkCnqagCgVmi86LB/uFzC5JEpWhGEqGT0n4JyvYfafudG/1wLPGROgCdhnR1C+MQRrbbTwjGIBZnzeg47n7Bg4Yh4OBMIsUb4hhOr7AsNrAIQF0bUCCQKB4L++SUtntcH3vvsKus+1YvFH16O8qRoA0HelEyeefg+X3jiRtvsAQGljFaSuQyjxF4sIIVDSUMkwQFnFH0dU1Hp2W9D1ig1SA6AAkEDHizZU3hFE9dYgRp4Qq3kFoADOBRHY6jW4lkTGddiqHaj/hB/VDwQQbFEhVMDWFIE6ZvbAtTgM78kE/7wUCdey/JkimMriwWJwbvthnNt+GGaHFYBE2BfKyH0i/iAQ41jimNcRZRHDABWtvvfN6HxxREnAocqyEuh53QbFDFTdFYTmA67/1AHfOXP0aX6wCqHq1NHwGz445twoR+xvVtHzpgWeU2ZAE7DUaqjYFELZutCoYkOlN4XRvcOGiAfjpxQGVyqWrg4hcF2BySVhKs1tXf+pyPZOgkyeQRD2ZbYTbtl7HlLTIUyxp4ikLuHrGkD3+fQuWiRKJo82NhGlj9SArldtSFQYoPt1KzQ/cO1xJ3znB3OxFMOdt+YTaPlPJ4Jt0X8mA0fMaP53Jzwno0EAAELt0a2C1//LATmijL1iAWb8nvdGJ6/IwS2GEsIEWOo1tPzQiSv/UoIL3ypF8w+c8DcnXkPAdTuFL9Dvw+kXDkDqsb8vhSJw+MndietZEGUAwwCNIrXoXvhQpxIdWi9Q/mYVmkdBoroAMizQ+5YF/itxig5JAakD3busiHgE2n4+WLJYH7tVUMBzwhStZDiCpUbHnK+4Uf9JH0pXhVGyMoyKW4OQAELX1VFt819S0fx9J3wXC2dRYS4Uw8mEBx7bibPbD0FKCV3ToYU1SF2HHtGw/7GduLDjaK6bSAbEaQICEA0BPbst6N1tHexEAdWlo+LWICpvK7xqebo/+bwsAPgumqNP7eOG8ofeSMBz1AxLrTb45B//fXvfsaDi5tFzzcIElK4Mo3RldH3Ale86AQ3jw4cUgC7R9ks7Zv+ZJ5Vp5awp1p0EuSJ1ib3f3Y4TT7+H+feuQtX8WoS9IVzYeQwt753LdfPIoBgGCFIHWp+yw33UjJGdneZR0PWKDcFr+VctLxlzVYpHzw5uH0xEagLBlmRP7ALhThUyEn+XQLBNQaAlwT85KRDuUeG/pI5ap5BphbJ4sBhGBYYoZhXLHr4Z87aujG5nlMDMzYvQ39KN3X/7HHq4ZoCyrIB+vFOmeE+b4D5qQeynXgH3UQu8pwsrN1prddiaIoPz9DEICXOlBntTsk5XQi3RocT74xnznon+RYW6U/vnFk7xukTy6ZCifGNx2WCvckEkOpMgwzZ/+UOY/4GVUNRoFcKh+gYl9RX4wN9+CqXTK3PWNjKmwvoJTxnR954l8VC5ItH3ngWuJeNP48s3ehgIXFUhIwJV9wRw/QlntLLgyK9tsNOu2+aHqUJHzy5r/DcUQPnGECw1OgYOJhguHyxZnGj0RLWntipMsRXO6rFcnUkwGQ1r5mD5o7egdukMAEDQ7cfZlw7i2M/3ZPWQoMp5dZh125KYrymqAlhMWPbxm7Hnn1/KWpuIGAYIoQ41fhAAAF0g1Jnfg0hSB3p2WdHzlgW6f6jyj4RjTgRSAP4LNxYJOuZEUH1vcHhUoPoDwRE7D0aHBmudjspbgxAmoKtCQ7g/RvVBSEAHKu9IPD9un6lBdenQPPEPPBKWaCVDSq95W1di05cegK7dmD6yltix9OGb0bBmDl79syezFgjm3LkUekSDEmd7oWJSMfvOpXj3O69AailOdxFNEcMAQbFLoDfRqX0SSoKS/Pmg43kb+t4dM5YvBXyXTDCVSsz6kgdSQ8w9/VV3BWEq19G904pwV/QHtLBIlK0LoXprAMrgwEHj7/pw9YcORHrVweqCN25X9zF/0nl+oQLVWwNof9YR95qqu4LRKYksMcJ6AVuZAxv/6F5IKcefB6AqqJhTi6XbNuLIk7un2syUWEvj//0PUc0mmGxmhL1cgEnZwTBAKL0phM5WW/yFdAIoXZWZimzpEGxT0PdunKF+XSDSDwwcNKPmvvg/WMtWh1G6Koxwj4CMCJgr9HGdsqVKx+wve+A5bobnlAkyLGCt11C2PgRzWWrD5eUbwtBDfnRtt0FGMFwVESIaBJKNLmTbVHYS5Iu5W5ZDKGL4hMCxFFXB0odvxvVDl9B5oiXj7fF2DiStQhj2BRHx5/bfnLXUjnn3rEDdTbMghED7ias4v/0w/L3enLaLMoNhgFC2LoSe3VZoXowfAlckVKdE2dr8DQP9+5OseZACfXstqL43mPBnsBCApSpaGCgexRStLlh60+SHlCtvDaFsbQjuo2ZE+hWoQ+cluApn/j0V+bKtsKypevAQovjXmCwm3PcPn8aFncew559ejFsUKB0u7DiKFY/eEvd1XdNx7tUjGW1DMrXLm3DXNx6GyWYGRDRI1d00Cys+cQve/Ov/RsteboEsNvk9EUxZoTqApt/3wjK0HU+R0f8QfRpu+n0v1OQjmzkT6RNJtwfqfiX6JJ4nVHt0lKB6axAVm0IpBYGnB1ZnoWXFZyJrAebcuQwrPrk5g60B3K29OP6LPTFf0yMa/D0eHP/FuxltQyL2Cifu+ubHoVrNEIoyPKKiqAoUk4rbv/YQdzsUIYYBAgBYqnXM+lMPGj/nQdWdQVTdGUTj5zyY9aceWKrzexGT6pJJt/0Js+QpgQVqqvUFrrx9Ou5ivbGEIrD4wXVQLZn9Zjnx7PvovdIJKW+EQCkl/P0+7PjazxB0+zFj43ws3bYRCx5YDXulK6PtGWn+faugmk3j1lcAGJxuARZ9eG3W2kPZwR+PNEyI6FG+zvmFVYe4dFU4/poBAFCi0xz5VNUvk1KtMTDVxYOFsq2w/VgzOk5eRfXC6TE7uLEsThuqFtSj43g0hFhL7KiYMw26pqP7XCu04NSGmExWc7SWQGPVqHUMQgjYy5246xsPw2yzwF7pgh7RIBQFG764FWdfOYx9338NeiSz4XzGhvkJ/5wUk4rGjfPx/vdey2g7KLsYBqjg2Zo0uJaE4TkV44wBRUKxSFTelpv564hbQA8KmErHL0jMd4W0eLCsqRrVCxsgNR2tRy7D3+0Z9fob33gad/zFNtQumwEpZdzFhEMUkwqz04p1n9+C2Xcsg2qOjiyEfUGcem4/jjz51qTn9OdsWY6ypuqYbVBUBaUNlZC6PtyOKIEF962CalYzXn9AmJIHplRCFRUWhgEqeEIA9Z/0of05Owb2mwcDQXSJvmWajoZHfTBXZvcp1nvGhK4dVgSuRv+JCbNE2ZoQqrYGYXIWxhN1IXDWlOKWr3wYdcubhj8mdR2Xdp3Ee999ZXi9QNDtx6tfeQJzt67ALV/6YML31CMaBq734AN/9xson1kzquMzO6xY/sgmlDRUYPe3fzWpNs+7Z8W4khYjSSkhlNhD9PO2rsSxn++B+3rvpO6dis6TLShvqo47taJHNHSeyvyuC8ouxjsqCooZqN/mx9z/7Ubdwz7UfjSApi96MOt/emCty+6ah/6DZrT8yIHAiPMMZFig730Lmv/NiYjXIPMVaZBovYC1xI57//HTmLZ4+qiPC0XBrNuX4K7/5+PDZX6HXHjtKLrPtUKPxJ4K0zUdl948iZmbFqJi1rS48+azb1+C2hEBZCLsla5x7Rr1/glGLXRNx+w7lk7qvqk689LBhKWaFZOK088fyGgbKPsYBqiomEolytaGUb4xBPtMLevrBDQ/0P6MPfqbsVMWukC4V0H3rxOsb6CULfzQGtgrXTGfYBVVQd2KmZi3deW419769q8QdAdGVSOUuoTUdQy0dGPf93dgwf2rEt5bj2gx3zsV3s6BUfeeCKlLWEoyWwGs73In9n1/BwCMCk26Fv31kSd3o/1Yc0bbQNnHaQKiNHIfsQxuYYx/JHL/fgtq7g9AMWezZaNluvJgNmoMzNu6IuHctZQS67+4Fa2HLsHT3j/8cff1XrzwB49h8YfXYu7WFbCW2OHrcuPsy4dw5qWDiPhDcFSXJnx6V0wqXPXlk2r3+VcPo2bMaEaqFFXA09af/MIpOv38fvRe6sDiB9ehftVsCAG0H7+KU8/tw/X9FzN+f8o+hgGiNAp1KoAKIMGGDBkSiLgFLFlex5BO+bCTwFaWuPiFEAKKScWq37oDu//2uVGvBXq9OPTjN3Hox2/G/Nyg2w+zPf4CSl3TEZhkJb6Lb5zAgvtXo3Je3bgwM7TVMN5Uga5JXHr9+KTuO1Htx5o5AmAgnCYgSiPFKpMWQIpel5n7p+vo4kLYSeDr9ozapx+LEAIzNy+C2TmxP/ALO44mHMpXVAUXJ9kp62ENO/73T3HpjeOj7qGFNVx68yQCvd5x9x76Og88thNBt39S9yVKhCMDVNSkBPwXVXjPmQBdwNYUgWtxBCK1GjQT5loWRvfOBHO6QsI+S+OOghQkKzZ07pVDWP3Zu5K+j2JS4ah0oX8Ch/6cfuEA5t97E2xljnFrEnRNR9fZ61MqyRv2hfDOP76IA4+9jupFDZAS6Dp9DcEBP5zTSrH2d+9G06aFw7sK3K29OPLEW7i06+Sk70mUCMMAFa1wn8C1x50ItqrD5ZWhW6GW6mj8jA+2xvQXV7I16HAuCcMbq+bB4JBB1ZZA2u9rRGdfOYQl2zbCVuZIWjcg6J7Yn3mw34ftX3kCt331wWj9Av1Glcur753Fnn96KS1nBwT6fWjZe37Ux7wdA3jzW/8NW7kTJfXlCPtD6LvcOeV7ESXCMEAFTY8AgRYVMgJY6/ThGv96GLj6H06EewdnwkYcYqS5Ba7+hxOzvuSGuSJ6fbhX3Bg9mBGBbbqOUJcC71kTZASwzdBgn5Xa7oSGR324/pQD3hPmESEEEBagbpsfznm5rfBYKMcWJxP2hfDrr/0MH/zXz8a9Rtd0tB9rRqBv4vP7ntY+bP/KEyifWYOahQ3QdR2thy7D09Y3hVanLtDnnVS7iSaDYYAKktSBnjet6HnTAt0/2OErEiXLw5j24QC8p00Id8eZC5ACekiid48VVXcH0P60He7jo4sVKXY9+r5CDn+OZZqGhk/5ktYtUCxA46d9CLYpcB8zQw9GP7d0ZThjawWKTarnEfRe7MCZFw5g4QfXjFv9H63iJ3H4ibcmdO+yGVVYum0jZt+xFKrFBF+PB2dfOohTv3ofYV/+nt5JNBUMA1SQ2p+zof89C0Zt4dMF3MfMCLSoMFfo0Y583FD9ICkwcNiMQLMK/xV1xHXR/+t+MXzdkFCngubvueBcFEKgOToN4JgfQfmmIGz14wOCtU6HtS4/jvHNpmwfXbzvBzughTUs/shaCFWB1CUUVYG/z4c9//gCOk+mXi2vZkkj7vnrR4dP6AMAR6ULKz65GTM3L8L2rzyB8ATWHhAVCoYBKjiB6wr634vziK0LhHsUyIiIHwSGLvUL+C/H+ycQ43OlgB6QcB++EUL695vRv8+Muo/5UbYu9aNyJyqbxxcn20mQD9sKR5K6xIHHduLEL99F48b5MDusGLjWg+v7L0xoXl8oArf/+UehmNRxW/4UVUFZUzVWfeYOvP/vr6b7SyDKOYYBKjj9+yzRuXg9/lN/xIvE1wgJocpogaAkoWHMJ47+rR6dWmh7xg5bowZrjBGCbEnXtsJcm+yRxYF+H86/emTS921cPw+O6pK4ryuqgnlbV+Dgj14fPvNgIoQi0LhhPpo2LYDJZkHf5U6ce/UwfF3uSbeZKF0YBqjgRPoUIFmfG0nSwUsB1alDD6Sj1IYAhETvHgvqPpbfOwWKZfFgOpU1VWPGxvloWDMHuqYnrGposppRUl+B3ksdE7qHvdKFe/76UZTPrBk8llhgxs0LsPyTt2Dfv7+GMy8dnOqXQTQlDANUcFSHjJbLShAIFJtE2boQendbMe6IOCHhmB+B4pDR3QbxRg8mQhfwnec/p0Jidliw+c8+ghkb5g8X+UnlaF4tFJnYjQRw918+gtLpldF7DK5FGPqu2/CH98LT0Y9r+y5M7H2J0ogVCKnglKwKJe7AFYnSNSHUPBBA7UM+mCtvpAbVoaNqSxCNn/GhYn2S95koHkY4ZZOdIpiMO76+DdPXzgUQDQHJgoDUJdytvRi43jOh+9Svmo3KObXxjwTWdCz7+M0Tek+idOOjDOWM1AHvWRPcRwe339VoKFsXgqUq8aIvx1wNjvnh6JP42Pl+RUKxSlTeGoQQQPmGMMrWhxHpE5C6gLlcH64+aJ+joWR5CO5jZozvyWMdOJ/gEHoAqj2/FtZRfNOWzUD9TbMm9DlCETj21J6Uyk2P1Lh+HvSIFjcMKKqC2mVNuP///QxaD1/B2ZcPwduR+cOIiEZiGKCciHgFWv7TgeA10+BCPwDChJ43rKi+N4iqO+Nv3xICmP5pH9qescN9xHyjj5YClhodDZ/0DRcTGro++ns57n3qH/XDXK2j9x0rZGiwoxcSljoNkT5lVA2DZOsUAi0mBK4psE3P3SLCqcrlToJsjgrMum1Jwg4aGDwPQEpIGe2wjzy5G+dfm/gCRdWc2o/Z6oXTUTmvHks/tgG7/+55XNl9asL3IposhgHKOimB6084omWCgRtD9YP9TNd2G8wVOkpvir9iW7EADY/6Eb43EK0SqAnYGjTYZqZWJXCIUIGae4OouiuIwFUVUhOwNmgwuaI7DQKtg9UNazU0f9+FULuCuKMDikTfe1bUfSy9B8lkc1uhUVhcViT7RhFC4MqeMxho6cH5V4/A3do7qXv1XGyHSGEtAhANHVKXuPWrH0HflU70N3dN6p5EE8U1A5R1gRYV/kumBPP1Et07rUhyIB2A6BN/+YYwKjaFUi4XHItiiU4/OBdEhksaCxNgn6HBMVuD6gAiboGECwN0gcC13PyTSmVbYTZ2EmS74NBkua8l79gD/T68+VfP4tDjuyYdBADg0hvHEQmGU655IBQBSIlFH14b9xp7pQvlM2tgcSU4FItoAjgyQFnnPWlKXAMAAqEOFZF+AXN5/szDK6ZkMwUSSppP/jXKqEA2pwgA4PxrR7Dik5vjvq5rOs6mabtf2BfC7m8/hzu+/jHIiJ5wamKIYlIxfd3ccR+vXd6Emz59G2qXNQ23s/nt0zj4+K6snZlAxYkjA5R1upba47tMVisgy0qWh28cPBTvmmXpq0JolCCQC97OARx6fBcAjHti1zUdAy3dOPHM3rTdr2XvObzypcfR/M4Z6JHUDqoau7th+vp5uOdvPomaxY2jrmm6ZSHu/5ffQkl9RdraS8bDMEBZZ2vQkm7pU2wSpvL8WohXfkswuhNBxAgEQkJ1Rrc0FqpkiweLzfFfvovdf/fcqK2CkWAY5145hO1ffgJhX3qnPLrPteGtb/8KT37ob3H6hQPDtQ1i0SMa2o81D/9eqAo2fekBCDE+JCgmFRanFWt/b0ta20vGwmkCyjrXsjAUhx49DChWKWAhUbYhBCXPvjstVRKNv+3FtZ84oQfkjSitC6glEjM+64VqT8+9jDQqkO0pgpEuvXECl944gZL6CqhWEzxtfZMqNTxRZ148gIUPxP87VkwqTj+/f/j3jRvmwV7ujH+9qqJx/TzYK13w93jS2lYyBo4MUNYpJqDhUz4IBWOG3SUgJGzTNVTfnZ9lfR1zNcz93wOofciP0pvCKF0dRv2jPsz9qjvp0capykQQSMfiwXw7oCid3K296LvcmZUgAAD9zV149zsvQ0o5atpg6NcHHtuJzlPXhj9e2lCZcCQBiC48dNWVZ6S9VPzy7NmLjMI5T8PMP/agZ5cV7mNmyIiAqUyi/OYQKm4JDi/E08PAwCEz+t+3INKvQC3RUbY2jLK1obQv1kuVYo0WMyrfkJ2Oo5jlclQg186/egS9lzqw+CPr0LBmNgCB9mNXcOq5/eg4PvrPJeQNRncZJJHuqQ0yDoYByhlrnY76T/hR94gf0DFcGXCI5geu/tCJ4DV1uKhQZECg45qKvnctmPF57/A2wGIxmVGBYjmt0Ii6z7bi7b9/Pul1V989iw1/8AEINXYgkFLCfa0HfZc7091EMghOE1DOCTE+CABAx3N2BK+rAEauLYju9Q91KWj7ZZom6PNEoa8TyOsaAwKoXz0baz53F9Z+fgtm3b4Eijn5Fr98Eejz4vTz+6NVEWMQQiAwkN5iV2QsHBmgvBRxCwwcMcdeYAgAuoD3tAmhbpH0LANKLhc7CbI1ReCcVoa7v/lxlM+sgTY4J7/kwfUI9HnxxjefHjU3n8/6mxM/9U9b0oj61bPRevBSwuuEImB2WBEJhKBH8mvHDuUOwwDlpcBVNYUTBQX8V0ywVHHunmJTLSZs/fYn4awpjf5+RMEfS4kdW771KF744mMFUbBn/r2rorW845TZ1CMa5t97U9wwYK90YfkjmzBv6wqYbBZoYQ2Xdp3AsZ/vgfvaxE5ipOLDaQLKT/lVbyjjMjlFkI87CbI1KjDr9iVw1ZXHrPqnqApUi4pFH4lf9jefuOrKIZT4P7IVk4rShsqYrzmnleGB7/4OFjywCiZbdBRINauYc+dSfPA7v43KubUZaTMVDoYByku2Jg1Qk3RAQsIxO5KdBlFBmrl5Udx5diC6P3/27Uuy2KLJC7r9Cb8WXdMR6PfGfG3DH3wAtlI7FHV0KFJMKlSrGZu/8uG0tpUKD8MA5SWTU6JsdTh2tT8AEBKupeFRRxUXqkJfODhR2dxOaHZYoSR4mgYw/KSc7y7uPJYk2Ci4+PrxcR93TivF9HVz456JoKgKymfWoGbx9LS1lQoPwwDlrWkf9sM+a7Agy1AoGPy/tV5D3Taunk7HtsJiLkPcd6Uz4VkAuqaj/2phHBN89uVDCPR6oWvjvx49oqHvSicuv3Vq3GtlTdUQSY7zlFKifFbmT7Wk/MUwQHlLsQAzfteL+k/64JgXgblGg322hrpHfGj6g/SV/qXsyXaRoXOvHEp4SqCiKjj9woEstmjyggN+bP/KE+i7FN1VoGs6pB7dDdB+/Cpe++p/QQ+PDwpaMPlUmhAia9UXKT9xNwHlNaECpSvDKF2ZPz+oZATwnjUh4hYwlUo450cgJvkvqVimCPK1xkDPhXYcfeodrPjELZC6PrwAT0oJSImWfRdwKcbQer7ytPbhxT/6EaoXTce0pY2Qmo7Ww5cTFhvqPH0NwQEfrKWOuNdoYQ3XD1zMRJOpQDAMEE1A/wEzOl60QffdGFRTHTpqPhSIrnHIM/m0kyBXpYcP//hNDFztxrKP34zymdE/D3+PB6ef248Tz+4dd4RxIeg6fQ1dp1Orj6CHNRz7xbtY+7m7Y74udYmzLx9EkEWLDI1hgChF/QfNaPuFA8DozkPzCbT93AGh+FB6U+qBoFhGBQrBxdeP4+Lrx2GrcEJRFfh7PAUZAibr5DN7YStzYOm2jdGve3AhomJScfGN49j/w505biHlGsMAUQqkBnS+ZEM0CIxdjCUASHS+ZEPJinD0NMYCUcyLB2MJ9MbeemcEB3/0Bs6+cgjztqyAo6YUgT4vLr5+nOcZEACGAaK4pA4EryvQQwKRAQWaJ1EvHz1EyX9JhWNu/NXrRLnkae3D4SfeynUzKA8xDBCNISXQ/74Z3b+2ITIwFABSG1KOeBQAycNAOqYIeFohEaULwwDRGD2vW9H12tCUwJDU6iOby3jwCxEVngKa3STKvHCfQNcO6+DvYgWAeCMEEuZKDbaZ2RkVSEU6dhIQkTEwDBCNMHAw2YK66GLB0R+SgABqHwzEO1CuYKX7gCIiyk+cJiAaIdyrxOzvRxvd41tqdEz7UADOBYV1aFK6dhLka8EhIkodwwDRCKojhTl/ITHj8x7oAQWmUh3WBj3lEQHWFiCifMQwQDRC6U1h9Oyyxb9AiZ6W6JitA+BiQSIqDlwzQDSCtV5HycpQ7KOThYRQgKq7cz8sXmjbCnNVipiIUsORAaIx6j7uh2KV6N9nuVFwUAqYyiTqP+GDrT7/RwTy6UwCIsp/DANEYygmoO5jAVTfE4TnpBl6CLDW6XDMi0yp1HA+rRcwWhliIkqMYYAoDlOpRPnGUK6bQUSUcVwzQEREZHAMA0Q0aawxQFQcGAaICkw2dhJw8SCRsTAMEGVBNhcP8kwCIpoohgEig+FOAiIai2GAiIjI4BgGiIiIDI5hgIiIyOAYBogyLJ2LB7mTgIgygWGAqIhkcycBawwQFQ+GASID4U4CIoqFYYCIiMjgGAaIiIgMjmGAKIPy6djiVGRi8aDl1NW0vycRpRfDAFGByMZOAiIyJoYBoiKRbCcBFw8SUTwMA0Q0YdxWSFRcGAaICACLDREZGcMAERGRwTEMEBERGRzDAFEBSLaTIJtliImo+DAMEGVIPtUY4E4CIkqEYYCIuHiQyOAYBohoQritkKj4MAwQEREZHMMAUZ5jGWIiyjSGAaICx50ERDRVDANERY47CYgoGYYBojyWjSkC7iQgIoYBogzIpxoDRETJMAwQ5al8XDjIbYVExYlhgIiIyOAYBogKGHcSEFE6MAwQFbFc7ySwnLqa0/sTUWoYBojyULbWC3AnAREBDANERESGxzBARCnhTgKi4sUwQJRnUp0i4OJBIkoXhgEiIiKDYxggKlK53klARIWDYYAozQqlFDF3EhDREIYBojySjyWIAS4eJCp2DANEREQGxzBAVIC4k4CI0olhgChPpHOKgIsHiWgiGAaIiIgMjmGAyIC4k4CIRmIYIKKEuJOAqPgxDBDlgYmsF+DiQSJKN4YBIiIig2MYIEqjfKg+yJ0ERDRRDANEREQGxzBAlGPZLkE8kZ0EXDxIZAwMA0SUEZZTV3PdBCJKEcMAUQHhTgIiygSGASIiIoNjGCAqIuncScD1AkTGwTBAlEPZXjxIRBQLwwCRgfBMAiKKhWGAqEBw8SARZQrDAFGa5EP1wXThegEiY2EYICIiMjiGAaIcSffiQZ5JQESTxTBARERkcAwDRAUgm4sHuV6AyHgYBogMgtsKiSgehgEiIiKDYxggygEuHiSifMIwQEREZHAMA0RpUCwFh7h4kMiYGAaI8hzLEBNRpjEMEBlAtncSWE5dzer9iGhqGAaIsixfjy3mFAGRcTEMEBU47iQgoqliGCDKY1wvQETZwDBARERkcAwDRMT1AkQGxzBAVOR4JgERJcMwQDRFEyk4NJGdBFwvQETZwjBAVMC4k4CI0oFhgIiIyOAYBoiIiAyOYYCIiMjgGAaIpiBTpxVmc/EgtxUSEcMAUZak+0yCVBYPclshEaWCYYBokjI1KkBElG1CSslHByIiIgPjyAAREZHBMQwQEREZHMMAERGRwTEMEBERGRzDABERkcExDBARERkcwwAREZHBMQwQEREZHMMAERGRwf3/T1KXZ8HnmGsAAAAASUVORK5CYII=\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since end of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "wfZCzuq9KY9b",
        "outputId": "9e7a5a81-cb55-4889-956e-a23f6a5ae02d"
      },
      "execution_count": 203,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1710116717.1244578\n",
            "Mon Mar 11 00:25:17 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since beginning of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "Ft6S13x6KuEQ",
        "outputId": "481ccfc6-0878-49a4-fad1-bd95c7e67f8f"
      },
      "execution_count": 204,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1710116717.135169\n",
            "Mon Mar 11 00:25:17 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BMxSJo5gtOmQ"
      },
      "source": [
        "# VS Fully Connected"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NKQx7stYswzU",
        "outputId": "1ef1fd07-0cc5-4383-9a27-065862b97cd2",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 11458
        }
      },
      "source": [
        "optimizer = Adam(learning_rate=0.0009)\n",
        "fc_model.compile(optimizer=optimizer, loss=\"mean_squared_error\")\n",
        "fc_model.fit(X, Y, epochs=300, verbose=2)\n",
        "# Plotting code, feel free to ignore.\n",
        "h = 1.0\n",
        "x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
        "y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
        "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
        "                     np.arange(y_min, y_max, h))\n",
        "\n",
        "# here \"model\" is your model's prediction (classification) function\n",
        "Z = fc_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
        "\n",
        "# Put the result into a color plot\n",
        "Z = Z.reshape(xx.shape)\n",
        "plt.contourf(xx, yy, Z)\n",
        "plt.axis('off')\n",
        "\n",
        "# Plot also the training points\n",
        "plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
      ],
      "execution_count": 205,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "3/3 - 1s - loss: 0.5343 - 635ms/epoch - 212ms/step\n",
            "Epoch 2/300\n",
            "3/3 - 0s - loss: 0.1818 - 24ms/epoch - 8ms/step\n",
            "Epoch 3/300\n",
            "3/3 - 0s - loss: 0.1132 - 21ms/epoch - 7ms/step\n",
            "Epoch 4/300\n",
            "3/3 - 0s - loss: 0.0911 - 25ms/epoch - 8ms/step\n",
            "Epoch 5/300\n",
            "3/3 - 0s - loss: 0.0735 - 21ms/epoch - 7ms/step\n",
            "Epoch 6/300\n",
            "3/3 - 0s - loss: 0.0770 - 24ms/epoch - 8ms/step\n",
            "Epoch 7/300\n",
            "3/3 - 0s - loss: 0.0687 - 22ms/epoch - 7ms/step\n",
            "Epoch 8/300\n",
            "3/3 - 0s - loss: 0.0657 - 22ms/epoch - 7ms/step\n",
            "Epoch 9/300\n",
            "3/3 - 0s - loss: 0.0567 - 23ms/epoch - 8ms/step\n",
            "Epoch 10/300\n",
            "3/3 - 0s - loss: 0.0656 - 22ms/epoch - 7ms/step\n",
            "Epoch 11/300\n",
            "3/3 - 0s - loss: 0.0538 - 25ms/epoch - 8ms/step\n",
            "Epoch 12/300\n",
            "3/3 - 0s - loss: 0.0529 - 22ms/epoch - 7ms/step\n",
            "Epoch 13/300\n",
            "3/3 - 0s - loss: 0.0511 - 22ms/epoch - 7ms/step\n",
            "Epoch 14/300\n",
            "3/3 - 0s - loss: 0.0518 - 20ms/epoch - 7ms/step\n",
            "Epoch 15/300\n",
            "3/3 - 0s - loss: 0.0504 - 22ms/epoch - 7ms/step\n",
            "Epoch 16/300\n",
            "3/3 - 0s - loss: 0.0497 - 24ms/epoch - 8ms/step\n",
            "Epoch 17/300\n",
            "3/3 - 0s - loss: 0.0533 - 21ms/epoch - 7ms/step\n",
            "Epoch 18/300\n",
            "3/3 - 0s - loss: 0.0462 - 23ms/epoch - 8ms/step\n",
            "Epoch 19/300\n",
            "3/3 - 0s - loss: 0.0473 - 25ms/epoch - 8ms/step\n",
            "Epoch 20/300\n",
            "3/3 - 0s - loss: 0.0437 - 22ms/epoch - 7ms/step\n",
            "Epoch 21/300\n",
            "3/3 - 0s - loss: 0.0412 - 26ms/epoch - 9ms/step\n",
            "Epoch 22/300\n",
            "3/3 - 0s - loss: 0.0415 - 24ms/epoch - 8ms/step\n",
            "Epoch 23/300\n",
            "3/3 - 0s - loss: 0.0434 - 23ms/epoch - 8ms/step\n",
            "Epoch 24/300\n",
            "3/3 - 0s - loss: 0.0387 - 22ms/epoch - 7ms/step\n",
            "Epoch 25/300\n",
            "3/3 - 0s - loss: 0.0377 - 23ms/epoch - 8ms/step\n",
            "Epoch 26/300\n",
            "3/3 - 0s - loss: 0.0419 - 21ms/epoch - 7ms/step\n",
            "Epoch 27/300\n",
            "3/3 - 0s - loss: 0.0520 - 25ms/epoch - 8ms/step\n",
            "Epoch 28/300\n",
            "3/3 - 0s - loss: 0.0432 - 21ms/epoch - 7ms/step\n",
            "Epoch 29/300\n",
            "3/3 - 0s - loss: 0.0482 - 21ms/epoch - 7ms/step\n",
            "Epoch 30/300\n",
            "3/3 - 0s - loss: 0.0405 - 24ms/epoch - 8ms/step\n",
            "Epoch 31/300\n",
            "3/3 - 0s - loss: 0.0428 - 24ms/epoch - 8ms/step\n",
            "Epoch 32/300\n",
            "3/3 - 0s - loss: 0.0443 - 26ms/epoch - 9ms/step\n",
            "Epoch 33/300\n",
            "3/3 - 0s - loss: 0.0456 - 25ms/epoch - 8ms/step\n",
            "Epoch 34/300\n",
            "3/3 - 0s - loss: 0.0403 - 27ms/epoch - 9ms/step\n",
            "Epoch 35/300\n",
            "3/3 - 0s - loss: 0.0349 - 25ms/epoch - 8ms/step\n",
            "Epoch 36/300\n",
            "3/3 - 0s - loss: 0.0334 - 22ms/epoch - 7ms/step\n",
            "Epoch 37/300\n",
            "3/3 - 0s - loss: 0.0439 - 24ms/epoch - 8ms/step\n",
            "Epoch 38/300\n",
            "3/3 - 0s - loss: 0.0399 - 25ms/epoch - 8ms/step\n",
            "Epoch 39/300\n",
            "3/3 - 0s - loss: 0.0277 - 25ms/epoch - 8ms/step\n",
            "Epoch 40/300\n",
            "3/3 - 0s - loss: 0.0421 - 23ms/epoch - 8ms/step\n",
            "Epoch 41/300\n",
            "3/3 - 0s - loss: 0.0350 - 22ms/epoch - 7ms/step\n",
            "Epoch 42/300\n",
            "3/3 - 0s - loss: 0.0316 - 24ms/epoch - 8ms/step\n",
            "Epoch 43/300\n",
            "3/3 - 0s - loss: 0.0319 - 23ms/epoch - 8ms/step\n",
            "Epoch 44/300\n",
            "3/3 - 0s - loss: 0.0395 - 27ms/epoch - 9ms/step\n",
            "Epoch 45/300\n",
            "3/3 - 0s - loss: 0.0314 - 27ms/epoch - 9ms/step\n",
            "Epoch 46/300\n",
            "3/3 - 0s - loss: 0.0335 - 24ms/epoch - 8ms/step\n",
            "Epoch 47/300\n",
            "3/3 - 0s - loss: 0.0323 - 24ms/epoch - 8ms/step\n",
            "Epoch 48/300\n",
            "3/3 - 0s - loss: 0.0270 - 28ms/epoch - 9ms/step\n",
            "Epoch 49/300\n",
            "3/3 - 0s - loss: 0.0313 - 24ms/epoch - 8ms/step\n",
            "Epoch 50/300\n",
            "3/3 - 0s - loss: 0.0227 - 22ms/epoch - 7ms/step\n",
            "Epoch 51/300\n",
            "3/3 - 0s - loss: 0.0269 - 22ms/epoch - 7ms/step\n",
            "Epoch 52/300\n",
            "3/3 - 0s - loss: 0.0248 - 22ms/epoch - 7ms/step\n",
            "Epoch 53/300\n",
            "3/3 - 0s - loss: 0.0240 - 25ms/epoch - 8ms/step\n",
            "Epoch 54/300\n",
            "3/3 - 0s - loss: 0.0259 - 26ms/epoch - 9ms/step\n",
            "Epoch 55/300\n",
            "3/3 - 0s - loss: 0.0207 - 22ms/epoch - 7ms/step\n",
            "Epoch 56/300\n",
            "3/3 - 0s - loss: 0.0265 - 24ms/epoch - 8ms/step\n",
            "Epoch 57/300\n",
            "3/3 - 0s - loss: 0.0261 - 26ms/epoch - 9ms/step\n",
            "Epoch 58/300\n",
            "3/3 - 0s - loss: 0.0193 - 22ms/epoch - 7ms/step\n",
            "Epoch 59/300\n",
            "3/3 - 0s - loss: 0.0209 - 25ms/epoch - 8ms/step\n",
            "Epoch 60/300\n",
            "3/3 - 0s - loss: 0.0197 - 24ms/epoch - 8ms/step\n",
            "Epoch 61/300\n",
            "3/3 - 0s - loss: 0.0143 - 22ms/epoch - 7ms/step\n",
            "Epoch 62/300\n",
            "3/3 - 0s - loss: 0.0159 - 25ms/epoch - 8ms/step\n",
            "Epoch 63/300\n",
            "3/3 - 0s - loss: 0.0176 - 24ms/epoch - 8ms/step\n",
            "Epoch 64/300\n",
            "3/3 - 0s - loss: 0.0123 - 23ms/epoch - 8ms/step\n",
            "Epoch 65/300\n",
            "3/3 - 0s - loss: 0.0196 - 22ms/epoch - 7ms/step\n",
            "Epoch 66/300\n",
            "3/3 - 0s - loss: 0.0141 - 22ms/epoch - 7ms/step\n",
            "Epoch 67/300\n",
            "3/3 - 0s - loss: 0.0129 - 27ms/epoch - 9ms/step\n",
            "Epoch 68/300\n",
            "3/3 - 0s - loss: 0.0125 - 26ms/epoch - 9ms/step\n",
            "Epoch 69/300\n",
            "3/3 - 0s - loss: 0.0090 - 26ms/epoch - 9ms/step\n",
            "Epoch 70/300\n",
            "3/3 - 0s - loss: 0.0113 - 26ms/epoch - 9ms/step\n",
            "Epoch 71/300\n",
            "3/3 - 0s - loss: 0.0106 - 23ms/epoch - 8ms/step\n",
            "Epoch 72/300\n",
            "3/3 - 0s - loss: 0.0085 - 24ms/epoch - 8ms/step\n",
            "Epoch 73/300\n",
            "3/3 - 0s - loss: 0.0077 - 25ms/epoch - 8ms/step\n",
            "Epoch 74/300\n",
            "3/3 - 0s - loss: 0.0076 - 25ms/epoch - 8ms/step\n",
            "Epoch 75/300\n",
            "3/3 - 0s - loss: 0.0127 - 23ms/epoch - 8ms/step\n",
            "Epoch 76/300\n",
            "3/3 - 0s - loss: 0.0162 - 22ms/epoch - 7ms/step\n",
            "Epoch 77/300\n",
            "3/3 - 0s - loss: 0.0134 - 24ms/epoch - 8ms/step\n",
            "Epoch 78/300\n",
            "3/3 - 0s - loss: 0.0078 - 24ms/epoch - 8ms/step\n",
            "Epoch 79/300\n",
            "3/3 - 0s - loss: 0.0080 - 24ms/epoch - 8ms/step\n",
            "Epoch 80/300\n",
            "3/3 - 0s - loss: 0.0076 - 22ms/epoch - 7ms/step\n",
            "Epoch 81/300\n",
            "3/3 - 0s - loss: 0.0049 - 27ms/epoch - 9ms/step\n",
            "Epoch 82/300\n",
            "3/3 - 0s - loss: 0.0042 - 24ms/epoch - 8ms/step\n",
            "Epoch 83/300\n",
            "3/3 - 0s - loss: 0.0039 - 25ms/epoch - 8ms/step\n",
            "Epoch 84/300\n",
            "3/3 - 0s - loss: 0.0042 - 27ms/epoch - 9ms/step\n",
            "Epoch 85/300\n",
            "3/3 - 0s - loss: 0.0044 - 24ms/epoch - 8ms/step\n",
            "Epoch 86/300\n",
            "3/3 - 0s - loss: 0.0043 - 24ms/epoch - 8ms/step\n",
            "Epoch 87/300\n",
            "3/3 - 0s - loss: 0.0046 - 23ms/epoch - 8ms/step\n",
            "Epoch 88/300\n",
            "3/3 - 0s - loss: 0.0030 - 26ms/epoch - 9ms/step\n",
            "Epoch 89/300\n",
            "3/3 - 0s - loss: 0.0031 - 26ms/epoch - 9ms/step\n",
            "Epoch 90/300\n",
            "3/3 - 0s - loss: 0.0062 - 23ms/epoch - 8ms/step\n",
            "Epoch 91/300\n",
            "3/3 - 0s - loss: 0.0062 - 23ms/epoch - 8ms/step\n",
            "Epoch 92/300\n",
            "3/3 - 0s - loss: 0.0036 - 23ms/epoch - 8ms/step\n",
            "Epoch 93/300\n",
            "3/3 - 0s - loss: 0.0032 - 24ms/epoch - 8ms/step\n",
            "Epoch 94/300\n",
            "3/3 - 0s - loss: 0.0043 - 23ms/epoch - 8ms/step\n",
            "Epoch 95/300\n",
            "3/3 - 0s - loss: 0.0074 - 24ms/epoch - 8ms/step\n",
            "Epoch 96/300\n",
            "3/3 - 0s - loss: 0.0115 - 23ms/epoch - 8ms/step\n",
            "Epoch 97/300\n",
            "3/3 - 0s - loss: 0.0141 - 24ms/epoch - 8ms/step\n",
            "Epoch 98/300\n",
            "3/3 - 0s - loss: 0.0102 - 24ms/epoch - 8ms/step\n",
            "Epoch 99/300\n",
            "3/3 - 0s - loss: 0.0119 - 24ms/epoch - 8ms/step\n",
            "Epoch 100/300\n",
            "3/3 - 0s - loss: 0.0100 - 23ms/epoch - 8ms/step\n",
            "Epoch 101/300\n",
            "3/3 - 0s - loss: 0.0054 - 29ms/epoch - 10ms/step\n",
            "Epoch 102/300\n",
            "3/3 - 0s - loss: 0.0092 - 24ms/epoch - 8ms/step\n",
            "Epoch 103/300\n",
            "3/3 - 0s - loss: 0.0065 - 22ms/epoch - 7ms/step\n",
            "Epoch 104/300\n",
            "3/3 - 0s - loss: 0.0056 - 21ms/epoch - 7ms/step\n",
            "Epoch 105/300\n",
            "3/3 - 0s - loss: 0.0041 - 23ms/epoch - 8ms/step\n",
            "Epoch 106/300\n",
            "3/3 - 0s - loss: 0.0037 - 26ms/epoch - 9ms/step\n",
            "Epoch 107/300\n",
            "3/3 - 0s - loss: 0.0032 - 23ms/epoch - 8ms/step\n",
            "Epoch 108/300\n",
            "3/3 - 0s - loss: 0.0030 - 29ms/epoch - 10ms/step\n",
            "Epoch 109/300\n",
            "3/3 - 0s - loss: 0.0045 - 23ms/epoch - 8ms/step\n",
            "Epoch 110/300\n",
            "3/3 - 0s - loss: 0.0035 - 25ms/epoch - 8ms/step\n",
            "Epoch 111/300\n",
            "3/3 - 0s - loss: 0.0025 - 27ms/epoch - 9ms/step\n",
            "Epoch 112/300\n",
            "3/3 - 0s - loss: 0.0015 - 24ms/epoch - 8ms/step\n",
            "Epoch 113/300\n",
            "3/3 - 0s - loss: 0.0028 - 27ms/epoch - 9ms/step\n",
            "Epoch 114/300\n",
            "3/3 - 0s - loss: 0.0036 - 25ms/epoch - 8ms/step\n",
            "Epoch 115/300\n",
            "3/3 - 0s - loss: 0.0030 - 25ms/epoch - 8ms/step\n",
            "Epoch 116/300\n",
            "3/3 - 0s - loss: 0.0051 - 23ms/epoch - 8ms/step\n",
            "Epoch 117/300\n",
            "3/3 - 0s - loss: 0.0052 - 24ms/epoch - 8ms/step\n",
            "Epoch 118/300\n",
            "3/3 - 0s - loss: 0.0032 - 26ms/epoch - 9ms/step\n",
            "Epoch 119/300\n",
            "3/3 - 0s - loss: 0.0033 - 24ms/epoch - 8ms/step\n",
            "Epoch 120/300\n",
            "3/3 - 0s - loss: 0.0041 - 23ms/epoch - 8ms/step\n",
            "Epoch 121/300\n",
            "3/3 - 0s - loss: 0.0045 - 26ms/epoch - 9ms/step\n",
            "Epoch 122/300\n",
            "3/3 - 0s - loss: 0.0072 - 24ms/epoch - 8ms/step\n",
            "Epoch 123/300\n",
            "3/3 - 0s - loss: 0.0056 - 25ms/epoch - 8ms/step\n",
            "Epoch 124/300\n",
            "3/3 - 0s - loss: 0.0026 - 23ms/epoch - 8ms/step\n",
            "Epoch 125/300\n",
            "3/3 - 0s - loss: 0.0019 - 21ms/epoch - 7ms/step\n",
            "Epoch 126/300\n",
            "3/3 - 0s - loss: 0.0014 - 21ms/epoch - 7ms/step\n",
            "Epoch 127/300\n",
            "3/3 - 0s - loss: 0.0015 - 23ms/epoch - 8ms/step\n",
            "Epoch 128/300\n",
            "3/3 - 0s - loss: 7.9482e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 129/300\n",
            "3/3 - 0s - loss: 9.8353e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 130/300\n",
            "3/3 - 0s - loss: 9.9268e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 131/300\n",
            "3/3 - 0s - loss: 0.0012 - 24ms/epoch - 8ms/step\n",
            "Epoch 132/300\n",
            "3/3 - 0s - loss: 9.1924e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 133/300\n",
            "3/3 - 0s - loss: 0.0015 - 23ms/epoch - 8ms/step\n",
            "Epoch 134/300\n",
            "3/3 - 0s - loss: 0.0015 - 26ms/epoch - 9ms/step\n",
            "Epoch 135/300\n",
            "3/3 - 0s - loss: 0.0045 - 23ms/epoch - 8ms/step\n",
            "Epoch 136/300\n",
            "3/3 - 0s - loss: 0.0069 - 26ms/epoch - 9ms/step\n",
            "Epoch 137/300\n",
            "3/3 - 0s - loss: 0.0052 - 22ms/epoch - 7ms/step\n",
            "Epoch 138/300\n",
            "3/3 - 0s - loss: 0.0039 - 22ms/epoch - 7ms/step\n",
            "Epoch 139/300\n",
            "3/3 - 0s - loss: 0.0063 - 21ms/epoch - 7ms/step\n",
            "Epoch 140/300\n",
            "3/3 - 0s - loss: 0.0045 - 22ms/epoch - 7ms/step\n",
            "Epoch 141/300\n",
            "3/3 - 0s - loss: 0.0045 - 23ms/epoch - 8ms/step\n",
            "Epoch 142/300\n",
            "3/3 - 0s - loss: 0.0035 - 24ms/epoch - 8ms/step\n",
            "Epoch 143/300\n",
            "3/3 - 0s - loss: 0.0037 - 24ms/epoch - 8ms/step\n",
            "Epoch 144/300\n",
            "3/3 - 0s - loss: 0.0038 - 22ms/epoch - 7ms/step\n",
            "Epoch 145/300\n",
            "3/3 - 0s - loss: 0.0038 - 21ms/epoch - 7ms/step\n",
            "Epoch 146/300\n",
            "3/3 - 0s - loss: 0.0052 - 24ms/epoch - 8ms/step\n",
            "Epoch 147/300\n",
            "3/3 - 0s - loss: 0.0052 - 24ms/epoch - 8ms/step\n",
            "Epoch 148/300\n",
            "3/3 - 0s - loss: 0.0045 - 22ms/epoch - 7ms/step\n",
            "Epoch 149/300\n",
            "3/3 - 0s - loss: 0.0031 - 23ms/epoch - 8ms/step\n",
            "Epoch 150/300\n",
            "3/3 - 0s - loss: 0.0020 - 23ms/epoch - 8ms/step\n",
            "Epoch 151/300\n",
            "3/3 - 0s - loss: 0.0012 - 21ms/epoch - 7ms/step\n",
            "Epoch 152/300\n",
            "3/3 - 0s - loss: 0.0017 - 23ms/epoch - 8ms/step\n",
            "Epoch 153/300\n",
            "3/3 - 0s - loss: 0.0019 - 25ms/epoch - 8ms/step\n",
            "Epoch 154/300\n",
            "3/3 - 0s - loss: 0.0014 - 22ms/epoch - 7ms/step\n",
            "Epoch 155/300\n",
            "3/3 - 0s - loss: 0.0011 - 25ms/epoch - 8ms/step\n",
            "Epoch 156/300\n",
            "3/3 - 0s - loss: 0.0012 - 23ms/epoch - 8ms/step\n",
            "Epoch 157/300\n",
            "3/3 - 0s - loss: 0.0011 - 25ms/epoch - 8ms/step\n",
            "Epoch 158/300\n",
            "3/3 - 0s - loss: 7.1405e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 159/300\n",
            "3/3 - 0s - loss: 4.4177e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 160/300\n",
            "3/3 - 0s - loss: 2.5458e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 161/300\n",
            "3/3 - 0s - loss: 1.7893e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 162/300\n",
            "3/3 - 0s - loss: 1.5493e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 163/300\n",
            "3/3 - 0s - loss: 1.2359e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 164/300\n",
            "3/3 - 0s - loss: 1.3898e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 165/300\n",
            "3/3 - 0s - loss: 2.1535e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 166/300\n",
            "3/3 - 0s - loss: 1.3801e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 167/300\n",
            "3/3 - 0s - loss: 2.0687e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 168/300\n",
            "3/3 - 0s - loss: 1.1273e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 169/300\n",
            "3/3 - 0s - loss: 9.9601e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 170/300\n",
            "3/3 - 0s - loss: 1.0798e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 171/300\n",
            "3/3 - 0s - loss: 8.2288e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 172/300\n",
            "3/3 - 0s - loss: 5.5361e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 173/300\n",
            "3/3 - 0s - loss: 5.3483e-05 - 26ms/epoch - 9ms/step\n",
            "Epoch 174/300\n",
            "3/3 - 0s - loss: 5.9971e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 175/300\n",
            "3/3 - 0s - loss: 6.0637e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 176/300\n",
            "3/3 - 0s - loss: 4.6489e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 177/300\n",
            "3/3 - 0s - loss: 3.7351e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 178/300\n",
            "3/3 - 0s - loss: 5.4740e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 179/300\n",
            "3/3 - 0s - loss: 8.5185e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 180/300\n",
            "3/3 - 0s - loss: 3.5078e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 181/300\n",
            "3/3 - 0s - loss: 4.5135e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 182/300\n",
            "3/3 - 0s - loss: 3.5873e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 183/300\n",
            "3/3 - 0s - loss: 5.4853e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 184/300\n",
            "3/3 - 0s - loss: 7.1242e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 185/300\n",
            "3/3 - 0s - loss: 5.7111e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 186/300\n",
            "3/3 - 0s - loss: 3.4464e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 187/300\n",
            "3/3 - 0s - loss: 3.4616e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 188/300\n",
            "3/3 - 0s - loss: 3.7222e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 189/300\n",
            "3/3 - 0s - loss: 6.3757e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 190/300\n",
            "3/3 - 0s - loss: 5.5933e-05 - 26ms/epoch - 9ms/step\n",
            "Epoch 191/300\n",
            "3/3 - 0s - loss: 6.2366e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 192/300\n",
            "3/3 - 0s - loss: 5.5082e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 193/300\n",
            "3/3 - 0s - loss: 4.9476e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 194/300\n",
            "3/3 - 0s - loss: 6.2764e-05 - 26ms/epoch - 9ms/step\n",
            "Epoch 195/300\n",
            "3/3 - 0s - loss: 5.2979e-05 - 26ms/epoch - 9ms/step\n",
            "Epoch 196/300\n",
            "3/3 - 0s - loss: 4.9033e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 197/300\n",
            "3/3 - 0s - loss: 7.1785e-05 - 26ms/epoch - 9ms/step\n",
            "Epoch 198/300\n",
            "3/3 - 0s - loss: 1.1512e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 199/300\n",
            "3/3 - 0s - loss: 9.7733e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 200/300\n",
            "3/3 - 0s - loss: 8.6310e-05 - 26ms/epoch - 9ms/step\n",
            "Epoch 201/300\n",
            "3/3 - 0s - loss: 1.1332e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 202/300\n",
            "3/3 - 0s - loss: 4.3925e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 203/300\n",
            "3/3 - 0s - loss: 8.8293e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 204/300\n",
            "3/3 - 0s - loss: 1.2816e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 205/300\n",
            "3/3 - 0s - loss: 8.1909e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 206/300\n",
            "3/3 - 0s - loss: 7.6208e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 207/300\n",
            "3/3 - 0s - loss: 6.7288e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 208/300\n",
            "3/3 - 0s - loss: 7.8447e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 209/300\n",
            "3/3 - 0s - loss: 6.3736e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 210/300\n",
            "3/3 - 0s - loss: 6.9732e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 211/300\n",
            "3/3 - 0s - loss: 7.3939e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 212/300\n",
            "3/3 - 0s - loss: 1.0283e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 213/300\n",
            "3/3 - 0s - loss: 6.8752e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 214/300\n",
            "3/3 - 0s - loss: 4.0682e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 215/300\n",
            "3/3 - 0s - loss: 3.9902e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 216/300\n",
            "3/3 - 0s - loss: 7.3381e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 217/300\n",
            "3/3 - 0s - loss: 6.9674e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 218/300\n",
            "3/3 - 0s - loss: 1.2122e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 219/300\n",
            "3/3 - 0s - loss: 5.2458e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 220/300\n",
            "3/3 - 0s - loss: 1.1207e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 221/300\n",
            "3/3 - 0s - loss: 8.7071e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 222/300\n",
            "3/3 - 0s - loss: 6.3382e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 223/300\n",
            "3/3 - 0s - loss: 1.0793e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 224/300\n",
            "3/3 - 0s - loss: 1.6187e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 225/300\n",
            "3/3 - 0s - loss: 1.8763e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 226/300\n",
            "3/3 - 0s - loss: 2.8339e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 227/300\n",
            "3/3 - 0s - loss: 5.3239e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 228/300\n",
            "3/3 - 0s - loss: 4.9738e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 229/300\n",
            "3/3 - 0s - loss: 3.2088e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 230/300\n",
            "3/3 - 0s - loss: 2.5248e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 231/300\n",
            "3/3 - 0s - loss: 3.6242e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 232/300\n",
            "3/3 - 0s - loss: 3.2180e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 233/300\n",
            "3/3 - 0s - loss: 1.7552e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 234/300\n",
            "3/3 - 0s - loss: 1.1375e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 235/300\n",
            "3/3 - 0s - loss: 6.2943e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 236/300\n",
            "3/3 - 0s - loss: 9.7136e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 237/300\n",
            "3/3 - 0s - loss: 1.1286e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 238/300\n",
            "3/3 - 0s - loss: 2.2285e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 239/300\n",
            "3/3 - 0s - loss: 1.4898e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 240/300\n",
            "3/3 - 0s - loss: 1.6555e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 241/300\n",
            "3/3 - 0s - loss: 1.9907e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 242/300\n",
            "3/3 - 0s - loss: 1.8675e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 243/300\n",
            "3/3 - 0s - loss: 1.9593e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 244/300\n",
            "3/3 - 0s - loss: 2.2993e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 245/300\n",
            "3/3 - 0s - loss: 2.0443e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 246/300\n",
            "3/3 - 0s - loss: 1.2598e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 247/300\n",
            "3/3 - 0s - loss: 1.1692e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 248/300\n",
            "3/3 - 0s - loss: 1.1090e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 249/300\n",
            "3/3 - 0s - loss: 1.2817e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 250/300\n",
            "3/3 - 0s - loss: 1.1649e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 251/300\n",
            "3/3 - 0s - loss: 9.4692e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 252/300\n",
            "3/3 - 0s - loss: 1.1575e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 253/300\n",
            "3/3 - 0s - loss: 1.5507e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 254/300\n",
            "3/3 - 0s - loss: 1.6120e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 255/300\n",
            "3/3 - 0s - loss: 1.5815e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 256/300\n",
            "3/3 - 0s - loss: 1.4356e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 257/300\n",
            "3/3 - 0s - loss: 1.1677e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 258/300\n",
            "3/3 - 0s - loss: 8.9641e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 259/300\n",
            "3/3 - 0s - loss: 1.5848e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 260/300\n",
            "3/3 - 0s - loss: 2.9587e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 261/300\n",
            "3/3 - 0s - loss: 4.5555e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 262/300\n",
            "3/3 - 0s - loss: 5.4924e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 263/300\n",
            "3/3 - 0s - loss: 8.5600e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 264/300\n",
            "3/3 - 0s - loss: 0.0011 - 26ms/epoch - 9ms/step\n",
            "Epoch 265/300\n",
            "3/3 - 0s - loss: 6.0996e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 266/300\n",
            "3/3 - 0s - loss: 5.8942e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 267/300\n",
            "3/3 - 0s - loss: 9.2128e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 268/300\n",
            "3/3 - 0s - loss: 0.0011 - 25ms/epoch - 8ms/step\n",
            "Epoch 269/300\n",
            "3/3 - 0s - loss: 8.9444e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 270/300\n",
            "3/3 - 0s - loss: 9.5673e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 271/300\n",
            "3/3 - 0s - loss: 9.8420e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 272/300\n",
            "3/3 - 0s - loss: 4.4233e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 273/300\n",
            "3/3 - 0s - loss: 5.1021e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 274/300\n",
            "3/3 - 0s - loss: 6.5366e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 275/300\n",
            "3/3 - 0s - loss: 4.1163e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 276/300\n",
            "3/3 - 0s - loss: 3.4728e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 277/300\n",
            "3/3 - 0s - loss: 4.7626e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 278/300\n",
            "3/3 - 0s - loss: 0.0010 - 23ms/epoch - 8ms/step\n",
            "Epoch 279/300\n",
            "3/3 - 0s - loss: 9.4686e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 280/300\n",
            "3/3 - 0s - loss: 9.7052e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 281/300\n",
            "3/3 - 0s - loss: 7.5753e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 282/300\n",
            "3/3 - 0s - loss: 6.7219e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 283/300\n",
            "3/3 - 0s - loss: 7.2748e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 284/300\n",
            "3/3 - 0s - loss: 0.0011 - 23ms/epoch - 8ms/step\n",
            "Epoch 285/300\n",
            "3/3 - 0s - loss: 0.0011 - 23ms/epoch - 8ms/step\n",
            "Epoch 286/300\n",
            "3/3 - 0s - loss: 0.0012 - 23ms/epoch - 8ms/step\n",
            "Epoch 287/300\n",
            "3/3 - 0s - loss: 0.0016 - 22ms/epoch - 7ms/step\n",
            "Epoch 288/300\n",
            "3/3 - 0s - loss: 0.0024 - 24ms/epoch - 8ms/step\n",
            "Epoch 289/300\n",
            "3/3 - 0s - loss: 0.0028 - 26ms/epoch - 9ms/step\n",
            "Epoch 290/300\n",
            "3/3 - 0s - loss: 0.0022 - 23ms/epoch - 8ms/step\n",
            "Epoch 291/300\n",
            "3/3 - 0s - loss: 0.0016 - 22ms/epoch - 7ms/step\n",
            "Epoch 292/300\n",
            "3/3 - 0s - loss: 0.0013 - 25ms/epoch - 8ms/step\n",
            "Epoch 293/300\n",
            "3/3 - 0s - loss: 0.0012 - 22ms/epoch - 7ms/step\n",
            "Epoch 294/300\n",
            "3/3 - 0s - loss: 0.0014 - 23ms/epoch - 8ms/step\n",
            "Epoch 295/300\n",
            "3/3 - 0s - loss: 0.0012 - 22ms/epoch - 7ms/step\n",
            "Epoch 296/300\n",
            "3/3 - 0s - loss: 9.1585e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 297/300\n",
            "3/3 - 0s - loss: 0.0013 - 24ms/epoch - 8ms/step\n",
            "Epoch 298/300\n",
            "3/3 - 0s - loss: 8.5199e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 299/300\n",
            "3/3 - 0s - loss: 9.3864e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 300/300\n",
            "3/3 - 0s - loss: 0.0015 - 24ms/epoch - 8ms/step\n",
            "14/14 [==============================] - 0s 3ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7bae753f6d10>"
            ]
          },
          "metadata": {},
          "execution_count": 205
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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4RARFQ6nCQrE6FME5ZwKyEar90VEpBWsDNCGcKDdGO4k2Dhvjw3Vg5Fy3waRrjEMUF4YAoiIKgfDAOVMzwHg656zhpjK4bZCIsoHw0ABVPogo+cQQERE2TEMUFoMAURExsAwUACVUoLm4E9EZEwMAwbFgb/8uJOAiLSCYaBAtFod4KBPRETZMAwUULkDAQf+zMr930dP2H2QyFgYBgpsowNyroMVB366F7cVElG+GAY0hoM8ERGVGs8mICIiMjiGASIiIoNjGCAqA24rJCItYRggIiIyOIYBItI9b4+t3LdApGsMA0QVgNsKiWgjGAaIaBU2HCIyHoYBIiIig2MYICox7iQgIq1hGCAiIjI4hgEiIiKDYxggQ+HZD0REazEMEBERGRzDAJHOsccAEW0UwwAREZHBMQyQofzId6is1+e2QiLSIoYBIlrG7oNExsQwQEREZHAMA0RERAbHMEBERGRwDANEOsZthURUCAwDRCXCnQREpFUMA0RERAbHMEBERGRwDANEREQGxzBARERkcAwDREREBscwQFQCxdhJUOhthWxFTGRcDANEVBG8PbZy3wKRbjEMEBERGRzDABERkcExDBARERkcwwAZxo98h8p9C0REmsQwQEREZHAMA0RFpodthURkbAwDREREBscwQEREZHAMA0RERAbHMEBEbEVMZHAMA0RERAbHMEBURMXYSUBEVGgMA0Q6w22FRFRoDANEREQGxzBAhsBWxERE6TEMEBERGRzDABERkcExDBAVCXcSEJFeMAwQEREZHMMAkY5wWyERFQPDABERkcExDBARERkcwwCRwfGQIiJiGCAiIjI4hgGiIuC2QiLSE4YBqnhsRUxElBnDAJFOcFshERULwwAREZHBMQwQEREZHMMAERGRwTEMEBUYdxIQkd4wDBARERkcwwAREZHBMQwQ6QC3FRJRMTEMUEVjw6HMeC4BEQEMA0RERIbHMEBUQNxJsJb7tiz3LRBRFgwDREREBscwQEREZHBCSskaHhERkYGxMkBERGRwDANEREQGxzBARERkcAwDREREBscwQEREZHAMA0RERAbHMEBERGRwDANEREQGxzBARERkcP8//hKeSSLtRpgAAAAASUVORK5CYII=\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since end of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "YyOarWssKyjN",
        "outputId": "9e887fff-8ce5-41e7-8104-6fd15061d068"
      },
      "execution_count": 206,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1710116725.9917886\n",
            "Mon Mar 11 00:25:25 2024\n"
          ]
        }
      ]
    }
  ]
}