[404218]: / Code / Tensor Network vs FC Explainability / Dataset 4 / DS4 1TN 1FC TPU kkawchak.ipynb

Download this file

1271 lines (1271 with data), 153.8 kB

{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "machine_shape": "hm",
      "gpuType": "V28"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "TPU"
  },
  "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",
        "import random\n",
        "import time\n",
        "import pandas as pd\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)\n",
        "# Explainability code assistance aided by ChatGPT3.5\n",
        "# 2021 Kelly, D. TensorFlow Explainable AI tutorial https://www.youtube.com/watch?v=6xePkn3-LME"
      ],
      "execution_count": 68,
      "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": 69,
      "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": "bbKsmK8wIFTp",
        "outputId": "8bd2ca29-6459-42ce-d79a-55c63f7b9294",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "Dense = tf.keras.layers.Dense\n",
        "tn_model = tf.keras.Sequential(\n",
        "    [\n",
        "     tf.keras.Input(shape=(2,)),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     # Start Modified Layers\n",
        "     TNLayer(),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     # Finish Modified Layers\n",
        "     Dense(1, activation=None)])\n",
        "tn_model.summary()"
      ],
      "execution_count": 70,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_6\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_18 (Dense)            (None, 1024)              3072      \n",
            "                                                                 \n",
            " tn_layer_6 (TNLayer)        (None, 1024)              5120      \n",
            "                                                                 \n",
            " dense_19 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_20 (Dense)            (None, 1)                 1025      \n",
            "                                                                 \n",
            "=================================================================\n",
            "Total params: 1058817 (4.04 MB)\n",
            "Trainable params: 1058817 (4.04 MB)\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": [
        "# Generate points forming intersecting ellipses\n",
        "theta1 = np.linspace(0, 2*np.pi, 240)  # 480/2 = 240 points for each ellipse\n",
        "theta2 = np.linspace(0, 2*np.pi, 240)\n",
        "\n",
        "a1, b1 = 2, 1  # Parameters for ellipse 1\n",
        "a2, b2 = 1, 2  # Parameters for ellipse 2\n",
        "\n",
        "x1 = a1 * np.cos(theta1)\n",
        "y1 = b1 * np.sin(theta1)\n",
        "\n",
        "x2 = a2 * np.cos(theta2)\n",
        "y2 = b2 * np.sin(theta2)\n",
        "\n",
        "X = np.concatenate([np.column_stack((x1, y1)), np.column_stack((x2, y2))])\n",
        "Y = np.concatenate([np.ones((240)), -np.ones((240))])"
      ],
      "execution_count": 71,
      "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": "c65f30d1-3ef1-457d-d597-3f88041ea72b"
      },
      "execution_count": 72,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1712722612.9000425\n",
            "Wed Apr 10 04:16:52 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "crc0q1vbIyTj",
        "outputId": "d5bb99c5-f829-4599-f3ca-8b9d874c8edc",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "tn_model.compile(optimizer=\"adam\", loss=\"mean_squared_error\")\n",
        "tn_model.fit(X, Y, epochs=300, verbose=2)"
      ],
      "execution_count": 73,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "15/15 - 1s - loss: 0.9666 - 979ms/epoch - 65ms/step\n",
            "Epoch 2/300\n",
            "15/15 - 0s - loss: 0.7884 - 118ms/epoch - 8ms/step\n",
            "Epoch 3/300\n",
            "15/15 - 0s - loss: 0.6992 - 105ms/epoch - 7ms/step\n",
            "Epoch 4/300\n",
            "15/15 - 0s - loss: 0.6610 - 117ms/epoch - 8ms/step\n",
            "Epoch 5/300\n",
            "15/15 - 0s - loss: 0.6389 - 109ms/epoch - 7ms/step\n",
            "Epoch 6/300\n",
            "15/15 - 0s - loss: 0.6117 - 113ms/epoch - 8ms/step\n",
            "Epoch 7/300\n",
            "15/15 - 0s - loss: 0.5875 - 101ms/epoch - 7ms/step\n",
            "Epoch 8/300\n",
            "15/15 - 0s - loss: 0.5493 - 99ms/epoch - 7ms/step\n",
            "Epoch 9/300\n",
            "15/15 - 0s - loss: 0.4857 - 104ms/epoch - 7ms/step\n",
            "Epoch 10/300\n",
            "15/15 - 0s - loss: 0.4628 - 95ms/epoch - 6ms/step\n",
            "Epoch 11/300\n",
            "15/15 - 0s - loss: 0.3861 - 98ms/epoch - 7ms/step\n",
            "Epoch 12/300\n",
            "15/15 - 0s - loss: 0.3248 - 101ms/epoch - 7ms/step\n",
            "Epoch 13/300\n",
            "15/15 - 0s - loss: 0.2579 - 97ms/epoch - 6ms/step\n",
            "Epoch 14/300\n",
            "15/15 - 0s - loss: 0.2295 - 91ms/epoch - 6ms/step\n",
            "Epoch 15/300\n",
            "15/15 - 0s - loss: 0.1943 - 98ms/epoch - 7ms/step\n",
            "Epoch 16/300\n",
            "15/15 - 0s - loss: 0.1690 - 91ms/epoch - 6ms/step\n",
            "Epoch 17/300\n",
            "15/15 - 0s - loss: 0.1495 - 108ms/epoch - 7ms/step\n",
            "Epoch 18/300\n",
            "15/15 - 0s - loss: 0.1579 - 102ms/epoch - 7ms/step\n",
            "Epoch 19/300\n",
            "15/15 - 0s - loss: 0.1626 - 102ms/epoch - 7ms/step\n",
            "Epoch 20/300\n",
            "15/15 - 0s - loss: 0.1795 - 100ms/epoch - 7ms/step\n",
            "Epoch 21/300\n",
            "15/15 - 0s - loss: 0.1505 - 95ms/epoch - 6ms/step\n",
            "Epoch 22/300\n",
            "15/15 - 0s - loss: 0.1374 - 94ms/epoch - 6ms/step\n",
            "Epoch 23/300\n",
            "15/15 - 0s - loss: 0.1396 - 99ms/epoch - 7ms/step\n",
            "Epoch 24/300\n",
            "15/15 - 0s - loss: 0.1527 - 91ms/epoch - 6ms/step\n",
            "Epoch 25/300\n",
            "15/15 - 0s - loss: 0.1415 - 99ms/epoch - 7ms/step\n",
            "Epoch 26/300\n",
            "15/15 - 0s - loss: 0.1239 - 90ms/epoch - 6ms/step\n",
            "Epoch 27/300\n",
            "15/15 - 0s - loss: 0.1159 - 95ms/epoch - 6ms/step\n",
            "Epoch 28/300\n",
            "15/15 - 0s - loss: 0.1195 - 102ms/epoch - 7ms/step\n",
            "Epoch 29/300\n",
            "15/15 - 0s - loss: 0.1171 - 102ms/epoch - 7ms/step\n",
            "Epoch 30/300\n",
            "15/15 - 0s - loss: 0.1188 - 94ms/epoch - 6ms/step\n",
            "Epoch 31/300\n",
            "15/15 - 0s - loss: 0.1353 - 93ms/epoch - 6ms/step\n",
            "Epoch 32/300\n",
            "15/15 - 0s - loss: 0.1093 - 94ms/epoch - 6ms/step\n",
            "Epoch 33/300\n",
            "15/15 - 0s - loss: 0.0972 - 94ms/epoch - 6ms/step\n",
            "Epoch 34/300\n",
            "15/15 - 0s - loss: 0.1074 - 95ms/epoch - 6ms/step\n",
            "Epoch 35/300\n",
            "15/15 - 0s - loss: 0.1110 - 99ms/epoch - 7ms/step\n",
            "Epoch 36/300\n",
            "15/15 - 0s - loss: 0.1016 - 106ms/epoch - 7ms/step\n",
            "Epoch 37/300\n",
            "15/15 - 0s - loss: 0.1058 - 93ms/epoch - 6ms/step\n",
            "Epoch 38/300\n",
            "15/15 - 0s - loss: 0.0952 - 101ms/epoch - 7ms/step\n",
            "Epoch 39/300\n",
            "15/15 - 0s - loss: 0.1076 - 97ms/epoch - 6ms/step\n",
            "Epoch 40/300\n",
            "15/15 - 0s - loss: 0.0971 - 105ms/epoch - 7ms/step\n",
            "Epoch 41/300\n",
            "15/15 - 0s - loss: 0.1050 - 92ms/epoch - 6ms/step\n",
            "Epoch 42/300\n",
            "15/15 - 0s - loss: 0.0837 - 98ms/epoch - 7ms/step\n",
            "Epoch 43/300\n",
            "15/15 - 0s - loss: 0.0869 - 94ms/epoch - 6ms/step\n",
            "Epoch 44/300\n",
            "15/15 - 0s - loss: 0.0972 - 97ms/epoch - 6ms/step\n",
            "Epoch 45/300\n",
            "15/15 - 0s - loss: 0.0907 - 99ms/epoch - 7ms/step\n",
            "Epoch 46/300\n",
            "15/15 - 0s - loss: 0.0875 - 103ms/epoch - 7ms/step\n",
            "Epoch 47/300\n",
            "15/15 - 0s - loss: 0.0989 - 100ms/epoch - 7ms/step\n",
            "Epoch 48/300\n",
            "15/15 - 0s - loss: 0.1156 - 107ms/epoch - 7ms/step\n",
            "Epoch 49/300\n",
            "15/15 - 0s - loss: 0.1018 - 93ms/epoch - 6ms/step\n",
            "Epoch 50/300\n",
            "15/15 - 0s - loss: 0.0818 - 100ms/epoch - 7ms/step\n",
            "Epoch 51/300\n",
            "15/15 - 0s - loss: 0.0933 - 99ms/epoch - 7ms/step\n",
            "Epoch 52/300\n",
            "15/15 - 0s - loss: 0.0902 - 100ms/epoch - 7ms/step\n",
            "Epoch 53/300\n",
            "15/15 - 0s - loss: 0.1063 - 95ms/epoch - 6ms/step\n",
            "Epoch 54/300\n",
            "15/15 - 0s - loss: 0.1033 - 103ms/epoch - 7ms/step\n",
            "Epoch 55/300\n",
            "15/15 - 0s - loss: 0.0862 - 90ms/epoch - 6ms/step\n",
            "Epoch 56/300\n",
            "15/15 - 0s - loss: 0.0756 - 101ms/epoch - 7ms/step\n",
            "Epoch 57/300\n",
            "15/15 - 0s - loss: 0.0829 - 102ms/epoch - 7ms/step\n",
            "Epoch 58/300\n",
            "15/15 - 0s - loss: 0.0994 - 100ms/epoch - 7ms/step\n",
            "Epoch 59/300\n",
            "15/15 - 0s - loss: 0.0946 - 103ms/epoch - 7ms/step\n",
            "Epoch 60/300\n",
            "15/15 - 0s - loss: 0.1107 - 97ms/epoch - 6ms/step\n",
            "Epoch 61/300\n",
            "15/15 - 0s - loss: 0.0862 - 97ms/epoch - 6ms/step\n",
            "Epoch 62/300\n",
            "15/15 - 0s - loss: 0.0840 - 90ms/epoch - 6ms/step\n",
            "Epoch 63/300\n",
            "15/15 - 0s - loss: 0.0747 - 99ms/epoch - 7ms/step\n",
            "Epoch 64/300\n",
            "15/15 - 0s - loss: 0.0788 - 103ms/epoch - 7ms/step\n",
            "Epoch 65/300\n",
            "15/15 - 0s - loss: 0.0728 - 94ms/epoch - 6ms/step\n",
            "Epoch 66/300\n",
            "15/15 - 0s - loss: 0.0673 - 97ms/epoch - 6ms/step\n",
            "Epoch 67/300\n",
            "15/15 - 0s - loss: 0.0640 - 94ms/epoch - 6ms/step\n",
            "Epoch 68/300\n",
            "15/15 - 0s - loss: 0.0695 - 93ms/epoch - 6ms/step\n",
            "Epoch 69/300\n",
            "15/15 - 0s - loss: 0.0615 - 103ms/epoch - 7ms/step\n",
            "Epoch 70/300\n",
            "15/15 - 0s - loss: 0.0637 - 104ms/epoch - 7ms/step\n",
            "Epoch 71/300\n",
            "15/15 - 0s - loss: 0.0767 - 102ms/epoch - 7ms/step\n",
            "Epoch 72/300\n",
            "15/15 - 0s - loss: 0.0740 - 104ms/epoch - 7ms/step\n",
            "Epoch 73/300\n",
            "15/15 - 0s - loss: 0.0820 - 97ms/epoch - 6ms/step\n",
            "Epoch 74/300\n",
            "15/15 - 0s - loss: 0.0724 - 97ms/epoch - 6ms/step\n",
            "Epoch 75/300\n",
            "15/15 - 0s - loss: 0.0720 - 98ms/epoch - 7ms/step\n",
            "Epoch 76/300\n",
            "15/15 - 0s - loss: 0.0734 - 96ms/epoch - 6ms/step\n",
            "Epoch 77/300\n",
            "15/15 - 0s - loss: 0.0838 - 102ms/epoch - 7ms/step\n",
            "Epoch 78/300\n",
            "15/15 - 0s - loss: 0.0773 - 108ms/epoch - 7ms/step\n",
            "Epoch 79/300\n",
            "15/15 - 0s - loss: 0.0753 - 96ms/epoch - 6ms/step\n",
            "Epoch 80/300\n",
            "15/15 - 0s - loss: 0.0998 - 95ms/epoch - 6ms/step\n",
            "Epoch 81/300\n",
            "15/15 - 0s - loss: 0.0817 - 96ms/epoch - 6ms/step\n",
            "Epoch 82/300\n",
            "15/15 - 0s - loss: 0.0644 - 97ms/epoch - 6ms/step\n",
            "Epoch 83/300\n",
            "15/15 - 0s - loss: 0.0729 - 101ms/epoch - 7ms/step\n",
            "Epoch 84/300\n",
            "15/15 - 0s - loss: 0.0672 - 95ms/epoch - 6ms/step\n",
            "Epoch 85/300\n",
            "15/15 - 0s - loss: 0.0683 - 100ms/epoch - 7ms/step\n",
            "Epoch 86/300\n",
            "15/15 - 0s - loss: 0.0663 - 106ms/epoch - 7ms/step\n",
            "Epoch 87/300\n",
            "15/15 - 0s - loss: 0.0739 - 99ms/epoch - 7ms/step\n",
            "Epoch 88/300\n",
            "15/15 - 0s - loss: 0.0843 - 94ms/epoch - 6ms/step\n",
            "Epoch 89/300\n",
            "15/15 - 0s - loss: 0.0781 - 102ms/epoch - 7ms/step\n",
            "Epoch 90/300\n",
            "15/15 - 0s - loss: 0.0895 - 94ms/epoch - 6ms/step\n",
            "Epoch 91/300\n",
            "15/15 - 0s - loss: 0.0953 - 91ms/epoch - 6ms/step\n",
            "Epoch 92/300\n",
            "15/15 - 0s - loss: 0.0811 - 92ms/epoch - 6ms/step\n",
            "Epoch 93/300\n",
            "15/15 - 0s - loss: 0.0723 - 99ms/epoch - 7ms/step\n",
            "Epoch 94/300\n",
            "15/15 - 0s - loss: 0.0583 - 100ms/epoch - 7ms/step\n",
            "Epoch 95/300\n",
            "15/15 - 0s - loss: 0.0578 - 96ms/epoch - 6ms/step\n",
            "Epoch 96/300\n",
            "15/15 - 0s - loss: 0.0567 - 92ms/epoch - 6ms/step\n",
            "Epoch 97/300\n",
            "15/15 - 0s - loss: 0.0741 - 90ms/epoch - 6ms/step\n",
            "Epoch 98/300\n",
            "15/15 - 0s - loss: 0.0821 - 102ms/epoch - 7ms/step\n",
            "Epoch 99/300\n",
            "15/15 - 0s - loss: 0.0860 - 95ms/epoch - 6ms/step\n",
            "Epoch 100/300\n",
            "15/15 - 0s - loss: 0.0703 - 94ms/epoch - 6ms/step\n",
            "Epoch 101/300\n",
            "15/15 - 0s - loss: 0.0612 - 97ms/epoch - 6ms/step\n",
            "Epoch 102/300\n",
            "15/15 - 0s - loss: 0.0658 - 107ms/epoch - 7ms/step\n",
            "Epoch 103/300\n",
            "15/15 - 0s - loss: 0.0651 - 98ms/epoch - 7ms/step\n",
            "Epoch 104/300\n",
            "15/15 - 0s - loss: 0.0937 - 97ms/epoch - 6ms/step\n",
            "Epoch 105/300\n",
            "15/15 - 0s - loss: 0.0616 - 96ms/epoch - 6ms/step\n",
            "Epoch 106/300\n",
            "15/15 - 0s - loss: 0.0589 - 93ms/epoch - 6ms/step\n",
            "Epoch 107/300\n",
            "15/15 - 0s - loss: 0.0602 - 96ms/epoch - 6ms/step\n",
            "Epoch 108/300\n",
            "15/15 - 0s - loss: 0.0575 - 101ms/epoch - 7ms/step\n",
            "Epoch 109/300\n",
            "15/15 - 0s - loss: 0.0711 - 91ms/epoch - 6ms/step\n",
            "Epoch 110/300\n",
            "15/15 - 0s - loss: 0.0681 - 95ms/epoch - 6ms/step\n",
            "Epoch 111/300\n",
            "15/15 - 0s - loss: 0.0610 - 91ms/epoch - 6ms/step\n",
            "Epoch 112/300\n",
            "15/15 - 0s - loss: 0.0620 - 96ms/epoch - 6ms/step\n",
            "Epoch 113/300\n",
            "15/15 - 0s - loss: 0.0796 - 101ms/epoch - 7ms/step\n",
            "Epoch 114/300\n",
            "15/15 - 0s - loss: 0.0792 - 98ms/epoch - 7ms/step\n",
            "Epoch 115/300\n",
            "15/15 - 0s - loss: 0.0641 - 97ms/epoch - 6ms/step\n",
            "Epoch 116/300\n",
            "15/15 - 0s - loss: 0.0505 - 93ms/epoch - 6ms/step\n",
            "Epoch 117/300\n",
            "15/15 - 0s - loss: 0.0845 - 101ms/epoch - 7ms/step\n",
            "Epoch 118/300\n",
            "15/15 - 0s - loss: 0.0920 - 105ms/epoch - 7ms/step\n",
            "Epoch 119/300\n",
            "15/15 - 0s - loss: 0.0628 - 101ms/epoch - 7ms/step\n",
            "Epoch 120/300\n",
            "15/15 - 0s - loss: 0.0705 - 100ms/epoch - 7ms/step\n",
            "Epoch 121/300\n",
            "15/15 - 0s - loss: 0.0608 - 97ms/epoch - 6ms/step\n",
            "Epoch 122/300\n",
            "15/15 - 0s - loss: 0.0635 - 98ms/epoch - 7ms/step\n",
            "Epoch 123/300\n",
            "15/15 - 0s - loss: 0.0587 - 98ms/epoch - 7ms/step\n",
            "Epoch 124/300\n",
            "15/15 - 0s - loss: 0.0690 - 96ms/epoch - 6ms/step\n",
            "Epoch 125/300\n",
            "15/15 - 0s - loss: 0.0609 - 90ms/epoch - 6ms/step\n",
            "Epoch 126/300\n",
            "15/15 - 0s - loss: 0.0656 - 93ms/epoch - 6ms/step\n",
            "Epoch 127/300\n",
            "15/15 - 0s - loss: 0.0598 - 100ms/epoch - 7ms/step\n",
            "Epoch 128/300\n",
            "15/15 - 0s - loss: 0.0560 - 105ms/epoch - 7ms/step\n",
            "Epoch 129/300\n",
            "15/15 - 0s - loss: 0.0554 - 99ms/epoch - 7ms/step\n",
            "Epoch 130/300\n",
            "15/15 - 0s - loss: 0.0608 - 102ms/epoch - 7ms/step\n",
            "Epoch 131/300\n",
            "15/15 - 0s - loss: 0.0727 - 95ms/epoch - 6ms/step\n",
            "Epoch 132/300\n",
            "15/15 - 0s - loss: 0.0700 - 100ms/epoch - 7ms/step\n",
            "Epoch 133/300\n",
            "15/15 - 0s - loss: 0.0622 - 94ms/epoch - 6ms/step\n",
            "Epoch 134/300\n",
            "15/15 - 0s - loss: 0.0692 - 95ms/epoch - 6ms/step\n",
            "Epoch 135/300\n",
            "15/15 - 0s - loss: 0.0626 - 97ms/epoch - 6ms/step\n",
            "Epoch 136/300\n",
            "15/15 - 0s - loss: 0.0558 - 100ms/epoch - 7ms/step\n",
            "Epoch 137/300\n",
            "15/15 - 0s - loss: 0.0486 - 100ms/epoch - 7ms/step\n",
            "Epoch 138/300\n",
            "15/15 - 0s - loss: 0.0852 - 101ms/epoch - 7ms/step\n",
            "Epoch 139/300\n",
            "15/15 - 0s - loss: 0.0682 - 93ms/epoch - 6ms/step\n",
            "Epoch 140/300\n",
            "15/15 - 0s - loss: 0.0597 - 97ms/epoch - 6ms/step\n",
            "Epoch 141/300\n",
            "15/15 - 0s - loss: 0.0594 - 95ms/epoch - 6ms/step\n",
            "Epoch 142/300\n",
            "15/15 - 0s - loss: 0.0589 - 90ms/epoch - 6ms/step\n",
            "Epoch 143/300\n",
            "15/15 - 0s - loss: 0.0754 - 94ms/epoch - 6ms/step\n",
            "Epoch 144/300\n",
            "15/15 - 0s - loss: 0.0667 - 96ms/epoch - 6ms/step\n",
            "Epoch 145/300\n",
            "15/15 - 0s - loss: 0.0709 - 97ms/epoch - 6ms/step\n",
            "Epoch 146/300\n",
            "15/15 - 0s - loss: 0.0666 - 94ms/epoch - 6ms/step\n",
            "Epoch 147/300\n",
            "15/15 - 0s - loss: 0.0655 - 100ms/epoch - 7ms/step\n",
            "Epoch 148/300\n",
            "15/15 - 0s - loss: 0.1202 - 93ms/epoch - 6ms/step\n",
            "Epoch 149/300\n",
            "15/15 - 0s - loss: 0.1020 - 97ms/epoch - 6ms/step\n",
            "Epoch 150/300\n",
            "15/15 - 0s - loss: 0.0699 - 95ms/epoch - 6ms/step\n",
            "Epoch 151/300\n",
            "15/15 - 0s - loss: 0.0575 - 100ms/epoch - 7ms/step\n",
            "Epoch 152/300\n",
            "15/15 - 0s - loss: 0.0680 - 93ms/epoch - 6ms/step\n",
            "Epoch 153/300\n",
            "15/15 - 0s - loss: 0.0607 - 93ms/epoch - 6ms/step\n",
            "Epoch 154/300\n",
            "15/15 - 0s - loss: 0.0522 - 90ms/epoch - 6ms/step\n",
            "Epoch 155/300\n",
            "15/15 - 0s - loss: 0.0589 - 94ms/epoch - 6ms/step\n",
            "Epoch 156/300\n",
            "15/15 - 0s - loss: 0.0584 - 90ms/epoch - 6ms/step\n",
            "Epoch 157/300\n",
            "15/15 - 0s - loss: 0.0631 - 94ms/epoch - 6ms/step\n",
            "Epoch 158/300\n",
            "15/15 - 0s - loss: 0.0571 - 94ms/epoch - 6ms/step\n",
            "Epoch 159/300\n",
            "15/15 - 0s - loss: 0.0676 - 94ms/epoch - 6ms/step\n",
            "Epoch 160/300\n",
            "15/15 - 0s - loss: 0.0556 - 95ms/epoch - 6ms/step\n",
            "Epoch 161/300\n",
            "15/15 - 0s - loss: 0.0588 - 94ms/epoch - 6ms/step\n",
            "Epoch 162/300\n",
            "15/15 - 0s - loss: 0.0652 - 96ms/epoch - 6ms/step\n",
            "Epoch 163/300\n",
            "15/15 - 0s - loss: 0.0557 - 98ms/epoch - 7ms/step\n",
            "Epoch 164/300\n",
            "15/15 - 0s - loss: 0.0559 - 101ms/epoch - 7ms/step\n",
            "Epoch 165/300\n",
            "15/15 - 0s - loss: 0.0564 - 97ms/epoch - 6ms/step\n",
            "Epoch 166/300\n",
            "15/15 - 0s - loss: 0.0508 - 97ms/epoch - 6ms/step\n",
            "Epoch 167/300\n",
            "15/15 - 0s - loss: 0.0506 - 101ms/epoch - 7ms/step\n",
            "Epoch 168/300\n",
            "15/15 - 0s - loss: 0.0458 - 103ms/epoch - 7ms/step\n",
            "Epoch 169/300\n",
            "15/15 - 0s - loss: 0.0498 - 102ms/epoch - 7ms/step\n",
            "Epoch 170/300\n",
            "15/15 - 0s - loss: 0.0526 - 96ms/epoch - 6ms/step\n",
            "Epoch 171/300\n",
            "15/15 - 0s - loss: 0.0519 - 102ms/epoch - 7ms/step\n",
            "Epoch 172/300\n",
            "15/15 - 0s - loss: 0.0609 - 100ms/epoch - 7ms/step\n",
            "Epoch 173/300\n",
            "15/15 - 0s - loss: 0.0574 - 111ms/epoch - 7ms/step\n",
            "Epoch 174/300\n",
            "15/15 - 0s - loss: 0.0663 - 101ms/epoch - 7ms/step\n",
            "Epoch 175/300\n",
            "15/15 - 0s - loss: 0.0586 - 103ms/epoch - 7ms/step\n",
            "Epoch 176/300\n",
            "15/15 - 0s - loss: 0.0617 - 96ms/epoch - 6ms/step\n",
            "Epoch 177/300\n",
            "15/15 - 0s - loss: 0.0619 - 106ms/epoch - 7ms/step\n",
            "Epoch 178/300\n",
            "15/15 - 0s - loss: 0.0565 - 94ms/epoch - 6ms/step\n",
            "Epoch 179/300\n",
            "15/15 - 0s - loss: 0.0526 - 104ms/epoch - 7ms/step\n",
            "Epoch 180/300\n",
            "15/15 - 0s - loss: 0.0533 - 93ms/epoch - 6ms/step\n",
            "Epoch 181/300\n",
            "15/15 - 0s - loss: 0.0527 - 94ms/epoch - 6ms/step\n",
            "Epoch 182/300\n",
            "15/15 - 0s - loss: 0.0432 - 99ms/epoch - 7ms/step\n",
            "Epoch 183/300\n",
            "15/15 - 0s - loss: 0.0479 - 93ms/epoch - 6ms/step\n",
            "Epoch 184/300\n",
            "15/15 - 0s - loss: 0.0580 - 91ms/epoch - 6ms/step\n",
            "Epoch 185/300\n",
            "15/15 - 0s - loss: 0.0617 - 89ms/epoch - 6ms/step\n",
            "Epoch 186/300\n",
            "15/15 - 0s - loss: 0.0615 - 96ms/epoch - 6ms/step\n",
            "Epoch 187/300\n",
            "15/15 - 0s - loss: 0.0604 - 98ms/epoch - 7ms/step\n",
            "Epoch 188/300\n",
            "15/15 - 0s - loss: 0.0620 - 93ms/epoch - 6ms/step\n",
            "Epoch 189/300\n",
            "15/15 - 0s - loss: 0.0593 - 101ms/epoch - 7ms/step\n",
            "Epoch 190/300\n",
            "15/15 - 0s - loss: 0.0494 - 93ms/epoch - 6ms/step\n",
            "Epoch 191/300\n",
            "15/15 - 0s - loss: 0.0427 - 99ms/epoch - 7ms/step\n",
            "Epoch 192/300\n",
            "15/15 - 0s - loss: 0.0516 - 96ms/epoch - 6ms/step\n",
            "Epoch 193/300\n",
            "15/15 - 0s - loss: 0.0494 - 91ms/epoch - 6ms/step\n",
            "Epoch 194/300\n",
            "15/15 - 0s - loss: 0.0447 - 99ms/epoch - 7ms/step\n",
            "Epoch 195/300\n",
            "15/15 - 0s - loss: 0.0421 - 103ms/epoch - 7ms/step\n",
            "Epoch 196/300\n",
            "15/15 - 0s - loss: 0.0484 - 95ms/epoch - 6ms/step\n",
            "Epoch 197/300\n",
            "15/15 - 0s - loss: 0.0725 - 91ms/epoch - 6ms/step\n",
            "Epoch 198/300\n",
            "15/15 - 0s - loss: 0.0638 - 96ms/epoch - 6ms/step\n",
            "Epoch 199/300\n",
            "15/15 - 0s - loss: 0.0648 - 96ms/epoch - 6ms/step\n",
            "Epoch 200/300\n",
            "15/15 - 0s - loss: 0.0542 - 100ms/epoch - 7ms/step\n",
            "Epoch 201/300\n",
            "15/15 - 0s - loss: 0.0476 - 98ms/epoch - 7ms/step\n",
            "Epoch 202/300\n",
            "15/15 - 0s - loss: 0.0386 - 96ms/epoch - 6ms/step\n",
            "Epoch 203/300\n",
            "15/15 - 0s - loss: 0.0430 - 106ms/epoch - 7ms/step\n",
            "Epoch 204/300\n",
            "15/15 - 0s - loss: 0.0621 - 98ms/epoch - 7ms/step\n",
            "Epoch 205/300\n",
            "15/15 - 0s - loss: 0.0767 - 94ms/epoch - 6ms/step\n",
            "Epoch 206/300\n",
            "15/15 - 0s - loss: 0.0587 - 91ms/epoch - 6ms/step\n",
            "Epoch 207/300\n",
            "15/15 - 0s - loss: 0.0620 - 105ms/epoch - 7ms/step\n",
            "Epoch 208/300\n",
            "15/15 - 0s - loss: 0.0559 - 90ms/epoch - 6ms/step\n",
            "Epoch 209/300\n",
            "15/15 - 0s - loss: 0.0572 - 87ms/epoch - 6ms/step\n",
            "Epoch 210/300\n",
            "15/15 - 0s - loss: 0.0610 - 95ms/epoch - 6ms/step\n",
            "Epoch 211/300\n",
            "15/15 - 0s - loss: 0.0823 - 88ms/epoch - 6ms/step\n",
            "Epoch 212/300\n",
            "15/15 - 0s - loss: 0.0707 - 90ms/epoch - 6ms/step\n",
            "Epoch 213/300\n",
            "15/15 - 0s - loss: 0.0430 - 96ms/epoch - 6ms/step\n",
            "Epoch 214/300\n",
            "15/15 - 0s - loss: 0.0429 - 99ms/epoch - 7ms/step\n",
            "Epoch 215/300\n",
            "15/15 - 0s - loss: 0.0365 - 94ms/epoch - 6ms/step\n",
            "Epoch 216/300\n",
            "15/15 - 0s - loss: 0.0449 - 104ms/epoch - 7ms/step\n",
            "Epoch 217/300\n",
            "15/15 - 0s - loss: 0.0597 - 103ms/epoch - 7ms/step\n",
            "Epoch 218/300\n",
            "15/15 - 0s - loss: 0.0395 - 94ms/epoch - 6ms/step\n",
            "Epoch 219/300\n",
            "15/15 - 0s - loss: 0.0474 - 98ms/epoch - 7ms/step\n",
            "Epoch 220/300\n",
            "15/15 - 0s - loss: 0.0451 - 97ms/epoch - 6ms/step\n",
            "Epoch 221/300\n",
            "15/15 - 0s - loss: 0.0339 - 105ms/epoch - 7ms/step\n",
            "Epoch 222/300\n",
            "15/15 - 0s - loss: 0.0595 - 99ms/epoch - 7ms/step\n",
            "Epoch 223/300\n",
            "15/15 - 0s - loss: 0.0582 - 96ms/epoch - 6ms/step\n",
            "Epoch 224/300\n",
            "15/15 - 0s - loss: 0.0569 - 92ms/epoch - 6ms/step\n",
            "Epoch 225/300\n",
            "15/15 - 0s - loss: 0.0535 - 92ms/epoch - 6ms/step\n",
            "Epoch 226/300\n",
            "15/15 - 0s - loss: 0.0533 - 95ms/epoch - 6ms/step\n",
            "Epoch 227/300\n",
            "15/15 - 0s - loss: 0.0487 - 99ms/epoch - 7ms/step\n",
            "Epoch 228/300\n",
            "15/15 - 0s - loss: 0.0445 - 92ms/epoch - 6ms/step\n",
            "Epoch 229/300\n",
            "15/15 - 0s - loss: 0.0484 - 93ms/epoch - 6ms/step\n",
            "Epoch 230/300\n",
            "15/15 - 0s - loss: 0.0537 - 92ms/epoch - 6ms/step\n",
            "Epoch 231/300\n",
            "15/15 - 0s - loss: 0.0411 - 94ms/epoch - 6ms/step\n",
            "Epoch 232/300\n",
            "15/15 - 0s - loss: 0.0414 - 94ms/epoch - 6ms/step\n",
            "Epoch 233/300\n",
            "15/15 - 0s - loss: 0.0465 - 86ms/epoch - 6ms/step\n",
            "Epoch 234/300\n",
            "15/15 - 0s - loss: 0.0403 - 87ms/epoch - 6ms/step\n",
            "Epoch 235/300\n",
            "15/15 - 0s - loss: 0.0478 - 93ms/epoch - 6ms/step\n",
            "Epoch 236/300\n",
            "15/15 - 0s - loss: 0.0439 - 94ms/epoch - 6ms/step\n",
            "Epoch 237/300\n",
            "15/15 - 0s - loss: 0.0401 - 99ms/epoch - 7ms/step\n",
            "Epoch 238/300\n",
            "15/15 - 0s - loss: 0.0355 - 94ms/epoch - 6ms/step\n",
            "Epoch 239/300\n",
            "15/15 - 0s - loss: 0.0471 - 91ms/epoch - 6ms/step\n",
            "Epoch 240/300\n",
            "15/15 - 0s - loss: 0.0495 - 97ms/epoch - 6ms/step\n",
            "Epoch 241/300\n",
            "15/15 - 0s - loss: 0.0465 - 90ms/epoch - 6ms/step\n",
            "Epoch 242/300\n",
            "15/15 - 0s - loss: 0.0473 - 94ms/epoch - 6ms/step\n",
            "Epoch 243/300\n",
            "15/15 - 0s - loss: 0.0721 - 95ms/epoch - 6ms/step\n",
            "Epoch 244/300\n",
            "15/15 - 0s - loss: 0.0634 - 97ms/epoch - 6ms/step\n",
            "Epoch 245/300\n",
            "15/15 - 0s - loss: 0.0606 - 101ms/epoch - 7ms/step\n",
            "Epoch 246/300\n",
            "15/15 - 0s - loss: 0.0475 - 94ms/epoch - 6ms/step\n",
            "Epoch 247/300\n",
            "15/15 - 0s - loss: 0.0432 - 98ms/epoch - 7ms/step\n",
            "Epoch 248/300\n",
            "15/15 - 0s - loss: 0.0440 - 91ms/epoch - 6ms/step\n",
            "Epoch 249/300\n",
            "15/15 - 0s - loss: 0.0424 - 92ms/epoch - 6ms/step\n",
            "Epoch 250/300\n",
            "15/15 - 0s - loss: 0.0470 - 90ms/epoch - 6ms/step\n",
            "Epoch 251/300\n",
            "15/15 - 0s - loss: 0.0383 - 90ms/epoch - 6ms/step\n",
            "Epoch 252/300\n",
            "15/15 - 0s - loss: 0.0474 - 97ms/epoch - 6ms/step\n",
            "Epoch 253/300\n",
            "15/15 - 0s - loss: 0.0459 - 100ms/epoch - 7ms/step\n",
            "Epoch 254/300\n",
            "15/15 - 0s - loss: 0.0384 - 94ms/epoch - 6ms/step\n",
            "Epoch 255/300\n",
            "15/15 - 0s - loss: 0.0343 - 95ms/epoch - 6ms/step\n",
            "Epoch 256/300\n",
            "15/15 - 0s - loss: 0.0499 - 92ms/epoch - 6ms/step\n",
            "Epoch 257/300\n",
            "15/15 - 0s - loss: 0.0450 - 94ms/epoch - 6ms/step\n",
            "Epoch 258/300\n",
            "15/15 - 0s - loss: 0.0439 - 90ms/epoch - 6ms/step\n",
            "Epoch 259/300\n",
            "15/15 - 0s - loss: 0.0496 - 94ms/epoch - 6ms/step\n",
            "Epoch 260/300\n",
            "15/15 - 0s - loss: 0.0692 - 94ms/epoch - 6ms/step\n",
            "Epoch 261/300\n",
            "15/15 - 0s - loss: 0.0600 - 97ms/epoch - 6ms/step\n",
            "Epoch 262/300\n",
            "15/15 - 0s - loss: 0.0428 - 93ms/epoch - 6ms/step\n",
            "Epoch 263/300\n",
            "15/15 - 0s - loss: 0.0419 - 101ms/epoch - 7ms/step\n",
            "Epoch 264/300\n",
            "15/15 - 0s - loss: 0.0554 - 90ms/epoch - 6ms/step\n",
            "Epoch 265/300\n",
            "15/15 - 0s - loss: 0.0479 - 93ms/epoch - 6ms/step\n",
            "Epoch 266/300\n",
            "15/15 - 0s - loss: 0.0688 - 99ms/epoch - 7ms/step\n",
            "Epoch 267/300\n",
            "15/15 - 0s - loss: 0.0535 - 90ms/epoch - 6ms/step\n",
            "Epoch 268/300\n",
            "15/15 - 0s - loss: 0.0551 - 89ms/epoch - 6ms/step\n",
            "Epoch 269/300\n",
            "15/15 - 0s - loss: 0.0475 - 95ms/epoch - 6ms/step\n",
            "Epoch 270/300\n",
            "15/15 - 0s - loss: 0.0411 - 98ms/epoch - 7ms/step\n",
            "Epoch 271/300\n",
            "15/15 - 0s - loss: 0.0489 - 106ms/epoch - 7ms/step\n",
            "Epoch 272/300\n",
            "15/15 - 0s - loss: 0.0667 - 93ms/epoch - 6ms/step\n",
            "Epoch 273/300\n",
            "15/15 - 0s - loss: 0.0565 - 97ms/epoch - 6ms/step\n",
            "Epoch 274/300\n",
            "15/15 - 0s - loss: 0.0490 - 90ms/epoch - 6ms/step\n",
            "Epoch 275/300\n",
            "15/15 - 0s - loss: 0.0399 - 88ms/epoch - 6ms/step\n",
            "Epoch 276/300\n",
            "15/15 - 0s - loss: 0.0432 - 88ms/epoch - 6ms/step\n",
            "Epoch 277/300\n",
            "15/15 - 0s - loss: 0.0526 - 92ms/epoch - 6ms/step\n",
            "Epoch 278/300\n",
            "15/15 - 0s - loss: 0.0467 - 98ms/epoch - 7ms/step\n",
            "Epoch 279/300\n",
            "15/15 - 0s - loss: 0.0388 - 92ms/epoch - 6ms/step\n",
            "Epoch 280/300\n",
            "15/15 - 0s - loss: 0.0400 - 97ms/epoch - 6ms/step\n",
            "Epoch 281/300\n",
            "15/15 - 0s - loss: 0.0452 - 90ms/epoch - 6ms/step\n",
            "Epoch 282/300\n",
            "15/15 - 0s - loss: 0.0394 - 91ms/epoch - 6ms/step\n",
            "Epoch 283/300\n",
            "15/15 - 0s - loss: 0.0386 - 96ms/epoch - 6ms/step\n",
            "Epoch 284/300\n",
            "15/15 - 0s - loss: 0.0330 - 92ms/epoch - 6ms/step\n",
            "Epoch 285/300\n",
            "15/15 - 0s - loss: 0.0357 - 96ms/epoch - 6ms/step\n",
            "Epoch 286/300\n",
            "15/15 - 0s - loss: 0.0410 - 93ms/epoch - 6ms/step\n",
            "Epoch 287/300\n",
            "15/15 - 0s - loss: 0.0409 - 91ms/epoch - 6ms/step\n",
            "Epoch 288/300\n",
            "15/15 - 0s - loss: 0.0354 - 87ms/epoch - 6ms/step\n",
            "Epoch 289/300\n",
            "15/15 - 0s - loss: 0.0460 - 93ms/epoch - 6ms/step\n",
            "Epoch 290/300\n",
            "15/15 - 0s - loss: 0.0541 - 96ms/epoch - 6ms/step\n",
            "Epoch 291/300\n",
            "15/15 - 0s - loss: 0.0706 - 100ms/epoch - 7ms/step\n",
            "Epoch 292/300\n",
            "15/15 - 0s - loss: 0.0436 - 92ms/epoch - 6ms/step\n",
            "Epoch 293/300\n",
            "15/15 - 0s - loss: 0.0388 - 92ms/epoch - 6ms/step\n",
            "Epoch 294/300\n",
            "15/15 - 0s - loss: 0.0388 - 89ms/epoch - 6ms/step\n",
            "Epoch 295/300\n",
            "15/15 - 0s - loss: 0.0419 - 91ms/epoch - 6ms/step\n",
            "Epoch 296/300\n",
            "15/15 - 0s - loss: 0.0475 - 92ms/epoch - 6ms/step\n",
            "Epoch 297/300\n",
            "15/15 - 0s - loss: 0.0360 - 92ms/epoch - 6ms/step\n",
            "Epoch 298/300\n",
            "15/15 - 0s - loss: 0.0417 - 92ms/epoch - 6ms/step\n",
            "Epoch 299/300\n",
            "15/15 - 0s - loss: 0.0480 - 98ms/epoch - 7ms/step\n",
            "Epoch 300/300\n",
            "15/15 - 0s - loss: 0.0432 - 95ms/epoch - 6ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<keras.src.callbacks.History at 0x7faa94719210>"
            ]
          },
          "metadata": {},
          "execution_count": 73
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n-aNP4n3sqG_",
        "outputId": "24c634c4-6b7e-4dc7-ffaf-d0c939860d0b",
        "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": 74,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "7/7 [==============================] - 0s 3ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7faa94587040>"
            ]
          },
          "metadata": {},
          "execution_count": 74
        },
        {
          "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": "s_ukr55OORqE",
        "outputId": "67d9a66b-33d7-417c-8b19-ba9f3d537483"
      },
      "execution_count": 75,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1712722643.9776607\n",
            "Wed Apr 10 04:17:23 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": "o8HTyvcHchzQ",
        "outputId": "4f6ccfbf-c148-4fd4-dc88-e440fb1bfa5f"
      },
      "execution_count": 76,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1712722643.9835389\n",
            "Wed Apr 10 04:17:23 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Function to compute saliency map\n",
        "@tf.function\n",
        "def compute_saliency(input_image):\n",
        "    with tf.GradientTape() as tape:\n",
        "        tape.watch(input_image)\n",
        "        predictions = tn_model(input_image)\n",
        "    grads = tape.gradient(predictions, input_image)\n",
        "    saliency_map = tf.reduce_max(tf.abs(grads), axis=-1)\n",
        "    return saliency_map\n",
        "\n",
        "# Function to compute saliency map using Gradient\n",
        "@tf.function\n",
        "def compute_gradient_saliency(input_image):\n",
        "    with tf.GradientTape() as tape:\n",
        "        tape.watch(input_image)\n",
        "        predictions = tn_model(input_image)\n",
        "    grads = tape.gradient(predictions, input_image)\n",
        "    saliency_map = tf.reduce_max(tf.abs(grads), axis=-1)\n",
        "    return saliency_map\n",
        "\n",
        "# Compute saliency map for the entire grid\n",
        "def compute_saliency_map_grid():\n",
        "    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n",
        "    input_image = np.c_[xx.ravel(), yy.ravel()]\n",
        "    saliency_map = compute_saliency(tf.constant(input_image, dtype=tf.float32)).numpy()\n",
        "    saliency_map = saliency_map.reshape(xx.shape)\n",
        "    return xx, yy, saliency_map\n",
        "\n",
        "# Compute and plot saliency map for the entire grid\n",
        "xx, yy, saliency_map = compute_saliency_map_grid()\n",
        "\n",
        "# Compute saliency maps for all data points\n",
        "def compute_saliency_maps():\n",
        "    saliency_maps = []\n",
        "    for data_point in X:\n",
        "        saliency_map = compute_gradient_saliency(tf.constant(data_point[None, :], dtype=tf.float32)).numpy()\n",
        "        saliency_maps.append(saliency_map)\n",
        "    return saliency_maps\n",
        "\n",
        "# Find the indices of the data points with the highest saliency values\n",
        "def find_top_indices(saliency_maps, top_k):\n",
        "    top_indices = np.argsort(np.max(saliency_maps, axis=1))[-top_k:]\n",
        "    return top_indices\n",
        "\n",
        "def plot_most_diagnostic(top_indices, top_k, normalized_saliency_values):\n",
        "    plt.figure(figsize=(8, 6))\n",
        "    plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)\n",
        "    plt.scatter(X[top_indices, 0], X[top_indices, 1], marker='o', s=200, facecolors='none', edgecolors='r', linewidths=2)\n",
        "    for i, index in enumerate(top_indices):\n",
        "        plt.annotate(f'{normalized_saliency_values.iloc[index][\"Saliency\"]:.4f}', (X[index, 0], X[index, 1]), xytext=(X[index, 0]+0.35, X[index, 1]+0.25), arrowprops=dict(facecolor='black', arrowstyle='->'))\n",
        "    plt.title(f'Saliency Most Diagnostic Data Points (Top {top_k})')\n",
        "    plt.xlabel('Feature 1')\n",
        "    plt.ylabel('Feature 2')\n",
        "    plt.grid(True)\n",
        "    plt.axis('equal')\n",
        "    plt.show()\n",
        "\n",
        "# Compute saliency maps for all data points\n",
        "saliency_maps = compute_saliency_maps()\n",
        "\n",
        "# Find the indices of the data points with the highest saliency values\n",
        "top_k = 5  # Number of top diagnostic data points to select\n",
        "top_indices = find_top_indices(saliency_maps, top_k)\n",
        "\n",
        "# Create a DataFrame to store the saliency values\n",
        "saliency_df = pd.DataFrame(data=saliency_maps, columns=[\"Saliency\"])\n",
        "\n",
        "# Save the saliency values to a CSV file\n",
        "saliency_df.to_csv(\"saliency_values.csv\", index=False)\n",
        "\n",
        "print(\"Saliency values saved to saliency_values.csv\")\n",
        "\n",
        "# Normalizing the saliency values\n",
        "normalized_saliency = (saliency_df - saliency_df.min()) / (saliency_df.max() - saliency_df.min())\n",
        "\n",
        "# Saving the normalized saliency values to a new CSV file\n",
        "normalized_saliency.to_csv(\"normalized_saliency_values.csv\", index=False)\n",
        "\n",
        "# Plot the most diagnostic data points\n",
        "plot_most_diagnostic(top_indices, top_k, normalized_saliency)\n",
        "\n",
        "print(\"Normalized saliency values saved to normalized_saliency_values.csv\")\n",
        "print(\"Normalized Saliency Top-k:\")\n",
        "print(normalized_saliency.nlargest(top_k, 'Saliency'))\n",
        "print(\"Normalized Saliency Max:\", normalized_saliency.max())\n",
        "print(\"Normalized Saliency Min:\", normalized_saliency.min())\n",
        "print(\"Normalized Saliency Mean:\", normalized_saliency.mean())\n",
        "print(\"Normalized Saliency Median:\", normalized_saliency.median())\n",
        "print(\"Normalized Saliency Mode:\", normalized_saliency.mode())\n",
        "sum_normalized_values = normalized_saliency.sum()\n",
        "print(\"Normalized Saliency Sum:\", sum_normalized_values)\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "print(\"Normalized Saliency Standard Deviation:\", normalized_saliency.std())\n",
        "print(\"Normalized Saliency Skewness:\", normalized_saliency.skew())\n",
        "print(\"Normalized Saliency Kurtosis:\", normalized_saliency.kurtosis())\n",
        "print(\"Normalized Saliency Variance:\", normalized_saliency.var())\n",
        "coefficient_variation = (normalized_saliency.std() / normalized_saliency.mean()) * 100\n",
        "print(\"Normalized Saliency Coefficient of Variation:\", coefficient_variation)\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "cumulative_sum = normalized_saliency.cumsum()\n",
        "print(\"Cumulative Sum of Normalized Saliency Values:\", cumulative_sum)\n",
        "mean_cumulative_sum = cumulative_sum / len(normalized_saliency)\n",
        "print(\"Mean of Cumulative Sum of Normalized Saliency Values:\", mean_cumulative_sum)\n",
        "rms = np.sqrt(np.mean(normalized_saliency**2))\n",
        "print(\"Normalized Saliency Root Mean Square:\", rms)\n",
        "q1 = normalized_saliency.quantile(0.25)\n",
        "q2 = normalized_saliency.quantile(0.75)\n",
        "iqr = q2 - q1\n",
        "print(\"Normalized Saliency 25th Percentile:\", q1)\n",
        "print(\"Normalized Saliency 75th Percentile:\", q2)\n",
        "print(\"Normalized Saliency Interquartile Range:\", iqr)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1924
        },
        "id": "95xed6YyDClf",
        "outputId": "afa499f7-f9df-4716-e27d-56133c005152"
      },
      "execution_count": 77,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Saliency values saved to saliency_values.csv\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 800x600 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Normalized saliency values saved to normalized_saliency_values.csv\n",
            "Normalized Saliency Top-k:\n",
            "     Saliency\n",
            "160  1.000000\n",
            "340  0.956348\n",
            "198  0.877214\n",
            "80   0.863399\n",
            "199  0.855014\n",
            "Normalized Saliency Max: Saliency    1.0\n",
            "dtype: float32\n",
            "Normalized Saliency Min: Saliency    0.0\n",
            "dtype: float32\n",
            "Normalized Saliency Mean: Saliency    0.07434\n",
            "dtype: float32\n",
            "Normalized Saliency Median: Saliency    0.006088\n",
            "dtype: float32\n",
            "Normalized Saliency Mode:    Saliency\n",
            "0  0.000394\n",
            "Normalized Saliency Sum: Saliency    35.683426\n",
            "dtype: float32\n",
            "#\n",
            "#\n",
            "#\n",
            "Normalized Saliency Standard Deviation: Saliency    0.164535\n",
            "dtype: float32\n",
            "Normalized Saliency Skewness: Saliency    3.421983\n",
            "dtype: float32\n",
            "Normalized Saliency Kurtosis: Saliency    12.012663\n",
            "dtype: float32\n",
            "Normalized Saliency Variance: Saliency    0.027072\n",
            "dtype: float32\n",
            "Normalized Saliency Coefficient of Variation: Saliency    221.326477\n",
            "dtype: float32\n",
            "#\n",
            "#\n",
            "#\n",
            "Cumulative Sum of Normalized Saliency Values:       Saliency\n",
            "0     0.001840\n",
            "1     0.003681\n",
            "2     0.005543\n",
            "3     0.007438\n",
            "4     0.009324\n",
            "..         ...\n",
            "475  35.212559\n",
            "476  35.331600\n",
            "477  35.449371\n",
            "478  35.566479\n",
            "479  35.683437\n",
            "\n",
            "[480 rows x 1 columns]\n",
            "Mean of Cumulative Sum of Normalized Saliency Values:      Saliency\n",
            "0    0.000004\n",
            "1    0.000008\n",
            "2    0.000012\n",
            "3    0.000015\n",
            "4    0.000019\n",
            "..        ...\n",
            "475  0.073359\n",
            "476  0.073607\n",
            "477  0.073853\n",
            "478  0.074097\n",
            "479  0.074340\n",
            "\n",
            "[480 rows x 1 columns]\n",
            "Normalized Saliency Root Mean Square: Saliency    0.180394\n",
            "dtype: float32\n",
            "Normalized Saliency 25th Percentile: Saliency    0.002466\n",
            "Name: 0.25, dtype: float64\n",
            "Normalized Saliency 75th Percentile: Saliency    0.06474\n",
            "Name: 0.75, dtype: float64\n",
            "Normalized Saliency Interquartile Range: Saliency    0.062274\n",
            "dtype: float64\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/usr/local/lib/python3.10/dist-packages/numpy/core/fromnumeric.py:3502: FutureWarning: In a future version, DataFrame.mean(axis=None) will return a scalar mean over the entire DataFrame. To retain the old behavior, use 'frame.mean(axis=0)' or just 'frame.mean()'\n",
            "  return mean(axis=axis, dtype=dtype, out=out, **kwargs)\n"
          ]
        }
      ]
    },
    {
      "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": "51d6448e-8e3a-494c-a9ab-c4656612b2dd"
      },
      "execution_count": 78,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1712722645.2850392\n",
            "Wed Apr 10 04:17:25 2024\n"
          ]
        }
      ]
    }
  ]
}