1746 lines (1746 with data), 131.4 kB
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"machine_shape": "hm"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "8XnVMPBXmtRa"
},
"source": [
"# TensorNetworks in Neural Networks.\n",
"\n",
"Here, we have a small toy example of how to use a TN inside of a fully connected neural network.\n",
"\n",
"First off, let's install tensornetwork"
]
},
{
"cell_type": "code",
"metadata": {
"id": "7HGRsYNAFxME"
},
"source": [
"# !pip install tensornetwork\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import tensorflow as tf\n",
"# Import tensornetwork\n",
"import tensornetwork as tn\n",
"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": 86,
"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": 87,
"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": "74d2c285-70f6-4579-c4d4-d1403f84b17e",
"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(1024, activation=tf.nn.relu),\n",
" Dense(1024, activation=tf.nn.relu),\n",
" Dense(1, activation=None)])\n",
"fc_model.summary()"
],
"execution_count": 88,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_14\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_37 (Dense) (None, 1024) 3072 \n",
" \n",
" dense_38 (Dense) (None, 1024) 1049600 \n",
" \n",
" dense_39 (Dense) (None, 1024) 1049600 \n",
" \n",
" dense_40 (Dense) (None, 1024) 1049600 \n",
" \n",
" dense_41 (Dense) (None, 1) 1025 \n",
" \n",
"=================================================================\n",
"Total params: 3152897 (12.03 MB)\n",
"Trainable params: 3152897 (12.03 MB)\n",
"Non-trainable params: 0 (0.00 Byte)\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "bbKsmK8wIFTp",
"outputId": "46da8f58-b72e-4157-9883-dfbd79bb5684",
"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": 89,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_15\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_42 (Dense) (None, 1024) 3072 \n",
" \n",
" tn_layer_21 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_22 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_23 (TNLayer) (None, 1024) 5120 \n",
" \n",
" dense_43 (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": 90,
"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": "f0d2ad0c-2440-461e-e4d0-7b2d7fee9724"
},
"execution_count": 91,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710188769.6308157\n",
"Mon Mar 11 20:26:09 2024\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "crc0q1vbIyTj",
"outputId": "46ee09d2-d80e-43fc-c61b-c7b31f2e7228",
"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": 92,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 1s - loss: 1.0022 - 1s/epoch - 489ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 1.0018 - 17ms/epoch - 6ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 1.0006 - 20ms/epoch - 7ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 1.0001 - 18ms/epoch - 6ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 1.0005 - 19ms/epoch - 6ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 0.9996 - 20ms/epoch - 7ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 0.9989 - 20ms/epoch - 7ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 0.9974 - 19ms/epoch - 6ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 0.9937 - 19ms/epoch - 6ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 0.9850 - 20ms/epoch - 7ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 0.9649 - 19ms/epoch - 6ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 0.9213 - 18ms/epoch - 6ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 0.8368 - 19ms/epoch - 6ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 0.6674 - 17ms/epoch - 6ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 0.3790 - 16ms/epoch - 5ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 0.0921 - 17ms/epoch - 6ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 0.1425 - 20ms/epoch - 7ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 0.0515 - 18ms/epoch - 6ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 0.0317 - 18ms/epoch - 6ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 0.0568 - 19ms/epoch - 6ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 0.0469 - 19ms/epoch - 6ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 0.0200 - 20ms/epoch - 7ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 0.0149 - 18ms/epoch - 6ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 0.0225 - 17ms/epoch - 6ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.0176 - 17ms/epoch - 6ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.0102 - 18ms/epoch - 6ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.0106 - 18ms/epoch - 6ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.0122 - 18ms/epoch - 6ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 0.0104 - 19ms/epoch - 6ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 0.0080 - 18ms/epoch - 6ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.0083 - 20ms/epoch - 7ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.0084 - 18ms/epoch - 6ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.0075 - 16ms/epoch - 5ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.0067 - 19ms/epoch - 6ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.0067 - 18ms/epoch - 6ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.0066 - 16ms/epoch - 5ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.0060 - 18ms/epoch - 6ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.0059 - 18ms/epoch - 6ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.0058 - 17ms/epoch - 6ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.0055 - 18ms/epoch - 6ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.0051 - 17ms/epoch - 6ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.0050 - 21ms/epoch - 7ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.0050 - 20ms/epoch - 7ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.0048 - 18ms/epoch - 6ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.0045 - 15ms/epoch - 5ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.0044 - 18ms/epoch - 6ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.0043 - 18ms/epoch - 6ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.0042 - 18ms/epoch - 6ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.0040 - 18ms/epoch - 6ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.0039 - 17ms/epoch - 6ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.0037 - 18ms/epoch - 6ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.0036 - 18ms/epoch - 6ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.0035 - 18ms/epoch - 6ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.0034 - 18ms/epoch - 6ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.0033 - 19ms/epoch - 6ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.0033 - 18ms/epoch - 6ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.0031 - 20ms/epoch - 7ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.0030 - 22ms/epoch - 7ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.0029 - 21ms/epoch - 7ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.0028 - 20ms/epoch - 7ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.0027 - 17ms/epoch - 6ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.0026 - 19ms/epoch - 6ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.0026 - 19ms/epoch - 6ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.0025 - 20ms/epoch - 7ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.0024 - 20ms/epoch - 7ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.0024 - 20ms/epoch - 7ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 0.0022 - 18ms/epoch - 6ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 0.0022 - 19ms/epoch - 6ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.0022 - 20ms/epoch - 7ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.0021 - 19ms/epoch - 6ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.0020 - 20ms/epoch - 7ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.0019 - 17ms/epoch - 6ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 0.0019 - 18ms/epoch - 6ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 0.0018 - 20ms/epoch - 7ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 0.0017 - 18ms/epoch - 6ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 0.0017 - 19ms/epoch - 6ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 0.0016 - 18ms/epoch - 6ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 0.0016 - 17ms/epoch - 6ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.0015 - 18ms/epoch - 6ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 0.0015 - 17ms/epoch - 6ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 0.0014 - 18ms/epoch - 6ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 0.0014 - 17ms/epoch - 6ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 0.0014 - 20ms/epoch - 7ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 0.0013 - 19ms/epoch - 6ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 0.0012 - 17ms/epoch - 6ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 0.0011 - 19ms/epoch - 6ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 0.0011 - 18ms/epoch - 6ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 0.0010 - 17ms/epoch - 6ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 9.9877e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 9.5711e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 9.0835e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 8.8135e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 8.4853e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 8.2072e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 7.7445e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 7.6302e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 7.3297e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 6.9993e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 6.6559e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 6.3871e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 6.0721e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 5.7630e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 5.5560e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 5.4013e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 5.0409e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 4.8276e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 4.6629e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 4.3402e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 4.1807e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 4.1403e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 3.6957e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 3.6431e-04 - 16ms/epoch - 5ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 3.6346e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 3.1642e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 3.0905e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 2.8164e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 2.8866e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 2.6182e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 2.4414e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 2.3258e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 2.1576e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 2.1201e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 1.8178e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 1.8040e-04 - 16ms/epoch - 5ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 1.6366e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 1.5086e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 1.3978e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 1.2830e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 1.2078e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 1.1262e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 1.0313e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 9.7155e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 8.6212e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 8.2150e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 7.3103e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 7.3956e-05 - 21ms/epoch - 7ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 6.8930e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 5.8320e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 5.5998e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 4.6732e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 4.6568e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 3.9768e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 3.9376e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 3.5311e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 2.8832e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 2.8891e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 2.5646e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 2.3970e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 2.3530e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 1.8517e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 1.7302e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 1.4634e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 1.4070e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 1.1837e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 1.1049e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 9.0063e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 8.2704e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 7.2531e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 7.1368e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 5.9658e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 5.7720e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 5.6803e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 4.8800e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 4.3730e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 3.9039e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 3.5236e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 3.2751e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 3.0519e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 2.8004e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 2.6372e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 2.5086e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 2.4585e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 2.4330e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 2.1505e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 2.1126e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 2.1254e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 1.9246e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 1.8490e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 1.7686e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 1.5878e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 1.5533e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 1.5242e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 1.4328e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 1.4571e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 1.3939e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 1.4258e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 1.3292e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 1.2709e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 1.2718e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 1.2136e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 1.1842e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 1.1641e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 1.0961e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 1.1783e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 1.1226e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 1.1372e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 1.1333e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 1.0279e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 1.1592e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 1.1641e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 1.0315e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 1.2258e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 1.0086e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 9.8572e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 1.0380e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 9.8839e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 9.3597e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 1.0183e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 1.0068e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 9.6056e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 9.7681e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 9.4071e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 8.5441e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 9.6226e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 8.1655e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 8.3420e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 8.1160e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 8.1069e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 8.1272e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 7.8895e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 8.3337e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 8.2474e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 7.8557e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 7.6855e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 8.0013e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 7.2467e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 7.5894e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 7.4973e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 7.4118e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 7.5345e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 7.0516e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 7.1516e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 7.3901e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 7.4473e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 8.0814e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 7.0811e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 6.8762e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 7.4606e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 8.1802e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 7.2643e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 7.5783e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 7.9864e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 7.6735e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 7.2770e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 8.9315e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 6.7667e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 7.8507e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 6.7457e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 6.1116e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 6.7010e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 6.4525e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 5.5182e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 6.9939e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 6.6378e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 5.5184e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 6.2630e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 8.4881e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 6.9570e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 6.6526e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 6.1346e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 6.5842e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 5.5042e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 5.5254e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 5.0419e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 5.0778e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 5.3501e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 5.0300e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 5.1506e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 5.1506e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 5.0847e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 4.8645e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 4.7549e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 4.7245e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 4.5087e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 4.8320e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 4.6266e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 5.2425e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 4.4051e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 4.5074e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 4.6395e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 4.4432e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 4.6051e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 4.6710e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 4.1769e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 4.5289e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 4.5116e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 4.2803e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 4.1024e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 4.2116e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 3.9860e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 4.0099e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 3.9421e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 3.8622e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 4.2960e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 4.5725e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 3.9694e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 4.4807e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 4.2029e-07 - 18ms/epoch - 6ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<keras.src.callbacks.History at 0x7882f6b0eb90>"
]
},
"metadata": {},
"execution_count": 92
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "n-aNP4n3sqG_",
"outputId": "fd6f5ca7-d26f-4c5b-cc33-4465fd70f437",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 442
}
},
"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": 93,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"14/14 [==============================] - 0s 4ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7882f6f43d60>"
]
},
"metadata": {},
"execution_count": 93
},
{
"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": "33c52ade-94d2-42d8-cea8-1d0f8a4cdc6b"
},
"execution_count": 94,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710188777.8655784\n",
"Mon Mar 11 20:26:17 2024\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"seconds = time.time()\n",
"print(\"Time in seconds since beginning of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "Ft6S13x6KuEQ",
"outputId": "1a760f72-82c4-412f-dd25-6cf51317024a"
},
"execution_count": 95,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710188777.8754985\n",
"Mon Mar 11 20:26:17 2024\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BMxSJo5gtOmQ"
},
"source": [
"# VS Fully Connected"
]
},
{
"cell_type": "code",
"metadata": {
"id": "NKQx7stYswzU",
"outputId": "32ac8c88-f128-47a3-df04-2f2e9039934d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 11384
}
},
"source": [
"fc_model.compile(optimizer=\"adam\", 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": 96,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 1s - loss: 0.7385 - 685ms/epoch - 228ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 0.1887 - 47ms/epoch - 16ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 0.1483 - 49ms/epoch - 16ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 0.1043 - 50ms/epoch - 17ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 0.0697 - 51ms/epoch - 17ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 0.0811 - 48ms/epoch - 16ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 0.0854 - 47ms/epoch - 16ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 0.0731 - 49ms/epoch - 16ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 0.0745 - 51ms/epoch - 17ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 0.0635 - 51ms/epoch - 17ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 0.0574 - 47ms/epoch - 16ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 0.0576 - 51ms/epoch - 17ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 0.0480 - 52ms/epoch - 17ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 0.0438 - 53ms/epoch - 18ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 0.0435 - 52ms/epoch - 17ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 0.0432 - 46ms/epoch - 15ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 0.0424 - 49ms/epoch - 16ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 0.0433 - 50ms/epoch - 17ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 0.0408 - 50ms/epoch - 17ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 0.0363 - 52ms/epoch - 17ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 0.0340 - 47ms/epoch - 16ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 0.0311 - 49ms/epoch - 16ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 0.0358 - 47ms/epoch - 16ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 0.0285 - 52ms/epoch - 17ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.0326 - 48ms/epoch - 16ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.0317 - 49ms/epoch - 16ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.0355 - 49ms/epoch - 16ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.0333 - 51ms/epoch - 17ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 0.0320 - 48ms/epoch - 16ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 0.0291 - 48ms/epoch - 16ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.0248 - 49ms/epoch - 16ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.0225 - 51ms/epoch - 17ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.0224 - 50ms/epoch - 17ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.0235 - 53ms/epoch - 18ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.0239 - 49ms/epoch - 16ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.0210 - 50ms/epoch - 17ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.0203 - 46ms/epoch - 15ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.0220 - 48ms/epoch - 16ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.0161 - 48ms/epoch - 16ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.0206 - 50ms/epoch - 17ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.0165 - 53ms/epoch - 18ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.0144 - 49ms/epoch - 16ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.0181 - 47ms/epoch - 16ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.0202 - 44ms/epoch - 15ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.0179 - 50ms/epoch - 17ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.0211 - 52ms/epoch - 17ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.0212 - 48ms/epoch - 16ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.0121 - 48ms/epoch - 16ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.0238 - 49ms/epoch - 16ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.0181 - 45ms/epoch - 15ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.0164 - 48ms/epoch - 16ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.0125 - 45ms/epoch - 15ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.0101 - 52ms/epoch - 17ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.0118 - 51ms/epoch - 17ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.0087 - 48ms/epoch - 16ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.0100 - 49ms/epoch - 16ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.0064 - 48ms/epoch - 16ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.0062 - 48ms/epoch - 16ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.0084 - 53ms/epoch - 18ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.0046 - 50ms/epoch - 17ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.0040 - 47ms/epoch - 16ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.0032 - 50ms/epoch - 17ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.0030 - 51ms/epoch - 17ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.0024 - 48ms/epoch - 16ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.0027 - 47ms/epoch - 16ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.0024 - 48ms/epoch - 16ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 0.0023 - 49ms/epoch - 16ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 0.0020 - 55ms/epoch - 18ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.0017 - 53ms/epoch - 18ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.0013 - 45ms/epoch - 15ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.0017 - 50ms/epoch - 17ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.0015 - 46ms/epoch - 15ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 0.0014 - 47ms/epoch - 16ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 0.0013 - 49ms/epoch - 16ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 7.9202e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 9.4928e-04 - 53ms/epoch - 18ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 8.2170e-04 - 54ms/epoch - 18ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 7.7724e-04 - 47ms/epoch - 16ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 8.8521e-04 - 56ms/epoch - 19ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 9.3652e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 8.6165e-04 - 51ms/epoch - 17ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 6.7179e-04 - 53ms/epoch - 18ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 5.3923e-04 - 52ms/epoch - 17ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 4.0342e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 6.4015e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 9.3890e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 7.8218e-04 - 54ms/epoch - 18ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 7.1878e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 0.0012 - 54ms/epoch - 18ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 0.0025 - 49ms/epoch - 16ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 0.0018 - 53ms/epoch - 18ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 9.2189e-04 - 53ms/epoch - 18ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 4.2776e-04 - 51ms/epoch - 17ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 3.4367e-04 - 53ms/epoch - 18ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 5.1583e-04 - 54ms/epoch - 18ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 4.3821e-04 - 53ms/epoch - 18ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 3.0833e-04 - 52ms/epoch - 17ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 2.6632e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 2.3545e-04 - 52ms/epoch - 17ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 2.9974e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 3.2186e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 3.0261e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 2.5460e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 2.0386e-04 - 51ms/epoch - 17ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 1.9706e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 1.6651e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 1.6955e-04 - 44ms/epoch - 15ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 9.9293e-05 - 49ms/epoch - 16ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 1.5270e-04 - 47ms/epoch - 16ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 3.0193e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 3.2363e-04 - 52ms/epoch - 17ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 1.9758e-04 - 51ms/epoch - 17ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 1.4710e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 8.4534e-05 - 53ms/epoch - 18ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 1.0644e-04 - 52ms/epoch - 17ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 8.4002e-05 - 52ms/epoch - 17ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 2.1630e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 2.7674e-04 - 51ms/epoch - 17ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 3.6711e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 3.4615e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 2.9324e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 2.8475e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 5.1498e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 5.5959e-04 - 44ms/epoch - 15ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 5.1638e-04 - 47ms/epoch - 16ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 4.0714e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 4.5760e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 3.1934e-04 - 43ms/epoch - 14ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 2.3002e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 2.0080e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 2.7508e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 2.8304e-04 - 51ms/epoch - 17ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 3.0736e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 3.5308e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 4.6481e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 3.8144e-04 - 44ms/epoch - 15ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 3.8579e-04 - 47ms/epoch - 16ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 5.5716e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 5.1535e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 4.5274e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 4.1900e-04 - 47ms/epoch - 16ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 3.1665e-04 - 51ms/epoch - 17ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 4.2875e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 8.6625e-04 - 43ms/epoch - 14ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 0.0011 - 48ms/epoch - 16ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 9.9832e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 5.7163e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 2.8322e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 3.7927e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 5.0350e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 4.4770e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 4.3331e-04 - 52ms/epoch - 17ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 3.3981e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 2.6101e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 1.9018e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 1.4967e-04 - 52ms/epoch - 17ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 8.0621e-05 - 46ms/epoch - 15ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 1.2757e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 3.2701e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 2.9256e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 1.8687e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 2.5371e-04 - 47ms/epoch - 16ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 1.7057e-04 - 47ms/epoch - 16ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 1.3615e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 2.1333e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 1.4163e-04 - 42ms/epoch - 14ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 7.3264e-05 - 44ms/epoch - 15ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 6.5943e-05 - 45ms/epoch - 15ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 5.3418e-05 - 46ms/epoch - 15ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 4.8399e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 2.8898e-05 - 51ms/epoch - 17ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 3.1066e-05 - 50ms/epoch - 17ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 3.2894e-05 - 49ms/epoch - 16ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 2.2908e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 2.6717e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 1.9496e-05 - 49ms/epoch - 16ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 1.6657e-05 - 51ms/epoch - 17ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 1.2611e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 1.6061e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 7.5884e-06 - 49ms/epoch - 16ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 1.4118e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 1.0931e-05 - 54ms/epoch - 18ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 1.4622e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 1.6716e-05 - 49ms/epoch - 16ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 1.1952e-05 - 50ms/epoch - 17ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 1.1102e-05 - 52ms/epoch - 17ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 1.0385e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 1.4620e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 1.4069e-05 - 46ms/epoch - 15ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 1.7243e-05 - 52ms/epoch - 17ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 1.7323e-05 - 46ms/epoch - 15ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 2.0892e-05 - 53ms/epoch - 18ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 1.7387e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 2.1335e-05 - 46ms/epoch - 15ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 2.4044e-05 - 46ms/epoch - 15ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 3.6775e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 9.8403e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 1.2683e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 1.0848e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 1.1970e-04 - 47ms/epoch - 16ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 8.7801e-05 - 46ms/epoch - 15ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 6.8793e-05 - 49ms/epoch - 16ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 1.1929e-04 - 51ms/epoch - 17ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 1.4621e-04 - 52ms/epoch - 17ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 8.4674e-05 - 49ms/epoch - 16ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 4.3623e-05 - 49ms/epoch - 16ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 3.1935e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 4.7771e-05 - 46ms/epoch - 15ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 5.7677e-05 - 46ms/epoch - 15ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 3.9284e-05 - 50ms/epoch - 17ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 3.7987e-05 - 52ms/epoch - 17ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 5.0501e-05 - 53ms/epoch - 18ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 4.5771e-05 - 44ms/epoch - 15ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 2.5782e-05 - 51ms/epoch - 17ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 1.2887e-05 - 54ms/epoch - 18ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 2.1315e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 1.8185e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 1.7102e-05 - 46ms/epoch - 15ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 1.3172e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 1.8388e-05 - 52ms/epoch - 17ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 1.8255e-05 - 52ms/epoch - 17ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 1.0243e-05 - 50ms/epoch - 17ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 1.2266e-05 - 45ms/epoch - 15ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 1.5652e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 1.3157e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 1.5964e-05 - 50ms/epoch - 17ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 1.8168e-05 - 50ms/epoch - 17ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 1.2345e-05 - 54ms/epoch - 18ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 1.6171e-05 - 46ms/epoch - 15ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 1.4918e-05 - 54ms/epoch - 18ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 1.7074e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 1.7026e-05 - 50ms/epoch - 17ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 2.7835e-05 - 59ms/epoch - 20ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 2.7575e-05 - 45ms/epoch - 15ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 3.2307e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 1.9533e-05 - 44ms/epoch - 15ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 1.7790e-05 - 49ms/epoch - 16ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 4.0234e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 3.6894e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 4.2996e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 4.8115e-05 - 50ms/epoch - 17ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 6.7401e-05 - 49ms/epoch - 16ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 7.0488e-05 - 49ms/epoch - 16ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 1.0865e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 1.9785e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 1.9438e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 1.4363e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 1.9179e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 2.4097e-04 - 51ms/epoch - 17ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 3.6985e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 2.7095e-04 - 47ms/epoch - 16ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 2.5363e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 2.2564e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 3.7099e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 1.8528e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 2.1505e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 1.1697e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 9.9537e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 1.3312e-04 - 43ms/epoch - 14ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 2.0929e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 3.0061e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 3.1401e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 4.0701e-04 - 52ms/epoch - 17ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 4.6623e-04 - 43ms/epoch - 14ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 4.2801e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 2.4056e-04 - 53ms/epoch - 18ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 4.2808e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 2.9548e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 2.4522e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 4.1764e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 6.0754e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 0.0014 - 46ms/epoch - 15ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 0.0013 - 51ms/epoch - 17ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 0.0014 - 51ms/epoch - 17ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 0.0012 - 54ms/epoch - 18ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 7.0220e-04 - 49ms/epoch - 16ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 0.0012 - 49ms/epoch - 16ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 0.0018 - 47ms/epoch - 16ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 0.0012 - 47ms/epoch - 16ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 0.0016 - 47ms/epoch - 16ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 0.0014 - 50ms/epoch - 17ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 0.0012 - 47ms/epoch - 16ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 7.3369e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 3.9485e-04 - 47ms/epoch - 16ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 2.9743e-04 - 46ms/epoch - 15ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 3.4887e-04 - 47ms/epoch - 16ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 2.3907e-04 - 48ms/epoch - 16ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 2.7896e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 2.1158e-04 - 44ms/epoch - 15ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 2.8229e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 2.7157e-04 - 47ms/epoch - 16ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 3.0975e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 3.3715e-04 - 50ms/epoch - 17ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 1.8904e-04 - 44ms/epoch - 15ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 8.0047e-05 - 48ms/epoch - 16ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 5.8796e-05 - 50ms/epoch - 17ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 4.7332e-05 - 47ms/epoch - 16ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 4.1187e-05 - 50ms/epoch - 17ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 3.6847e-05 - 49ms/epoch - 16ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 4.4387e-05 - 47ms/epoch - 16ms/step\n",
"14/14 [==============================] - 0s 6ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7882f6eaf700>"
]
},
"metadata": {},
"execution_count": 96
},
{
"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": "1a91e599-efe6-4d92-ecb0-62a63872aa32"
},
"execution_count": 97,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710188794.1814911\n",
"Mon Mar 11 20:26:34 2024\n"
]
}
]
}
]
}