1743 lines (1743 with data), 131.9 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": 62,
"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": 63,
"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": "99517b5c-c16e-4682-e0b1-e3f4d321f6a8",
"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(1, activation=None)])\n",
"fc_model.summary()"
],
"execution_count": 64,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_10\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_24 (Dense) (None, 1024) 3072 \n",
" \n",
" dense_25 (Dense) (None, 1024) 1049600 \n",
" \n",
" dense_26 (Dense) (None, 1024) 1049600 \n",
" \n",
" dense_27 (Dense) (None, 1) 1025 \n",
" \n",
"=================================================================\n",
"Total params: 2103297 (8.02 MB)\n",
"Trainable params: 2103297 (8.02 MB)\n",
"Non-trainable params: 0 (0.00 Byte)\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "bbKsmK8wIFTp",
"outputId": "a59f6698-cae6-49c3-915a-57f623be7509",
"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": 65,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_11\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_28 (Dense) (None, 1024) 3072 \n",
" \n",
" tn_layer_15 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_16 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_17 (TNLayer) (None, 1024) 5120 \n",
" \n",
" dense_29 (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": 66,
"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": "b1b38b5d-a7c7-42d2-c526-f701ab78e46b"
},
"execution_count": 67,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710188607.3766932\n",
"Mon Mar 11 20:23:27 2024\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "crc0q1vbIyTj",
"outputId": "d4846271-31e6-4568-dc71-d892e5d56106",
"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": 68,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 1s - loss: 1.0022 - 1s/epoch - 480ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 1.0019 - 18ms/epoch - 6ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 1.0007 - 18ms/epoch - 6ms/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 - 18ms/epoch - 6ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 0.9995 - 17ms/epoch - 6ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 0.9989 - 19ms/epoch - 6ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 0.9976 - 19ms/epoch - 6ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 0.9942 - 18ms/epoch - 6ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 0.9871 - 20ms/epoch - 7ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 0.9714 - 17ms/epoch - 6ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 0.9376 - 19ms/epoch - 6ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 0.8738 - 19ms/epoch - 6ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 0.7483 - 18ms/epoch - 6ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 0.5363 - 20ms/epoch - 7ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 0.2552 - 18ms/epoch - 6ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 0.1328 - 20ms/epoch - 7ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 0.0853 - 18ms/epoch - 6ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 0.0499 - 17ms/epoch - 6ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 0.0569 - 18ms/epoch - 6ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 0.0575 - 18ms/epoch - 6ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 0.0337 - 19ms/epoch - 6ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 0.0169 - 18ms/epoch - 6ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 0.0181 - 18ms/epoch - 6ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.0228 - 19ms/epoch - 6ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.0148 - 18ms/epoch - 6ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.0095 - 17ms/epoch - 6ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.0122 - 19ms/epoch - 6ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 0.0129 - 18ms/epoch - 6ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 0.0099 - 19ms/epoch - 6ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.0082 - 18ms/epoch - 6ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.0086 - 18ms/epoch - 6ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.0086 - 17ms/epoch - 6ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.0073 - 18ms/epoch - 6ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.0069 - 19ms/epoch - 6ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.0070 - 21ms/epoch - 7ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.0066 - 17ms/epoch - 6ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.0061 - 21ms/epoch - 7ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.0059 - 19ms/epoch - 6ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.0058 - 17ms/epoch - 6ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.0054 - 18ms/epoch - 6ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.0052 - 17ms/epoch - 6ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.0052 - 18ms/epoch - 6ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.0050 - 18ms/epoch - 6ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.0047 - 18ms/epoch - 6ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.0046 - 17ms/epoch - 6ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.0045 - 15ms/epoch - 5ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.0043 - 19ms/epoch - 6ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.0042 - 17ms/epoch - 6ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.0041 - 17ms/epoch - 6ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.0039 - 17ms/epoch - 6ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.0038 - 19ms/epoch - 6ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.0037 - 18ms/epoch - 6ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.0036 - 18ms/epoch - 6ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.0035 - 17ms/epoch - 6ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.0035 - 19ms/epoch - 6ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.0033 - 18ms/epoch - 6ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.0032 - 15ms/epoch - 5ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.0032 - 17ms/epoch - 6ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.0031 - 16ms/epoch - 5ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.0030 - 18ms/epoch - 6ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.0029 - 19ms/epoch - 6ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.0028 - 18ms/epoch - 6ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.0027 - 18ms/epoch - 6ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.0027 - 20ms/epoch - 7ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.0026 - 20ms/epoch - 7ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 0.0025 - 21ms/epoch - 7ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 0.0024 - 19ms/epoch - 6ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.0024 - 20ms/epoch - 7ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.0023 - 21ms/epoch - 7ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.0022 - 18ms/epoch - 6ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.0021 - 19ms/epoch - 6ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 0.0021 - 20ms/epoch - 7ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 0.0020 - 20ms/epoch - 7ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 0.0020 - 19ms/epoch - 6ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 0.0019 - 17ms/epoch - 6ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 0.0019 - 19ms/epoch - 6ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 0.0018 - 20ms/epoch - 7ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.0017 - 21ms/epoch - 7ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 0.0017 - 19ms/epoch - 6ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 0.0016 - 18ms/epoch - 6ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 0.0016 - 19ms/epoch - 6ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 0.0015 - 19ms/epoch - 6ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 0.0015 - 19ms/epoch - 6ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 0.0014 - 18ms/epoch - 6ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 0.0014 - 16ms/epoch - 5ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 0.0013 - 19ms/epoch - 6ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 0.0013 - 16ms/epoch - 5ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 0.0013 - 17ms/epoch - 6ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 0.0012 - 17ms/epoch - 6ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 0.0012 - 19ms/epoch - 6ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 0.0011 - 20ms/epoch - 7ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 0.0010 - 19ms/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.7585e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 9.4739e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 8.8376e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 8.8443e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 8.5016e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 7.8693e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 7.5985e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 7.2718e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 6.8369e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 6.4617e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 6.2356e-04 - 15ms/epoch - 5ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 6.0373e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 5.5852e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 5.3477e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 5.1241e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 4.7371e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 4.6071e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 4.2871e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 3.9688e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 3.7633e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 3.6869e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 3.2872e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 3.2054e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 2.8800e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 2.9521e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 2.6864e-04 - 16ms/epoch - 5ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 2.3078e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 2.2755e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 2.0790e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 2.0121e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 1.7372e-04 - 16ms/epoch - 5ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 1.6628e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 1.6221e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 1.3890e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 1.2812e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 1.1895e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 1.0716e-04 - 16ms/epoch - 5ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 1.0509e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 9.5302e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 8.9320e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 7.9932e-05 - 15ms/epoch - 5ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 7.6039e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 6.8390e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 6.7944e-05 - 15ms/epoch - 5ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 6.4975e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 5.5611e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 5.0388e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 4.7838e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 4.1786e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 4.0887e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 3.5722e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 3.7867e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 2.8759e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 2.7539e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 2.4218e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 2.3156e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 2.3070e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 1.9365e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 1.8529e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 1.5956e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 1.5604e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 1.3783e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 1.4729e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 1.2078e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 1.2207e-05 - 16ms/epoch - 5ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 1.0879e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 1.0433e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 9.2367e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 9.2823e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 9.2368e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 8.9399e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 7.6399e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 7.3555e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 7.1306e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 5.8774e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 6.4581e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 5.7006e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 5.3620e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 4.8287e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 4.8982e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 4.5351e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 4.5004e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 4.6034e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 3.9515e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 4.4046e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 3.7058e-06 - 21ms/epoch - 7ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 4.1062e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 3.6125e-06 - 21ms/epoch - 7ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 3.8692e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 3.4871e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 3.4040e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 3.3733e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 2.9397e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 3.2586e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 2.9435e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 2.9839e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 3.0393e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 2.6798e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 2.6875e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 2.5882e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 2.5734e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 2.3711e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 2.4527e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 2.4843e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 2.2569e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 2.4349e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 2.5483e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 2.4022e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 2.2508e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 2.2485e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 2.1424e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 1.9888e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 1.8907e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 1.9364e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 1.9326e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 2.1587e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 2.0298e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 1.9716e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 1.9339e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 1.9305e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 1.5792e-06 - 15ms/epoch - 5ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 1.8935e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 1.5631e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 1.6932e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 1.6744e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 1.4498e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 1.7790e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 1.6285e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 1.3588e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 1.6103e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 1.9550e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 1.5153e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 1.2890e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 1.5402e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 1.2845e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 1.3520e-06 - 15ms/epoch - 5ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 1.3800e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 1.1613e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 1.4911e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 1.1661e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 1.2146e-06 - 14ms/epoch - 5ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 1.1712e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 1.5441e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 1.4544e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 1.2976e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 1.3621e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 1.3516e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 1.2500e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 1.2723e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 1.2128e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 1.0654e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 1.1090e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 1.4048e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 1.4130e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 1.0921e-06 - 15ms/epoch - 5ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 1.1293e-06 - 15ms/epoch - 5ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 1.3316e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 1.0265e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 9.4334e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 1.0114e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 8.6716e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 9.3034e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 8.2988e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 8.3576e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 1.2566e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 9.9522e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 1.1149e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 7.8222e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 9.0784e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 9.9951e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 7.8312e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 8.5199e-07 - 15ms/epoch - 5ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 8.0438e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 8.6978e-07 - 15ms/epoch - 5ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 7.5707e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 7.3078e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 7.3550e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 6.7303e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 7.1682e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 8.9318e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 8.2605e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 8.3601e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 7.6243e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 7.5133e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 8.8534e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 7.0423e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 6.1450e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 6.7513e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 6.6594e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 6.6106e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 7.4524e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 6.2574e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 6.6017e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 6.9494e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 5.5566e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 5.5517e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 5.3925e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 5.3570e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 5.3961e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 5.4526e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 5.4320e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 5.7911e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 5.7353e-07 - 15ms/epoch - 5ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 5.0765e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 5.5981e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 6.0785e-07 - 18ms/epoch - 6ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<keras.src.callbacks.History at 0x788338871a50>"
]
},
"metadata": {},
"execution_count": 68
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "n-aNP4n3sqG_",
"outputId": "faa212b0-b0ef-49fe-8d01-48545dae60ef",
"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": 69,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"14/14 [==============================] - 0s 3ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x788338dd1540>"
]
},
"metadata": {},
"execution_count": 69
},
{
"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": "0978a776-2e29-4dc1-9640-d6f35b70603d"
},
"execution_count": 70,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710188615.4486458\n",
"Mon Mar 11 20:23:35 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": "30c6ac36-3065-43f3-f66b-e8feaceaea04"
},
"execution_count": 71,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710188615.458556\n",
"Mon Mar 11 20:23:35 2024\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BMxSJo5gtOmQ"
},
"source": [
"# VS Fully Connected"
]
},
{
"cell_type": "code",
"metadata": {
"id": "NKQx7stYswzU",
"outputId": "e1f6dacb-5e96-4faf-b7f5-f3f78fb8827b",
"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": 72,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 1s - loss: 0.6776 - 562ms/epoch - 187ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 0.1278 - 38ms/epoch - 13ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 0.1188 - 38ms/epoch - 13ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 0.1146 - 38ms/epoch - 13ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 0.0845 - 38ms/epoch - 13ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 0.1141 - 37ms/epoch - 12ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 0.1044 - 39ms/epoch - 13ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 0.0821 - 35ms/epoch - 12ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 0.0812 - 43ms/epoch - 14ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 0.0951 - 37ms/epoch - 12ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 0.0564 - 39ms/epoch - 13ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 0.0705 - 39ms/epoch - 13ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 0.0503 - 39ms/epoch - 13ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 0.0541 - 43ms/epoch - 14ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 0.0445 - 42ms/epoch - 14ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 0.0484 - 37ms/epoch - 12ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 0.0435 - 35ms/epoch - 12ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 0.0423 - 38ms/epoch - 13ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 0.0417 - 39ms/epoch - 13ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 0.0398 - 39ms/epoch - 13ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 0.0362 - 36ms/epoch - 12ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 0.0366 - 42ms/epoch - 14ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 0.0360 - 39ms/epoch - 13ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 0.0341 - 39ms/epoch - 13ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.0354 - 37ms/epoch - 12ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.0351 - 38ms/epoch - 13ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.0371 - 41ms/epoch - 14ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.0341 - 41ms/epoch - 14ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 0.0324 - 39ms/epoch - 13ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 0.0354 - 36ms/epoch - 12ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.0278 - 39ms/epoch - 13ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.0310 - 35ms/epoch - 12ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.0254 - 38ms/epoch - 13ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.0330 - 38ms/epoch - 13ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.0309 - 36ms/epoch - 12ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.0278 - 37ms/epoch - 12ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.0341 - 35ms/epoch - 12ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.0293 - 35ms/epoch - 12ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.0257 - 36ms/epoch - 12ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.0299 - 39ms/epoch - 13ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.0247 - 34ms/epoch - 11ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.0251 - 42ms/epoch - 14ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.0244 - 34ms/epoch - 11ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.0226 - 33ms/epoch - 11ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.0219 - 38ms/epoch - 13ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.0224 - 35ms/epoch - 12ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.0199 - 38ms/epoch - 13ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.0238 - 35ms/epoch - 12ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.0273 - 34ms/epoch - 11ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.0235 - 40ms/epoch - 13ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.0285 - 34ms/epoch - 11ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.0186 - 39ms/epoch - 13ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.0200 - 39ms/epoch - 13ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.0155 - 37ms/epoch - 12ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.0157 - 36ms/epoch - 12ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.0151 - 36ms/epoch - 12ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.0144 - 39ms/epoch - 13ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.0147 - 37ms/epoch - 12ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.0169 - 43ms/epoch - 14ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.0145 - 41ms/epoch - 14ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.0117 - 40ms/epoch - 13ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.0077 - 42ms/epoch - 14ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.0079 - 44ms/epoch - 15ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.0079 - 39ms/epoch - 13ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.0073 - 40ms/epoch - 13ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.0053 - 39ms/epoch - 13ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 0.0062 - 40ms/epoch - 13ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 0.0046 - 37ms/epoch - 12ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.0042 - 41ms/epoch - 14ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.0050 - 39ms/epoch - 13ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.0035 - 38ms/epoch - 13ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.0036 - 39ms/epoch - 13ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 0.0040 - 39ms/epoch - 13ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 0.0037 - 38ms/epoch - 13ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 0.0036 - 40ms/epoch - 13ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 0.0031 - 44ms/epoch - 15ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 0.0018 - 37ms/epoch - 12ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 0.0022 - 39ms/epoch - 13ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.0014 - 39ms/epoch - 13ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 0.0012 - 39ms/epoch - 13ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 9.4693e-04 - 41ms/epoch - 14ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 7.8653e-04 - 41ms/epoch - 14ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 7.0740e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 6.3633e-04 - 42ms/epoch - 14ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 6.7299e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 5.4954e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 5.2573e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 3.8505e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 4.8485e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 6.8567e-04 - 41ms/epoch - 14ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 5.1987e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 5.1154e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 4.3320e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 4.9311e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 0.0016 - 37ms/epoch - 12ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 0.0015 - 43ms/epoch - 14ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 0.0018 - 40ms/epoch - 13ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 0.0013 - 43ms/epoch - 14ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 4.2720e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 5.1610e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 8.8149e-04 - 43ms/epoch - 14ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 5.8006e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 5.0525e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 4.8252e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 4.5702e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 3.5578e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 2.7653e-04 - 43ms/epoch - 14ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 3.2872e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 5.2487e-04 - 41ms/epoch - 14ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 5.3530e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 5.1077e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 3.2855e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 7.5276e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 6.2728e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 5.9946e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 0.0014 - 36ms/epoch - 12ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 0.0016 - 34ms/epoch - 11ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 0.0021 - 33ms/epoch - 11ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 0.0014 - 35ms/epoch - 12ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 9.7364e-04 - 41ms/epoch - 14ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 5.2047e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 2.8267e-04 - 34ms/epoch - 11ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 2.8811e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 4.0365e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 3.5734e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 1.9802e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 2.2036e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 1.2084e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 1.6406e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 2.8429e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 1.9091e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 1.8664e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 3.6412e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 4.3927e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 6.1377e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 6.7674e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 6.3422e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 3.9503e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 9.6594e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 8.9364e-04 - 41ms/epoch - 14ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 0.0014 - 38ms/epoch - 13ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 0.0017 - 41ms/epoch - 14ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 0.0035 - 36ms/epoch - 12ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 0.0028 - 39ms/epoch - 13ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 0.0011 - 37ms/epoch - 12ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 4.8874e-04 - 33ms/epoch - 11ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 5.7582e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 4.6560e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 3.6219e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 2.9831e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 1.7728e-04 - 34ms/epoch - 11ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 2.1483e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 9.3394e-05 - 40ms/epoch - 13ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 1.4656e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 9.3019e-05 - 37ms/epoch - 12ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 5.2331e-05 - 40ms/epoch - 13ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 8.8442e-05 - 39ms/epoch - 13ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 1.5318e-04 - 34ms/epoch - 11ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 1.4769e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 1.7782e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 1.7994e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 1.2796e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 1.4177e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 6.1133e-05 - 39ms/epoch - 13ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 8.3900e-05 - 44ms/epoch - 15ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 7.3799e-05 - 33ms/epoch - 11ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 6.6169e-05 - 41ms/epoch - 14ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 8.5057e-05 - 34ms/epoch - 11ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 7.3298e-05 - 39ms/epoch - 13ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 5.4237e-05 - 42ms/epoch - 14ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 3.6815e-05 - 37ms/epoch - 12ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 3.8583e-05 - 33ms/epoch - 11ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 4.0781e-05 - 38ms/epoch - 13ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 5.4944e-05 - 36ms/epoch - 12ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 4.8162e-05 - 41ms/epoch - 14ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 3.4501e-05 - 41ms/epoch - 14ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 4.9656e-05 - 37ms/epoch - 12ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 1.0498e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 1.8578e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 1.3825e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 2.5695e-04 - 34ms/epoch - 11ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 2.7838e-04 - 42ms/epoch - 14ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 4.2048e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 1.6400e-04 - 34ms/epoch - 11ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 1.1798e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 1.0885e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 6.3355e-05 - 39ms/epoch - 13ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 5.7522e-05 - 40ms/epoch - 13ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 6.0984e-05 - 33ms/epoch - 11ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 4.9439e-05 - 38ms/epoch - 13ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 5.9724e-05 - 37ms/epoch - 12ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 8.1315e-05 - 35ms/epoch - 12ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 8.5409e-05 - 38ms/epoch - 13ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 1.3003e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 1.0443e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 1.2602e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 2.0659e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 2.7747e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 1.9890e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 3.5509e-04 - 34ms/epoch - 11ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 2.6113e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 1.2574e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 2.1496e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 3.3302e-04 - 34ms/epoch - 11ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 3.5107e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 7.1332e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 6.2318e-04 - 41ms/epoch - 14ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 5.1493e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 2.7979e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 2.2614e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 1.9193e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 2.1392e-04 - 41ms/epoch - 14ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 1.8647e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 1.2997e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 1.2746e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 3.2343e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 3.6288e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 4.3739e-04 - 34ms/epoch - 11ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 7.9168e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 0.0012 - 38ms/epoch - 13ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 0.0015 - 38ms/epoch - 13ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 0.0021 - 37ms/epoch - 12ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 8.7559e-04 - 43ms/epoch - 14ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 7.7854e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 0.0011 - 36ms/epoch - 12ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 0.0017 - 40ms/epoch - 13ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 0.0014 - 39ms/epoch - 13ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 0.0033 - 38ms/epoch - 13ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 0.0017 - 42ms/epoch - 14ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 0.0014 - 43ms/epoch - 14ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 0.0012 - 45ms/epoch - 15ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 0.0017 - 38ms/epoch - 13ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 0.0015 - 43ms/epoch - 14ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 0.0014 - 37ms/epoch - 12ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 0.0014 - 39ms/epoch - 13ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 0.0017 - 35ms/epoch - 12ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 0.0021 - 38ms/epoch - 13ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 0.0026 - 36ms/epoch - 12ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 0.0018 - 36ms/epoch - 12ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 0.0014 - 39ms/epoch - 13ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 0.0011 - 34ms/epoch - 11ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 8.9176e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 6.1846e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 8.0573e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 7.7474e-04 - 42ms/epoch - 14ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 4.9750e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 4.0750e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 3.2811e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 3.2679e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 3.8826e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 3.3073e-04 - 34ms/epoch - 11ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 4.6367e-04 - 34ms/epoch - 11ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 9.9856e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 0.0012 - 39ms/epoch - 13ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 6.2647e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 9.0749e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 4.2813e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 3.3477e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 3.7045e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 4.0830e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 2.9792e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 4.9858e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 4.9881e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 3.7751e-04 - 34ms/epoch - 11ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 4.5507e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 6.9792e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 8.1078e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 7.2812e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 4.7456e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 4.2437e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 2.9975e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 4.4491e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 5.0862e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 1.9417e-04 - 38ms/epoch - 13ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 1.9835e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 1.1220e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 1.3400e-04 - 39ms/epoch - 13ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 3.2119e-05 - 35ms/epoch - 12ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 3.5295e-05 - 41ms/epoch - 14ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 6.3431e-05 - 37ms/epoch - 12ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 6.1413e-05 - 39ms/epoch - 13ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 7.3823e-05 - 36ms/epoch - 12ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 6.7180e-05 - 40ms/epoch - 13ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 9.7631e-05 - 36ms/epoch - 12ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 9.7720e-05 - 38ms/epoch - 13ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 1.0627e-04 - 35ms/epoch - 12ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 1.0292e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 2.0394e-04 - 40ms/epoch - 13ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 1.7405e-04 - 45ms/epoch - 15ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 1.7150e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 1.4889e-04 - 36ms/epoch - 12ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 7.5433e-05 - 38ms/epoch - 13ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 1.5231e-04 - 41ms/epoch - 14ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 1.5670e-04 - 37ms/epoch - 12ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 8.7826e-05 - 38ms/epoch - 13ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 7.0068e-05 - 37ms/epoch - 12ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 7.2075e-05 - 38ms/epoch - 13ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 5.5257e-05 - 36ms/epoch - 12ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 5.6686e-05 - 38ms/epoch - 13ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 7.1230e-05 - 37ms/epoch - 12ms/step\n",
"14/14 [==============================] - 0s 4ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x78833826aad0>"
]
},
"metadata": {},
"execution_count": 72
},
{
"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": "e665bf0f-dd2a-47c5-d8bf-dceb40f10b3b"
},
"execution_count": 73,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710188628.3397303\n",
"Mon Mar 11 20:23:48 2024\n"
]
}
]
}
]
}