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

Download this file

1743 lines (1743 with data), 130.4 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": 313,
      "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": 314,
      "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": "fd2e26c6-604b-4233-c482-1c130b4c84b4",
        "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": 315,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_52\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_130 (Dense)           (None, 1024)              3072      \n",
            "                                                                 \n",
            " dense_131 (Dense)           (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_132 (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": "278acc44-6049-48cc-d945-e44fbd30f6a9",
        "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": 316,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_53\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_133 (Dense)           (None, 1024)              3072      \n",
            "                                                                 \n",
            " tn_layer_78 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_79 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_80 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " dense_134 (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": 317,
      "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": "e86928b3-eff2-43dc-9023-757fd1eef996"
      },
      "execution_count": 318,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1710117777.943255\n",
            "Mon Mar 11 00:42:57 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "crc0q1vbIyTj",
        "outputId": "1c04ccd8-d81a-4110-d529-7cd560d02a1c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "optimizer = Adam(learning_rate=0.001, weight_decay=0.01)\n",
        "tn_model.compile(optimizer=optimizer, loss=\"mean_squared_error\")\n",
        "tn_model.fit(X, Y, epochs=300, verbose=2)"
      ],
      "execution_count": 319,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "3/3 - 3s - loss: 1.0018 - 3s/epoch - 860ms/step\n",
            "Epoch 2/300\n",
            "3/3 - 0s - loss: 1.0018 - 25ms/epoch - 8ms/step\n",
            "Epoch 3/300\n",
            "3/3 - 0s - loss: 1.0007 - 24ms/epoch - 8ms/step\n",
            "Epoch 4/300\n",
            "3/3 - 0s - loss: 1.0001 - 24ms/epoch - 8ms/step\n",
            "Epoch 5/300\n",
            "3/3 - 0s - loss: 1.0006 - 21ms/epoch - 7ms/step\n",
            "Epoch 6/300\n",
            "3/3 - 0s - loss: 0.9997 - 21ms/epoch - 7ms/step\n",
            "Epoch 7/300\n",
            "3/3 - 0s - loss: 0.9991 - 20ms/epoch - 7ms/step\n",
            "Epoch 8/300\n",
            "3/3 - 0s - loss: 0.9978 - 21ms/epoch - 7ms/step\n",
            "Epoch 9/300\n",
            "3/3 - 0s - loss: 0.9946 - 21ms/epoch - 7ms/step\n",
            "Epoch 10/300\n",
            "3/3 - 0s - loss: 0.9873 - 22ms/epoch - 7ms/step\n",
            "Epoch 11/300\n",
            "3/3 - 0s - loss: 0.9702 - 23ms/epoch - 8ms/step\n",
            "Epoch 12/300\n",
            "3/3 - 0s - loss: 0.9333 - 21ms/epoch - 7ms/step\n",
            "Epoch 13/300\n",
            "3/3 - 0s - loss: 0.8620 - 22ms/epoch - 7ms/step\n",
            "Epoch 14/300\n",
            "3/3 - 0s - loss: 0.7192 - 21ms/epoch - 7ms/step\n",
            "Epoch 15/300\n",
            "3/3 - 0s - loss: 0.4611 - 21ms/epoch - 7ms/step\n",
            "Epoch 16/300\n",
            "3/3 - 0s - loss: 0.1375 - 22ms/epoch - 7ms/step\n",
            "Epoch 17/300\n",
            "3/3 - 0s - loss: 0.1061 - 25ms/epoch - 8ms/step\n",
            "Epoch 18/300\n",
            "3/3 - 0s - loss: 0.0904 - 23ms/epoch - 8ms/step\n",
            "Epoch 19/300\n",
            "3/3 - 0s - loss: 0.0193 - 22ms/epoch - 7ms/step\n",
            "Epoch 20/300\n",
            "3/3 - 0s - loss: 0.0450 - 24ms/epoch - 8ms/step\n",
            "Epoch 21/300\n",
            "3/3 - 0s - loss: 0.0508 - 21ms/epoch - 7ms/step\n",
            "Epoch 22/300\n",
            "3/3 - 0s - loss: 0.0291 - 19ms/epoch - 6ms/step\n",
            "Epoch 23/300\n",
            "3/3 - 0s - loss: 0.0136 - 22ms/epoch - 7ms/step\n",
            "Epoch 24/300\n",
            "3/3 - 0s - loss: 0.0176 - 21ms/epoch - 7ms/step\n",
            "Epoch 25/300\n",
            "3/3 - 0s - loss: 0.0193 - 21ms/epoch - 7ms/step\n",
            "Epoch 26/300\n",
            "3/3 - 0s - loss: 0.0116 - 21ms/epoch - 7ms/step\n",
            "Epoch 27/300\n",
            "3/3 - 0s - loss: 0.0091 - 19ms/epoch - 6ms/step\n",
            "Epoch 28/300\n",
            "3/3 - 0s - loss: 0.0111 - 23ms/epoch - 8ms/step\n",
            "Epoch 29/300\n",
            "3/3 - 0s - loss: 0.0104 - 23ms/epoch - 8ms/step\n",
            "Epoch 30/300\n",
            "3/3 - 0s - loss: 0.0078 - 23ms/epoch - 8ms/step\n",
            "Epoch 31/300\n",
            "3/3 - 0s - loss: 0.0073 - 26ms/epoch - 9ms/step\n",
            "Epoch 32/300\n",
            "3/3 - 0s - loss: 0.0076 - 30ms/epoch - 10ms/step\n",
            "Epoch 33/300\n",
            "3/3 - 0s - loss: 0.0071 - 25ms/epoch - 8ms/step\n",
            "Epoch 34/300\n",
            "3/3 - 0s - loss: 0.0062 - 24ms/epoch - 8ms/step\n",
            "Epoch 35/300\n",
            "3/3 - 0s - loss: 0.0061 - 26ms/epoch - 9ms/step\n",
            "Epoch 36/300\n",
            "3/3 - 0s - loss: 0.0061 - 25ms/epoch - 8ms/step\n",
            "Epoch 37/300\n",
            "3/3 - 0s - loss: 0.0057 - 21ms/epoch - 7ms/step\n",
            "Epoch 38/300\n",
            "3/3 - 0s - loss: 0.0053 - 24ms/epoch - 8ms/step\n",
            "Epoch 39/300\n",
            "3/3 - 0s - loss: 0.0052 - 24ms/epoch - 8ms/step\n",
            "Epoch 40/300\n",
            "3/3 - 0s - loss: 0.0051 - 27ms/epoch - 9ms/step\n",
            "Epoch 41/300\n",
            "3/3 - 0s - loss: 0.0048 - 28ms/epoch - 9ms/step\n",
            "Epoch 42/300\n",
            "3/3 - 0s - loss: 0.0046 - 27ms/epoch - 9ms/step\n",
            "Epoch 43/300\n",
            "3/3 - 0s - loss: 0.0046 - 27ms/epoch - 9ms/step\n",
            "Epoch 44/300\n",
            "3/3 - 0s - loss: 0.0044 - 23ms/epoch - 8ms/step\n",
            "Epoch 45/300\n",
            "3/3 - 0s - loss: 0.0042 - 24ms/epoch - 8ms/step\n",
            "Epoch 46/300\n",
            "3/3 - 0s - loss: 0.0040 - 24ms/epoch - 8ms/step\n",
            "Epoch 47/300\n",
            "3/3 - 0s - loss: 0.0040 - 24ms/epoch - 8ms/step\n",
            "Epoch 48/300\n",
            "3/3 - 0s - loss: 0.0039 - 20ms/epoch - 7ms/step\n",
            "Epoch 49/300\n",
            "3/3 - 0s - loss: 0.0038 - 25ms/epoch - 8ms/step\n",
            "Epoch 50/300\n",
            "3/3 - 0s - loss: 0.0036 - 23ms/epoch - 8ms/step\n",
            "Epoch 51/300\n",
            "3/3 - 0s - loss: 0.0035 - 23ms/epoch - 8ms/step\n",
            "Epoch 52/300\n",
            "3/3 - 0s - loss: 0.0034 - 22ms/epoch - 7ms/step\n",
            "Epoch 53/300\n",
            "3/3 - 0s - loss: 0.0033 - 25ms/epoch - 8ms/step\n",
            "Epoch 54/300\n",
            "3/3 - 0s - loss: 0.0032 - 22ms/epoch - 7ms/step\n",
            "Epoch 55/300\n",
            "3/3 - 0s - loss: 0.0031 - 25ms/epoch - 8ms/step\n",
            "Epoch 56/300\n",
            "3/3 - 0s - loss: 0.0031 - 20ms/epoch - 7ms/step\n",
            "Epoch 57/300\n",
            "3/3 - 0s - loss: 0.0030 - 23ms/epoch - 8ms/step\n",
            "Epoch 58/300\n",
            "3/3 - 0s - loss: 0.0029 - 22ms/epoch - 7ms/step\n",
            "Epoch 59/300\n",
            "3/3 - 0s - loss: 0.0028 - 22ms/epoch - 7ms/step\n",
            "Epoch 60/300\n",
            "3/3 - 0s - loss: 0.0027 - 23ms/epoch - 8ms/step\n",
            "Epoch 61/300\n",
            "3/3 - 0s - loss: 0.0026 - 24ms/epoch - 8ms/step\n",
            "Epoch 62/300\n",
            "3/3 - 0s - loss: 0.0026 - 23ms/epoch - 8ms/step\n",
            "Epoch 63/300\n",
            "3/3 - 0s - loss: 0.0025 - 24ms/epoch - 8ms/step\n",
            "Epoch 64/300\n",
            "3/3 - 0s - loss: 0.0024 - 23ms/epoch - 8ms/step\n",
            "Epoch 65/300\n",
            "3/3 - 0s - loss: 0.0024 - 24ms/epoch - 8ms/step\n",
            "Epoch 66/300\n",
            "3/3 - 0s - loss: 0.0023 - 21ms/epoch - 7ms/step\n",
            "Epoch 67/300\n",
            "3/3 - 0s - loss: 0.0022 - 23ms/epoch - 8ms/step\n",
            "Epoch 68/300\n",
            "3/3 - 0s - loss: 0.0022 - 23ms/epoch - 8ms/step\n",
            "Epoch 69/300\n",
            "3/3 - 0s - loss: 0.0021 - 25ms/epoch - 8ms/step\n",
            "Epoch 70/300\n",
            "3/3 - 0s - loss: 0.0021 - 21ms/epoch - 7ms/step\n",
            "Epoch 71/300\n",
            "3/3 - 0s - loss: 0.0020 - 24ms/epoch - 8ms/step\n",
            "Epoch 72/300\n",
            "3/3 - 0s - loss: 0.0019 - 26ms/epoch - 9ms/step\n",
            "Epoch 73/300\n",
            "3/3 - 0s - loss: 0.0019 - 22ms/epoch - 7ms/step\n",
            "Epoch 74/300\n",
            "3/3 - 0s - loss: 0.0018 - 22ms/epoch - 7ms/step\n",
            "Epoch 75/300\n",
            "3/3 - 0s - loss: 0.0018 - 23ms/epoch - 8ms/step\n",
            "Epoch 76/300\n",
            "3/3 - 0s - loss: 0.0017 - 24ms/epoch - 8ms/step\n",
            "Epoch 77/300\n",
            "3/3 - 0s - loss: 0.0017 - 23ms/epoch - 8ms/step\n",
            "Epoch 78/300\n",
            "3/3 - 0s - loss: 0.0016 - 23ms/epoch - 8ms/step\n",
            "Epoch 79/300\n",
            "3/3 - 0s - loss: 0.0016 - 24ms/epoch - 8ms/step\n",
            "Epoch 80/300\n",
            "3/3 - 0s - loss: 0.0016 - 24ms/epoch - 8ms/step\n",
            "Epoch 81/300\n",
            "3/3 - 0s - loss: 0.0015 - 21ms/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.0014 - 22ms/epoch - 7ms/step\n",
            "Epoch 84/300\n",
            "3/3 - 0s - loss: 0.0014 - 25ms/epoch - 8ms/step\n",
            "Epoch 85/300\n",
            "3/3 - 0s - loss: 0.0013 - 24ms/epoch - 8ms/step\n",
            "Epoch 86/300\n",
            "3/3 - 0s - loss: 0.0013 - 21ms/epoch - 7ms/step\n",
            "Epoch 87/300\n",
            "3/3 - 0s - loss: 0.0013 - 25ms/epoch - 8ms/step\n",
            "Epoch 88/300\n",
            "3/3 - 0s - loss: 0.0012 - 22ms/epoch - 7ms/step\n",
            "Epoch 89/300\n",
            "3/3 - 0s - loss: 0.0012 - 22ms/epoch - 7ms/step\n",
            "Epoch 90/300\n",
            "3/3 - 0s - loss: 0.0012 - 21ms/epoch - 7ms/step\n",
            "Epoch 91/300\n",
            "3/3 - 0s - loss: 0.0011 - 24ms/epoch - 8ms/step\n",
            "Epoch 92/300\n",
            "3/3 - 0s - loss: 0.0011 - 21ms/epoch - 7ms/step\n",
            "Epoch 93/300\n",
            "3/3 - 0s - loss: 0.0011 - 21ms/epoch - 7ms/step\n",
            "Epoch 94/300\n",
            "3/3 - 0s - loss: 0.0010 - 21ms/epoch - 7ms/step\n",
            "Epoch 95/300\n",
            "3/3 - 0s - loss: 0.0010 - 23ms/epoch - 8ms/step\n",
            "Epoch 96/300\n",
            "3/3 - 0s - loss: 9.9030e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 97/300\n",
            "3/3 - 0s - loss: 9.3755e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 98/300\n",
            "3/3 - 0s - loss: 9.3948e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 99/300\n",
            "3/3 - 0s - loss: 9.1838e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 100/300\n",
            "3/3 - 0s - loss: 8.7620e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 101/300\n",
            "3/3 - 0s - loss: 8.4649e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 102/300\n",
            "3/3 - 0s - loss: 8.2808e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 103/300\n",
            "3/3 - 0s - loss: 7.9795e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 104/300\n",
            "3/3 - 0s - loss: 7.6287e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 105/300\n",
            "3/3 - 0s - loss: 7.4923e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 106/300\n",
            "3/3 - 0s - loss: 7.3390e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 107/300\n",
            "3/3 - 0s - loss: 6.9246e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 108/300\n",
            "3/3 - 0s - loss: 6.7510e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 109/300\n",
            "3/3 - 0s - loss: 6.5625e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 110/300\n",
            "3/3 - 0s - loss: 6.3219e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 111/300\n",
            "3/3 - 0s - loss: 6.0279e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 112/300\n",
            "3/3 - 0s - loss: 6.0671e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 113/300\n",
            "3/3 - 0s - loss: 5.6855e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 114/300\n",
            "3/3 - 0s - loss: 5.5281e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 115/300\n",
            "3/3 - 0s - loss: 5.5191e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 116/300\n",
            "3/3 - 0s - loss: 5.0228e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 117/300\n",
            "3/3 - 0s - loss: 4.9649e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 118/300\n",
            "3/3 - 0s - loss: 4.7697e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 119/300\n",
            "3/3 - 0s - loss: 4.8162e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 120/300\n",
            "3/3 - 0s - loss: 4.5156e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 121/300\n",
            "3/3 - 0s - loss: 4.1934e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 122/300\n",
            "3/3 - 0s - loss: 4.1230e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 123/300\n",
            "3/3 - 0s - loss: 3.9462e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 124/300\n",
            "3/3 - 0s - loss: 3.9204e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 125/300\n",
            "3/3 - 0s - loss: 3.5680e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 126/300\n",
            "3/3 - 0s - loss: 3.4234e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 127/300\n",
            "3/3 - 0s - loss: 3.3943e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 128/300\n",
            "3/3 - 0s - loss: 3.1255e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 129/300\n",
            "3/3 - 0s - loss: 2.9386e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 130/300\n",
            "3/3 - 0s - loss: 2.8784e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 131/300\n",
            "3/3 - 0s - loss: 2.6945e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 132/300\n",
            "3/3 - 0s - loss: 2.6552e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 133/300\n",
            "3/3 - 0s - loss: 2.5129e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 134/300\n",
            "3/3 - 0s - loss: 2.3699e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 135/300\n",
            "3/3 - 0s - loss: 2.2568e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 136/300\n",
            "3/3 - 0s - loss: 2.1590e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 137/300\n",
            "3/3 - 0s - loss: 2.0323e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 138/300\n",
            "3/3 - 0s - loss: 1.9808e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 139/300\n",
            "3/3 - 0s - loss: 1.9068e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 140/300\n",
            "3/3 - 0s - loss: 1.7561e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 141/300\n",
            "3/3 - 0s - loss: 1.6458e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 142/300\n",
            "3/3 - 0s - loss: 1.5408e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 143/300\n",
            "3/3 - 0s - loss: 1.4586e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 144/300\n",
            "3/3 - 0s - loss: 1.3919e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 145/300\n",
            "3/3 - 0s - loss: 1.2985e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 146/300\n",
            "3/3 - 0s - loss: 1.3160e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 147/300\n",
            "3/3 - 0s - loss: 1.1499e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 148/300\n",
            "3/3 - 0s - loss: 1.1105e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 149/300\n",
            "3/3 - 0s - loss: 1.0422e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 150/300\n",
            "3/3 - 0s - loss: 9.8060e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 151/300\n",
            "3/3 - 0s - loss: 1.0034e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 152/300\n",
            "3/3 - 0s - loss: 8.6261e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 153/300\n",
            "3/3 - 0s - loss: 8.2579e-05 - 31ms/epoch - 10ms/step\n",
            "Epoch 154/300\n",
            "3/3 - 0s - loss: 7.5648e-05 - 29ms/epoch - 10ms/step\n",
            "Epoch 155/300\n",
            "3/3 - 0s - loss: 7.3859e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 156/300\n",
            "3/3 - 0s - loss: 6.7562e-05 - 28ms/epoch - 9ms/step\n",
            "Epoch 157/300\n",
            "3/3 - 0s - loss: 6.3161e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 158/300\n",
            "3/3 - 0s - loss: 5.7887e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 159/300\n",
            "3/3 - 0s - loss: 5.2555e-05 - 26ms/epoch - 9ms/step\n",
            "Epoch 160/300\n",
            "3/3 - 0s - loss: 5.2193e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 161/300\n",
            "3/3 - 0s - loss: 5.0778e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 162/300\n",
            "3/3 - 0s - loss: 4.5039e-05 - 26ms/epoch - 9ms/step\n",
            "Epoch 163/300\n",
            "3/3 - 0s - loss: 4.3761e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 164/300\n",
            "3/3 - 0s - loss: 4.2661e-05 - 28ms/epoch - 9ms/step\n",
            "Epoch 165/300\n",
            "3/3 - 0s - loss: 3.6934e-05 - 30ms/epoch - 10ms/step\n",
            "Epoch 166/300\n",
            "3/3 - 0s - loss: 3.3639e-05 - 28ms/epoch - 9ms/step\n",
            "Epoch 167/300\n",
            "3/3 - 0s - loss: 3.0181e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 168/300\n",
            "3/3 - 0s - loss: 2.9747e-05 - 30ms/epoch - 10ms/step\n",
            "Epoch 169/300\n",
            "3/3 - 0s - loss: 2.7084e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 170/300\n",
            "3/3 - 0s - loss: 2.4873e-05 - 26ms/epoch - 9ms/step\n",
            "Epoch 171/300\n",
            "3/3 - 0s - loss: 2.3064e-05 - 29ms/epoch - 10ms/step\n",
            "Epoch 172/300\n",
            "3/3 - 0s - loss: 2.1387e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 173/300\n",
            "3/3 - 0s - loss: 1.9558e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 174/300\n",
            "3/3 - 0s - loss: 1.8774e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 175/300\n",
            "3/3 - 0s - loss: 1.7456e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 176/300\n",
            "3/3 - 0s - loss: 1.6322e-05 - 29ms/epoch - 10ms/step\n",
            "Epoch 177/300\n",
            "3/3 - 0s - loss: 1.5728e-05 - 31ms/epoch - 10ms/step\n",
            "Epoch 178/300\n",
            "3/3 - 0s - loss: 1.3074e-05 - 26ms/epoch - 9ms/step\n",
            "Epoch 179/300\n",
            "3/3 - 0s - loss: 1.3396e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 180/300\n",
            "3/3 - 0s - loss: 1.1183e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 181/300\n",
            "3/3 - 0s - loss: 1.1315e-05 - 26ms/epoch - 9ms/step\n",
            "Epoch 182/300\n",
            "3/3 - 0s - loss: 9.9660e-06 - 26ms/epoch - 9ms/step\n",
            "Epoch 183/300\n",
            "3/3 - 0s - loss: 9.2336e-06 - 28ms/epoch - 9ms/step\n",
            "Epoch 184/300\n",
            "3/3 - 0s - loss: 8.6669e-06 - 29ms/epoch - 10ms/step\n",
            "Epoch 185/300\n",
            "3/3 - 0s - loss: 7.8215e-06 - 27ms/epoch - 9ms/step\n",
            "Epoch 186/300\n",
            "3/3 - 0s - loss: 7.1955e-06 - 26ms/epoch - 9ms/step\n",
            "Epoch 187/300\n",
            "3/3 - 0s - loss: 6.7799e-06 - 24ms/epoch - 8ms/step\n",
            "Epoch 188/300\n",
            "3/3 - 0s - loss: 6.6053e-06 - 28ms/epoch - 9ms/step\n",
            "Epoch 189/300\n",
            "3/3 - 0s - loss: 5.6921e-06 - 27ms/epoch - 9ms/step\n",
            "Epoch 190/300\n",
            "3/3 - 0s - loss: 5.5454e-06 - 27ms/epoch - 9ms/step\n",
            "Epoch 191/300\n",
            "3/3 - 0s - loss: 5.2059e-06 - 23ms/epoch - 8ms/step\n",
            "Epoch 192/300\n",
            "3/3 - 0s - loss: 4.5991e-06 - 23ms/epoch - 8ms/step\n",
            "Epoch 193/300\n",
            "3/3 - 0s - loss: 4.5500e-06 - 25ms/epoch - 8ms/step\n",
            "Epoch 194/300\n",
            "3/3 - 0s - loss: 3.8783e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 195/300\n",
            "3/3 - 0s - loss: 3.7119e-06 - 25ms/epoch - 8ms/step\n",
            "Epoch 196/300\n",
            "3/3 - 0s - loss: 3.5118e-06 - 23ms/epoch - 8ms/step\n",
            "Epoch 197/300\n",
            "3/3 - 0s - loss: 3.1351e-06 - 31ms/epoch - 10ms/step\n",
            "Epoch 198/300\n",
            "3/3 - 0s - loss: 3.1191e-06 - 26ms/epoch - 9ms/step\n",
            "Epoch 199/300\n",
            "3/3 - 0s - loss: 2.7799e-06 - 28ms/epoch - 9ms/step\n",
            "Epoch 200/300\n",
            "3/3 - 0s - loss: 2.6350e-06 - 23ms/epoch - 8ms/step\n",
            "Epoch 201/300\n",
            "3/3 - 0s - loss: 2.7376e-06 - 24ms/epoch - 8ms/step\n",
            "Epoch 202/300\n",
            "3/3 - 0s - loss: 2.2817e-06 - 24ms/epoch - 8ms/step\n",
            "Epoch 203/300\n",
            "3/3 - 0s - loss: 2.2156e-06 - 24ms/epoch - 8ms/step\n",
            "Epoch 204/300\n",
            "3/3 - 0s - loss: 2.0347e-06 - 25ms/epoch - 8ms/step\n",
            "Epoch 205/300\n",
            "3/3 - 0s - loss: 1.9108e-06 - 26ms/epoch - 9ms/step\n",
            "Epoch 206/300\n",
            "3/3 - 0s - loss: 1.8735e-06 - 27ms/epoch - 9ms/step\n",
            "Epoch 207/300\n",
            "3/3 - 0s - loss: 1.7423e-06 - 26ms/epoch - 9ms/step\n",
            "Epoch 208/300\n",
            "3/3 - 0s - loss: 1.6749e-06 - 26ms/epoch - 9ms/step\n",
            "Epoch 209/300\n",
            "3/3 - 0s - loss: 1.5719e-06 - 26ms/epoch - 9ms/step\n",
            "Epoch 210/300\n",
            "3/3 - 0s - loss: 1.4468e-06 - 30ms/epoch - 10ms/step\n",
            "Epoch 211/300\n",
            "3/3 - 0s - loss: 1.2995e-06 - 24ms/epoch - 8ms/step\n",
            "Epoch 212/300\n",
            "3/3 - 0s - loss: 1.3641e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 213/300\n",
            "3/3 - 0s - loss: 1.2329e-06 - 27ms/epoch - 9ms/step\n",
            "Epoch 214/300\n",
            "3/3 - 0s - loss: 1.2600e-06 - 29ms/epoch - 10ms/step\n",
            "Epoch 215/300\n",
            "3/3 - 0s - loss: 1.0767e-06 - 28ms/epoch - 9ms/step\n",
            "Epoch 216/300\n",
            "3/3 - 0s - loss: 1.0779e-06 - 30ms/epoch - 10ms/step\n",
            "Epoch 217/300\n",
            "3/3 - 0s - loss: 9.7836e-07 - 34ms/epoch - 11ms/step\n",
            "Epoch 218/300\n",
            "3/3 - 0s - loss: 9.3530e-07 - 34ms/epoch - 11ms/step\n",
            "Epoch 219/300\n",
            "3/3 - 0s - loss: 8.4941e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 220/300\n",
            "3/3 - 0s - loss: 8.5161e-07 - 29ms/epoch - 10ms/step\n",
            "Epoch 221/300\n",
            "3/3 - 0s - loss: 7.8268e-07 - 25ms/epoch - 8ms/step\n",
            "Epoch 222/300\n",
            "3/3 - 0s - loss: 8.3548e-07 - 28ms/epoch - 9ms/step\n",
            "Epoch 223/300\n",
            "3/3 - 0s - loss: 7.5181e-07 - 28ms/epoch - 9ms/step\n",
            "Epoch 224/300\n",
            "3/3 - 0s - loss: 7.3529e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 225/300\n",
            "3/3 - 0s - loss: 7.1879e-07 - 24ms/epoch - 8ms/step\n",
            "Epoch 226/300\n",
            "3/3 - 0s - loss: 6.5926e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 227/300\n",
            "3/3 - 0s - loss: 7.1373e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 228/300\n",
            "3/3 - 0s - loss: 6.5174e-07 - 29ms/epoch - 10ms/step\n",
            "Epoch 229/300\n",
            "3/3 - 0s - loss: 6.7165e-07 - 29ms/epoch - 10ms/step\n",
            "Epoch 230/300\n",
            "3/3 - 0s - loss: 5.8876e-07 - 24ms/epoch - 8ms/step\n",
            "Epoch 231/300\n",
            "3/3 - 0s - loss: 6.6343e-07 - 28ms/epoch - 9ms/step\n",
            "Epoch 232/300\n",
            "3/3 - 0s - loss: 5.3495e-07 - 28ms/epoch - 9ms/step\n",
            "Epoch 233/300\n",
            "3/3 - 0s - loss: 6.1030e-07 - 25ms/epoch - 8ms/step\n",
            "Epoch 234/300\n",
            "3/3 - 0s - loss: 5.4008e-07 - 22ms/epoch - 7ms/step\n",
            "Epoch 235/300\n",
            "3/3 - 0s - loss: 5.4339e-07 - 23ms/epoch - 8ms/step\n",
            "Epoch 236/300\n",
            "3/3 - 0s - loss: 6.4706e-07 - 22ms/epoch - 7ms/step\n",
            "Epoch 237/300\n",
            "3/3 - 0s - loss: 5.5485e-07 - 22ms/epoch - 7ms/step\n",
            "Epoch 238/300\n",
            "3/3 - 0s - loss: 5.4281e-07 - 25ms/epoch - 8ms/step\n",
            "Epoch 239/300\n",
            "3/3 - 0s - loss: 5.4467e-07 - 28ms/epoch - 9ms/step\n",
            "Epoch 240/300\n",
            "3/3 - 0s - loss: 4.7775e-07 - 23ms/epoch - 8ms/step\n",
            "Epoch 241/300\n",
            "3/3 - 0s - loss: 4.7016e-07 - 23ms/epoch - 8ms/step\n",
            "Epoch 242/300\n",
            "3/3 - 0s - loss: 4.5776e-07 - 24ms/epoch - 8ms/step\n",
            "Epoch 243/300\n",
            "3/3 - 0s - loss: 4.1953e-07 - 24ms/epoch - 8ms/step\n",
            "Epoch 244/300\n",
            "3/3 - 0s - loss: 4.0936e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 245/300\n",
            "3/3 - 0s - loss: 3.9930e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 246/300\n",
            "3/3 - 0s - loss: 3.9193e-07 - 23ms/epoch - 8ms/step\n",
            "Epoch 247/300\n",
            "3/3 - 0s - loss: 3.9062e-07 - 24ms/epoch - 8ms/step\n",
            "Epoch 248/300\n",
            "3/3 - 0s - loss: 3.8325e-07 - 22ms/epoch - 7ms/step\n",
            "Epoch 249/300\n",
            "3/3 - 0s - loss: 3.9052e-07 - 24ms/epoch - 8ms/step\n",
            "Epoch 250/300\n",
            "3/3 - 0s - loss: 3.6654e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 251/300\n",
            "3/3 - 0s - loss: 3.4913e-07 - 28ms/epoch - 9ms/step\n",
            "Epoch 252/300\n",
            "3/3 - 0s - loss: 3.9250e-07 - 28ms/epoch - 9ms/step\n",
            "Epoch 253/300\n",
            "3/3 - 0s - loss: 3.6404e-07 - 27ms/epoch - 9ms/step\n",
            "Epoch 254/300\n",
            "3/3 - 0s - loss: 3.3783e-07 - 27ms/epoch - 9ms/step\n",
            "Epoch 255/300\n",
            "3/3 - 0s - loss: 3.4257e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 256/300\n",
            "3/3 - 0s - loss: 3.2562e-07 - 28ms/epoch - 9ms/step\n",
            "Epoch 257/300\n",
            "3/3 - 0s - loss: 3.2351e-07 - 25ms/epoch - 8ms/step\n",
            "Epoch 258/300\n",
            "3/3 - 0s - loss: 3.1708e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 259/300\n",
            "3/3 - 0s - loss: 3.5046e-07 - 27ms/epoch - 9ms/step\n",
            "Epoch 260/300\n",
            "3/3 - 0s - loss: 3.3670e-07 - 25ms/epoch - 8ms/step\n",
            "Epoch 261/300\n",
            "3/3 - 0s - loss: 3.7024e-07 - 25ms/epoch - 8ms/step\n",
            "Epoch 262/300\n",
            "3/3 - 0s - loss: 2.9763e-07 - 27ms/epoch - 9ms/step\n",
            "Epoch 263/300\n",
            "3/3 - 0s - loss: 3.1009e-07 - 29ms/epoch - 10ms/step\n",
            "Epoch 264/300\n",
            "3/3 - 0s - loss: 2.8687e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 265/300\n",
            "3/3 - 0s - loss: 2.9766e-07 - 23ms/epoch - 8ms/step\n",
            "Epoch 266/300\n",
            "3/3 - 0s - loss: 2.8724e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 267/300\n",
            "3/3 - 0s - loss: 2.9001e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 268/300\n",
            "3/3 - 0s - loss: 2.8026e-07 - 23ms/epoch - 8ms/step\n",
            "Epoch 269/300\n",
            "3/3 - 0s - loss: 2.7250e-07 - 27ms/epoch - 9ms/step\n",
            "Epoch 270/300\n",
            "3/3 - 0s - loss: 2.7042e-07 - 24ms/epoch - 8ms/step\n",
            "Epoch 271/300\n",
            "3/3 - 0s - loss: 2.6576e-07 - 25ms/epoch - 8ms/step\n",
            "Epoch 272/300\n",
            "3/3 - 0s - loss: 2.6138e-07 - 24ms/epoch - 8ms/step\n",
            "Epoch 273/300\n",
            "3/3 - 0s - loss: 2.7324e-07 - 28ms/epoch - 9ms/step\n",
            "Epoch 274/300\n",
            "3/3 - 0s - loss: 2.8410e-07 - 27ms/epoch - 9ms/step\n",
            "Epoch 275/300\n",
            "3/3 - 0s - loss: 2.7608e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 276/300\n",
            "3/3 - 0s - loss: 2.5876e-07 - 27ms/epoch - 9ms/step\n",
            "Epoch 277/300\n",
            "3/3 - 0s - loss: 2.7807e-07 - 25ms/epoch - 8ms/step\n",
            "Epoch 278/300\n",
            "3/3 - 0s - loss: 2.8202e-07 - 24ms/epoch - 8ms/step\n",
            "Epoch 279/300\n",
            "3/3 - 0s - loss: 2.4662e-07 - 25ms/epoch - 8ms/step\n",
            "Epoch 280/300\n",
            "3/3 - 0s - loss: 2.6645e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 281/300\n",
            "3/3 - 0s - loss: 2.4212e-07 - 25ms/epoch - 8ms/step\n",
            "Epoch 282/300\n",
            "3/3 - 0s - loss: 2.5351e-07 - 25ms/epoch - 8ms/step\n",
            "Epoch 283/300\n",
            "3/3 - 0s - loss: 2.5119e-07 - 25ms/epoch - 8ms/step\n",
            "Epoch 284/300\n",
            "3/3 - 0s - loss: 2.3888e-07 - 27ms/epoch - 9ms/step\n",
            "Epoch 285/300\n",
            "3/3 - 0s - loss: 2.7947e-07 - 33ms/epoch - 11ms/step\n",
            "Epoch 286/300\n",
            "3/3 - 0s - loss: 2.4080e-07 - 29ms/epoch - 10ms/step\n",
            "Epoch 287/300\n",
            "3/3 - 0s - loss: 2.4106e-07 - 30ms/epoch - 10ms/step\n",
            "Epoch 288/300\n",
            "3/3 - 0s - loss: 2.7167e-07 - 33ms/epoch - 11ms/step\n",
            "Epoch 289/300\n",
            "3/3 - 0s - loss: 2.3055e-07 - 31ms/epoch - 10ms/step\n",
            "Epoch 290/300\n",
            "3/3 - 0s - loss: 2.2800e-07 - 33ms/epoch - 11ms/step\n",
            "Epoch 291/300\n",
            "3/3 - 0s - loss: 2.5267e-07 - 30ms/epoch - 10ms/step\n",
            "Epoch 292/300\n",
            "3/3 - 0s - loss: 2.1908e-07 - 29ms/epoch - 10ms/step\n",
            "Epoch 293/300\n",
            "3/3 - 0s - loss: 2.3317e-07 - 32ms/epoch - 11ms/step\n",
            "Epoch 294/300\n",
            "3/3 - 0s - loss: 2.2090e-07 - 27ms/epoch - 9ms/step\n",
            "Epoch 295/300\n",
            "3/3 - 0s - loss: 2.1304e-07 - 29ms/epoch - 10ms/step\n",
            "Epoch 296/300\n",
            "3/3 - 0s - loss: 2.1589e-07 - 32ms/epoch - 11ms/step\n",
            "Epoch 297/300\n",
            "3/3 - 0s - loss: 2.3572e-07 - 32ms/epoch - 11ms/step\n",
            "Epoch 298/300\n",
            "3/3 - 0s - loss: 2.0743e-07 - 32ms/epoch - 11ms/step\n",
            "Epoch 299/300\n",
            "3/3 - 0s - loss: 2.6012e-07 - 26ms/epoch - 9ms/step\n",
            "Epoch 300/300\n",
            "3/3 - 0s - loss: 2.3315e-07 - 25ms/epoch - 8ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<keras.src.callbacks.History at 0x7bae596edcc0>"
            ]
          },
          "metadata": {},
          "execution_count": 319
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n-aNP4n3sqG_",
        "outputId": "c837a331-afe9-4292-e219-e380a2185624",
        "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": 320,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "14/14 [==============================] - 1s 6ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7bae58e56aa0>"
            ]
          },
          "metadata": {},
          "execution_count": 320
        },
        {
          "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": "58cb4626-22e4-41df-9742-2132b6148c6b"
      },
      "execution_count": 321,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1710117790.006834\n",
            "Mon Mar 11 00:43:10 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": "4a393fa6-1378-44b3-cf3f-fcf59ea672bf"
      },
      "execution_count": 322,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1710117790.0253103\n",
            "Mon Mar 11 00:43:10 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BMxSJo5gtOmQ"
      },
      "source": [
        "# VS Fully Connected"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NKQx7stYswzU",
        "outputId": "a613f82c-33cd-41c1-b9b2-b520cf8ff36c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 11458
        }
      },
      "source": [
        "optimizer = Adam(learning_rate=0.001, weight_decay=0.01)\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": 323,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "3/3 - 2s - loss: 0.5655 - 2s/epoch - 676ms/step\n",
            "Epoch 2/300\n",
            "3/3 - 0s - loss: 0.1959 - 41ms/epoch - 14ms/step\n",
            "Epoch 3/300\n",
            "3/3 - 0s - loss: 0.1423 - 33ms/epoch - 11ms/step\n",
            "Epoch 4/300\n",
            "3/3 - 0s - loss: 0.0917 - 39ms/epoch - 13ms/step\n",
            "Epoch 5/300\n",
            "3/3 - 0s - loss: 0.0828 - 34ms/epoch - 11ms/step\n",
            "Epoch 6/300\n",
            "3/3 - 0s - loss: 0.0827 - 43ms/epoch - 14ms/step\n",
            "Epoch 7/300\n",
            "3/3 - 0s - loss: 0.0680 - 40ms/epoch - 13ms/step\n",
            "Epoch 8/300\n",
            "3/3 - 0s - loss: 0.0680 - 39ms/epoch - 13ms/step\n",
            "Epoch 9/300\n",
            "3/3 - 0s - loss: 0.0605 - 38ms/epoch - 13ms/step\n",
            "Epoch 10/300\n",
            "3/3 - 0s - loss: 0.0632 - 40ms/epoch - 13ms/step\n",
            "Epoch 11/300\n",
            "3/3 - 0s - loss: 0.0537 - 39ms/epoch - 13ms/step\n",
            "Epoch 12/300\n",
            "3/3 - 0s - loss: 0.0523 - 35ms/epoch - 12ms/step\n",
            "Epoch 13/300\n",
            "3/3 - 0s - loss: 0.0522 - 37ms/epoch - 12ms/step\n",
            "Epoch 14/300\n",
            "3/3 - 0s - loss: 0.0483 - 43ms/epoch - 14ms/step\n",
            "Epoch 15/300\n",
            "3/3 - 0s - loss: 0.0498 - 32ms/epoch - 11ms/step\n",
            "Epoch 16/300\n",
            "3/3 - 0s - loss: 0.0444 - 44ms/epoch - 15ms/step\n",
            "Epoch 17/300\n",
            "3/3 - 0s - loss: 0.0487 - 39ms/epoch - 13ms/step\n",
            "Epoch 18/300\n",
            "3/3 - 0s - loss: 0.0467 - 36ms/epoch - 12ms/step\n",
            "Epoch 19/300\n",
            "3/3 - 0s - loss: 0.0419 - 35ms/epoch - 12ms/step\n",
            "Epoch 20/300\n",
            "3/3 - 0s - loss: 0.0439 - 39ms/epoch - 13ms/step\n",
            "Epoch 21/300\n",
            "3/3 - 0s - loss: 0.0406 - 39ms/epoch - 13ms/step\n",
            "Epoch 22/300\n",
            "3/3 - 0s - loss: 0.0414 - 44ms/epoch - 15ms/step\n",
            "Epoch 23/300\n",
            "3/3 - 0s - loss: 0.0421 - 42ms/epoch - 14ms/step\n",
            "Epoch 24/300\n",
            "3/3 - 0s - loss: 0.0378 - 36ms/epoch - 12ms/step\n",
            "Epoch 25/300\n",
            "3/3 - 0s - loss: 0.0382 - 35ms/epoch - 12ms/step\n",
            "Epoch 26/300\n",
            "3/3 - 0s - loss: 0.0425 - 35ms/epoch - 12ms/step\n",
            "Epoch 27/300\n",
            "3/3 - 0s - loss: 0.0504 - 35ms/epoch - 12ms/step\n",
            "Epoch 28/300\n",
            "3/3 - 0s - loss: 0.0423 - 38ms/epoch - 13ms/step\n",
            "Epoch 29/300\n",
            "3/3 - 0s - loss: 0.0511 - 35ms/epoch - 12ms/step\n",
            "Epoch 30/300\n",
            "3/3 - 0s - loss: 0.0384 - 35ms/epoch - 12ms/step\n",
            "Epoch 31/300\n",
            "3/3 - 0s - loss: 0.0391 - 37ms/epoch - 12ms/step\n",
            "Epoch 32/300\n",
            "3/3 - 0s - loss: 0.0415 - 37ms/epoch - 12ms/step\n",
            "Epoch 33/300\n",
            "3/3 - 0s - loss: 0.0412 - 32ms/epoch - 11ms/step\n",
            "Epoch 34/300\n",
            "3/3 - 0s - loss: 0.0373 - 32ms/epoch - 11ms/step\n",
            "Epoch 35/300\n",
            "3/3 - 0s - loss: 0.0349 - 36ms/epoch - 12ms/step\n",
            "Epoch 36/300\n",
            "3/3 - 0s - loss: 0.0318 - 37ms/epoch - 12ms/step\n",
            "Epoch 37/300\n",
            "3/3 - 0s - loss: 0.0429 - 36ms/epoch - 12ms/step\n",
            "Epoch 38/300\n",
            "3/3 - 0s - loss: 0.0382 - 40ms/epoch - 13ms/step\n",
            "Epoch 39/300\n",
            "3/3 - 0s - loss: 0.0266 - 33ms/epoch - 11ms/step\n",
            "Epoch 40/300\n",
            "3/3 - 0s - loss: 0.0400 - 32ms/epoch - 11ms/step\n",
            "Epoch 41/300\n",
            "3/3 - 0s - loss: 0.0338 - 35ms/epoch - 12ms/step\n",
            "Epoch 42/300\n",
            "3/3 - 0s - loss: 0.0295 - 30ms/epoch - 10ms/step\n",
            "Epoch 43/300\n",
            "3/3 - 0s - loss: 0.0307 - 33ms/epoch - 11ms/step\n",
            "Epoch 44/300\n",
            "3/3 - 0s - loss: 0.0374 - 38ms/epoch - 13ms/step\n",
            "Epoch 45/300\n",
            "3/3 - 0s - loss: 0.0298 - 31ms/epoch - 10ms/step\n",
            "Epoch 46/300\n",
            "3/3 - 0s - loss: 0.0281 - 37ms/epoch - 12ms/step\n",
            "Epoch 47/300\n",
            "3/3 - 0s - loss: 0.0300 - 36ms/epoch - 12ms/step\n",
            "Epoch 48/300\n",
            "3/3 - 0s - loss: 0.0245 - 32ms/epoch - 11ms/step\n",
            "Epoch 49/300\n",
            "3/3 - 0s - loss: 0.0272 - 31ms/epoch - 10ms/step\n",
            "Epoch 50/300\n",
            "3/3 - 0s - loss: 0.0192 - 34ms/epoch - 11ms/step\n",
            "Epoch 51/300\n",
            "3/3 - 0s - loss: 0.0261 - 34ms/epoch - 11ms/step\n",
            "Epoch 52/300\n",
            "3/3 - 0s - loss: 0.0233 - 33ms/epoch - 11ms/step\n",
            "Epoch 53/300\n",
            "3/3 - 0s - loss: 0.0230 - 31ms/epoch - 10ms/step\n",
            "Epoch 54/300\n",
            "3/3 - 0s - loss: 0.0255 - 34ms/epoch - 11ms/step\n",
            "Epoch 55/300\n",
            "3/3 - 0s - loss: 0.0235 - 30ms/epoch - 10ms/step\n",
            "Epoch 56/300\n",
            "3/3 - 0s - loss: 0.0266 - 33ms/epoch - 11ms/step\n",
            "Epoch 57/300\n",
            "3/3 - 0s - loss: 0.0271 - 30ms/epoch - 10ms/step\n",
            "Epoch 58/300\n",
            "3/3 - 0s - loss: 0.0184 - 33ms/epoch - 11ms/step\n",
            "Epoch 59/300\n",
            "3/3 - 0s - loss: 0.0235 - 32ms/epoch - 11ms/step\n",
            "Epoch 60/300\n",
            "3/3 - 0s - loss: 0.0188 - 35ms/epoch - 12ms/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.0152 - 28ms/epoch - 9ms/step\n",
            "Epoch 63/300\n",
            "3/3 - 0s - loss: 0.0162 - 31ms/epoch - 10ms/step\n",
            "Epoch 64/300\n",
            "3/3 - 0s - loss: 0.0127 - 34ms/epoch - 11ms/step\n",
            "Epoch 65/300\n",
            "3/3 - 0s - loss: 0.0194 - 34ms/epoch - 11ms/step\n",
            "Epoch 66/300\n",
            "3/3 - 0s - loss: 0.0125 - 36ms/epoch - 12ms/step\n",
            "Epoch 67/300\n",
            "3/3 - 0s - loss: 0.0114 - 33ms/epoch - 11ms/step\n",
            "Epoch 68/300\n",
            "3/3 - 0s - loss: 0.0106 - 27ms/epoch - 9ms/step\n",
            "Epoch 69/300\n",
            "3/3 - 0s - loss: 0.0072 - 32ms/epoch - 11ms/step\n",
            "Epoch 70/300\n",
            "3/3 - 0s - loss: 0.0092 - 31ms/epoch - 10ms/step\n",
            "Epoch 71/300\n",
            "3/3 - 0s - loss: 0.0077 - 32ms/epoch - 11ms/step\n",
            "Epoch 72/300\n",
            "3/3 - 0s - loss: 0.0057 - 27ms/epoch - 9ms/step\n",
            "Epoch 73/300\n",
            "3/3 - 0s - loss: 0.0057 - 34ms/epoch - 11ms/step\n",
            "Epoch 74/300\n",
            "3/3 - 0s - loss: 0.0059 - 28ms/epoch - 9ms/step\n",
            "Epoch 75/300\n",
            "3/3 - 0s - loss: 0.0088 - 29ms/epoch - 10ms/step\n",
            "Epoch 76/300\n",
            "3/3 - 0s - loss: 0.0110 - 36ms/epoch - 12ms/step\n",
            "Epoch 77/300\n",
            "3/3 - 0s - loss: 0.0086 - 32ms/epoch - 11ms/step\n",
            "Epoch 78/300\n",
            "3/3 - 0s - loss: 0.0051 - 34ms/epoch - 11ms/step\n",
            "Epoch 79/300\n",
            "3/3 - 0s - loss: 0.0055 - 29ms/epoch - 10ms/step\n",
            "Epoch 80/300\n",
            "3/3 - 0s - loss: 0.0052 - 30ms/epoch - 10ms/step\n",
            "Epoch 81/300\n",
            "3/3 - 0s - loss: 0.0033 - 33ms/epoch - 11ms/step\n",
            "Epoch 82/300\n",
            "3/3 - 0s - loss: 0.0027 - 32ms/epoch - 11ms/step\n",
            "Epoch 83/300\n",
            "3/3 - 0s - loss: 0.0031 - 27ms/epoch - 9ms/step\n",
            "Epoch 84/300\n",
            "3/3 - 0s - loss: 0.0040 - 33ms/epoch - 11ms/step\n",
            "Epoch 85/300\n",
            "3/3 - 0s - loss: 0.0046 - 30ms/epoch - 10ms/step\n",
            "Epoch 86/300\n",
            "3/3 - 0s - loss: 0.0039 - 30ms/epoch - 10ms/step\n",
            "Epoch 87/300\n",
            "3/3 - 0s - loss: 0.0045 - 32ms/epoch - 11ms/step\n",
            "Epoch 88/300\n",
            "3/3 - 0s - loss: 0.0031 - 35ms/epoch - 12ms/step\n",
            "Epoch 89/300\n",
            "3/3 - 0s - loss: 0.0037 - 34ms/epoch - 11ms/step\n",
            "Epoch 90/300\n",
            "3/3 - 0s - loss: 0.0092 - 32ms/epoch - 11ms/step\n",
            "Epoch 91/300\n",
            "3/3 - 0s - loss: 0.0125 - 28ms/epoch - 9ms/step\n",
            "Epoch 92/300\n",
            "3/3 - 0s - loss: 0.0071 - 29ms/epoch - 10ms/step\n",
            "Epoch 93/300\n",
            "3/3 - 0s - loss: 0.0049 - 35ms/epoch - 12ms/step\n",
            "Epoch 94/300\n",
            "3/3 - 0s - loss: 0.0070 - 34ms/epoch - 11ms/step\n",
            "Epoch 95/300\n",
            "3/3 - 0s - loss: 0.0085 - 44ms/epoch - 15ms/step\n",
            "Epoch 96/300\n",
            "3/3 - 0s - loss: 0.0087 - 30ms/epoch - 10ms/step\n",
            "Epoch 97/300\n",
            "3/3 - 0s - loss: 0.0098 - 34ms/epoch - 11ms/step\n",
            "Epoch 98/300\n",
            "3/3 - 0s - loss: 0.0056 - 32ms/epoch - 11ms/step\n",
            "Epoch 99/300\n",
            "3/3 - 0s - loss: 0.0060 - 29ms/epoch - 10ms/step\n",
            "Epoch 100/300\n",
            "3/3 - 0s - loss: 0.0045 - 36ms/epoch - 12ms/step\n",
            "Epoch 101/300\n",
            "3/3 - 0s - loss: 0.0026 - 34ms/epoch - 11ms/step\n",
            "Epoch 102/300\n",
            "3/3 - 0s - loss: 0.0031 - 34ms/epoch - 11ms/step\n",
            "Epoch 103/300\n",
            "3/3 - 0s - loss: 0.0023 - 33ms/epoch - 11ms/step\n",
            "Epoch 104/300\n",
            "3/3 - 0s - loss: 0.0023 - 35ms/epoch - 12ms/step\n",
            "Epoch 105/300\n",
            "3/3 - 0s - loss: 0.0015 - 32ms/epoch - 11ms/step\n",
            "Epoch 106/300\n",
            "3/3 - 0s - loss: 9.9457e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 107/300\n",
            "3/3 - 0s - loss: 8.1251e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 108/300\n",
            "3/3 - 0s - loss: 7.3477e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 109/300\n",
            "3/3 - 0s - loss: 0.0013 - 30ms/epoch - 10ms/step\n",
            "Epoch 110/300\n",
            "3/3 - 0s - loss: 0.0010 - 32ms/epoch - 11ms/step\n",
            "Epoch 111/300\n",
            "3/3 - 0s - loss: 0.0013 - 34ms/epoch - 11ms/step\n",
            "Epoch 112/300\n",
            "3/3 - 0s - loss: 6.5235e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 113/300\n",
            "3/3 - 0s - loss: 7.1735e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 114/300\n",
            "3/3 - 0s - loss: 0.0012 - 36ms/epoch - 12ms/step\n",
            "Epoch 115/300\n",
            "3/3 - 0s - loss: 0.0013 - 34ms/epoch - 11ms/step\n",
            "Epoch 116/300\n",
            "3/3 - 0s - loss: 0.0013 - 37ms/epoch - 12ms/step\n",
            "Epoch 117/300\n",
            "3/3 - 0s - loss: 0.0012 - 39ms/epoch - 13ms/step\n",
            "Epoch 118/300\n",
            "3/3 - 0s - loss: 8.9509e-04 - 35ms/epoch - 12ms/step\n",
            "Epoch 119/300\n",
            "3/3 - 0s - loss: 6.2595e-04 - 40ms/epoch - 13ms/step\n",
            "Epoch 120/300\n",
            "3/3 - 0s - loss: 5.0086e-04 - 35ms/epoch - 12ms/step\n",
            "Epoch 121/300\n",
            "3/3 - 0s - loss: 4.7057e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 122/300\n",
            "3/3 - 0s - loss: 5.5540e-04 - 35ms/epoch - 12ms/step\n",
            "Epoch 123/300\n",
            "3/3 - 0s - loss: 3.5481e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 124/300\n",
            "3/3 - 0s - loss: 2.8579e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 125/300\n",
            "3/3 - 0s - loss: 2.7848e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 126/300\n",
            "3/3 - 0s - loss: 2.0697e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 127/300\n",
            "3/3 - 0s - loss: 1.8900e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 128/300\n",
            "3/3 - 0s - loss: 2.3876e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 129/300\n",
            "3/3 - 0s - loss: 2.5902e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 130/300\n",
            "3/3 - 0s - loss: 1.4886e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 131/300\n",
            "3/3 - 0s - loss: 1.8848e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 132/300\n",
            "3/3 - 0s - loss: 1.7091e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 133/300\n",
            "3/3 - 0s - loss: 1.7585e-04 - 38ms/epoch - 13ms/step\n",
            "Epoch 134/300\n",
            "3/3 - 0s - loss: 1.8089e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 135/300\n",
            "3/3 - 0s - loss: 1.9593e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 136/300\n",
            "3/3 - 0s - loss: 1.6220e-04 - 38ms/epoch - 13ms/step\n",
            "Epoch 137/300\n",
            "3/3 - 0s - loss: 1.1586e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 138/300\n",
            "3/3 - 0s - loss: 1.2577e-04 - 35ms/epoch - 12ms/step\n",
            "Epoch 139/300\n",
            "3/3 - 0s - loss: 1.3545e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 140/300\n",
            "3/3 - 0s - loss: 9.0490e-05 - 32ms/epoch - 11ms/step\n",
            "Epoch 141/300\n",
            "3/3 - 0s - loss: 8.4795e-05 - 34ms/epoch - 11ms/step\n",
            "Epoch 142/300\n",
            "3/3 - 0s - loss: 1.5127e-04 - 37ms/epoch - 12ms/step\n",
            "Epoch 143/300\n",
            "3/3 - 0s - loss: 1.8830e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 144/300\n",
            "3/3 - 0s - loss: 1.3932e-04 - 37ms/epoch - 12ms/step\n",
            "Epoch 145/300\n",
            "3/3 - 0s - loss: 2.1748e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 146/300\n",
            "3/3 - 0s - loss: 2.8408e-04 - 29ms/epoch - 10ms/step\n",
            "Epoch 147/300\n",
            "3/3 - 0s - loss: 2.2659e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 148/300\n",
            "3/3 - 0s - loss: 2.4439e-04 - 36ms/epoch - 12ms/step\n",
            "Epoch 149/300\n",
            "3/3 - 0s - loss: 3.4539e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 150/300\n",
            "3/3 - 0s - loss: 3.1073e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 151/300\n",
            "3/3 - 0s - loss: 4.1729e-04 - 35ms/epoch - 12ms/step\n",
            "Epoch 152/300\n",
            "3/3 - 0s - loss: 5.2196e-04 - 35ms/epoch - 12ms/step\n",
            "Epoch 153/300\n",
            "3/3 - 0s - loss: 4.8299e-04 - 35ms/epoch - 12ms/step\n",
            "Epoch 154/300\n",
            "3/3 - 0s - loss: 3.9528e-04 - 37ms/epoch - 12ms/step\n",
            "Epoch 155/300\n",
            "3/3 - 0s - loss: 3.9756e-04 - 30ms/epoch - 10ms/step\n",
            "Epoch 156/300\n",
            "3/3 - 0s - loss: 3.3975e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 157/300\n",
            "3/3 - 0s - loss: 4.4737e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 158/300\n",
            "3/3 - 0s - loss: 8.7572e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 159/300\n",
            "3/3 - 0s - loss: 0.0021 - 40ms/epoch - 13ms/step\n",
            "Epoch 160/300\n",
            "3/3 - 0s - loss: 0.0017 - 35ms/epoch - 12ms/step\n",
            "Epoch 161/300\n",
            "3/3 - 0s - loss: 0.0013 - 36ms/epoch - 12ms/step\n",
            "Epoch 162/300\n",
            "3/3 - 0s - loss: 0.0012 - 36ms/epoch - 12ms/step\n",
            "Epoch 163/300\n",
            "3/3 - 0s - loss: 9.9578e-04 - 33ms/epoch - 11ms/step\n",
            "Epoch 164/300\n",
            "3/3 - 0s - loss: 8.8019e-04 - 31ms/epoch - 10ms/step\n",
            "Epoch 165/300\n",
            "3/3 - 0s - loss: 0.0014 - 33ms/epoch - 11ms/step\n",
            "Epoch 166/300\n",
            "3/3 - 0s - loss: 0.0017 - 32ms/epoch - 11ms/step\n",
            "Epoch 167/300\n",
            "3/3 - 0s - loss: 0.0019 - 31ms/epoch - 10ms/step\n",
            "Epoch 168/300\n",
            "3/3 - 0s - loss: 0.0015 - 38ms/epoch - 13ms/step\n",
            "Epoch 169/300\n",
            "3/3 - 0s - loss: 0.0027 - 31ms/epoch - 10ms/step\n",
            "Epoch 170/300\n",
            "3/3 - 0s - loss: 0.0018 - 29ms/epoch - 10ms/step\n",
            "Epoch 171/300\n",
            "3/3 - 0s - loss: 0.0015 - 37ms/epoch - 12ms/step\n",
            "Epoch 172/300\n",
            "3/3 - 0s - loss: 0.0023 - 33ms/epoch - 11ms/step\n",
            "Epoch 173/300\n",
            "3/3 - 0s - loss: 0.0030 - 36ms/epoch - 12ms/step\n",
            "Epoch 174/300\n",
            "3/3 - 0s - loss: 0.0030 - 39ms/epoch - 13ms/step\n",
            "Epoch 175/300\n",
            "3/3 - 0s - loss: 0.0046 - 34ms/epoch - 11ms/step\n",
            "Epoch 176/300\n",
            "3/3 - 0s - loss: 0.0040 - 33ms/epoch - 11ms/step\n",
            "Epoch 177/300\n",
            "3/3 - 0s - loss: 0.0030 - 38ms/epoch - 13ms/step\n",
            "Epoch 178/300\n",
            "3/3 - 0s - loss: 0.0033 - 35ms/epoch - 12ms/step\n",
            "Epoch 179/300\n",
            "3/3 - 0s - loss: 0.0058 - 30ms/epoch - 10ms/step\n",
            "Epoch 180/300\n",
            "3/3 - 0s - loss: 0.0025 - 40ms/epoch - 13ms/step\n",
            "Epoch 181/300\n",
            "3/3 - 0s - loss: 0.0030 - 37ms/epoch - 12ms/step\n",
            "Epoch 182/300\n",
            "3/3 - 0s - loss: 0.0030 - 38ms/epoch - 13ms/step\n",
            "Epoch 183/300\n",
            "3/3 - 0s - loss: 0.0039 - 36ms/epoch - 12ms/step\n",
            "Epoch 184/300\n",
            "3/3 - 0s - loss: 0.0056 - 28ms/epoch - 9ms/step\n",
            "Epoch 185/300\n",
            "3/3 - 0s - loss: 0.0032 - 33ms/epoch - 11ms/step\n",
            "Epoch 186/300\n",
            "3/3 - 0s - loss: 0.0028 - 33ms/epoch - 11ms/step\n",
            "Epoch 187/300\n",
            "3/3 - 0s - loss: 0.0019 - 30ms/epoch - 10ms/step\n",
            "Epoch 188/300\n",
            "3/3 - 0s - loss: 0.0015 - 36ms/epoch - 12ms/step\n",
            "Epoch 189/300\n",
            "3/3 - 0s - loss: 0.0019 - 38ms/epoch - 13ms/step\n",
            "Epoch 190/300\n",
            "3/3 - 0s - loss: 0.0014 - 32ms/epoch - 11ms/step\n",
            "Epoch 191/300\n",
            "3/3 - 0s - loss: 0.0013 - 31ms/epoch - 10ms/step\n",
            "Epoch 192/300\n",
            "3/3 - 0s - loss: 9.6515e-04 - 37ms/epoch - 12ms/step\n",
            "Epoch 193/300\n",
            "3/3 - 0s - loss: 0.0014 - 38ms/epoch - 13ms/step\n",
            "Epoch 194/300\n",
            "3/3 - 0s - loss: 0.0015 - 33ms/epoch - 11ms/step\n",
            "Epoch 195/300\n",
            "3/3 - 0s - loss: 0.0016 - 40ms/epoch - 13ms/step\n",
            "Epoch 196/300\n",
            "3/3 - 0s - loss: 0.0017 - 39ms/epoch - 13ms/step\n",
            "Epoch 197/300\n",
            "3/3 - 0s - loss: 0.0022 - 41ms/epoch - 14ms/step\n",
            "Epoch 198/300\n",
            "3/3 - 0s - loss: 0.0032 - 35ms/epoch - 12ms/step\n",
            "Epoch 199/300\n",
            "3/3 - 0s - loss: 0.0030 - 31ms/epoch - 10ms/step\n",
            "Epoch 200/300\n",
            "3/3 - 0s - loss: 0.0039 - 34ms/epoch - 11ms/step\n",
            "Epoch 201/300\n",
            "3/3 - 0s - loss: 0.0036 - 38ms/epoch - 13ms/step\n",
            "Epoch 202/300\n",
            "3/3 - 0s - loss: 0.0035 - 35ms/epoch - 12ms/step\n",
            "Epoch 203/300\n",
            "3/3 - 0s - loss: 0.0039 - 33ms/epoch - 11ms/step\n",
            "Epoch 204/300\n",
            "3/3 - 0s - loss: 0.0037 - 32ms/epoch - 11ms/step\n",
            "Epoch 205/300\n",
            "3/3 - 0s - loss: 0.0028 - 32ms/epoch - 11ms/step\n",
            "Epoch 206/300\n",
            "3/3 - 0s - loss: 0.0019 - 35ms/epoch - 12ms/step\n",
            "Epoch 207/300\n",
            "3/3 - 0s - loss: 0.0012 - 34ms/epoch - 11ms/step\n",
            "Epoch 208/300\n",
            "3/3 - 0s - loss: 8.5583e-04 - 33ms/epoch - 11ms/step\n",
            "Epoch 209/300\n",
            "3/3 - 0s - loss: 8.3525e-04 - 35ms/epoch - 12ms/step\n",
            "Epoch 210/300\n",
            "3/3 - 0s - loss: 9.5127e-04 - 35ms/epoch - 12ms/step\n",
            "Epoch 211/300\n",
            "3/3 - 0s - loss: 4.8098e-04 - 33ms/epoch - 11ms/step\n",
            "Epoch 212/300\n",
            "3/3 - 0s - loss: 5.7823e-04 - 36ms/epoch - 12ms/step\n",
            "Epoch 213/300\n",
            "3/3 - 0s - loss: 4.6986e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 214/300\n",
            "3/3 - 0s - loss: 4.8820e-04 - 33ms/epoch - 11ms/step\n",
            "Epoch 215/300\n",
            "3/3 - 0s - loss: 9.8511e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 216/300\n",
            "3/3 - 0s - loss: 9.4727e-04 - 37ms/epoch - 12ms/step\n",
            "Epoch 217/300\n",
            "3/3 - 0s - loss: 0.0013 - 39ms/epoch - 13ms/step\n",
            "Epoch 218/300\n",
            "3/3 - 0s - loss: 0.0015 - 31ms/epoch - 10ms/step\n",
            "Epoch 219/300\n",
            "3/3 - 0s - loss: 0.0011 - 34ms/epoch - 11ms/step\n",
            "Epoch 220/300\n",
            "3/3 - 0s - loss: 0.0011 - 38ms/epoch - 13ms/step\n",
            "Epoch 221/300\n",
            "3/3 - 0s - loss: 9.0262e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 222/300\n",
            "3/3 - 0s - loss: 0.0013 - 35ms/epoch - 12ms/step\n",
            "Epoch 223/300\n",
            "3/3 - 0s - loss: 0.0011 - 32ms/epoch - 11ms/step\n",
            "Epoch 224/300\n",
            "3/3 - 0s - loss: 0.0016 - 35ms/epoch - 12ms/step\n",
            "Epoch 225/300\n",
            "3/3 - 0s - loss: 0.0027 - 35ms/epoch - 12ms/step\n",
            "Epoch 226/300\n",
            "3/3 - 0s - loss: 0.0061 - 30ms/epoch - 10ms/step\n",
            "Epoch 227/300\n",
            "3/3 - 0s - loss: 0.0100 - 33ms/epoch - 11ms/step\n",
            "Epoch 228/300\n",
            "3/3 - 0s - loss: 0.0086 - 31ms/epoch - 10ms/step\n",
            "Epoch 229/300\n",
            "3/3 - 0s - loss: 0.0075 - 34ms/epoch - 11ms/step\n",
            "Epoch 230/300\n",
            "3/3 - 0s - loss: 0.0072 - 33ms/epoch - 11ms/step\n",
            "Epoch 231/300\n",
            "3/3 - 0s - loss: 0.0092 - 33ms/epoch - 11ms/step\n",
            "Epoch 232/300\n",
            "3/3 - 0s - loss: 0.0081 - 31ms/epoch - 10ms/step\n",
            "Epoch 233/300\n",
            "3/3 - 0s - loss: 0.0115 - 36ms/epoch - 12ms/step\n",
            "Epoch 234/300\n",
            "3/3 - 0s - loss: 0.0110 - 40ms/epoch - 13ms/step\n",
            "Epoch 235/300\n",
            "3/3 - 0s - loss: 0.0105 - 33ms/epoch - 11ms/step\n",
            "Epoch 236/300\n",
            "3/3 - 0s - loss: 0.0101 - 36ms/epoch - 12ms/step\n",
            "Epoch 237/300\n",
            "3/3 - 0s - loss: 0.0122 - 30ms/epoch - 10ms/step\n",
            "Epoch 238/300\n",
            "3/3 - 0s - loss: 0.0137 - 35ms/epoch - 12ms/step\n",
            "Epoch 239/300\n",
            "3/3 - 0s - loss: 0.0099 - 39ms/epoch - 13ms/step\n",
            "Epoch 240/300\n",
            "3/3 - 0s - loss: 0.0110 - 39ms/epoch - 13ms/step\n",
            "Epoch 241/300\n",
            "3/3 - 0s - loss: 0.0089 - 37ms/epoch - 12ms/step\n",
            "Epoch 242/300\n",
            "3/3 - 0s - loss: 0.0103 - 38ms/epoch - 13ms/step\n",
            "Epoch 243/300\n",
            "3/3 - 0s - loss: 0.0096 - 42ms/epoch - 14ms/step\n",
            "Epoch 244/300\n",
            "3/3 - 0s - loss: 0.0079 - 34ms/epoch - 11ms/step\n",
            "Epoch 245/300\n",
            "3/3 - 0s - loss: 0.0066 - 36ms/epoch - 12ms/step\n",
            "Epoch 246/300\n",
            "3/3 - 0s - loss: 0.0063 - 35ms/epoch - 12ms/step\n",
            "Epoch 247/300\n",
            "3/3 - 0s - loss: 0.0047 - 35ms/epoch - 12ms/step\n",
            "Epoch 248/300\n",
            "3/3 - 0s - loss: 0.0031 - 37ms/epoch - 12ms/step\n",
            "Epoch 249/300\n",
            "3/3 - 0s - loss: 0.0017 - 40ms/epoch - 13ms/step\n",
            "Epoch 250/300\n",
            "3/3 - 0s - loss: 0.0013 - 34ms/epoch - 11ms/step\n",
            "Epoch 251/300\n",
            "3/3 - 0s - loss: 0.0014 - 37ms/epoch - 12ms/step\n",
            "Epoch 252/300\n",
            "3/3 - 0s - loss: 0.0014 - 35ms/epoch - 12ms/step\n",
            "Epoch 253/300\n",
            "3/3 - 0s - loss: 0.0014 - 39ms/epoch - 13ms/step\n",
            "Epoch 254/300\n",
            "3/3 - 0s - loss: 8.6835e-04 - 42ms/epoch - 14ms/step\n",
            "Epoch 255/300\n",
            "3/3 - 0s - loss: 9.6470e-04 - 39ms/epoch - 13ms/step\n",
            "Epoch 256/300\n",
            "3/3 - 0s - loss: 4.8037e-04 - 35ms/epoch - 12ms/step\n",
            "Epoch 257/300\n",
            "3/3 - 0s - loss: 3.4686e-04 - 37ms/epoch - 12ms/step\n",
            "Epoch 258/300\n",
            "3/3 - 0s - loss: 3.5310e-04 - 37ms/epoch - 12ms/step\n",
            "Epoch 259/300\n",
            "3/3 - 0s - loss: 5.8375e-04 - 34ms/epoch - 11ms/step\n",
            "Epoch 260/300\n",
            "3/3 - 0s - loss: 7.8582e-04 - 35ms/epoch - 12ms/step\n",
            "Epoch 261/300\n",
            "3/3 - 0s - loss: 9.2245e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 262/300\n",
            "3/3 - 0s - loss: 9.7666e-04 - 36ms/epoch - 12ms/step\n",
            "Epoch 263/300\n",
            "3/3 - 0s - loss: 9.9415e-04 - 40ms/epoch - 13ms/step\n",
            "Epoch 264/300\n",
            "3/3 - 0s - loss: 4.3099e-04 - 37ms/epoch - 12ms/step\n",
            "Epoch 265/300\n",
            "3/3 - 0s - loss: 2.7619e-04 - 38ms/epoch - 13ms/step\n",
            "Epoch 266/300\n",
            "3/3 - 0s - loss: 3.1366e-04 - 45ms/epoch - 15ms/step\n",
            "Epoch 267/300\n",
            "3/3 - 0s - loss: 2.7673e-04 - 37ms/epoch - 12ms/step\n",
            "Epoch 268/300\n",
            "3/3 - 0s - loss: 2.6737e-04 - 35ms/epoch - 12ms/step\n",
            "Epoch 269/300\n",
            "3/3 - 0s - loss: 3.4471e-04 - 38ms/epoch - 13ms/step\n",
            "Epoch 270/300\n",
            "3/3 - 0s - loss: 3.6703e-04 - 36ms/epoch - 12ms/step\n",
            "Epoch 271/300\n",
            "3/3 - 0s - loss: 2.2784e-04 - 32ms/epoch - 11ms/step\n",
            "Epoch 272/300\n",
            "3/3 - 0s - loss: 1.4699e-04 - 37ms/epoch - 12ms/step\n",
            "Epoch 273/300\n",
            "3/3 - 0s - loss: 1.2402e-04 - 42ms/epoch - 14ms/step\n",
            "Epoch 274/300\n",
            "3/3 - 0s - loss: 7.5454e-05 - 38ms/epoch - 13ms/step\n",
            "Epoch 275/300\n",
            "3/3 - 0s - loss: 5.2158e-05 - 39ms/epoch - 13ms/step\n",
            "Epoch 276/300\n",
            "3/3 - 0s - loss: 5.2676e-05 - 39ms/epoch - 13ms/step\n",
            "Epoch 277/300\n",
            "3/3 - 0s - loss: 3.8055e-05 - 43ms/epoch - 14ms/step\n",
            "Epoch 278/300\n",
            "3/3 - 0s - loss: 3.5344e-05 - 41ms/epoch - 14ms/step\n",
            "Epoch 279/300\n",
            "3/3 - 0s - loss: 3.8344e-05 - 39ms/epoch - 13ms/step\n",
            "Epoch 280/300\n",
            "3/3 - 0s - loss: 5.8387e-05 - 43ms/epoch - 14ms/step\n",
            "Epoch 281/300\n",
            "3/3 - 0s - loss: 5.0585e-05 - 39ms/epoch - 13ms/step\n",
            "Epoch 282/300\n",
            "3/3 - 0s - loss: 4.3324e-05 - 42ms/epoch - 14ms/step\n",
            "Epoch 283/300\n",
            "3/3 - 0s - loss: 3.3741e-05 - 44ms/epoch - 15ms/step\n",
            "Epoch 284/300\n",
            "3/3 - 0s - loss: 2.8141e-05 - 47ms/epoch - 16ms/step\n",
            "Epoch 285/300\n",
            "3/3 - 0s - loss: 2.3856e-05 - 42ms/epoch - 14ms/step\n",
            "Epoch 286/300\n",
            "3/3 - 0s - loss: 2.4922e-05 - 46ms/epoch - 15ms/step\n",
            "Epoch 287/300\n",
            "3/3 - 0s - loss: 2.1411e-05 - 45ms/epoch - 15ms/step\n",
            "Epoch 288/300\n",
            "3/3 - 0s - loss: 2.3151e-05 - 44ms/epoch - 15ms/step\n",
            "Epoch 289/300\n",
            "3/3 - 0s - loss: 2.0940e-05 - 40ms/epoch - 13ms/step\n",
            "Epoch 290/300\n",
            "3/3 - 0s - loss: 2.3265e-05 - 44ms/epoch - 15ms/step\n",
            "Epoch 291/300\n",
            "3/3 - 0s - loss: 2.9135e-05 - 36ms/epoch - 12ms/step\n",
            "Epoch 292/300\n",
            "3/3 - 0s - loss: 3.4593e-05 - 35ms/epoch - 12ms/step\n",
            "Epoch 293/300\n",
            "3/3 - 0s - loss: 3.3766e-05 - 35ms/epoch - 12ms/step\n",
            "Epoch 294/300\n",
            "3/3 - 0s - loss: 2.5091e-05 - 40ms/epoch - 13ms/step\n",
            "Epoch 295/300\n",
            "3/3 - 0s - loss: 2.8555e-05 - 51ms/epoch - 17ms/step\n",
            "Epoch 296/300\n",
            "3/3 - 0s - loss: 2.7529e-05 - 36ms/epoch - 12ms/step\n",
            "Epoch 297/300\n",
            "3/3 - 0s - loss: 3.0840e-05 - 35ms/epoch - 12ms/step\n",
            "Epoch 298/300\n",
            "3/3 - 0s - loss: 2.5278e-05 - 40ms/epoch - 13ms/step\n",
            "Epoch 299/300\n",
            "3/3 - 0s - loss: 2.7108e-05 - 43ms/epoch - 14ms/step\n",
            "Epoch 300/300\n",
            "3/3 - 0s - loss: 1.6963e-05 - 37ms/epoch - 12ms/step\n",
            "14/14 [==============================] - 0s 5ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7bae58db3df0>"
            ]
          },
          "metadata": {},
          "execution_count": 323
        },
        {
          "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": "cee03328-8574-4f42-f38a-9f2c4a7c5755"
      },
      "execution_count": 324,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1710117803.942458\n",
            "Mon Mar 11 00:43:23 2024\n"
          ]
        }
      ]
    }
  ]
}