1743 lines (1743 with data), 130.3 kB
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"machine_shape": "hm"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "8XnVMPBXmtRa"
},
"source": [
"# TensorNetworks in Neural Networks.\n",
"\n",
"Here, we have a small toy example of how to use a TN inside of a fully connected neural network.\n",
"\n",
"First off, let's install tensornetwork"
]
},
{
"cell_type": "code",
"metadata": {
"id": "7HGRsYNAFxME"
},
"source": [
"# !pip install tensornetwork\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import tensorflow as tf\n",
"# Import tensornetwork\n",
"import tensornetwork as tn\n",
"from keras.optimizers import Adam\n",
"import random\n",
"import time\n",
"# Set the backend to tesorflow\n",
"# (default is numpy)\n",
"tn.set_default_backend(\"tensorflow\")\n",
"np.random.seed(42)\n",
"random.seed(42)\n",
"tf.random.set_seed(42)"
],
"execution_count": 289,
"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": 290,
"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": "5a2d9182-c043-4c59-e580-3bf04ac0fa09",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
}
},
"source": [
"Dense = tf.keras.layers.Dense\n",
"fc_model = tf.keras.Sequential(\n",
" [\n",
" tf.keras.Input(shape=(2,)),\n",
" Dense(1024, activation=tf.nn.relu),\n",
" Dense(1024, activation=tf.nn.relu),\n",
" Dense(1, activation=None)])\n",
"fc_model.summary()"
],
"execution_count": 291,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_48\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_120 (Dense) (None, 1024) 3072 \n",
" \n",
" dense_121 (Dense) (None, 1024) 1049600 \n",
" \n",
" dense_122 (Dense) (None, 1) 1025 \n",
" \n",
"=================================================================\n",
"Total params: 1053697 (4.02 MB)\n",
"Trainable params: 1053697 (4.02 MB)\n",
"Non-trainable params: 0 (0.00 Byte)\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "bbKsmK8wIFTp",
"outputId": "0bac9e96-d7a5-46a4-83b0-54e493d70a1f",
"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": 292,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_49\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_123 (Dense) (None, 1024) 3072 \n",
" \n",
" tn_layer_72 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_73 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_74 (TNLayer) (None, 1024) 5120 \n",
" \n",
" dense_124 (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": 293,
"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": "b98d47b6-0b6a-4643-e108-3175a6692af9"
},
"execution_count": 294,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710117567.2273648\n",
"Mon Mar 11 00:39:27 2024\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "crc0q1vbIyTj",
"outputId": "6cfd884c-8a37-4334-c759-145840be1073",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
}
},
"source": [
"optimizer = Adam(learning_rate=0.001, weight_decay=0.001)\n",
"tn_model.compile(optimizer=optimizer, loss=\"mean_squared_error\")\n",
"tn_model.fit(X, Y, epochs=300, verbose=2)"
],
"execution_count": 295,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 2s - loss: 1.0018 - 2s/epoch - 739ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 1.0018 - 18ms/epoch - 6ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 1.0007 - 23ms/epoch - 8ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 1.0001 - 19ms/epoch - 6ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 1.0006 - 19ms/epoch - 6ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 0.9997 - 21ms/epoch - 7ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 0.9991 - 21ms/epoch - 7ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 0.9978 - 19ms/epoch - 6ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 0.9946 - 20ms/epoch - 7ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 0.9873 - 18ms/epoch - 6ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 0.9702 - 19ms/epoch - 6ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 0.9332 - 19ms/epoch - 6ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 0.8618 - 21ms/epoch - 7ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 0.7187 - 20ms/epoch - 7ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 0.4604 - 20ms/epoch - 7ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 0.1369 - 19ms/epoch - 6ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 0.1064 - 19ms/epoch - 6ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 0.0901 - 19ms/epoch - 6ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 0.0193 - 20ms/epoch - 7ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 0.0450 - 18ms/epoch - 6ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 0.0507 - 21ms/epoch - 7ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 0.0290 - 20ms/epoch - 7ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 0.0136 - 19ms/epoch - 6ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 0.0176 - 19ms/epoch - 6ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.0192 - 20ms/epoch - 7ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.0116 - 20ms/epoch - 7ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.0091 - 18ms/epoch - 6ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.0110 - 19ms/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.0078 - 19ms/epoch - 6ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.0073 - 19ms/epoch - 6ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.0076 - 19ms/epoch - 6ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.0071 - 19ms/epoch - 6ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.0062 - 19ms/epoch - 6ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.0061 - 20ms/epoch - 7ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.0061 - 19ms/epoch - 6ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.0057 - 17ms/epoch - 6ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.0053 - 20ms/epoch - 7ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.0052 - 20ms/epoch - 7ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.0051 - 18ms/epoch - 6ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.0048 - 19ms/epoch - 6ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.0046 - 18ms/epoch - 6ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.0045 - 20ms/epoch - 7ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.0044 - 20ms/epoch - 7ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.0042 - 19ms/epoch - 6ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.0040 - 17ms/epoch - 6ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.0040 - 19ms/epoch - 6ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.0039 - 19ms/epoch - 6ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.0037 - 18ms/epoch - 6ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.0036 - 18ms/epoch - 6ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.0035 - 19ms/epoch - 6ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.0034 - 19ms/epoch - 6ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.0033 - 19ms/epoch - 6ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.0032 - 18ms/epoch - 6ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.0031 - 18ms/epoch - 6ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.0031 - 17ms/epoch - 6ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.0030 - 16ms/epoch - 5ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.0029 - 18ms/epoch - 6ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.0028 - 17ms/epoch - 6ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.0027 - 18ms/epoch - 6ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.0026 - 19ms/epoch - 6ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.0025 - 18ms/epoch - 6ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.0025 - 18ms/epoch - 6ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.0024 - 18ms/epoch - 6ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.0024 - 18ms/epoch - 6ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.0023 - 18ms/epoch - 6ms/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 - 18ms/epoch - 6ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.0021 - 17ms/epoch - 6ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.0020 - 21ms/epoch - 7ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.0020 - 19ms/epoch - 6ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.0019 - 18ms/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 - 19ms/epoch - 6ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 0.0018 - 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.0017 - 19ms/epoch - 6ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 0.0016 - 18ms/epoch - 6ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.0016 - 17ms/epoch - 6ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 0.0016 - 19ms/epoch - 6ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 0.0015 - 17ms/epoch - 6ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 0.0015 - 21ms/epoch - 7ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 0.0014 - 19ms/epoch - 6ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 0.0014 - 18ms/epoch - 6ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 0.0013 - 18ms/epoch - 6ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 0.0013 - 19ms/epoch - 6ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 0.0013 - 18ms/epoch - 6ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 0.0012 - 20ms/epoch - 7ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 0.0011 - 19ms/epoch - 6ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 0.0011 - 19ms/epoch - 6ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 0.0010 - 17ms/epoch - 6ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 0.0010 - 17ms/epoch - 6ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 9.9088e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 9.7075e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 9.1819e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 9.1883e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 8.9834e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 8.5569e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 8.2521e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 8.0733e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 7.7709e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 7.4134e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 7.2770e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 7.1194e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 6.7114e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 6.5338e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 6.3440e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 6.1010e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 5.8185e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 5.8551e-04 - 21ms/epoch - 7ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 5.4816e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 5.3250e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 5.3115e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 4.8264e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 4.7625e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 4.5743e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 4.6053e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 4.3173e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 4.0057e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 3.9179e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 3.7522e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 3.7201e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 3.3763e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 3.2292e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 3.1964e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 2.9389e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 2.7545e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 2.6973e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 2.5183e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 2.4811e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 2.3429e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 2.2034e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 2.0972e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 2.0015e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 1.8799e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 1.8269e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 1.7529e-04 - 21ms/epoch - 7ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 1.6086e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 1.5008e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 1.3987e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 1.3203e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 1.2529e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 1.1642e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 1.1789e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 1.0246e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 9.8394e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 9.1997e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 8.6505e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 8.8303e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 7.5351e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 7.1604e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 6.5569e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 6.3403e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 5.7741e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 5.3804e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 4.9212e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 4.4480e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 4.4189e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 4.2951e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 3.7848e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 3.6273e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 3.5653e-05 - 21ms/epoch - 7ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 3.0583e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 2.7905e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 2.4789e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 2.4435e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 2.2197e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 2.0318e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 1.9043e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 1.7515e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 1.6098e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 1.5355e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 1.4280e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 1.3321e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 1.3009e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 1.0543e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 1.0953e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 8.9906e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 9.2536e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 8.0789e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 7.4930e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 7.0311e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 6.3719e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 5.8581e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 5.5035e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 5.3793e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 4.6228e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 4.4983e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 4.1657e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 3.7043e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 3.6790e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 3.1803e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 3.0068e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 2.9262e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 2.5566e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 2.6068e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 2.3057e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 2.1693e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 2.2852e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 1.9360e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 1.8463e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 1.7498e-06 - 21ms/epoch - 7ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 1.5766e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 1.5319e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 1.4671e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 1.3869e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 1.3376e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 1.2289e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 1.0843e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 1.1667e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 1.0737e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 1.0754e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 9.2325e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 9.2375e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 8.3897e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 8.0519e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 7.1914e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 7.2676e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 6.6901e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 7.0003e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 6.4572e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 6.1976e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 5.9975e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 5.6777e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 5.9581e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 5.6106e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 5.7610e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 5.0338e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 5.7774e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 4.4889e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 5.5579e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 4.6219e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 4.6227e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 5.7090e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 4.9148e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 4.7859e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 4.9324e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 4.2747e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 4.1821e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 4.1770e-07 - 22ms/epoch - 7ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 3.8145e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 3.6429e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 3.6620e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 3.4894e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 3.4598e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 3.3858e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 3.4012e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 3.2858e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 3.1341e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 3.5624e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 3.2826e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 3.0441e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 3.0761e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 2.9345e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 2.9198e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 2.8686e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 3.1989e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 2.9761e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 3.4098e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 2.7113e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 2.7270e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 2.6415e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 2.6058e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 2.5737e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 2.5855e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 2.5275e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 2.4866e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 2.4910e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 2.4656e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 2.3968e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 2.5052e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 2.5576e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 2.5424e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 2.3486e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 2.5726e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 2.5104e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 2.2753e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 2.4287e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 2.2021e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 2.2882e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 2.2644e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 2.1835e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 2.5564e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 2.2355e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 2.2243e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 2.5412e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 2.1401e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 1.9716e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 2.3606e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 1.9645e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 2.0556e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 1.9780e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 1.9545e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 1.8688e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 2.1477e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 1.8546e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 2.2724e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 2.0570e-07 - 20ms/epoch - 7ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<keras.src.callbacks.History at 0x7bae5a31a050>"
]
},
"metadata": {},
"execution_count": 295
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "n-aNP4n3sqG_",
"outputId": "d6816d1c-d45f-4b96-ef77-35a103a37440",
"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": 296,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"14/14 [==============================] - 0s 3ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7bae59f8fe50>"
]
},
"metadata": {},
"execution_count": 296
},
{
"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": "8534b2f3-e8de-40ec-cbd6-0fe486545834"
},
"execution_count": 297,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710117580.3826416\n",
"Mon Mar 11 00:39:40 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": "fc7c0f86-7ace-457c-ec01-8cca95b1aa02"
},
"execution_count": 298,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710117580.3939366\n",
"Mon Mar 11 00:39:40 2024\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BMxSJo5gtOmQ"
},
"source": [
"# VS Fully Connected"
]
},
{
"cell_type": "code",
"metadata": {
"id": "NKQx7stYswzU",
"outputId": "211a11b5-6e07-48cc-b948-f9d021b289f3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 11458
}
},
"source": [
"optimizer = Adam(learning_rate=0.001, weight_decay=0.001)\n",
"fc_model.compile(optimizer=optimizer, loss=\"mean_squared_error\")\n",
"fc_model.fit(X, Y, epochs=300, verbose=2)\n",
"# Plotting code, feel free to ignore.\n",
"h = 1.0\n",
"x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
"y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
"xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
" np.arange(y_min, y_max, h))\n",
"\n",
"# here \"model\" is your model's prediction (classification) function\n",
"Z = fc_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
"\n",
"# Put the result into a color plot\n",
"Z = Z.reshape(xx.shape)\n",
"plt.contourf(xx, yy, Z)\n",
"plt.axis('off')\n",
"\n",
"# Plot also the training points\n",
"plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
],
"execution_count": 299,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 1s - loss: 0.5656 - 722ms/epoch - 241ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 0.1959 - 28ms/epoch - 9ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 0.1423 - 29ms/epoch - 10ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 0.0917 - 27ms/epoch - 9ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 0.0828 - 24ms/epoch - 8ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 0.0827 - 26ms/epoch - 9ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 0.0680 - 28ms/epoch - 9ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 0.0680 - 27ms/epoch - 9ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 0.0605 - 26ms/epoch - 9ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 0.0632 - 27ms/epoch - 9ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 0.0537 - 26ms/epoch - 9ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 0.0523 - 24ms/epoch - 8ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 0.0521 - 24ms/epoch - 8ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 0.0483 - 23ms/epoch - 8ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 0.0498 - 26ms/epoch - 9ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 0.0444 - 25ms/epoch - 8ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 0.0487 - 36ms/epoch - 12ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 0.0466 - 26ms/epoch - 9ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 0.0419 - 26ms/epoch - 9ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 0.0439 - 26ms/epoch - 9ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 0.0406 - 25ms/epoch - 8ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 0.0413 - 23ms/epoch - 8ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 0.0421 - 27ms/epoch - 9ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 0.0378 - 25ms/epoch - 8ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.0382 - 27ms/epoch - 9ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.0425 - 27ms/epoch - 9ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.0505 - 23ms/epoch - 8ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.0423 - 29ms/epoch - 10ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 0.0513 - 27ms/epoch - 9ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 0.0385 - 31ms/epoch - 10ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.0391 - 26ms/epoch - 9ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.0415 - 24ms/epoch - 8ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.0413 - 27ms/epoch - 9ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.0375 - 25ms/epoch - 8ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.0352 - 29ms/epoch - 10ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.0318 - 24ms/epoch - 8ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.0430 - 27ms/epoch - 9ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.0384 - 27ms/epoch - 9ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.0267 - 31ms/epoch - 10ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.0400 - 27ms/epoch - 9ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.0338 - 27ms/epoch - 9ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.0294 - 27ms/epoch - 9ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.0306 - 27ms/epoch - 9ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.0374 - 25ms/epoch - 8ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.0296 - 27ms/epoch - 9ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.0281 - 26ms/epoch - 9ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.0299 - 30ms/epoch - 10ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.0246 - 29ms/epoch - 10ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.0272 - 24ms/epoch - 8ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.0192 - 27ms/epoch - 9ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.0260 - 28ms/epoch - 9ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.0230 - 27ms/epoch - 9ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.0228 - 29ms/epoch - 10ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.0252 - 28ms/epoch - 9ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.0232 - 30ms/epoch - 10ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.0268 - 29ms/epoch - 10ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.0268 - 24ms/epoch - 8ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.0179 - 27ms/epoch - 9ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.0227 - 30ms/epoch - 10ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.0185 - 27ms/epoch - 9ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.0133 - 26ms/epoch - 9ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.0151 - 28ms/epoch - 9ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.0162 - 28ms/epoch - 9ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.0126 - 30ms/epoch - 10ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.0194 - 28ms/epoch - 9ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.0128 - 26ms/epoch - 9ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 0.0112 - 28ms/epoch - 9ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 0.0108 - 27ms/epoch - 9ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.0073 - 27ms/epoch - 9ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.0094 - 30ms/epoch - 10ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.0080 - 26ms/epoch - 9ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.0058 - 27ms/epoch - 9ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 0.0056 - 27ms/epoch - 9ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 0.0059 - 30ms/epoch - 10ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 0.0089 - 28ms/epoch - 9ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 0.0108 - 26ms/epoch - 9ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 0.0085 - 23ms/epoch - 8ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 0.0050 - 27ms/epoch - 9ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.0052 - 27ms/epoch - 9ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 0.0049 - 24ms/epoch - 8ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 0.0030 - 26ms/epoch - 9ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 0.0027 - 27ms/epoch - 9ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 0.0030 - 25ms/epoch - 8ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 0.0036 - 26ms/epoch - 9ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 0.0043 - 33ms/epoch - 11ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 0.0039 - 24ms/epoch - 8ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 0.0045 - 27ms/epoch - 9ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 0.0031 - 31ms/epoch - 10ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 0.0036 - 27ms/epoch - 9ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 0.0088 - 28ms/epoch - 9ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 0.0116 - 29ms/epoch - 10ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 0.0067 - 26ms/epoch - 9ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 0.0045 - 25ms/epoch - 8ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 0.0066 - 27ms/epoch - 9ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 0.0084 - 26ms/epoch - 9ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 0.0090 - 24ms/epoch - 8ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 0.0102 - 26ms/epoch - 9ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 0.0061 - 27ms/epoch - 9ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 0.0064 - 28ms/epoch - 9ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 0.0048 - 27ms/epoch - 9ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 0.0027 - 26ms/epoch - 9ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 0.0036 - 29ms/epoch - 10ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 0.0027 - 28ms/epoch - 9ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 0.0028 - 26ms/epoch - 9ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 0.0019 - 27ms/epoch - 9ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 0.0013 - 27ms/epoch - 9ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 0.0011 - 30ms/epoch - 10ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 9.8218e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 0.0018 - 29ms/epoch - 10ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 0.0015 - 24ms/epoch - 8ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 0.0017 - 24ms/epoch - 8ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 6.3527e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 8.5941e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 0.0014 - 24ms/epoch - 8ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 0.0016 - 26ms/epoch - 9ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 0.0018 - 24ms/epoch - 8ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 0.0017 - 26ms/epoch - 9ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 0.0012 - 30ms/epoch - 10ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 8.0478e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 6.1784e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 6.7212e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 8.4763e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 5.5928e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 4.2801e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 3.9907e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 2.8396e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 2.3461e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 3.7857e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 3.9479e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 2.0054e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 2.3081e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 1.6371e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 1.5167e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 1.3008e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 1.7352e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 1.9117e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 1.2486e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 8.8005e-05 - 30ms/epoch - 10ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 1.5354e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 1.2214e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 1.4874e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 2.2258e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 2.9206e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 2.4939e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 3.8653e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 5.2350e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 3.5211e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 3.5343e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 5.1840e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 4.6843e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 5.8500e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 5.8777e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 5.3106e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 3.9522e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 3.5999e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 3.1030e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 4.5050e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 8.1685e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 0.0020 - 25ms/epoch - 8ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 0.0015 - 23ms/epoch - 8ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 0.0012 - 29ms/epoch - 10ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 0.0010 - 26ms/epoch - 9ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 9.1898e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 8.5256e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 0.0013 - 23ms/epoch - 8ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 0.0015 - 27ms/epoch - 9ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 0.0017 - 26ms/epoch - 9ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 0.0013 - 27ms/epoch - 9ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 0.0026 - 28ms/epoch - 9ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 0.0017 - 29ms/epoch - 10ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 0.0014 - 28ms/epoch - 9ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 0.0021 - 26ms/epoch - 9ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 0.0028 - 28ms/epoch - 9ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 0.0026 - 29ms/epoch - 10ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 0.0041 - 25ms/epoch - 8ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 0.0037 - 26ms/epoch - 9ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 0.0029 - 26ms/epoch - 9ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 0.0030 - 28ms/epoch - 9ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 0.0051 - 26ms/epoch - 9ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 0.0020 - 24ms/epoch - 8ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 0.0025 - 28ms/epoch - 9ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 0.0025 - 31ms/epoch - 10ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 0.0031 - 24ms/epoch - 8ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 0.0045 - 26ms/epoch - 9ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 0.0027 - 26ms/epoch - 9ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 0.0024 - 25ms/epoch - 8ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 0.0020 - 27ms/epoch - 9ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 0.0017 - 29ms/epoch - 10ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 0.0021 - 27ms/epoch - 9ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 0.0017 - 28ms/epoch - 9ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 0.0022 - 28ms/epoch - 9ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 0.0017 - 29ms/epoch - 10ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 0.0024 - 28ms/epoch - 9ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 0.0028 - 29ms/epoch - 10ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 0.0029 - 25ms/epoch - 8ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 0.0029 - 28ms/epoch - 9ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 0.0037 - 27ms/epoch - 9ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 0.0052 - 29ms/epoch - 10ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 0.0047 - 26ms/epoch - 9ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 0.0064 - 25ms/epoch - 8ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 0.0052 - 26ms/epoch - 9ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 0.0048 - 24ms/epoch - 8ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 0.0059 - 29ms/epoch - 10ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 0.0058 - 24ms/epoch - 8ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 0.0053 - 26ms/epoch - 9ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 0.0034 - 25ms/epoch - 8ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 0.0023 - 26ms/epoch - 9ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 0.0018 - 24ms/epoch - 8ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 0.0016 - 26ms/epoch - 9ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 0.0016 - 29ms/epoch - 10ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 6.9928e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 5.8375e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 4.8474e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 5.2500e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 0.0011 - 32ms/epoch - 11ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 5.9002e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 4.5692e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 4.8972e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 5.3952e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 5.4622e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 4.8432e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 3.5308e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 2.6863e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 2.7955e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 4.3276e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 8.9731e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 0.0014 - 27ms/epoch - 9ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 0.0012 - 25ms/epoch - 8ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 0.0011 - 28ms/epoch - 9ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 0.0010 - 29ms/epoch - 10ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 0.0012 - 27ms/epoch - 9ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 0.0010 - 28ms/epoch - 9ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 0.0012 - 29ms/epoch - 10ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 0.0012 - 28ms/epoch - 9ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 0.0021 - 25ms/epoch - 8ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 0.0023 - 26ms/epoch - 9ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 0.0029 - 24ms/epoch - 8ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 0.0055 - 28ms/epoch - 9ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 0.0045 - 27ms/epoch - 9ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 0.0041 - 26ms/epoch - 9ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 0.0021 - 29ms/epoch - 10ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 0.0019 - 25ms/epoch - 8ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 0.0015 - 27ms/epoch - 9ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 0.0013 - 30ms/epoch - 10ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 0.0012 - 24ms/epoch - 8ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 8.1469e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 5.7831e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 5.1143e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 3.7996e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 2.4139e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 2.8682e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 3.8075e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 8.6227e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 0.0013 - 27ms/epoch - 9ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 6.4595e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 6.3223e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 5.4508e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 5.1054e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 6.8706e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 9.9856e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 0.0013 - 30ms/epoch - 10ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 0.0023 - 26ms/epoch - 9ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 0.0043 - 32ms/epoch - 11ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 0.0025 - 28ms/epoch - 9ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 0.0028 - 26ms/epoch - 9ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 0.0037 - 26ms/epoch - 9ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 0.0031 - 28ms/epoch - 9ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 0.0030 - 30ms/epoch - 10ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 0.0021 - 29ms/epoch - 10ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 0.0030 - 28ms/epoch - 9ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 0.0033 - 28ms/epoch - 9ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 0.0059 - 25ms/epoch - 8ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 0.0041 - 26ms/epoch - 9ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 0.0023 - 27ms/epoch - 9ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 0.0032 - 25ms/epoch - 8ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 0.0050 - 26ms/epoch - 9ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 0.0074 - 27ms/epoch - 9ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 0.0057 - 27ms/epoch - 9ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 0.0026 - 27ms/epoch - 9ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 0.0029 - 26ms/epoch - 9ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 0.0045 - 26ms/epoch - 9ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 0.0029 - 25ms/epoch - 8ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 0.0017 - 27ms/epoch - 9ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 0.0025 - 32ms/epoch - 11ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 0.0025 - 29ms/epoch - 10ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 0.0022 - 30ms/epoch - 10ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 0.0023 - 28ms/epoch - 9ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 0.0038 - 26ms/epoch - 9ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 0.0039 - 27ms/epoch - 9ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 0.0039 - 26ms/epoch - 9ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 0.0051 - 27ms/epoch - 9ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 0.0044 - 33ms/epoch - 11ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 0.0049 - 33ms/epoch - 11ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 0.0047 - 28ms/epoch - 9ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 0.0059 - 31ms/epoch - 10ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 0.0043 - 27ms/epoch - 9ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 0.0030 - 33ms/epoch - 11ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 0.0019 - 29ms/epoch - 10ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 0.0031 - 28ms/epoch - 9ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 0.0030 - 29ms/epoch - 10ms/step\n",
"14/14 [==============================] - 0s 3ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7bae59e77b50>"
]
},
"metadata": {},
"execution_count": 299
},
{
"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": "931d629b-f285-4fce-ce8b-1e78e68f1b72"
},
"execution_count": 300,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710117590.395192\n",
"Mon Mar 11 00:39:50 2024\n"
]
}
]
}
]
}