Download this file

1743 lines (1743 with data), 130.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": 219,
      "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": 220,
      "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": "d8f8fa54-0ece-4201-b29b-be5aea2eb5a5",
        "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": 221,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_36\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_90 (Dense)            (None, 1024)              3072      \n",
            "                                                                 \n",
            " dense_91 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_92 (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": "11179a50-3357-42dd-ada4-bd49c9879cd3",
        "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": 222,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_37\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_93 (Dense)            (None, 1024)              3072      \n",
            "                                                                 \n",
            " tn_layer_54 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_55 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_56 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " dense_94 (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": 223,
      "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": "d7a16229-d261-47bb-f964-3eeb5042af78"
      },
      "execution_count": 224,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1710116863.4342465\n",
            "Mon Mar 11 00:27:43 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "crc0q1vbIyTj",
        "outputId": "432fcc82-927c-49bf-ca7b-f287405ff0f5",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "optimizer = Adam(learning_rate=0.0011)\n",
        "tn_model.compile(optimizer=optimizer, loss=\"mean_squared_error\")\n",
        "tn_model.fit(X, Y, epochs=300, verbose=2)"
      ],
      "execution_count": 225,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "3/3 - 2s - loss: 1.0020 - 2s/epoch - 685ms/step\n",
            "Epoch 2/300\n",
            "3/3 - 0s - loss: 1.0020 - 17ms/epoch - 6ms/step\n",
            "Epoch 3/300\n",
            "3/3 - 0s - loss: 1.0008 - 18ms/epoch - 6ms/step\n",
            "Epoch 4/300\n",
            "3/3 - 0s - loss: 1.0002 - 18ms/epoch - 6ms/step\n",
            "Epoch 5/300\n",
            "3/3 - 0s - loss: 1.0007 - 18ms/epoch - 6ms/step\n",
            "Epoch 6/300\n",
            "3/3 - 0s - loss: 0.9996 - 19ms/epoch - 6ms/step\n",
            "Epoch 7/300\n",
            "3/3 - 0s - loss: 0.9988 - 18ms/epoch - 6ms/step\n",
            "Epoch 8/300\n",
            "3/3 - 0s - loss: 0.9968 - 17ms/epoch - 6ms/step\n",
            "Epoch 9/300\n",
            "3/3 - 0s - loss: 0.9919 - 18ms/epoch - 6ms/step\n",
            "Epoch 10/300\n",
            "3/3 - 0s - loss: 0.9800 - 18ms/epoch - 6ms/step\n",
            "Epoch 11/300\n",
            "3/3 - 0s - loss: 0.9514 - 18ms/epoch - 6ms/step\n",
            "Epoch 12/300\n",
            "3/3 - 0s - loss: 0.8917 - 17ms/epoch - 6ms/step\n",
            "Epoch 13/300\n",
            "3/3 - 0s - loss: 0.7701 - 17ms/epoch - 6ms/step\n",
            "Epoch 14/300\n",
            "3/3 - 0s - loss: 0.5310 - 17ms/epoch - 6ms/step\n",
            "Epoch 15/300\n",
            "3/3 - 0s - loss: 0.1801 - 16ms/epoch - 5ms/step\n",
            "Epoch 16/300\n",
            "3/3 - 0s - loss: 0.1347 - 17ms/epoch - 6ms/step\n",
            "Epoch 17/300\n",
            "3/3 - 0s - loss: 0.1229 - 16ms/epoch - 5ms/step\n",
            "Epoch 18/300\n",
            "3/3 - 0s - loss: 0.0258 - 16ms/epoch - 5ms/step\n",
            "Epoch 19/300\n",
            "3/3 - 0s - loss: 0.0542 - 16ms/epoch - 5ms/step\n",
            "Epoch 20/300\n",
            "3/3 - 0s - loss: 0.0650 - 18ms/epoch - 6ms/step\n",
            "Epoch 21/300\n",
            "3/3 - 0s - loss: 0.0427 - 19ms/epoch - 6ms/step\n",
            "Epoch 22/300\n",
            "3/3 - 0s - loss: 0.0171 - 20ms/epoch - 7ms/step\n",
            "Epoch 23/300\n",
            "3/3 - 0s - loss: 0.0148 - 18ms/epoch - 6ms/step\n",
            "Epoch 24/300\n",
            "3/3 - 0s - loss: 0.0227 - 17ms/epoch - 6ms/step\n",
            "Epoch 25/300\n",
            "3/3 - 0s - loss: 0.0182 - 17ms/epoch - 6ms/step\n",
            "Epoch 26/300\n",
            "3/3 - 0s - loss: 0.0098 - 16ms/epoch - 5ms/step\n",
            "Epoch 27/300\n",
            "3/3 - 0s - loss: 0.0093 - 18ms/epoch - 6ms/step\n",
            "Epoch 28/300\n",
            "3/3 - 0s - loss: 0.0116 - 16ms/epoch - 5ms/step\n",
            "Epoch 29/300\n",
            "3/3 - 0s - loss: 0.0107 - 16ms/epoch - 5ms/step\n",
            "Epoch 30/300\n",
            "3/3 - 0s - loss: 0.0078 - 16ms/epoch - 5ms/step\n",
            "Epoch 31/300\n",
            "3/3 - 0s - loss: 0.0072 - 17ms/epoch - 6ms/step\n",
            "Epoch 32/300\n",
            "3/3 - 0s - loss: 0.0076 - 19ms/epoch - 6ms/step\n",
            "Epoch 33/300\n",
            "3/3 - 0s - loss: 0.0074 - 18ms/epoch - 6ms/step\n",
            "Epoch 34/300\n",
            "3/3 - 0s - loss: 0.0064 - 16ms/epoch - 5ms/step\n",
            "Epoch 35/300\n",
            "3/3 - 0s - loss: 0.0061 - 17ms/epoch - 6ms/step\n",
            "Epoch 36/300\n",
            "3/3 - 0s - loss: 0.0062 - 17ms/epoch - 6ms/step\n",
            "Epoch 37/300\n",
            "3/3 - 0s - loss: 0.0059 - 18ms/epoch - 6ms/step\n",
            "Epoch 38/300\n",
            "3/3 - 0s - loss: 0.0055 - 19ms/epoch - 6ms/step\n",
            "Epoch 39/300\n",
            "3/3 - 0s - loss: 0.0053 - 18ms/epoch - 6ms/step\n",
            "Epoch 40/300\n",
            "3/3 - 0s - loss: 0.0052 - 17ms/epoch - 6ms/step\n",
            "Epoch 41/300\n",
            "3/3 - 0s - loss: 0.0050 - 17ms/epoch - 6ms/step\n",
            "Epoch 42/300\n",
            "3/3 - 0s - loss: 0.0048 - 18ms/epoch - 6ms/step\n",
            "Epoch 43/300\n",
            "3/3 - 0s - loss: 0.0047 - 17ms/epoch - 6ms/step\n",
            "Epoch 44/300\n",
            "3/3 - 0s - loss: 0.0045 - 18ms/epoch - 6ms/step\n",
            "Epoch 45/300\n",
            "3/3 - 0s - loss: 0.0043 - 18ms/epoch - 6ms/step\n",
            "Epoch 46/300\n",
            "3/3 - 0s - loss: 0.0042 - 19ms/epoch - 6ms/step\n",
            "Epoch 47/300\n",
            "3/3 - 0s - loss: 0.0041 - 19ms/epoch - 6ms/step\n",
            "Epoch 48/300\n",
            "3/3 - 0s - loss: 0.0040 - 19ms/epoch - 6ms/step\n",
            "Epoch 49/300\n",
            "3/3 - 0s - loss: 0.0039 - 18ms/epoch - 6ms/step\n",
            "Epoch 50/300\n",
            "3/3 - 0s - loss: 0.0037 - 17ms/epoch - 6ms/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.0035 - 18ms/epoch - 6ms/step\n",
            "Epoch 53/300\n",
            "3/3 - 0s - loss: 0.0035 - 16ms/epoch - 5ms/step\n",
            "Epoch 54/300\n",
            "3/3 - 0s - loss: 0.0034 - 17ms/epoch - 6ms/step\n",
            "Epoch 55/300\n",
            "3/3 - 0s - loss: 0.0032 - 17ms/epoch - 6ms/step\n",
            "Epoch 56/300\n",
            "3/3 - 0s - loss: 0.0032 - 17ms/epoch - 6ms/step\n",
            "Epoch 57/300\n",
            "3/3 - 0s - loss: 0.0031 - 16ms/epoch - 5ms/step\n",
            "Epoch 58/300\n",
            "3/3 - 0s - loss: 0.0030 - 17ms/epoch - 6ms/step\n",
            "Epoch 59/300\n",
            "3/3 - 0s - loss: 0.0030 - 18ms/epoch - 6ms/step\n",
            "Epoch 60/300\n",
            "3/3 - 0s - loss: 0.0029 - 19ms/epoch - 6ms/step\n",
            "Epoch 61/300\n",
            "3/3 - 0s - loss: 0.0028 - 18ms/epoch - 6ms/step\n",
            "Epoch 62/300\n",
            "3/3 - 0s - loss: 0.0027 - 20ms/epoch - 7ms/step\n",
            "Epoch 63/300\n",
            "3/3 - 0s - loss: 0.0026 - 18ms/epoch - 6ms/step\n",
            "Epoch 64/300\n",
            "3/3 - 0s - loss: 0.0025 - 19ms/epoch - 6ms/step\n",
            "Epoch 65/300\n",
            "3/3 - 0s - loss: 0.0025 - 18ms/epoch - 6ms/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 - 18ms/epoch - 6ms/step\n",
            "Epoch 68/300\n",
            "3/3 - 0s - loss: 0.0023 - 17ms/epoch - 6ms/step\n",
            "Epoch 69/300\n",
            "3/3 - 0s - loss: 0.0022 - 17ms/epoch - 6ms/step\n",
            "Epoch 70/300\n",
            "3/3 - 0s - loss: 0.0022 - 17ms/epoch - 6ms/step\n",
            "Epoch 71/300\n",
            "3/3 - 0s - loss: 0.0021 - 18ms/epoch - 6ms/step\n",
            "Epoch 72/300\n",
            "3/3 - 0s - loss: 0.0020 - 17ms/epoch - 6ms/step\n",
            "Epoch 73/300\n",
            "3/3 - 0s - loss: 0.0020 - 18ms/epoch - 6ms/step\n",
            "Epoch 74/300\n",
            "3/3 - 0s - loss: 0.0019 - 18ms/epoch - 6ms/step\n",
            "Epoch 75/300\n",
            "3/3 - 0s - loss: 0.0019 - 17ms/epoch - 6ms/step\n",
            "Epoch 76/300\n",
            "3/3 - 0s - loss: 0.0018 - 17ms/epoch - 6ms/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 - 18ms/epoch - 6ms/step\n",
            "Epoch 79/300\n",
            "3/3 - 0s - loss: 0.0016 - 16ms/epoch - 5ms/step\n",
            "Epoch 80/300\n",
            "3/3 - 0s - loss: 0.0016 - 17ms/epoch - 6ms/step\n",
            "Epoch 81/300\n",
            "3/3 - 0s - loss: 0.0016 - 19ms/epoch - 6ms/step\n",
            "Epoch 82/300\n",
            "3/3 - 0s - loss: 0.0015 - 19ms/epoch - 6ms/step\n",
            "Epoch 83/300\n",
            "3/3 - 0s - loss: 0.0015 - 19ms/epoch - 6ms/step\n",
            "Epoch 84/300\n",
            "3/3 - 0s - loss: 0.0014 - 19ms/epoch - 6ms/step\n",
            "Epoch 85/300\n",
            "3/3 - 0s - loss: 0.0014 - 19ms/epoch - 6ms/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 - 19ms/epoch - 6ms/step\n",
            "Epoch 88/300\n",
            "3/3 - 0s - loss: 0.0013 - 20ms/epoch - 7ms/step\n",
            "Epoch 89/300\n",
            "3/3 - 0s - loss: 0.0012 - 20ms/epoch - 7ms/step\n",
            "Epoch 90/300\n",
            "3/3 - 0s - loss: 0.0012 - 19ms/epoch - 6ms/step\n",
            "Epoch 91/300\n",
            "3/3 - 0s - loss: 0.0011 - 17ms/epoch - 6ms/step\n",
            "Epoch 92/300\n",
            "3/3 - 0s - loss: 0.0011 - 19ms/epoch - 6ms/step\n",
            "Epoch 93/300\n",
            "3/3 - 0s - loss: 0.0011 - 18ms/epoch - 6ms/step\n",
            "Epoch 94/300\n",
            "3/3 - 0s - loss: 0.0010 - 19ms/epoch - 6ms/step\n",
            "Epoch 95/300\n",
            "3/3 - 0s - loss: 9.9500e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 96/300\n",
            "3/3 - 0s - loss: 9.6858e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 97/300\n",
            "3/3 - 0s - loss: 9.1439e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 98/300\n",
            "3/3 - 0s - loss: 9.1337e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 99/300\n",
            "3/3 - 0s - loss: 8.7782e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 100/300\n",
            "3/3 - 0s - loss: 8.4370e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 101/300\n",
            "3/3 - 0s - loss: 8.1716e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 102/300\n",
            "3/3 - 0s - loss: 7.8111e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 103/300\n",
            "3/3 - 0s - loss: 7.5206e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 104/300\n",
            "3/3 - 0s - loss: 7.1429e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 105/300\n",
            "3/3 - 0s - loss: 6.9011e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 106/300\n",
            "3/3 - 0s - loss: 6.7189e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 107/300\n",
            "3/3 - 0s - loss: 6.2921e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 108/300\n",
            "3/3 - 0s - loss: 6.1385e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 109/300\n",
            "3/3 - 0s - loss: 5.9140e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 110/300\n",
            "3/3 - 0s - loss: 5.6117e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 111/300\n",
            "3/3 - 0s - loss: 5.3155e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 112/300\n",
            "3/3 - 0s - loss: 5.2860e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 113/300\n",
            "3/3 - 0s - loss: 4.8720e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 114/300\n",
            "3/3 - 0s - loss: 4.7512e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 115/300\n",
            "3/3 - 0s - loss: 4.6776e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 116/300\n",
            "3/3 - 0s - loss: 4.1801e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 117/300\n",
            "3/3 - 0s - loss: 4.0665e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 118/300\n",
            "3/3 - 0s - loss: 3.7952e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 119/300\n",
            "3/3 - 0s - loss: 3.8948e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 120/300\n",
            "3/3 - 0s - loss: 3.4721e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 121/300\n",
            "3/3 - 0s - loss: 3.3538e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 122/300\n",
            "3/3 - 0s - loss: 3.1662e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 123/300\n",
            "3/3 - 0s - loss: 2.9711e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 124/300\n",
            "3/3 - 0s - loss: 2.9336e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 125/300\n",
            "3/3 - 0s - loss: 2.5163e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 126/300\n",
            "3/3 - 0s - loss: 2.4663e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 127/300\n",
            "3/3 - 0s - loss: 2.2846e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 128/300\n",
            "3/3 - 0s - loss: 2.0872e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 129/300\n",
            "3/3 - 0s - loss: 1.9696e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 130/300\n",
            "3/3 - 0s - loss: 1.8266e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 131/300\n",
            "3/3 - 0s - loss: 1.7098e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 132/300\n",
            "3/3 - 0s - loss: 1.6054e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 133/300\n",
            "3/3 - 0s - loss: 1.4757e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 134/300\n",
            "3/3 - 0s - loss: 1.3794e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 135/300\n",
            "3/3 - 0s - loss: 1.2389e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 136/300\n",
            "3/3 - 0s - loss: 1.1863e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 137/300\n",
            "3/3 - 0s - loss: 1.0499e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 138/300\n",
            "3/3 - 0s - loss: 1.0783e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 139/300\n",
            "3/3 - 0s - loss: 9.9379e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 140/300\n",
            "3/3 - 0s - loss: 8.6130e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 141/300\n",
            "3/3 - 0s - loss: 8.0862e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 142/300\n",
            "3/3 - 0s - loss: 7.1712e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 143/300\n",
            "3/3 - 0s - loss: 6.9550e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 144/300\n",
            "3/3 - 0s - loss: 5.8969e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 145/300\n",
            "3/3 - 0s - loss: 6.0408e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 146/300\n",
            "3/3 - 0s - loss: 5.6599e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 147/300\n",
            "3/3 - 0s - loss: 4.5911e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 148/300\n",
            "3/3 - 0s - loss: 4.5008e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 149/300\n",
            "3/3 - 0s - loss: 3.6885e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 150/300\n",
            "3/3 - 0s - loss: 3.7491e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 151/300\n",
            "3/3 - 0s - loss: 3.6603e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 152/300\n",
            "3/3 - 0s - loss: 2.8115e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 153/300\n",
            "3/3 - 0s - loss: 2.8981e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 154/300\n",
            "3/3 - 0s - loss: 2.2874e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 155/300\n",
            "3/3 - 0s - loss: 2.3527e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 156/300\n",
            "3/3 - 0s - loss: 1.9453e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 157/300\n",
            "3/3 - 0s - loss: 1.9910e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 158/300\n",
            "3/3 - 0s - loss: 1.5525e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 159/300\n",
            "3/3 - 0s - loss: 1.4196e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 160/300\n",
            "3/3 - 0s - loss: 1.2443e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 161/300\n",
            "3/3 - 0s - loss: 1.2011e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 162/300\n",
            "3/3 - 0s - loss: 1.0039e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 163/300\n",
            "3/3 - 0s - loss: 9.7324e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 164/300\n",
            "3/3 - 0s - loss: 9.3469e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 165/300\n",
            "3/3 - 0s - loss: 8.2218e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 166/300\n",
            "3/3 - 0s - loss: 7.2884e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 167/300\n",
            "3/3 - 0s - loss: 6.8997e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 168/300\n",
            "3/3 - 0s - loss: 5.9305e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 169/300\n",
            "3/3 - 0s - loss: 5.7141e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 170/300\n",
            "3/3 - 0s - loss: 5.3345e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 171/300\n",
            "3/3 - 0s - loss: 5.0640e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 172/300\n",
            "3/3 - 0s - loss: 4.5414e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 173/300\n",
            "3/3 - 0s - loss: 4.4521e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 174/300\n",
            "3/3 - 0s - loss: 4.2679e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 175/300\n",
            "3/3 - 0s - loss: 3.9810e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 176/300\n",
            "3/3 - 0s - loss: 3.5736e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 177/300\n",
            "3/3 - 0s - loss: 3.9626e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 178/300\n",
            "3/3 - 0s - loss: 3.0849e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 179/300\n",
            "3/3 - 0s - loss: 3.7505e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 180/300\n",
            "3/3 - 0s - loss: 2.8990e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 181/300\n",
            "3/3 - 0s - loss: 2.9764e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 182/300\n",
            "3/3 - 0s - loss: 2.6591e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 183/300\n",
            "3/3 - 0s - loss: 2.3504e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 184/300\n",
            "3/3 - 0s - loss: 2.3239e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 185/300\n",
            "3/3 - 0s - loss: 2.3030e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 186/300\n",
            "3/3 - 0s - loss: 2.0884e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 187/300\n",
            "3/3 - 0s - loss: 1.9581e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 188/300\n",
            "3/3 - 0s - loss: 2.0279e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 189/300\n",
            "3/3 - 0s - loss: 1.8696e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 190/300\n",
            "3/3 - 0s - loss: 1.9095e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 191/300\n",
            "3/3 - 0s - loss: 1.8288e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 192/300\n",
            "3/3 - 0s - loss: 1.7184e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 193/300\n",
            "3/3 - 0s - loss: 1.7166e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 194/300\n",
            "3/3 - 0s - loss: 1.6488e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 195/300\n",
            "3/3 - 0s - loss: 1.4878e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 196/300\n",
            "3/3 - 0s - loss: 1.8281e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 197/300\n",
            "3/3 - 0s - loss: 1.5717e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 198/300\n",
            "3/3 - 0s - loss: 1.6674e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 199/300\n",
            "3/3 - 0s - loss: 1.6625e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 200/300\n",
            "3/3 - 0s - loss: 1.4952e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 201/300\n",
            "3/3 - 0s - loss: 1.5595e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 202/300\n",
            "3/3 - 0s - loss: 1.6708e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 203/300\n",
            "3/3 - 0s - loss: 1.4377e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 204/300\n",
            "3/3 - 0s - loss: 1.6212e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 205/300\n",
            "3/3 - 0s - loss: 1.3314e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 206/300\n",
            "3/3 - 0s - loss: 1.2305e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 207/300\n",
            "3/3 - 0s - loss: 1.3744e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 208/300\n",
            "3/3 - 0s - loss: 1.2602e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 209/300\n",
            "3/3 - 0s - loss: 1.2759e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 210/300\n",
            "3/3 - 0s - loss: 1.3559e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 211/300\n",
            "3/3 - 0s - loss: 1.2745e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 212/300\n",
            "3/3 - 0s - loss: 1.2470e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 213/300\n",
            "3/3 - 0s - loss: 1.4110e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 214/300\n",
            "3/3 - 0s - loss: 1.2528e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 215/300\n",
            "3/3 - 0s - loss: 1.1239e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 216/300\n",
            "3/3 - 0s - loss: 1.3153e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 217/300\n",
            "3/3 - 0s - loss: 1.1029e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 218/300\n",
            "3/3 - 0s - loss: 1.0135e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 219/300\n",
            "3/3 - 0s - loss: 1.0897e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 220/300\n",
            "3/3 - 0s - loss: 1.0155e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 221/300\n",
            "3/3 - 0s - loss: 1.0330e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 222/300\n",
            "3/3 - 0s - loss: 9.5908e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 223/300\n",
            "3/3 - 0s - loss: 1.1194e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 224/300\n",
            "3/3 - 0s - loss: 9.7523e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 225/300\n",
            "3/3 - 0s - loss: 9.9863e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 226/300\n",
            "3/3 - 0s - loss: 1.0018e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 227/300\n",
            "3/3 - 0s - loss: 9.4129e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 228/300\n",
            "3/3 - 0s - loss: 8.9054e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 229/300\n",
            "3/3 - 0s - loss: 1.0701e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 230/300\n",
            "3/3 - 0s - loss: 8.6253e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 231/300\n",
            "3/3 - 0s - loss: 9.5837e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 232/300\n",
            "3/3 - 0s - loss: 9.0362e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 233/300\n",
            "3/3 - 0s - loss: 1.0274e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 234/300\n",
            "3/3 - 0s - loss: 8.5118e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 235/300\n",
            "3/3 - 0s - loss: 8.9657e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 236/300\n",
            "3/3 - 0s - loss: 8.7887e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 237/300\n",
            "3/3 - 0s - loss: 9.6104e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 238/300\n",
            "3/3 - 0s - loss: 8.4171e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 239/300\n",
            "3/3 - 0s - loss: 8.8330e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 240/300\n",
            "3/3 - 0s - loss: 8.2715e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 241/300\n",
            "3/3 - 0s - loss: 8.1993e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 242/300\n",
            "3/3 - 0s - loss: 7.9832e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 243/300\n",
            "3/3 - 0s - loss: 8.5061e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 244/300\n",
            "3/3 - 0s - loss: 9.3084e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 245/300\n",
            "3/3 - 0s - loss: 8.1171e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 246/300\n",
            "3/3 - 0s - loss: 8.7892e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 247/300\n",
            "3/3 - 0s - loss: 9.2313e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 248/300\n",
            "3/3 - 0s - loss: 7.7347e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 249/300\n",
            "3/3 - 0s - loss: 7.9664e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 250/300\n",
            "3/3 - 0s - loss: 7.8229e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 251/300\n",
            "3/3 - 0s - loss: 6.8356e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 252/300\n",
            "3/3 - 0s - loss: 7.4322e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 253/300\n",
            "3/3 - 0s - loss: 7.2992e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 254/300\n",
            "3/3 - 0s - loss: 6.5559e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 255/300\n",
            "3/3 - 0s - loss: 6.7785e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 256/300\n",
            "3/3 - 0s - loss: 6.6178e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 257/300\n",
            "3/3 - 0s - loss: 6.6169e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 258/300\n",
            "3/3 - 0s - loss: 6.6723e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 259/300\n",
            "3/3 - 0s - loss: 8.0765e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 260/300\n",
            "3/3 - 0s - loss: 6.9914e-07 - 21ms/epoch - 7ms/step\n",
            "Epoch 261/300\n",
            "3/3 - 0s - loss: 7.7031e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 262/300\n",
            "3/3 - 0s - loss: 6.3851e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 263/300\n",
            "3/3 - 0s - loss: 6.1639e-07 - 21ms/epoch - 7ms/step\n",
            "Epoch 264/300\n",
            "3/3 - 0s - loss: 6.0007e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 265/300\n",
            "3/3 - 0s - loss: 5.8530e-07 - 21ms/epoch - 7ms/step\n",
            "Epoch 266/300\n",
            "3/3 - 0s - loss: 5.7399e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 267/300\n",
            "3/3 - 0s - loss: 5.8284e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 268/300\n",
            "3/3 - 0s - loss: 5.8562e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 269/300\n",
            "3/3 - 0s - loss: 5.9590e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 270/300\n",
            "3/3 - 0s - loss: 5.6793e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 271/300\n",
            "3/3 - 0s - loss: 5.5975e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 272/300\n",
            "3/3 - 0s - loss: 5.7844e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 273/300\n",
            "3/3 - 0s - loss: 5.4744e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 274/300\n",
            "3/3 - 0s - loss: 6.5387e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 275/300\n",
            "3/3 - 0s - loss: 5.6967e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 276/300\n",
            "3/3 - 0s - loss: 5.2588e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 277/300\n",
            "3/3 - 0s - loss: 6.6902e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 278/300\n",
            "3/3 - 0s - loss: 5.5461e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 279/300\n",
            "3/3 - 0s - loss: 5.2005e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 280/300\n",
            "3/3 - 0s - loss: 5.4390e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 281/300\n",
            "3/3 - 0s - loss: 5.2975e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 282/300\n",
            "3/3 - 0s - loss: 4.8406e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 283/300\n",
            "3/3 - 0s - loss: 5.0362e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 284/300\n",
            "3/3 - 0s - loss: 5.3146e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 285/300\n",
            "3/3 - 0s - loss: 4.8498e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 286/300\n",
            "3/3 - 0s - loss: 5.0048e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 287/300\n",
            "3/3 - 0s - loss: 5.2581e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 288/300\n",
            "3/3 - 0s - loss: 5.2410e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 289/300\n",
            "3/3 - 0s - loss: 4.7262e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 290/300\n",
            "3/3 - 0s - loss: 4.5102e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 291/300\n",
            "3/3 - 0s - loss: 4.6133e-07 - 21ms/epoch - 7ms/step\n",
            "Epoch 292/300\n",
            "3/3 - 0s - loss: 4.3743e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 293/300\n",
            "3/3 - 0s - loss: 4.4728e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 294/300\n",
            "3/3 - 0s - loss: 4.3803e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 295/300\n",
            "3/3 - 0s - loss: 4.4223e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 296/300\n",
            "3/3 - 0s - loss: 4.2742e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 297/300\n",
            "3/3 - 0s - loss: 5.0067e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 298/300\n",
            "3/3 - 0s - loss: 4.0271e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 299/300\n",
            "3/3 - 0s - loss: 5.2179e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 300/300\n",
            "3/3 - 0s - loss: 5.2098e-07 - 17ms/epoch - 6ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<keras.src.callbacks.History at 0x7bae5be705b0>"
            ]
          },
          "metadata": {},
          "execution_count": 225
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n-aNP4n3sqG_",
        "outputId": "c551b70b-0a61-4fd5-b072-16344f974cab",
        "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": 226,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "14/14 [==============================] - 0s 4ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7bae5bd03bb0>"
            ]
          },
          "metadata": {},
          "execution_count": 226
        },
        {
          "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": "788441d7-9ffd-4178-a4a4-0695a4b9b0bc"
      },
      "execution_count": 227,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1710116876.4160855\n",
            "Mon Mar 11 00:27:56 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": "83990713-b4db-4416-b369-2dddad3505bb"
      },
      "execution_count": 228,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1710116876.4269443\n",
            "Mon Mar 11 00:27:56 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BMxSJo5gtOmQ"
      },
      "source": [
        "# VS Fully Connected"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NKQx7stYswzU",
        "outputId": "b59b1cf6-5550-451a-da14-7a842d4536f0",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 11458
        }
      },
      "source": [
        "optimizer = Adam(learning_rate=0.0011)\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": 229,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "3/3 - 1s - loss: 0.6080 - 640ms/epoch - 213ms/step\n",
            "Epoch 2/300\n",
            "3/3 - 0s - loss: 0.2141 - 25ms/epoch - 8ms/step\n",
            "Epoch 3/300\n",
            "3/3 - 0s - loss: 0.1824 - 23ms/epoch - 8ms/step\n",
            "Epoch 4/300\n",
            "3/3 - 0s - loss: 0.0968 - 25ms/epoch - 8ms/step\n",
            "Epoch 5/300\n",
            "3/3 - 0s - loss: 0.0976 - 25ms/epoch - 8ms/step\n",
            "Epoch 6/300\n",
            "3/3 - 0s - loss: 0.0859 - 25ms/epoch - 8ms/step\n",
            "Epoch 7/300\n",
            "3/3 - 0s - loss: 0.0713 - 27ms/epoch - 9ms/step\n",
            "Epoch 8/300\n",
            "3/3 - 0s - loss: 0.0748 - 23ms/epoch - 8ms/step\n",
            "Epoch 9/300\n",
            "3/3 - 0s - loss: 0.0617 - 24ms/epoch - 8ms/step\n",
            "Epoch 10/300\n",
            "3/3 - 0s - loss: 0.0577 - 26ms/epoch - 9ms/step\n",
            "Epoch 11/300\n",
            "3/3 - 0s - loss: 0.0544 - 24ms/epoch - 8ms/step\n",
            "Epoch 12/300\n",
            "3/3 - 0s - loss: 0.0541 - 26ms/epoch - 9ms/step\n",
            "Epoch 13/300\n",
            "3/3 - 0s - loss: 0.0501 - 29ms/epoch - 10ms/step\n",
            "Epoch 14/300\n",
            "3/3 - 0s - loss: 0.0489 - 23ms/epoch - 8ms/step\n",
            "Epoch 15/300\n",
            "3/3 - 0s - loss: 0.0471 - 24ms/epoch - 8ms/step\n",
            "Epoch 16/300\n",
            "3/3 - 0s - loss: 0.0439 - 27ms/epoch - 9ms/step\n",
            "Epoch 17/300\n",
            "3/3 - 0s - loss: 0.0464 - 26ms/epoch - 9ms/step\n",
            "Epoch 18/300\n",
            "3/3 - 0s - loss: 0.0460 - 25ms/epoch - 8ms/step\n",
            "Epoch 19/300\n",
            "3/3 - 0s - loss: 0.0429 - 22ms/epoch - 7ms/step\n",
            "Epoch 20/300\n",
            "3/3 - 0s - loss: 0.0423 - 23ms/epoch - 8ms/step\n",
            "Epoch 21/300\n",
            "3/3 - 0s - loss: 0.0412 - 25ms/epoch - 8ms/step\n",
            "Epoch 22/300\n",
            "3/3 - 0s - loss: 0.0405 - 25ms/epoch - 8ms/step\n",
            "Epoch 23/300\n",
            "3/3 - 0s - loss: 0.0435 - 25ms/epoch - 8ms/step\n",
            "Epoch 24/300\n",
            "3/3 - 0s - loss: 0.0369 - 26ms/epoch - 9ms/step\n",
            "Epoch 25/300\n",
            "3/3 - 0s - loss: 0.0386 - 22ms/epoch - 7ms/step\n",
            "Epoch 26/300\n",
            "3/3 - 0s - loss: 0.0439 - 24ms/epoch - 8ms/step\n",
            "Epoch 27/300\n",
            "3/3 - 0s - loss: 0.0484 - 24ms/epoch - 8ms/step\n",
            "Epoch 28/300\n",
            "3/3 - 0s - loss: 0.0420 - 25ms/epoch - 8ms/step\n",
            "Epoch 29/300\n",
            "3/3 - 0s - loss: 0.0501 - 25ms/epoch - 8ms/step\n",
            "Epoch 30/300\n",
            "3/3 - 0s - loss: 0.0370 - 25ms/epoch - 8ms/step\n",
            "Epoch 31/300\n",
            "3/3 - 0s - loss: 0.0411 - 25ms/epoch - 8ms/step\n",
            "Epoch 32/300\n",
            "3/3 - 0s - loss: 0.0441 - 23ms/epoch - 8ms/step\n",
            "Epoch 33/300\n",
            "3/3 - 0s - loss: 0.0422 - 24ms/epoch - 8ms/step\n",
            "Epoch 34/300\n",
            "3/3 - 0s - loss: 0.0362 - 22ms/epoch - 7ms/step\n",
            "Epoch 35/300\n",
            "3/3 - 0s - loss: 0.0340 - 25ms/epoch - 8ms/step\n",
            "Epoch 36/300\n",
            "3/3 - 0s - loss: 0.0316 - 22ms/epoch - 7ms/step\n",
            "Epoch 37/300\n",
            "3/3 - 0s - loss: 0.0415 - 22ms/epoch - 7ms/step\n",
            "Epoch 38/300\n",
            "3/3 - 0s - loss: 0.0361 - 25ms/epoch - 8ms/step\n",
            "Epoch 39/300\n",
            "3/3 - 0s - loss: 0.0260 - 23ms/epoch - 8ms/step\n",
            "Epoch 40/300\n",
            "3/3 - 0s - loss: 0.0388 - 24ms/epoch - 8ms/step\n",
            "Epoch 41/300\n",
            "3/3 - 0s - loss: 0.0317 - 24ms/epoch - 8ms/step\n",
            "Epoch 42/300\n",
            "3/3 - 0s - loss: 0.0283 - 23ms/epoch - 8ms/step\n",
            "Epoch 43/300\n",
            "3/3 - 0s - loss: 0.0297 - 22ms/epoch - 7ms/step\n",
            "Epoch 44/300\n",
            "3/3 - 0s - loss: 0.0340 - 26ms/epoch - 9ms/step\n",
            "Epoch 45/300\n",
            "3/3 - 0s - loss: 0.0281 - 22ms/epoch - 7ms/step\n",
            "Epoch 46/300\n",
            "3/3 - 0s - loss: 0.0283 - 22ms/epoch - 7ms/step\n",
            "Epoch 47/300\n",
            "3/3 - 0s - loss: 0.0277 - 28ms/epoch - 9ms/step\n",
            "Epoch 48/300\n",
            "3/3 - 0s - loss: 0.0240 - 22ms/epoch - 7ms/step\n",
            "Epoch 49/300\n",
            "3/3 - 0s - loss: 0.0265 - 25ms/epoch - 8ms/step\n",
            "Epoch 50/300\n",
            "3/3 - 0s - loss: 0.0194 - 24ms/epoch - 8ms/step\n",
            "Epoch 51/300\n",
            "3/3 - 0s - loss: 0.0238 - 26ms/epoch - 9ms/step\n",
            "Epoch 52/300\n",
            "3/3 - 0s - loss: 0.0217 - 23ms/epoch - 8ms/step\n",
            "Epoch 53/300\n",
            "3/3 - 0s - loss: 0.0210 - 23ms/epoch - 8ms/step\n",
            "Epoch 54/300\n",
            "3/3 - 0s - loss: 0.0225 - 24ms/epoch - 8ms/step\n",
            "Epoch 55/300\n",
            "3/3 - 0s - loss: 0.0200 - 23ms/epoch - 8ms/step\n",
            "Epoch 56/300\n",
            "3/3 - 0s - loss: 0.0229 - 22ms/epoch - 7ms/step\n",
            "Epoch 57/300\n",
            "3/3 - 0s - loss: 0.0231 - 25ms/epoch - 8ms/step\n",
            "Epoch 58/300\n",
            "3/3 - 0s - loss: 0.0164 - 26ms/epoch - 9ms/step\n",
            "Epoch 59/300\n",
            "3/3 - 0s - loss: 0.0199 - 25ms/epoch - 8ms/step\n",
            "Epoch 60/300\n",
            "3/3 - 0s - loss: 0.0160 - 23ms/epoch - 8ms/step\n",
            "Epoch 61/300\n",
            "3/3 - 0s - loss: 0.0119 - 25ms/epoch - 8ms/step\n",
            "Epoch 62/300\n",
            "3/3 - 0s - loss: 0.0128 - 25ms/epoch - 8ms/step\n",
            "Epoch 63/300\n",
            "3/3 - 0s - loss: 0.0135 - 24ms/epoch - 8ms/step\n",
            "Epoch 64/300\n",
            "3/3 - 0s - loss: 0.0101 - 26ms/epoch - 9ms/step\n",
            "Epoch 65/300\n",
            "3/3 - 0s - loss: 0.0155 - 27ms/epoch - 9ms/step\n",
            "Epoch 66/300\n",
            "3/3 - 0s - loss: 0.0111 - 24ms/epoch - 8ms/step\n",
            "Epoch 67/300\n",
            "3/3 - 0s - loss: 0.0097 - 27ms/epoch - 9ms/step\n",
            "Epoch 68/300\n",
            "3/3 - 0s - loss: 0.0101 - 25ms/epoch - 8ms/step\n",
            "Epoch 69/300\n",
            "3/3 - 0s - loss: 0.0070 - 27ms/epoch - 9ms/step\n",
            "Epoch 70/300\n",
            "3/3 - 0s - loss: 0.0085 - 30ms/epoch - 10ms/step\n",
            "Epoch 71/300\n",
            "3/3 - 0s - loss: 0.0090 - 29ms/epoch - 10ms/step\n",
            "Epoch 72/300\n",
            "3/3 - 0s - loss: 0.0063 - 25ms/epoch - 8ms/step\n",
            "Epoch 73/300\n",
            "3/3 - 0s - loss: 0.0053 - 22ms/epoch - 7ms/step\n",
            "Epoch 74/300\n",
            "3/3 - 0s - loss: 0.0046 - 26ms/epoch - 9ms/step\n",
            "Epoch 75/300\n",
            "3/3 - 0s - loss: 0.0081 - 25ms/epoch - 8ms/step\n",
            "Epoch 76/300\n",
            "3/3 - 0s - loss: 0.0109 - 26ms/epoch - 9ms/step\n",
            "Epoch 77/300\n",
            "3/3 - 0s - loss: 0.0101 - 25ms/epoch - 8ms/step\n",
            "Epoch 78/300\n",
            "3/3 - 0s - loss: 0.0061 - 27ms/epoch - 9ms/step\n",
            "Epoch 79/300\n",
            "3/3 - 0s - loss: 0.0051 - 23ms/epoch - 8ms/step\n",
            "Epoch 80/300\n",
            "3/3 - 0s - loss: 0.0053 - 27ms/epoch - 9ms/step\n",
            "Epoch 81/300\n",
            "3/3 - 0s - loss: 0.0064 - 24ms/epoch - 8ms/step\n",
            "Epoch 82/300\n",
            "3/3 - 0s - loss: 0.0045 - 24ms/epoch - 8ms/step\n",
            "Epoch 83/300\n",
            "3/3 - 0s - loss: 0.0054 - 22ms/epoch - 7ms/step\n",
            "Epoch 84/300\n",
            "3/3 - 0s - loss: 0.0049 - 23ms/epoch - 8ms/step\n",
            "Epoch 85/300\n",
            "3/3 - 0s - loss: 0.0048 - 25ms/epoch - 8ms/step\n",
            "Epoch 86/300\n",
            "3/3 - 0s - loss: 0.0063 - 23ms/epoch - 8ms/step\n",
            "Epoch 87/300\n",
            "3/3 - 0s - loss: 0.0061 - 22ms/epoch - 7ms/step\n",
            "Epoch 88/300\n",
            "3/3 - 0s - loss: 0.0048 - 24ms/epoch - 8ms/step\n",
            "Epoch 89/300\n",
            "3/3 - 0s - loss: 0.0032 - 25ms/epoch - 8ms/step\n",
            "Epoch 90/300\n",
            "3/3 - 0s - loss: 0.0052 - 22ms/epoch - 7ms/step\n",
            "Epoch 91/300\n",
            "3/3 - 0s - loss: 0.0063 - 23ms/epoch - 8ms/step\n",
            "Epoch 92/300\n",
            "3/3 - 0s - loss: 0.0051 - 25ms/epoch - 8ms/step\n",
            "Epoch 93/300\n",
            "3/3 - 0s - loss: 0.0038 - 23ms/epoch - 8ms/step\n",
            "Epoch 94/300\n",
            "3/3 - 0s - loss: 0.0057 - 26ms/epoch - 9ms/step\n",
            "Epoch 95/300\n",
            "3/3 - 0s - loss: 0.0112 - 22ms/epoch - 7ms/step\n",
            "Epoch 96/300\n",
            "3/3 - 0s - loss: 0.0124 - 25ms/epoch - 8ms/step\n",
            "Epoch 97/300\n",
            "3/3 - 0s - loss: 0.0149 - 26ms/epoch - 9ms/step\n",
            "Epoch 98/300\n",
            "3/3 - 0s - loss: 0.0093 - 24ms/epoch - 8ms/step\n",
            "Epoch 99/300\n",
            "3/3 - 0s - loss: 0.0091 - 29ms/epoch - 10ms/step\n",
            "Epoch 100/300\n",
            "3/3 - 0s - loss: 0.0070 - 29ms/epoch - 10ms/step\n",
            "Epoch 101/300\n",
            "3/3 - 0s - loss: 0.0040 - 24ms/epoch - 8ms/step\n",
            "Epoch 102/300\n",
            "3/3 - 0s - loss: 0.0040 - 25ms/epoch - 8ms/step\n",
            "Epoch 103/300\n",
            "3/3 - 0s - loss: 0.0034 - 25ms/epoch - 8ms/step\n",
            "Epoch 104/300\n",
            "3/3 - 0s - loss: 0.0041 - 25ms/epoch - 8ms/step\n",
            "Epoch 105/300\n",
            "3/3 - 0s - loss: 0.0033 - 26ms/epoch - 9ms/step\n",
            "Epoch 106/300\n",
            "3/3 - 0s - loss: 0.0029 - 30ms/epoch - 10ms/step\n",
            "Epoch 107/300\n",
            "3/3 - 0s - loss: 0.0030 - 26ms/epoch - 9ms/step\n",
            "Epoch 108/300\n",
            "3/3 - 0s - loss: 0.0030 - 24ms/epoch - 8ms/step\n",
            "Epoch 109/300\n",
            "3/3 - 0s - loss: 0.0043 - 24ms/epoch - 8ms/step\n",
            "Epoch 110/300\n",
            "3/3 - 0s - loss: 0.0035 - 23ms/epoch - 8ms/step\n",
            "Epoch 111/300\n",
            "3/3 - 0s - loss: 0.0028 - 24ms/epoch - 8ms/step\n",
            "Epoch 112/300\n",
            "3/3 - 0s - loss: 9.6445e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 113/300\n",
            "3/3 - 0s - loss: 0.0016 - 26ms/epoch - 9ms/step\n",
            "Epoch 114/300\n",
            "3/3 - 0s - loss: 0.0019 - 24ms/epoch - 8ms/step\n",
            "Epoch 115/300\n",
            "3/3 - 0s - loss: 0.0018 - 24ms/epoch - 8ms/step\n",
            "Epoch 116/300\n",
            "3/3 - 0s - loss: 0.0030 - 28ms/epoch - 9ms/step\n",
            "Epoch 117/300\n",
            "3/3 - 0s - loss: 0.0029 - 22ms/epoch - 7ms/step\n",
            "Epoch 118/300\n",
            "3/3 - 0s - loss: 0.0016 - 22ms/epoch - 7ms/step\n",
            "Epoch 119/300\n",
            "3/3 - 0s - loss: 0.0016 - 26ms/epoch - 9ms/step\n",
            "Epoch 120/300\n",
            "3/3 - 0s - loss: 0.0015 - 24ms/epoch - 8ms/step\n",
            "Epoch 121/300\n",
            "3/3 - 0s - loss: 0.0015 - 24ms/epoch - 8ms/step\n",
            "Epoch 122/300\n",
            "3/3 - 0s - loss: 0.0021 - 26ms/epoch - 9ms/step\n",
            "Epoch 123/300\n",
            "3/3 - 0s - loss: 0.0017 - 26ms/epoch - 9ms/step\n",
            "Epoch 124/300\n",
            "3/3 - 0s - loss: 0.0013 - 26ms/epoch - 9ms/step\n",
            "Epoch 125/300\n",
            "3/3 - 0s - loss: 0.0010 - 22ms/epoch - 7ms/step\n",
            "Epoch 126/300\n",
            "3/3 - 0s - loss: 6.3838e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 127/300\n",
            "3/3 - 0s - loss: 5.9174e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 128/300\n",
            "3/3 - 0s - loss: 3.0130e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 129/300\n",
            "3/3 - 0s - loss: 2.6712e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 130/300\n",
            "3/3 - 0s - loss: 1.9238e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 131/300\n",
            "3/3 - 0s - loss: 1.7283e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 132/300\n",
            "3/3 - 0s - loss: 2.1383e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 133/300\n",
            "3/3 - 0s - loss: 4.6826e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 134/300\n",
            "3/3 - 0s - loss: 2.9673e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 135/300\n",
            "3/3 - 0s - loss: 0.0011 - 23ms/epoch - 8ms/step\n",
            "Epoch 136/300\n",
            "3/3 - 0s - loss: 0.0016 - 23ms/epoch - 8ms/step\n",
            "Epoch 137/300\n",
            "3/3 - 0s - loss: 0.0012 - 22ms/epoch - 7ms/step\n",
            "Epoch 138/300\n",
            "3/3 - 0s - loss: 8.9232e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 139/300\n",
            "3/3 - 0s - loss: 0.0016 - 21ms/epoch - 7ms/step\n",
            "Epoch 140/300\n",
            "3/3 - 0s - loss: 0.0016 - 23ms/epoch - 8ms/step\n",
            "Epoch 141/300\n",
            "3/3 - 0s - loss: 0.0022 - 25ms/epoch - 8ms/step\n",
            "Epoch 142/300\n",
            "3/3 - 0s - loss: 0.0022 - 23ms/epoch - 8ms/step\n",
            "Epoch 143/300\n",
            "3/3 - 0s - loss: 0.0027 - 25ms/epoch - 8ms/step\n",
            "Epoch 144/300\n",
            "3/3 - 0s - loss: 0.0025 - 25ms/epoch - 8ms/step\n",
            "Epoch 145/300\n",
            "3/3 - 0s - loss: 0.0028 - 24ms/epoch - 8ms/step\n",
            "Epoch 146/300\n",
            "3/3 - 0s - loss: 0.0039 - 26ms/epoch - 9ms/step\n",
            "Epoch 147/300\n",
            "3/3 - 0s - loss: 0.0022 - 22ms/epoch - 7ms/step\n",
            "Epoch 148/300\n",
            "3/3 - 0s - loss: 0.0016 - 23ms/epoch - 8ms/step\n",
            "Epoch 149/300\n",
            "3/3 - 0s - loss: 0.0013 - 22ms/epoch - 7ms/step\n",
            "Epoch 150/300\n",
            "3/3 - 0s - loss: 0.0017 - 23ms/epoch - 8ms/step\n",
            "Epoch 151/300\n",
            "3/3 - 0s - loss: 0.0018 - 25ms/epoch - 8ms/step\n",
            "Epoch 152/300\n",
            "3/3 - 0s - loss: 0.0018 - 21ms/epoch - 7ms/step\n",
            "Epoch 153/300\n",
            "3/3 - 0s - loss: 7.4295e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 154/300\n",
            "3/3 - 0s - loss: 7.4147e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 155/300\n",
            "3/3 - 0s - loss: 3.7528e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 156/300\n",
            "3/3 - 0s - loss: 4.8752e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 157/300\n",
            "3/3 - 0s - loss: 2.8042e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 158/300\n",
            "3/3 - 0s - loss: 3.7335e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 159/300\n",
            "3/3 - 0s - loss: 5.2867e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 160/300\n",
            "3/3 - 0s - loss: 4.7025e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 161/300\n",
            "3/3 - 0s - loss: 4.1663e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 162/300\n",
            "3/3 - 0s - loss: 2.1263e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 163/300\n",
            "3/3 - 0s - loss: 1.4483e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 164/300\n",
            "3/3 - 0s - loss: 1.8093e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 165/300\n",
            "3/3 - 0s - loss: 2.8321e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 166/300\n",
            "3/3 - 0s - loss: 3.2828e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 167/300\n",
            "3/3 - 0s - loss: 3.7783e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 168/300\n",
            "3/3 - 0s - loss: 2.2074e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 169/300\n",
            "3/3 - 0s - loss: 7.6103e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 170/300\n",
            "3/3 - 0s - loss: 5.9573e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 171/300\n",
            "3/3 - 0s - loss: 2.0730e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 172/300\n",
            "3/3 - 0s - loss: 1.6722e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 173/300\n",
            "3/3 - 0s - loss: 1.9445e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 174/300\n",
            "3/3 - 0s - loss: 1.4675e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 175/300\n",
            "3/3 - 0s - loss: 9.5040e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 176/300\n",
            "3/3 - 0s - loss: 1.1023e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 177/300\n",
            "3/3 - 0s - loss: 8.9213e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 178/300\n",
            "3/3 - 0s - loss: 4.8163e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 179/300\n",
            "3/3 - 0s - loss: 8.1485e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 180/300\n",
            "3/3 - 0s - loss: 3.4767e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 181/300\n",
            "3/3 - 0s - loss: 3.6180e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 182/300\n",
            "3/3 - 0s - loss: 3.6711e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 183/300\n",
            "3/3 - 0s - loss: 3.7703e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 184/300\n",
            "3/3 - 0s - loss: 3.3036e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 185/300\n",
            "3/3 - 0s - loss: 3.3608e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 186/300\n",
            "3/3 - 0s - loss: 2.8106e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 187/300\n",
            "3/3 - 0s - loss: 2.5843e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 188/300\n",
            "3/3 - 0s - loss: 2.1514e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 189/300\n",
            "3/3 - 0s - loss: 3.4841e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 190/300\n",
            "3/3 - 0s - loss: 3.6420e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 191/300\n",
            "3/3 - 0s - loss: 1.7926e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 192/300\n",
            "3/3 - 0s - loss: 2.2379e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 193/300\n",
            "3/3 - 0s - loss: 3.7451e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 194/300\n",
            "3/3 - 0s - loss: 2.8837e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 195/300\n",
            "3/3 - 0s - loss: 3.7000e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 196/300\n",
            "3/3 - 0s - loss: 3.1412e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 197/300\n",
            "3/3 - 0s - loss: 6.8387e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 198/300\n",
            "3/3 - 0s - loss: 9.6766e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 199/300\n",
            "3/3 - 0s - loss: 1.2230e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 200/300\n",
            "3/3 - 0s - loss: 9.9837e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 201/300\n",
            "3/3 - 0s - loss: 1.4995e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 202/300\n",
            "3/3 - 0s - loss: 8.4236e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 203/300\n",
            "3/3 - 0s - loss: 7.6261e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 204/300\n",
            "3/3 - 0s - loss: 9.1190e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 205/300\n",
            "3/3 - 0s - loss: 7.8201e-05 - 27ms/epoch - 9ms/step\n",
            "Epoch 206/300\n",
            "3/3 - 0s - loss: 5.9410e-05 - 25ms/epoch - 8ms/step\n",
            "Epoch 207/300\n",
            "3/3 - 0s - loss: 6.6694e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 208/300\n",
            "3/3 - 0s - loss: 7.9050e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 209/300\n",
            "3/3 - 0s - loss: 9.1628e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 210/300\n",
            "3/3 - 0s - loss: 6.7359e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 211/300\n",
            "3/3 - 0s - loss: 8.6735e-05 - 23ms/epoch - 8ms/step\n",
            "Epoch 212/300\n",
            "3/3 - 0s - loss: 1.6062e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 213/300\n",
            "3/3 - 0s - loss: 1.0176e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 214/300\n",
            "3/3 - 0s - loss: 1.0490e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 215/300\n",
            "3/3 - 0s - loss: 2.6227e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 216/300\n",
            "3/3 - 0s - loss: 2.5275e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 217/300\n",
            "3/3 - 0s - loss: 3.2702e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 218/300\n",
            "3/3 - 0s - loss: 4.2904e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 219/300\n",
            "3/3 - 0s - loss: 3.9187e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 220/300\n",
            "3/3 - 0s - loss: 6.0436e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 221/300\n",
            "3/3 - 0s - loss: 6.2528e-04 - 28ms/epoch - 9ms/step\n",
            "Epoch 222/300\n",
            "3/3 - 0s - loss: 4.3633e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 223/300\n",
            "3/3 - 0s - loss: 2.4915e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 224/300\n",
            "3/3 - 0s - loss: 2.4023e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 225/300\n",
            "3/3 - 0s - loss: 2.5302e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 226/300\n",
            "3/3 - 0s - loss: 3.2185e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 227/300\n",
            "3/3 - 0s - loss: 9.0216e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 228/300\n",
            "3/3 - 0s - loss: 6.4205e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 229/300\n",
            "3/3 - 0s - loss: 4.1870e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 230/300\n",
            "3/3 - 0s - loss: 4.0085e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 231/300\n",
            "3/3 - 0s - loss: 2.6007e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 232/300\n",
            "3/3 - 0s - loss: 2.3759e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 233/300\n",
            "3/3 - 0s - loss: 1.6374e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 234/300\n",
            "3/3 - 0s - loss: 1.4209e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 235/300\n",
            "3/3 - 0s - loss: 9.7170e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 236/300\n",
            "3/3 - 0s - loss: 2.4285e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 237/300\n",
            "3/3 - 0s - loss: 1.5218e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 238/300\n",
            "3/3 - 0s - loss: 2.7412e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 239/300\n",
            "3/3 - 0s - loss: 2.1668e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 240/300\n",
            "3/3 - 0s - loss: 4.1979e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 241/300\n",
            "3/3 - 0s - loss: 6.0722e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 242/300\n",
            "3/3 - 0s - loss: 7.0405e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 243/300\n",
            "3/3 - 0s - loss: 8.3043e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 244/300\n",
            "3/3 - 0s - loss: 0.0018 - 24ms/epoch - 8ms/step\n",
            "Epoch 245/300\n",
            "3/3 - 0s - loss: 0.0027 - 24ms/epoch - 8ms/step\n",
            "Epoch 246/300\n",
            "3/3 - 0s - loss: 0.0023 - 24ms/epoch - 8ms/step\n",
            "Epoch 247/300\n",
            "3/3 - 0s - loss: 0.0019 - 26ms/epoch - 9ms/step\n",
            "Epoch 248/300\n",
            "3/3 - 0s - loss: 0.0023 - 24ms/epoch - 8ms/step\n",
            "Epoch 249/300\n",
            "3/3 - 0s - loss: 0.0019 - 22ms/epoch - 7ms/step\n",
            "Epoch 250/300\n",
            "3/3 - 0s - loss: 0.0014 - 22ms/epoch - 7ms/step\n",
            "Epoch 251/300\n",
            "3/3 - 0s - loss: 0.0012 - 26ms/epoch - 9ms/step\n",
            "Epoch 252/300\n",
            "3/3 - 0s - loss: 0.0018 - 27ms/epoch - 9ms/step\n",
            "Epoch 253/300\n",
            "3/3 - 0s - loss: 0.0057 - 23ms/epoch - 8ms/step\n",
            "Epoch 254/300\n",
            "3/3 - 0s - loss: 0.0061 - 24ms/epoch - 8ms/step\n",
            "Epoch 255/300\n",
            "3/3 - 0s - loss: 0.0035 - 24ms/epoch - 8ms/step\n",
            "Epoch 256/300\n",
            "3/3 - 0s - loss: 0.0020 - 26ms/epoch - 9ms/step\n",
            "Epoch 257/300\n",
            "3/3 - 0s - loss: 0.0020 - 25ms/epoch - 8ms/step\n",
            "Epoch 258/300\n",
            "3/3 - 0s - loss: 0.0022 - 24ms/epoch - 8ms/step\n",
            "Epoch 259/300\n",
            "3/3 - 0s - loss: 0.0033 - 24ms/epoch - 8ms/step\n",
            "Epoch 260/300\n",
            "3/3 - 0s - loss: 0.0033 - 25ms/epoch - 8ms/step\n",
            "Epoch 261/300\n",
            "3/3 - 0s - loss: 0.0066 - 24ms/epoch - 8ms/step\n",
            "Epoch 262/300\n",
            "3/3 - 0s - loss: 0.0058 - 24ms/epoch - 8ms/step\n",
            "Epoch 263/300\n",
            "3/3 - 0s - loss: 0.0120 - 21ms/epoch - 7ms/step\n",
            "Epoch 264/300\n",
            "3/3 - 0s - loss: 0.0080 - 27ms/epoch - 9ms/step\n",
            "Epoch 265/300\n",
            "3/3 - 0s - loss: 0.0067 - 22ms/epoch - 7ms/step\n",
            "Epoch 266/300\n",
            "3/3 - 0s - loss: 0.0050 - 25ms/epoch - 8ms/step\n",
            "Epoch 267/300\n",
            "3/3 - 0s - loss: 0.0060 - 24ms/epoch - 8ms/step\n",
            "Epoch 268/300\n",
            "3/3 - 0s - loss: 0.0040 - 25ms/epoch - 8ms/step\n",
            "Epoch 269/300\n",
            "3/3 - 0s - loss: 0.0035 - 24ms/epoch - 8ms/step\n",
            "Epoch 270/300\n",
            "3/3 - 0s - loss: 0.0031 - 24ms/epoch - 8ms/step\n",
            "Epoch 271/300\n",
            "3/3 - 0s - loss: 0.0019 - 23ms/epoch - 8ms/step\n",
            "Epoch 272/300\n",
            "3/3 - 0s - loss: 0.0025 - 24ms/epoch - 8ms/step\n",
            "Epoch 273/300\n",
            "3/3 - 0s - loss: 0.0020 - 24ms/epoch - 8ms/step\n",
            "Epoch 274/300\n",
            "3/3 - 0s - loss: 6.8266e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 275/300\n",
            "3/3 - 0s - loss: 7.6913e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 276/300\n",
            "3/3 - 0s - loss: 7.1623e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 277/300\n",
            "3/3 - 0s - loss: 0.0015 - 23ms/epoch - 8ms/step\n",
            "Epoch 278/300\n",
            "3/3 - 0s - loss: 0.0016 - 22ms/epoch - 7ms/step\n",
            "Epoch 279/300\n",
            "3/3 - 0s - loss: 5.2539e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 280/300\n",
            "3/3 - 0s - loss: 4.3213e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 281/300\n",
            "3/3 - 0s - loss: 4.2704e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 282/300\n",
            "3/3 - 0s - loss: 5.0896e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 283/300\n",
            "3/3 - 0s - loss: 4.9495e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 284/300\n",
            "3/3 - 0s - loss: 5.8526e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 285/300\n",
            "3/3 - 0s - loss: 6.0535e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 286/300\n",
            "3/3 - 0s - loss: 5.7920e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 287/300\n",
            "3/3 - 0s - loss: 5.0555e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 288/300\n",
            "3/3 - 0s - loss: 8.9699e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 289/300\n",
            "3/3 - 0s - loss: 0.0013 - 25ms/epoch - 8ms/step\n",
            "Epoch 290/300\n",
            "3/3 - 0s - loss: 9.0340e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 291/300\n",
            "3/3 - 0s - loss: 8.6131e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 292/300\n",
            "3/3 - 0s - loss: 5.0907e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 293/300\n",
            "3/3 - 0s - loss: 4.2730e-04 - 24ms/epoch - 8ms/step\n",
            "Epoch 294/300\n",
            "3/3 - 0s - loss: 3.2795e-04 - 27ms/epoch - 9ms/step\n",
            "Epoch 295/300\n",
            "3/3 - 0s - loss: 4.3928e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 296/300\n",
            "3/3 - 0s - loss: 3.4398e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 297/300\n",
            "3/3 - 0s - loss: 3.9749e-04 - 25ms/epoch - 8ms/step\n",
            "Epoch 298/300\n",
            "3/3 - 0s - loss: 3.8221e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 299/300\n",
            "3/3 - 0s - loss: 1.9437e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 300/300\n",
            "3/3 - 0s - loss: 3.1148e-04 - 24ms/epoch - 8ms/step\n",
            "14/14 [==============================] - 0s 3ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7bae5b4b6560>"
            ]
          },
          "metadata": {},
          "execution_count": 229
        },
        {
          "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": "05e43d32-e3b7-4caa-f5bb-7a25c4903c4e"
      },
      "execution_count": 230,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1710116885.4541693\n",
            "Mon Mar 11 00:28:05 2024\n"
          ]
        }
      ]
    }
  ]
}