[404218]: / Code / Tensor Network vs FC Controllability / Hyperparameters LR WD / lr0.001_wd0.1, 3xTNLayers.ipynb

Download this file

1743 lines (1743 with data), 131.0 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": 337,
      "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": 338,
      "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": "2d26f658-2165-4068-9e20-7a99d955ef8f",
        "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": 339,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_56\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_140 (Dense)           (None, 1024)              3072      \n",
            "                                                                 \n",
            " dense_141 (Dense)           (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_142 (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": "4bf1ff0d-1097-462d-e6e1-3adf62b7ba32",
        "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": 340,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_57\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_143 (Dense)           (None, 1024)              3072      \n",
            "                                                                 \n",
            " tn_layer_84 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_85 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_86 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " dense_144 (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": 341,
      "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": "22706a58-fe90-4d7d-cc70-b85814cd36a7"
      },
      "execution_count": 342,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1710117895.735029\n",
            "Mon Mar 11 00:44:55 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "crc0q1vbIyTj",
        "outputId": "d398c330-1af1-457c-a3bd-07217eed5fa1",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "optimizer = Adam(learning_rate=0.001, weight_decay=0.1)\n",
        "tn_model.compile(optimizer=optimizer, loss=\"mean_squared_error\")\n",
        "tn_model.fit(X, Y, epochs=300, verbose=2)"
      ],
      "execution_count": 343,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "3/3 - 3s - loss: 1.0018 - 3s/epoch - 837ms/step\n",
            "Epoch 2/300\n",
            "3/3 - 0s - loss: 1.0018 - 21ms/epoch - 7ms/step\n",
            "Epoch 3/300\n",
            "3/3 - 0s - loss: 1.0007 - 20ms/epoch - 7ms/step\n",
            "Epoch 4/300\n",
            "3/3 - 0s - loss: 1.0001 - 23ms/epoch - 8ms/step\n",
            "Epoch 5/300\n",
            "3/3 - 0s - loss: 1.0006 - 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.9992 - 20ms/epoch - 7ms/step\n",
            "Epoch 8/300\n",
            "3/3 - 0s - loss: 0.9979 - 20ms/epoch - 7ms/step\n",
            "Epoch 9/300\n",
            "3/3 - 0s - loss: 0.9947 - 20ms/epoch - 7ms/step\n",
            "Epoch 10/300\n",
            "3/3 - 0s - loss: 0.9875 - 20ms/epoch - 7ms/step\n",
            "Epoch 11/300\n",
            "3/3 - 0s - loss: 0.9708 - 22ms/epoch - 7ms/step\n",
            "Epoch 12/300\n",
            "3/3 - 0s - loss: 0.9344 - 22ms/epoch - 7ms/step\n",
            "Epoch 13/300\n",
            "3/3 - 0s - loss: 0.8642 - 22ms/epoch - 7ms/step\n",
            "Epoch 14/300\n",
            "3/3 - 0s - loss: 0.7236 - 20ms/epoch - 7ms/step\n",
            "Epoch 15/300\n",
            "3/3 - 0s - loss: 0.4686 - 21ms/epoch - 7ms/step\n",
            "Epoch 16/300\n",
            "3/3 - 0s - loss: 0.1437 - 20ms/epoch - 7ms/step\n",
            "Epoch 17/300\n",
            "3/3 - 0s - loss: 0.1029 - 20ms/epoch - 7ms/step\n",
            "Epoch 18/300\n",
            "3/3 - 0s - loss: 0.0932 - 21ms/epoch - 7ms/step\n",
            "Epoch 19/300\n",
            "3/3 - 0s - loss: 0.0193 - 21ms/epoch - 7ms/step\n",
            "Epoch 20/300\n",
            "3/3 - 0s - loss: 0.0453 - 21ms/epoch - 7ms/step\n",
            "Epoch 21/300\n",
            "3/3 - 0s - loss: 0.0519 - 25ms/epoch - 8ms/step\n",
            "Epoch 22/300\n",
            "3/3 - 0s - loss: 0.0301 - 21ms/epoch - 7ms/step\n",
            "Epoch 23/300\n",
            "3/3 - 0s - loss: 0.0137 - 22ms/epoch - 7ms/step\n",
            "Epoch 24/300\n",
            "3/3 - 0s - loss: 0.0175 - 20ms/epoch - 7ms/step\n",
            "Epoch 25/300\n",
            "3/3 - 0s - loss: 0.0195 - 20ms/epoch - 7ms/step\n",
            "Epoch 26/300\n",
            "3/3 - 0s - loss: 0.0117 - 20ms/epoch - 7ms/step\n",
            "Epoch 27/300\n",
            "3/3 - 0s - loss: 0.0091 - 22ms/epoch - 7ms/step\n",
            "Epoch 28/300\n",
            "3/3 - 0s - loss: 0.0112 - 21ms/epoch - 7ms/step\n",
            "Epoch 29/300\n",
            "3/3 - 0s - loss: 0.0106 - 21ms/epoch - 7ms/step\n",
            "Epoch 30/300\n",
            "3/3 - 0s - loss: 0.0079 - 22ms/epoch - 7ms/step\n",
            "Epoch 31/300\n",
            "3/3 - 0s - loss: 0.0074 - 20ms/epoch - 7ms/step\n",
            "Epoch 32/300\n",
            "3/3 - 0s - loss: 0.0077 - 19ms/epoch - 6ms/step\n",
            "Epoch 33/300\n",
            "3/3 - 0s - loss: 0.0072 - 20ms/epoch - 7ms/step\n",
            "Epoch 34/300\n",
            "3/3 - 0s - loss: 0.0062 - 20ms/epoch - 7ms/step\n",
            "Epoch 35/300\n",
            "3/3 - 0s - loss: 0.0061 - 21ms/epoch - 7ms/step\n",
            "Epoch 36/300\n",
            "3/3 - 0s - loss: 0.0062 - 20ms/epoch - 7ms/step\n",
            "Epoch 37/300\n",
            "3/3 - 0s - loss: 0.0057 - 20ms/epoch - 7ms/step\n",
            "Epoch 38/300\n",
            "3/3 - 0s - loss: 0.0054 - 20ms/epoch - 7ms/step\n",
            "Epoch 39/300\n",
            "3/3 - 0s - loss: 0.0053 - 20ms/epoch - 7ms/step\n",
            "Epoch 40/300\n",
            "3/3 - 0s - loss: 0.0051 - 18ms/epoch - 6ms/step\n",
            "Epoch 41/300\n",
            "3/3 - 0s - loss: 0.0048 - 20ms/epoch - 7ms/step\n",
            "Epoch 42/300\n",
            "3/3 - 0s - loss: 0.0046 - 21ms/epoch - 7ms/step\n",
            "Epoch 43/300\n",
            "3/3 - 0s - loss: 0.0046 - 19ms/epoch - 6ms/step\n",
            "Epoch 44/300\n",
            "3/3 - 0s - loss: 0.0045 - 19ms/epoch - 6ms/step\n",
            "Epoch 45/300\n",
            "3/3 - 0s - loss: 0.0042 - 23ms/epoch - 8ms/step\n",
            "Epoch 46/300\n",
            "3/3 - 0s - loss: 0.0041 - 21ms/epoch - 7ms/step\n",
            "Epoch 47/300\n",
            "3/3 - 0s - loss: 0.0040 - 20ms/epoch - 7ms/step\n",
            "Epoch 48/300\n",
            "3/3 - 0s - loss: 0.0039 - 18ms/epoch - 6ms/step\n",
            "Epoch 49/300\n",
            "3/3 - 0s - loss: 0.0038 - 20ms/epoch - 7ms/step\n",
            "Epoch 50/300\n",
            "3/3 - 0s - loss: 0.0037 - 21ms/epoch - 7ms/step\n",
            "Epoch 51/300\n",
            "3/3 - 0s - loss: 0.0036 - 20ms/epoch - 7ms/step\n",
            "Epoch 52/300\n",
            "3/3 - 0s - loss: 0.0034 - 20ms/epoch - 7ms/step\n",
            "Epoch 53/300\n",
            "3/3 - 0s - loss: 0.0034 - 19ms/epoch - 6ms/step\n",
            "Epoch 54/300\n",
            "3/3 - 0s - loss: 0.0033 - 20ms/epoch - 7ms/step\n",
            "Epoch 55/300\n",
            "3/3 - 0s - loss: 0.0032 - 22ms/epoch - 7ms/step\n",
            "Epoch 56/300\n",
            "3/3 - 0s - loss: 0.0032 - 21ms/epoch - 7ms/step\n",
            "Epoch 57/300\n",
            "3/3 - 0s - loss: 0.0030 - 19ms/epoch - 6ms/step\n",
            "Epoch 58/300\n",
            "3/3 - 0s - loss: 0.0029 - 20ms/epoch - 7ms/step\n",
            "Epoch 59/300\n",
            "3/3 - 0s - loss: 0.0029 - 20ms/epoch - 7ms/step\n",
            "Epoch 60/300\n",
            "3/3 - 0s - loss: 0.0028 - 19ms/epoch - 6ms/step\n",
            "Epoch 61/300\n",
            "3/3 - 0s - loss: 0.0027 - 20ms/epoch - 7ms/step\n",
            "Epoch 62/300\n",
            "3/3 - 0s - loss: 0.0026 - 19ms/epoch - 6ms/step\n",
            "Epoch 63/300\n",
            "3/3 - 0s - loss: 0.0026 - 22ms/epoch - 7ms/step\n",
            "Epoch 64/300\n",
            "3/3 - 0s - loss: 0.0025 - 20ms/epoch - 7ms/step\n",
            "Epoch 65/300\n",
            "3/3 - 0s - loss: 0.0024 - 22ms/epoch - 7ms/step\n",
            "Epoch 66/300\n",
            "3/3 - 0s - loss: 0.0024 - 19ms/epoch - 6ms/step\n",
            "Epoch 67/300\n",
            "3/3 - 0s - loss: 0.0023 - 19ms/epoch - 6ms/step\n",
            "Epoch 68/300\n",
            "3/3 - 0s - loss: 0.0022 - 21ms/epoch - 7ms/step\n",
            "Epoch 69/300\n",
            "3/3 - 0s - loss: 0.0022 - 20ms/epoch - 7ms/step\n",
            "Epoch 70/300\n",
            "3/3 - 0s - loss: 0.0021 - 22ms/epoch - 7ms/step\n",
            "Epoch 71/300\n",
            "3/3 - 0s - loss: 0.0020 - 20ms/epoch - 7ms/step\n",
            "Epoch 72/300\n",
            "3/3 - 0s - loss: 0.0020 - 21ms/epoch - 7ms/step\n",
            "Epoch 73/300\n",
            "3/3 - 0s - loss: 0.0019 - 20ms/epoch - 7ms/step\n",
            "Epoch 74/300\n",
            "3/3 - 0s - loss: 0.0019 - 19ms/epoch - 6ms/step\n",
            "Epoch 75/300\n",
            "3/3 - 0s - loss: 0.0018 - 19ms/epoch - 6ms/step\n",
            "Epoch 76/300\n",
            "3/3 - 0s - loss: 0.0018 - 20ms/epoch - 7ms/step\n",
            "Epoch 77/300\n",
            "3/3 - 0s - loss: 0.0018 - 19ms/epoch - 6ms/step\n",
            "Epoch 78/300\n",
            "3/3 - 0s - loss: 0.0017 - 20ms/epoch - 7ms/step\n",
            "Epoch 79/300\n",
            "3/3 - 0s - loss: 0.0016 - 20ms/epoch - 7ms/step\n",
            "Epoch 80/300\n",
            "3/3 - 0s - loss: 0.0016 - 23ms/epoch - 8ms/step\n",
            "Epoch 81/300\n",
            "3/3 - 0s - loss: 0.0016 - 20ms/epoch - 7ms/step\n",
            "Epoch 82/300\n",
            "3/3 - 0s - loss: 0.0015 - 20ms/epoch - 7ms/step\n",
            "Epoch 83/300\n",
            "3/3 - 0s - loss: 0.0015 - 20ms/epoch - 7ms/step\n",
            "Epoch 84/300\n",
            "3/3 - 0s - loss: 0.0015 - 19ms/epoch - 6ms/step\n",
            "Epoch 85/300\n",
            "3/3 - 0s - loss: 0.0014 - 21ms/epoch - 7ms/step\n",
            "Epoch 86/300\n",
            "3/3 - 0s - loss: 0.0014 - 20ms/epoch - 7ms/step\n",
            "Epoch 87/300\n",
            "3/3 - 0s - loss: 0.0013 - 19ms/epoch - 6ms/step\n",
            "Epoch 88/300\n",
            "3/3 - 0s - loss: 0.0013 - 23ms/epoch - 8ms/step\n",
            "Epoch 89/300\n",
            "3/3 - 0s - loss: 0.0013 - 25ms/epoch - 8ms/step\n",
            "Epoch 90/300\n",
            "3/3 - 0s - loss: 0.0012 - 23ms/epoch - 8ms/step\n",
            "Epoch 91/300\n",
            "3/3 - 0s - loss: 0.0012 - 21ms/epoch - 7ms/step\n",
            "Epoch 92/300\n",
            "3/3 - 0s - loss: 0.0012 - 21ms/epoch - 7ms/step\n",
            "Epoch 93/300\n",
            "3/3 - 0s - loss: 0.0011 - 22ms/epoch - 7ms/step\n",
            "Epoch 94/300\n",
            "3/3 - 0s - loss: 0.0011 - 21ms/epoch - 7ms/step\n",
            "Epoch 95/300\n",
            "3/3 - 0s - loss: 0.0011 - 20ms/epoch - 7ms/step\n",
            "Epoch 96/300\n",
            "3/3 - 0s - loss: 0.0011 - 20ms/epoch - 7ms/step\n",
            "Epoch 97/300\n",
            "3/3 - 0s - loss: 0.0010 - 23ms/epoch - 8ms/step\n",
            "Epoch 98/300\n",
            "3/3 - 0s - loss: 0.0010 - 23ms/epoch - 8ms/step\n",
            "Epoch 99/300\n",
            "3/3 - 0s - loss: 9.8952e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 100/300\n",
            "3/3 - 0s - loss: 9.4958e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 101/300\n",
            "3/3 - 0s - loss: 9.1815e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 102/300\n",
            "3/3 - 0s - loss: 9.0218e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 103/300\n",
            "3/3 - 0s - loss: 8.7488e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 104/300\n",
            "3/3 - 0s - loss: 8.3654e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 105/300\n",
            "3/3 - 0s - loss: 8.2408e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 106/300\n",
            "3/3 - 0s - loss: 8.1075e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 107/300\n",
            "3/3 - 0s - loss: 7.6658e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 108/300\n",
            "3/3 - 0s - loss: 7.4914e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 109/300\n",
            "3/3 - 0s - loss: 7.2936e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 110/300\n",
            "3/3 - 0s - loss: 7.0664e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 111/300\n",
            "3/3 - 0s - loss: 6.7742e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 112/300\n",
            "3/3 - 0s - loss: 6.8116e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 113/300\n",
            "3/3 - 0s - loss: 6.4611e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 114/300\n",
            "3/3 - 0s - loss: 6.2931e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 115/300\n",
            "3/3 - 0s - loss: 6.3041e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 116/300\n",
            "3/3 - 0s - loss: 5.8025e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 117/300\n",
            "3/3 - 0s - loss: 5.7525e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 118/300\n",
            "3/3 - 0s - loss: 5.5950e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 119/300\n",
            "3/3 - 0s - loss: 5.6229e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 120/300\n",
            "3/3 - 0s - loss: 5.2831e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 121/300\n",
            "3/3 - 0s - loss: 4.9599e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 122/300\n",
            "3/3 - 0s - loss: 4.8870e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 123/300\n",
            "3/3 - 0s - loss: 4.7392e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 124/300\n",
            "3/3 - 0s - loss: 4.7019e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 125/300\n",
            "3/3 - 0s - loss: 4.3679e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 126/300\n",
            "3/3 - 0s - loss: 4.1998e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 127/300\n",
            "3/3 - 0s - loss: 4.1606e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 128/300\n",
            "3/3 - 0s - loss: 3.9178e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 129/300\n",
            "3/3 - 0s - loss: 3.6846e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 130/300\n",
            "3/3 - 0s - loss: 3.6249e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 131/300\n",
            "3/3 - 0s - loss: 3.4524e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 132/300\n",
            "3/3 - 0s - loss: 3.4043e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 133/300\n",
            "3/3 - 0s - loss: 3.2618e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 134/300\n",
            "3/3 - 0s - loss: 3.0750e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 135/300\n",
            "3/3 - 0s - loss: 2.9734e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 136/300\n",
            "3/3 - 0s - loss: 2.8649e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 137/300\n",
            "3/3 - 0s - loss: 2.7384e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 138/300\n",
            "3/3 - 0s - loss: 2.6838e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 139/300\n",
            "3/3 - 0s - loss: 2.5872e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 140/300\n",
            "3/3 - 0s - loss: 2.4319e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 141/300\n",
            "3/3 - 0s - loss: 2.3236e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 142/300\n",
            "3/3 - 0s - loss: 2.1933e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 143/300\n",
            "3/3 - 0s - loss: 2.1094e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 144/300\n",
            "3/3 - 0s - loss: 2.0362e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 145/300\n",
            "3/3 - 0s - loss: 1.9100e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 146/300\n",
            "3/3 - 0s - loss: 1.9569e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 147/300\n",
            "3/3 - 0s - loss: 1.7402e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 148/300\n",
            "3/3 - 0s - loss: 1.6891e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 149/300\n",
            "3/3 - 0s - loss: 1.6339e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 150/300\n",
            "3/3 - 0s - loss: 1.5451e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 151/300\n",
            "3/3 - 0s - loss: 1.5762e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 152/300\n",
            "3/3 - 0s - loss: 1.3927e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 153/300\n",
            "3/3 - 0s - loss: 1.3305e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 154/300\n",
            "3/3 - 0s - loss: 1.2612e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 155/300\n",
            "3/3 - 0s - loss: 1.2340e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 156/300\n",
            "3/3 - 0s - loss: 1.1526e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 157/300\n",
            "3/3 - 0s - loss: 1.0854e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 158/300\n",
            "3/3 - 0s - loss: 1.0173e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 159/300\n",
            "3/3 - 0s - loss: 9.4067e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 160/300\n",
            "3/3 - 0s - loss: 9.4445e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 161/300\n",
            "3/3 - 0s - loss: 9.2187e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 162/300\n",
            "3/3 - 0s - loss: 8.4111e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 163/300\n",
            "3/3 - 0s - loss: 8.2516e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 164/300\n",
            "3/3 - 0s - loss: 7.9950e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 165/300\n",
            "3/3 - 0s - loss: 7.2400e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 166/300\n",
            "3/3 - 0s - loss: 6.7600e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 167/300\n",
            "3/3 - 0s - loss: 6.2429e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 168/300\n",
            "3/3 - 0s - loss: 6.1619e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 169/300\n",
            "3/3 - 0s - loss: 5.7947e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 170/300\n",
            "3/3 - 0s - loss: 5.4342e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 171/300\n",
            "3/3 - 0s - loss: 5.0965e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 172/300\n",
            "3/3 - 0s - loss: 4.8519e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 173/300\n",
            "3/3 - 0s - loss: 4.5436e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 174/300\n",
            "3/3 - 0s - loss: 4.4131e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 175/300\n",
            "3/3 - 0s - loss: 4.2820e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 176/300\n",
            "3/3 - 0s - loss: 4.0961e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 177/300\n",
            "3/3 - 0s - loss: 3.9637e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 178/300\n",
            "3/3 - 0s - loss: 3.4982e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 179/300\n",
            "3/3 - 0s - loss: 3.5672e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 180/300\n",
            "3/3 - 0s - loss: 3.1576e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 181/300\n",
            "3/3 - 0s - loss: 3.1047e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 182/300\n",
            "3/3 - 0s - loss: 2.9058e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 183/300\n",
            "3/3 - 0s - loss: 2.6933e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 184/300\n",
            "3/3 - 0s - loss: 2.6359e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 185/300\n",
            "3/3 - 0s - loss: 2.3898e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 186/300\n",
            "3/3 - 0s - loss: 2.2906e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 187/300\n",
            "3/3 - 0s - loss: 2.1827e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 188/300\n",
            "3/3 - 0s - loss: 2.1709e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 189/300\n",
            "3/3 - 0s - loss: 1.9486e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 190/300\n",
            "3/3 - 0s - loss: 1.9158e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 191/300\n",
            "3/3 - 0s - loss: 1.9224e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 192/300\n",
            "3/3 - 0s - loss: 1.7020e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 193/300\n",
            "3/3 - 0s - loss: 1.7227e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 194/300\n",
            "3/3 - 0s - loss: 1.5244e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 195/300\n",
            "3/3 - 0s - loss: 1.4945e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 196/300\n",
            "3/3 - 0s - loss: 1.4130e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 197/300\n",
            "3/3 - 0s - loss: 1.3314e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 198/300\n",
            "3/3 - 0s - loss: 1.3044e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 199/300\n",
            "3/3 - 0s - loss: 1.2294e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 200/300\n",
            "3/3 - 0s - loss: 1.1878e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 201/300\n",
            "3/3 - 0s - loss: 1.2278e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 202/300\n",
            "3/3 - 0s - loss: 1.0653e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 203/300\n",
            "3/3 - 0s - loss: 1.0468e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 204/300\n",
            "3/3 - 0s - loss: 9.9202e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 205/300\n",
            "3/3 - 0s - loss: 9.8270e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 206/300\n",
            "3/3 - 0s - loss: 9.9285e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 207/300\n",
            "3/3 - 0s - loss: 9.2775e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 208/300\n",
            "3/3 - 0s - loss: 9.0688e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 209/300\n",
            "3/3 - 0s - loss: 8.4293e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 210/300\n",
            "3/3 - 0s - loss: 8.0439e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 211/300\n",
            "3/3 - 0s - loss: 7.4595e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 212/300\n",
            "3/3 - 0s - loss: 7.7834e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 213/300\n",
            "3/3 - 0s - loss: 6.9196e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 214/300\n",
            "3/3 - 0s - loss: 7.3446e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 215/300\n",
            "3/3 - 0s - loss: 6.4527e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 216/300\n",
            "3/3 - 0s - loss: 6.4066e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 217/300\n",
            "3/3 - 0s - loss: 5.8697e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 218/300\n",
            "3/3 - 0s - loss: 5.7985e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 219/300\n",
            "3/3 - 0s - loss: 5.4632e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 220/300\n",
            "3/3 - 0s - loss: 5.5406e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 221/300\n",
            "3/3 - 0s - loss: 5.1870e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 222/300\n",
            "3/3 - 0s - loss: 5.5801e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 223/300\n",
            "3/3 - 0s - loss: 5.0011e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 224/300\n",
            "3/3 - 0s - loss: 5.0373e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 225/300\n",
            "3/3 - 0s - loss: 5.1206e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 226/300\n",
            "3/3 - 0s - loss: 4.4077e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 227/300\n",
            "3/3 - 0s - loss: 5.0166e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 228/300\n",
            "3/3 - 0s - loss: 4.4624e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 229/300\n",
            "3/3 - 0s - loss: 4.5741e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 230/300\n",
            "3/3 - 0s - loss: 4.4206e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 231/300\n",
            "3/3 - 0s - loss: 4.3778e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 232/300\n",
            "3/3 - 0s - loss: 4.0629e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 233/300\n",
            "3/3 - 0s - loss: 4.0714e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 234/300\n",
            "3/3 - 0s - loss: 4.0772e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 235/300\n",
            "3/3 - 0s - loss: 3.8996e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 236/300\n",
            "3/3 - 0s - loss: 3.9753e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 237/300\n",
            "3/3 - 0s - loss: 3.7516e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 238/300\n",
            "3/3 - 0s - loss: 3.5964e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 239/300\n",
            "3/3 - 0s - loss: 3.3759e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 240/300\n",
            "3/3 - 0s - loss: 3.1541e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 241/300\n",
            "3/3 - 0s - loss: 3.2649e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 242/300\n",
            "3/3 - 0s - loss: 3.0718e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 243/300\n",
            "3/3 - 0s - loss: 3.0720e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 244/300\n",
            "3/3 - 0s - loss: 3.0191e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 245/300\n",
            "3/3 - 0s - loss: 3.0495e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 246/300\n",
            "3/3 - 0s - loss: 2.9492e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 247/300\n",
            "3/3 - 0s - loss: 3.0235e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 248/300\n",
            "3/3 - 0s - loss: 2.9742e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 249/300\n",
            "3/3 - 0s - loss: 3.1786e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 250/300\n",
            "3/3 - 0s - loss: 2.6896e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 251/300\n",
            "3/3 - 0s - loss: 2.6923e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 252/300\n",
            "3/3 - 0s - loss: 2.5644e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 253/300\n",
            "3/3 - 0s - loss: 2.5487e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 254/300\n",
            "3/3 - 0s - loss: 2.5647e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 255/300\n",
            "3/3 - 0s - loss: 2.5124e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 256/300\n",
            "3/3 - 0s - loss: 2.4479e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 257/300\n",
            "3/3 - 0s - loss: 2.5125e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 258/300\n",
            "3/3 - 0s - loss: 2.3519e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 259/300\n",
            "3/3 - 0s - loss: 2.3845e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 260/300\n",
            "3/3 - 0s - loss: 2.4619e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 261/300\n",
            "3/3 - 0s - loss: 2.3632e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 262/300\n",
            "3/3 - 0s - loss: 2.2508e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 263/300\n",
            "3/3 - 0s - loss: 2.2485e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 264/300\n",
            "3/3 - 0s - loss: 2.1144e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 265/300\n",
            "3/3 - 0s - loss: 2.2199e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 266/300\n",
            "3/3 - 0s - loss: 2.1389e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 267/300\n",
            "3/3 - 0s - loss: 2.0797e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 268/300\n",
            "3/3 - 0s - loss: 2.0830e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 269/300\n",
            "3/3 - 0s - loss: 1.9800e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 270/300\n",
            "3/3 - 0s - loss: 1.9605e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 271/300\n",
            "3/3 - 0s - loss: 1.8611e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 272/300\n",
            "3/3 - 0s - loss: 1.9212e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 273/300\n",
            "3/3 - 0s - loss: 1.9299e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 274/300\n",
            "3/3 - 0s - loss: 1.9603e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 275/300\n",
            "3/3 - 0s - loss: 1.9361e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 276/300\n",
            "3/3 - 0s - loss: 1.8944e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 277/300\n",
            "3/3 - 0s - loss: 1.9797e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 278/300\n",
            "3/3 - 0s - loss: 1.9961e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 279/300\n",
            "3/3 - 0s - loss: 1.8764e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 280/300\n",
            "3/3 - 0s - loss: 1.9342e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 281/300\n",
            "3/3 - 0s - loss: 1.8871e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 282/300\n",
            "3/3 - 0s - loss: 1.8318e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 283/300\n",
            "3/3 - 0s - loss: 1.7920e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 284/300\n",
            "3/3 - 0s - loss: 1.7840e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 285/300\n",
            "3/3 - 0s - loss: 1.7723e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 286/300\n",
            "3/3 - 0s - loss: 1.7374e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 287/300\n",
            "3/3 - 0s - loss: 1.7964e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 288/300\n",
            "3/3 - 0s - loss: 1.7717e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 289/300\n",
            "3/3 - 0s - loss: 1.7488e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 290/300\n",
            "3/3 - 0s - loss: 1.8239e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 291/300\n",
            "3/3 - 0s - loss: 1.7515e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 292/300\n",
            "3/3 - 0s - loss: 1.7351e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 293/300\n",
            "3/3 - 0s - loss: 1.7425e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 294/300\n",
            "3/3 - 0s - loss: 1.7388e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 295/300\n",
            "3/3 - 0s - loss: 1.6980e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 296/300\n",
            "3/3 - 0s - loss: 1.6777e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 297/300\n",
            "3/3 - 0s - loss: 1.6906e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 298/300\n",
            "3/3 - 0s - loss: 1.5067e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 299/300\n",
            "3/3 - 0s - loss: 1.6797e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 300/300\n",
            "3/3 - 0s - loss: 1.5882e-06 - 19ms/epoch - 6ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<keras.src.callbacks.History at 0x7bae5ab2e140>"
            ]
          },
          "metadata": {},
          "execution_count": 343
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n-aNP4n3sqG_",
        "outputId": "b915e5c8-cb67-4440-b792-00655336e786",
        "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": 344,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "14/14 [==============================] - 0s 4ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7bae94dee830>"
            ]
          },
          "metadata": {},
          "execution_count": 344
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\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": "137d6019-ff74-429d-80ff-81711de0b727"
      },
      "execution_count": 345,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1710117905.88296\n",
            "Mon Mar 11 00:45:05 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": "e28647b0-0b3d-4d72-e520-2a07a61c74e2"
      },
      "execution_count": 346,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1710117905.8924944\n",
            "Mon Mar 11 00:45:05 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BMxSJo5gtOmQ"
      },
      "source": [
        "# VS Fully Connected"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NKQx7stYswzU",
        "outputId": "601def70-2692-4dda-877d-07af9bc16132",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 11458
        }
      },
      "source": [
        "optimizer = Adam(learning_rate=0.001, weight_decay=0.1)\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": 347,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "3/3 - 1s - loss: 0.5654 - 728ms/epoch - 243ms/step\n",
            "Epoch 2/300\n",
            "3/3 - 0s - loss: 0.1955 - 29ms/epoch - 10ms/step\n",
            "Epoch 3/300\n",
            "3/3 - 0s - loss: 0.1421 - 25ms/epoch - 8ms/step\n",
            "Epoch 4/300\n",
            "3/3 - 0s - loss: 0.0916 - 25ms/epoch - 8ms/step\n",
            "Epoch 5/300\n",
            "3/3 - 0s - loss: 0.0826 - 33ms/epoch - 11ms/step\n",
            "Epoch 6/300\n",
            "3/3 - 0s - loss: 0.0826 - 36ms/epoch - 12ms/step\n",
            "Epoch 7/300\n",
            "3/3 - 0s - loss: 0.0677 - 27ms/epoch - 9ms/step\n",
            "Epoch 8/300\n",
            "3/3 - 0s - loss: 0.0681 - 25ms/epoch - 8ms/step\n",
            "Epoch 9/300\n",
            "3/3 - 0s - loss: 0.0605 - 27ms/epoch - 9ms/step\n",
            "Epoch 10/300\n",
            "3/3 - 0s - loss: 0.0629 - 27ms/epoch - 9ms/step\n",
            "Epoch 11/300\n",
            "3/3 - 0s - loss: 0.0537 - 28ms/epoch - 9ms/step\n",
            "Epoch 12/300\n",
            "3/3 - 0s - loss: 0.0524 - 31ms/epoch - 10ms/step\n",
            "Epoch 13/300\n",
            "3/3 - 0s - loss: 0.0522 - 29ms/epoch - 10ms/step\n",
            "Epoch 14/300\n",
            "3/3 - 0s - loss: 0.0483 - 26ms/epoch - 9ms/step\n",
            "Epoch 15/300\n",
            "3/3 - 0s - loss: 0.0498 - 27ms/epoch - 9ms/step\n",
            "Epoch 16/300\n",
            "3/3 - 0s - loss: 0.0444 - 28ms/epoch - 9ms/step\n",
            "Epoch 17/300\n",
            "3/3 - 0s - loss: 0.0487 - 28ms/epoch - 9ms/step\n",
            "Epoch 18/300\n",
            "3/3 - 0s - loss: 0.0468 - 26ms/epoch - 9ms/step\n",
            "Epoch 19/300\n",
            "3/3 - 0s - loss: 0.0422 - 27ms/epoch - 9ms/step\n",
            "Epoch 20/300\n",
            "3/3 - 0s - loss: 0.0439 - 28ms/epoch - 9ms/step\n",
            "Epoch 21/300\n",
            "3/3 - 0s - loss: 0.0407 - 27ms/epoch - 9ms/step\n",
            "Epoch 22/300\n",
            "3/3 - 0s - loss: 0.0414 - 25ms/epoch - 8ms/step\n",
            "Epoch 23/300\n",
            "3/3 - 0s - loss: 0.0428 - 27ms/epoch - 9ms/step\n",
            "Epoch 24/300\n",
            "3/3 - 0s - loss: 0.0376 - 27ms/epoch - 9ms/step\n",
            "Epoch 25/300\n",
            "3/3 - 0s - loss: 0.0386 - 26ms/epoch - 9ms/step\n",
            "Epoch 26/300\n",
            "3/3 - 0s - loss: 0.0425 - 27ms/epoch - 9ms/step\n",
            "Epoch 27/300\n",
            "3/3 - 0s - loss: 0.0495 - 29ms/epoch - 10ms/step\n",
            "Epoch 28/300\n",
            "3/3 - 0s - loss: 0.0416 - 27ms/epoch - 9ms/step\n",
            "Epoch 29/300\n",
            "3/3 - 0s - loss: 0.0510 - 29ms/epoch - 10ms/step\n",
            "Epoch 30/300\n",
            "3/3 - 0s - loss: 0.0379 - 29ms/epoch - 10ms/step\n",
            "Epoch 31/300\n",
            "3/3 - 0s - loss: 0.0398 - 26ms/epoch - 9ms/step\n",
            "Epoch 32/300\n",
            "3/3 - 0s - loss: 0.0422 - 35ms/epoch - 12ms/step\n",
            "Epoch 33/300\n",
            "3/3 - 0s - loss: 0.0406 - 27ms/epoch - 9ms/step\n",
            "Epoch 34/300\n",
            "3/3 - 0s - loss: 0.0363 - 26ms/epoch - 9ms/step\n",
            "Epoch 35/300\n",
            "3/3 - 0s - loss: 0.0343 - 26ms/epoch - 9ms/step\n",
            "Epoch 36/300\n",
            "3/3 - 0s - loss: 0.0320 - 25ms/epoch - 8ms/step\n",
            "Epoch 37/300\n",
            "3/3 - 0s - loss: 0.0419 - 28ms/epoch - 9ms/step\n",
            "Epoch 38/300\n",
            "3/3 - 0s - loss: 0.0371 - 25ms/epoch - 8ms/step\n",
            "Epoch 39/300\n",
            "3/3 - 0s - loss: 0.0266 - 28ms/epoch - 9ms/step\n",
            "Epoch 40/300\n",
            "3/3 - 0s - loss: 0.0394 - 29ms/epoch - 10ms/step\n",
            "Epoch 41/300\n",
            "3/3 - 0s - loss: 0.0329 - 27ms/epoch - 9ms/step\n",
            "Epoch 42/300\n",
            "3/3 - 0s - loss: 0.0288 - 28ms/epoch - 9ms/step\n",
            "Epoch 43/300\n",
            "3/3 - 0s - loss: 0.0312 - 27ms/epoch - 9ms/step\n",
            "Epoch 44/300\n",
            "3/3 - 0s - loss: 0.0365 - 30ms/epoch - 10ms/step\n",
            "Epoch 45/300\n",
            "3/3 - 0s - loss: 0.0289 - 30ms/epoch - 10ms/step\n",
            "Epoch 46/300\n",
            "3/3 - 0s - loss: 0.0291 - 30ms/epoch - 10ms/step\n",
            "Epoch 47/300\n",
            "3/3 - 0s - loss: 0.0291 - 28ms/epoch - 9ms/step\n",
            "Epoch 48/300\n",
            "3/3 - 0s - loss: 0.0254 - 27ms/epoch - 9ms/step\n",
            "Epoch 49/300\n",
            "3/3 - 0s - loss: 0.0271 - 27ms/epoch - 9ms/step\n",
            "Epoch 50/300\n",
            "3/3 - 0s - loss: 0.0200 - 28ms/epoch - 9ms/step\n",
            "Epoch 51/300\n",
            "3/3 - 0s - loss: 0.0256 - 28ms/epoch - 9ms/step\n",
            "Epoch 52/300\n",
            "3/3 - 0s - loss: 0.0226 - 31ms/epoch - 10ms/step\n",
            "Epoch 53/300\n",
            "3/3 - 0s - loss: 0.0228 - 30ms/epoch - 10ms/step\n",
            "Epoch 54/300\n",
            "3/3 - 0s - loss: 0.0244 - 29ms/epoch - 10ms/step\n",
            "Epoch 55/300\n",
            "3/3 - 0s - loss: 0.0216 - 25ms/epoch - 8ms/step\n",
            "Epoch 56/300\n",
            "3/3 - 0s - loss: 0.0257 - 30ms/epoch - 10ms/step\n",
            "Epoch 57/300\n",
            "3/3 - 0s - loss: 0.0245 - 28ms/epoch - 9ms/step\n",
            "Epoch 58/300\n",
            "3/3 - 0s - loss: 0.0174 - 28ms/epoch - 9ms/step\n",
            "Epoch 59/300\n",
            "3/3 - 0s - loss: 0.0205 - 27ms/epoch - 9ms/step\n",
            "Epoch 60/300\n",
            "3/3 - 0s - loss: 0.0178 - 30ms/epoch - 10ms/step\n",
            "Epoch 61/300\n",
            "3/3 - 0s - loss: 0.0132 - 30ms/epoch - 10ms/step\n",
            "Epoch 62/300\n",
            "3/3 - 0s - loss: 0.0155 - 26ms/epoch - 9ms/step\n",
            "Epoch 63/300\n",
            "3/3 - 0s - loss: 0.0166 - 27ms/epoch - 9ms/step\n",
            "Epoch 64/300\n",
            "3/3 - 0s - loss: 0.0126 - 32ms/epoch - 11ms/step\n",
            "Epoch 65/300\n",
            "3/3 - 0s - loss: 0.0197 - 31ms/epoch - 10ms/step\n",
            "Epoch 66/300\n",
            "3/3 - 0s - loss: 0.0130 - 27ms/epoch - 9ms/step\n",
            "Epoch 67/300\n",
            "3/3 - 0s - loss: 0.0115 - 33ms/epoch - 11ms/step\n",
            "Epoch 68/300\n",
            "3/3 - 0s - loss: 0.0110 - 26ms/epoch - 9ms/step\n",
            "Epoch 69/300\n",
            "3/3 - 0s - loss: 0.0073 - 27ms/epoch - 9ms/step\n",
            "Epoch 70/300\n",
            "3/3 - 0s - loss: 0.0095 - 31ms/epoch - 10ms/step\n",
            "Epoch 71/300\n",
            "3/3 - 0s - loss: 0.0081 - 32ms/epoch - 11ms/step\n",
            "Epoch 72/300\n",
            "3/3 - 0s - loss: 0.0060 - 27ms/epoch - 9ms/step\n",
            "Epoch 73/300\n",
            "3/3 - 0s - loss: 0.0059 - 28ms/epoch - 9ms/step\n",
            "Epoch 74/300\n",
            "3/3 - 0s - loss: 0.0062 - 32ms/epoch - 11ms/step\n",
            "Epoch 75/300\n",
            "3/3 - 0s - loss: 0.0091 - 27ms/epoch - 9ms/step\n",
            "Epoch 76/300\n",
            "3/3 - 0s - loss: 0.0109 - 31ms/epoch - 10ms/step\n",
            "Epoch 77/300\n",
            "3/3 - 0s - loss: 0.0082 - 31ms/epoch - 10ms/step\n",
            "Epoch 78/300\n",
            "3/3 - 0s - loss: 0.0051 - 29ms/epoch - 10ms/step\n",
            "Epoch 79/300\n",
            "3/3 - 0s - loss: 0.0054 - 27ms/epoch - 9ms/step\n",
            "Epoch 80/300\n",
            "3/3 - 0s - loss: 0.0049 - 27ms/epoch - 9ms/step\n",
            "Epoch 81/300\n",
            "3/3 - 0s - loss: 0.0031 - 26ms/epoch - 9ms/step\n",
            "Epoch 82/300\n",
            "3/3 - 0s - loss: 0.0028 - 26ms/epoch - 9ms/step\n",
            "Epoch 83/300\n",
            "3/3 - 0s - loss: 0.0032 - 29ms/epoch - 10ms/step\n",
            "Epoch 84/300\n",
            "3/3 - 0s - loss: 0.0039 - 28ms/epoch - 9ms/step\n",
            "Epoch 85/300\n",
            "3/3 - 0s - loss: 0.0045 - 26ms/epoch - 9ms/step\n",
            "Epoch 86/300\n",
            "3/3 - 0s - loss: 0.0041 - 26ms/epoch - 9ms/step\n",
            "Epoch 87/300\n",
            "3/3 - 0s - loss: 0.0045 - 30ms/epoch - 10ms/step\n",
            "Epoch 88/300\n",
            "3/3 - 0s - loss: 0.0032 - 26ms/epoch - 9ms/step\n",
            "Epoch 89/300\n",
            "3/3 - 0s - loss: 0.0041 - 31ms/epoch - 10ms/step\n",
            "Epoch 90/300\n",
            "3/3 - 0s - loss: 0.0094 - 28ms/epoch - 9ms/step\n",
            "Epoch 91/300\n",
            "3/3 - 0s - loss: 0.0127 - 30ms/epoch - 10ms/step\n",
            "Epoch 92/300\n",
            "3/3 - 0s - loss: 0.0074 - 27ms/epoch - 9ms/step\n",
            "Epoch 93/300\n",
            "3/3 - 0s - loss: 0.0057 - 28ms/epoch - 9ms/step\n",
            "Epoch 94/300\n",
            "3/3 - 0s - loss: 0.0078 - 26ms/epoch - 9ms/step\n",
            "Epoch 95/300\n",
            "3/3 - 0s - loss: 0.0087 - 35ms/epoch - 12ms/step\n",
            "Epoch 96/300\n",
            "3/3 - 0s - loss: 0.0081 - 28ms/epoch - 9ms/step\n",
            "Epoch 97/300\n",
            "3/3 - 0s - loss: 0.0094 - 30ms/epoch - 10ms/step\n",
            "Epoch 98/300\n",
            "3/3 - 0s - loss: 0.0051 - 26ms/epoch - 9ms/step\n",
            "Epoch 99/300\n",
            "3/3 - 0s - loss: 0.0052 - 26ms/epoch - 9ms/step\n",
            "Epoch 100/300\n",
            "3/3 - 0s - loss: 0.0045 - 28ms/epoch - 9ms/step\n",
            "Epoch 101/300\n",
            "3/3 - 0s - loss: 0.0032 - 32ms/epoch - 11ms/step\n",
            "Epoch 102/300\n",
            "3/3 - 0s - loss: 0.0025 - 30ms/epoch - 10ms/step\n",
            "Epoch 103/300\n",
            "3/3 - 0s - loss: 0.0018 - 28ms/epoch - 9ms/step\n",
            "Epoch 104/300\n",
            "3/3 - 0s - loss: 0.0016 - 29ms/epoch - 10ms/step\n",
            "Epoch 105/300\n",
            "3/3 - 0s - loss: 8.9850e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 106/300\n",
            "3/3 - 0s - loss: 6.3155e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 107/300\n",
            "3/3 - 0s - loss: 5.6802e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 108/300\n",
            "3/3 - 0s - loss: 4.4735e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 109/300\n",
            "3/3 - 0s - loss: 5.2972e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 110/300\n",
            "3/3 - 0s - loss: 5.3352e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 111/300\n",
            "3/3 - 0s - loss: 7.9407e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 112/300\n",
            "3/3 - 0s - loss: 7.5869e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 113/300\n",
            "3/3 - 0s - loss: 9.8683e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 114/300\n",
            "3/3 - 0s - loss: 6.7787e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 115/300\n",
            "3/3 - 0s - loss: 3.5662e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 116/300\n",
            "3/3 - 0s - loss: 3.0731e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 117/300\n",
            "3/3 - 0s - loss: 3.4736e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 118/300\n",
            "3/3 - 0s - loss: 4.3886e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 119/300\n",
            "3/3 - 0s - loss: 4.1206e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 120/300\n",
            "3/3 - 0s - loss: 3.8513e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 121/300\n",
            "3/3 - 0s - loss: 2.4896e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 122/300\n",
            "3/3 - 0s - loss: 2.5871e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 123/300\n",
            "3/3 - 0s - loss: 1.6633e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 124/300\n",
            "3/3 - 0s - loss: 2.0074e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 125/300\n",
            "3/3 - 0s - loss: 1.8407e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 126/300\n",
            "3/3 - 0s - loss: 1.4483e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 127/300\n",
            "3/3 - 0s - loss: 1.9615e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 128/300\n",
            "3/3 - 0s - loss: 1.1517e-04 - 33ms/epoch - 11ms/step\n",
            "Epoch 129/300\n",
            "3/3 - 0s - loss: 1.3315e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 130/300\n",
            "3/3 - 0s - loss: 1.2537e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 131/300\n",
            "3/3 - 0s - loss: 1.4360e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 132/300\n",
            "3/3 - 0s - loss: 1.7937e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 133/300\n",
            "3/3 - 0s - loss: 2.6289e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 134/300\n",
            "3/3 - 0s - loss: 2.9986e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 135/300\n",
            "3/3 - 0s - loss: 3.2344e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 136/300\n",
            "3/3 - 0s - loss: 2.6191e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 137/300\n",
            "3/3 - 0s - loss: 1.6771e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 138/300\n",
            "3/3 - 0s - loss: 1.9017e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 139/300\n",
            "3/3 - 0s - loss: 1.5253e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 140/300\n",
            "3/3 - 0s - loss: 1.1657e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 141/300\n",
            "3/3 - 0s - loss: 1.0757e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 142/300\n",
            "3/3 - 0s - loss: 1.4375e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 143/300\n",
            "3/3 - 0s - loss: 2.0585e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 144/300\n",
            "3/3 - 0s - loss: 1.2984e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 145/300\n",
            "3/3 - 0s - loss: 1.9300e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 146/300\n",
            "3/3 - 0s - loss: 2.2105e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 147/300\n",
            "3/3 - 0s - loss: 1.7431e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 148/300\n",
            "3/3 - 0s - loss: 1.7040e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 149/300\n",
            "3/3 - 0s - loss: 2.0797e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 150/300\n",
            "3/3 - 0s - loss: 1.8766e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 151/300\n",
            "3/3 - 0s - loss: 2.1927e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 152/300\n",
            "3/3 - 0s - loss: 2.4304e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 153/300\n",
            "3/3 - 0s - loss: 1.8035e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 154/300\n",
            "3/3 - 0s - loss: 1.1904e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 155/300\n",
            "3/3 - 0s - loss: 1.1505e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 156/300\n",
            "3/3 - 0s - loss: 1.0111e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 157/300\n",
            "3/3 - 0s - loss: 1.2383e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 158/300\n",
            "3/3 - 0s - loss: 1.5668e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 159/300\n",
            "3/3 - 0s - loss: 2.7496e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 160/300\n",
            "3/3 - 0s - loss: 2.2556e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 161/300\n",
            "3/3 - 0s - loss: 1.4962e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 162/300\n",
            "3/3 - 0s - loss: 1.4988e-04 - 33ms/epoch - 11ms/step\n",
            "Epoch 163/300\n",
            "3/3 - 0s - loss: 1.2127e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 164/300\n",
            "3/3 - 0s - loss: 9.7295e-05 - 28ms/epoch - 9ms/step\n",
            "Epoch 165/300\n",
            "3/3 - 0s - loss: 7.8079e-05 - 30ms/epoch - 10ms/step\n",
            "Epoch 166/300\n",
            "3/3 - 0s - loss: 1.2059e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 167/300\n",
            "3/3 - 0s - loss: 1.3353e-04 - 33ms/epoch - 11ms/step\n",
            "Epoch 168/300\n",
            "3/3 - 0s - loss: 1.3371e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 169/300\n",
            "3/3 - 0s - loss: 2.0230e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 170/300\n",
            "3/3 - 0s - loss: 1.8259e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 171/300\n",
            "3/3 - 0s - loss: 1.1808e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 172/300\n",
            "3/3 - 0s - loss: 1.9812e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 173/300\n",
            "3/3 - 0s - loss: 1.8333e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 174/300\n",
            "3/3 - 0s - loss: 1.9575e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 175/300\n",
            "3/3 - 0s - loss: 2.5168e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 176/300\n",
            "3/3 - 0s - loss: 2.1238e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 177/300\n",
            "3/3 - 0s - loss: 1.5042e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 178/300\n",
            "3/3 - 0s - loss: 1.9120e-04 - 33ms/epoch - 11ms/step\n",
            "Epoch 179/300\n",
            "3/3 - 0s - loss: 2.5031e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 180/300\n",
            "3/3 - 0s - loss: 1.5450e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 181/300\n",
            "3/3 - 0s - loss: 1.5450e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 182/300\n",
            "3/3 - 0s - loss: 1.9747e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 183/300\n",
            "3/3 - 0s - loss: 3.0711e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 184/300\n",
            "3/3 - 0s - loss: 1.2209e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 185/300\n",
            "3/3 - 0s - loss: 6.1110e-05 - 29ms/epoch - 10ms/step\n",
            "Epoch 186/300\n",
            "3/3 - 0s - loss: 5.3883e-05 - 29ms/epoch - 10ms/step\n",
            "Epoch 187/300\n",
            "3/3 - 0s - loss: 6.2692e-05 - 28ms/epoch - 9ms/step\n",
            "Epoch 188/300\n",
            "3/3 - 0s - loss: 5.8123e-05 - 29ms/epoch - 10ms/step\n",
            "Epoch 189/300\n",
            "3/3 - 0s - loss: 5.7467e-05 - 29ms/epoch - 10ms/step\n",
            "Epoch 190/300\n",
            "3/3 - 0s - loss: 6.7560e-05 - 28ms/epoch - 9ms/step\n",
            "Epoch 191/300\n",
            "3/3 - 0s - loss: 4.9397e-05 - 32ms/epoch - 11ms/step\n",
            "Epoch 192/300\n",
            "3/3 - 0s - loss: 4.8497e-05 - 28ms/epoch - 9ms/step\n",
            "Epoch 193/300\n",
            "3/3 - 0s - loss: 5.8688e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 194/300\n",
            "3/3 - 0s - loss: 5.3627e-05 - 30ms/epoch - 10ms/step\n",
            "Epoch 195/300\n",
            "3/3 - 0s - loss: 4.9381e-05 - 32ms/epoch - 11ms/step\n",
            "Epoch 196/300\n",
            "3/3 - 0s - loss: 8.4785e-05 - 31ms/epoch - 10ms/step\n",
            "Epoch 197/300\n",
            "3/3 - 0s - loss: 1.2350e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 198/300\n",
            "3/3 - 0s - loss: 8.3855e-05 - 28ms/epoch - 9ms/step\n",
            "Epoch 199/300\n",
            "3/3 - 0s - loss: 8.0935e-05 - 33ms/epoch - 11ms/step\n",
            "Epoch 200/300\n",
            "3/3 - 0s - loss: 9.3597e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 201/300\n",
            "3/3 - 0s - loss: 8.8859e-05 - 30ms/epoch - 10ms/step\n",
            "Epoch 202/300\n",
            "3/3 - 0s - loss: 1.0676e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 203/300\n",
            "3/3 - 0s - loss: 2.0945e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 204/300\n",
            "3/3 - 0s - loss: 2.5091e-04 - 37ms/epoch - 12ms/step\n",
            "Epoch 205/300\n",
            "3/3 - 0s - loss: 2.1030e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 206/300\n",
            "3/3 - 0s - loss: 2.1328e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 207/300\n",
            "3/3 - 0s - loss: 1.3979e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 208/300\n",
            "3/3 - 0s - loss: 1.6254e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 209/300\n",
            "3/3 - 0s - loss: 1.2061e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 210/300\n",
            "3/3 - 0s - loss: 8.3179e-05 - 28ms/epoch - 9ms/step\n",
            "Epoch 211/300\n",
            "3/3 - 0s - loss: 5.6212e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 212/300\n",
            "3/3 - 0s - loss: 6.1547e-05 - 31ms/epoch - 10ms/step\n",
            "Epoch 213/300\n",
            "3/3 - 0s - loss: 5.9100e-05 - 31ms/epoch - 10ms/step\n",
            "Epoch 214/300\n",
            "3/3 - 0s - loss: 5.4056e-05 - 31ms/epoch - 10ms/step\n",
            "Epoch 215/300\n",
            "3/3 - 0s - loss: 7.6148e-05 - 31ms/epoch - 10ms/step\n",
            "Epoch 216/300\n",
            "3/3 - 0s - loss: 8.5209e-05 - 32ms/epoch - 11ms/step\n",
            "Epoch 217/300\n",
            "3/3 - 0s - loss: 9.8470e-05 - 36ms/epoch - 12ms/step\n",
            "Epoch 218/300\n",
            "3/3 - 0s - loss: 1.5786e-04 - 33ms/epoch - 11ms/step\n",
            "Epoch 219/300\n",
            "3/3 - 0s - loss: 8.5489e-05 - 31ms/epoch - 10ms/step\n",
            "Epoch 220/300\n",
            "3/3 - 0s - loss: 1.6419e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 221/300\n",
            "3/3 - 0s - loss: 1.8299e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 222/300\n",
            "3/3 - 0s - loss: 1.0184e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 223/300\n",
            "3/3 - 0s - loss: 1.5709e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 224/300\n",
            "3/3 - 0s - loss: 1.1809e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 225/300\n",
            "3/3 - 0s - loss: 1.5251e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 226/300\n",
            "3/3 - 0s - loss: 7.8190e-05 - 31ms/epoch - 10ms/step\n",
            "Epoch 227/300\n",
            "3/3 - 0s - loss: 6.3527e-05 - 31ms/epoch - 10ms/step\n",
            "Epoch 228/300\n",
            "3/3 - 0s - loss: 5.6147e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 229/300\n",
            "3/3 - 0s - loss: 8.1937e-05 - 32ms/epoch - 11ms/step\n",
            "Epoch 230/300\n",
            "3/3 - 0s - loss: 5.2286e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 231/300\n",
            "3/3 - 0s - loss: 5.5706e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 232/300\n",
            "3/3 - 0s - loss: 3.4999e-05 - 28ms/epoch - 9ms/step\n",
            "Epoch 233/300\n",
            "3/3 - 0s - loss: 3.1677e-05 - 30ms/epoch - 10ms/step\n",
            "Epoch 234/300\n",
            "3/3 - 0s - loss: 4.3499e-05 - 28ms/epoch - 9ms/step\n",
            "Epoch 235/300\n",
            "3/3 - 0s - loss: 5.1963e-05 - 28ms/epoch - 9ms/step\n",
            "Epoch 236/300\n",
            "3/3 - 0s - loss: 8.9137e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 237/300\n",
            "3/3 - 0s - loss: 8.4595e-05 - 30ms/epoch - 10ms/step\n",
            "Epoch 238/300\n",
            "3/3 - 0s - loss: 8.4388e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 239/300\n",
            "3/3 - 0s - loss: 7.4732e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 240/300\n",
            "3/3 - 0s - loss: 1.1957e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 241/300\n",
            "3/3 - 0s - loss: 1.3397e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 242/300\n",
            "3/3 - 0s - loss: 1.7954e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 243/300\n",
            "3/3 - 0s - loss: 1.8265e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 244/300\n",
            "3/3 - 0s - loss: 3.1934e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 245/300\n",
            "3/3 - 0s - loss: 7.1405e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 246/300\n",
            "3/3 - 0s - loss: 9.7528e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 247/300\n",
            "3/3 - 0s - loss: 4.9381e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 248/300\n",
            "3/3 - 0s - loss: 5.0600e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 249/300\n",
            "3/3 - 0s - loss: 4.5240e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 250/300\n",
            "3/3 - 0s - loss: 4.7421e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 251/300\n",
            "3/3 - 0s - loss: 4.1358e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 252/300\n",
            "3/3 - 0s - loss: 2.7917e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 253/300\n",
            "3/3 - 0s - loss: 4.5658e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 254/300\n",
            "3/3 - 0s - loss: 8.3871e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 255/300\n",
            "3/3 - 0s - loss: 5.6748e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 256/300\n",
            "3/3 - 0s - loss: 8.5114e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 257/300\n",
            "3/3 - 0s - loss: 5.7708e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 258/300\n",
            "3/3 - 0s - loss: 5.2312e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 259/300\n",
            "3/3 - 0s - loss: 7.6638e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 260/300\n",
            "3/3 - 0s - loss: 0.0018 - 29ms/epoch - 10ms/step\n",
            "Epoch 261/300\n",
            "3/3 - 0s - loss: 0.0015 - 33ms/epoch - 11ms/step\n",
            "Epoch 262/300\n",
            "3/3 - 0s - loss: 0.0023 - 27ms/epoch - 9ms/step\n",
            "Epoch 263/300\n",
            "3/3 - 0s - loss: 0.0049 - 30ms/epoch - 10ms/step\n",
            "Epoch 264/300\n",
            "3/3 - 0s - loss: 0.0046 - 26ms/epoch - 9ms/step\n",
            "Epoch 265/300\n",
            "3/3 - 0s - loss: 0.0031 - 26ms/epoch - 9ms/step\n",
            "Epoch 266/300\n",
            "3/3 - 0s - loss: 0.0030 - 32ms/epoch - 11ms/step\n",
            "Epoch 267/300\n",
            "3/3 - 0s - loss: 0.0034 - 26ms/epoch - 9ms/step\n",
            "Epoch 268/300\n",
            "3/3 - 0s - loss: 0.0030 - 30ms/epoch - 10ms/step\n",
            "Epoch 269/300\n",
            "3/3 - 0s - loss: 0.0020 - 28ms/epoch - 9ms/step\n",
            "Epoch 270/300\n",
            "3/3 - 0s - loss: 0.0027 - 30ms/epoch - 10ms/step\n",
            "Epoch 271/300\n",
            "3/3 - 0s - loss: 0.0030 - 30ms/epoch - 10ms/step\n",
            "Epoch 272/300\n",
            "3/3 - 0s - loss: 0.0049 - 24ms/epoch - 8ms/step\n",
            "Epoch 273/300\n",
            "3/3 - 0s - loss: 0.0056 - 29ms/epoch - 10ms/step\n",
            "Epoch 274/300\n",
            "3/3 - 0s - loss: 0.0032 - 26ms/epoch - 9ms/step\n",
            "Epoch 275/300\n",
            "3/3 - 0s - loss: 0.0034 - 27ms/epoch - 9ms/step\n",
            "Epoch 276/300\n",
            "3/3 - 0s - loss: 0.0039 - 23ms/epoch - 8ms/step\n",
            "Epoch 277/300\n",
            "3/3 - 0s - loss: 0.0041 - 27ms/epoch - 9ms/step\n",
            "Epoch 278/300\n",
            "3/3 - 0s - loss: 0.0036 - 26ms/epoch - 9ms/step\n",
            "Epoch 279/300\n",
            "3/3 - 0s - loss: 0.0034 - 28ms/epoch - 9ms/step\n",
            "Epoch 280/300\n",
            "3/3 - 0s - loss: 0.0028 - 31ms/epoch - 10ms/step\n",
            "Epoch 281/300\n",
            "3/3 - 0s - loss: 0.0020 - 28ms/epoch - 9ms/step\n",
            "Epoch 282/300\n",
            "3/3 - 0s - loss: 0.0019 - 27ms/epoch - 9ms/step\n",
            "Epoch 283/300\n",
            "3/3 - 0s - loss: 0.0012 - 25ms/epoch - 8ms/step\n",
            "Epoch 284/300\n",
            "3/3 - 0s - loss: 0.0014 - 28ms/epoch - 9ms/step\n",
            "Epoch 285/300\n",
            "3/3 - 0s - loss: 0.0015 - 29ms/epoch - 10ms/step\n",
            "Epoch 286/300\n",
            "3/3 - 0s - loss: 0.0020 - 26ms/epoch - 9ms/step\n",
            "Epoch 287/300\n",
            "3/3 - 0s - loss: 0.0017 - 24ms/epoch - 8ms/step\n",
            "Epoch 288/300\n",
            "3/3 - 0s - loss: 0.0012 - 31ms/epoch - 10ms/step\n",
            "Epoch 289/300\n",
            "3/3 - 0s - loss: 0.0011 - 29ms/epoch - 10ms/step\n",
            "Epoch 290/300\n",
            "3/3 - 0s - loss: 0.0017 - 29ms/epoch - 10ms/step\n",
            "Epoch 291/300\n",
            "3/3 - 0s - loss: 0.0018 - 30ms/epoch - 10ms/step\n",
            "Epoch 292/300\n",
            "3/3 - 0s - loss: 0.0010 - 32ms/epoch - 11ms/step\n",
            "Epoch 293/300\n",
            "3/3 - 0s - loss: 9.0985e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 294/300\n",
            "3/3 - 0s - loss: 6.4013e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 295/300\n",
            "3/3 - 0s - loss: 4.4441e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 296/300\n",
            "3/3 - 0s - loss: 2.7549e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 297/300\n",
            "3/3 - 0s - loss: 2.2210e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 298/300\n",
            "3/3 - 0s - loss: 2.6812e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 299/300\n",
            "3/3 - 0s - loss: 4.1425e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 300/300\n",
            "3/3 - 0s - loss: 9.1971e-04 - 30ms/epoch - 10ms/step\n",
            "14/14 [==============================] - 0s 3ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7bae5ab2ebf0>"
            ]
          },
          "metadata": {},
          "execution_count": 347
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\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": "9125f328-c51f-495a-8267-2bf72f9bc907"
      },
      "execution_count": 348,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1710117917.136162\n",
            "Mon Mar 11 00:45:17 2024\n"
          ]
        }
      ]
    }
  ]
}