1743 lines (1743 with data), 131.8 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": 111,
"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": 112,
"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": "e661748b-7eea-4b7b-aad9-0a0fb4c053fc",
"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": 113,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_18\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_45 (Dense) (None, 1024) 3072 \n",
" \n",
" dense_46 (Dense) (None, 1024) 1049600 \n",
" \n",
" dense_47 (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": "d561a3ae-7e9a-4a5e-f2db-43ecbc812a1b",
"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": 114,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_19\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_48 (Dense) (None, 1024) 3072 \n",
" \n",
" tn_layer_27 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_28 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_29 (TNLayer) (None, 1024) 5120 \n",
" \n",
" dense_49 (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": 115,
"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": "9be4cf8a-b0e0-4d72-800f-73bf677e40bd"
},
"execution_count": 116,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710116234.760207\n",
"Mon Mar 11 00:17:14 2024\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "crc0q1vbIyTj",
"outputId": "04271972-e9f7-4864-ce6e-066bc8a895a6",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
}
},
"source": [
"optimizer = Adam(learning_rate=0.0001)\n",
"tn_model.compile(optimizer=optimizer, loss=\"mean_squared_error\")\n",
"tn_model.fit(X, Y, epochs=300, verbose=2)"
],
"execution_count": 117,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 2s - loss: 1.0002 - 2s/epoch - 751ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 1.0001 - 21ms/epoch - 7ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 1.0000 - 21ms/epoch - 7ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 0.9999 - 21ms/epoch - 7ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 1.0000 - 21ms/epoch - 7ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 0.9999 - 22ms/epoch - 7ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 0.9999 - 22ms/epoch - 7ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 0.9999 - 20ms/epoch - 7ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 0.9999 - 21ms/epoch - 7ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 0.9999 - 22ms/epoch - 7ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 0.9999 - 21ms/epoch - 7ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 0.9998 - 23ms/epoch - 8ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 0.9998 - 23ms/epoch - 8ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 0.9998 - 23ms/epoch - 8ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 0.9997 - 19ms/epoch - 6ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 0.9997 - 22ms/epoch - 7ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 0.9997 - 22ms/epoch - 7ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 0.9996 - 23ms/epoch - 8ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 0.9996 - 21ms/epoch - 7ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 0.9995 - 21ms/epoch - 7ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 0.9995 - 21ms/epoch - 7ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 0.9994 - 20ms/epoch - 7ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 0.9993 - 21ms/epoch - 7ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 0.9992 - 19ms/epoch - 6ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.9991 - 21ms/epoch - 7ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.9989 - 19ms/epoch - 6ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.9987 - 22ms/epoch - 7ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.9985 - 21ms/epoch - 7ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 0.9982 - 20ms/epoch - 7ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 0.9979 - 22ms/epoch - 7ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.9975 - 22ms/epoch - 7ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.9971 - 19ms/epoch - 6ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.9966 - 20ms/epoch - 7ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.9958 - 21ms/epoch - 7ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.9950 - 21ms/epoch - 7ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.9940 - 19ms/epoch - 6ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.9927 - 20ms/epoch - 7ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.9911 - 21ms/epoch - 7ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.9890 - 21ms/epoch - 7ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.9863 - 22ms/epoch - 7ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.9827 - 21ms/epoch - 7ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.9782 - 20ms/epoch - 7ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.9719 - 19ms/epoch - 6ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.9642 - 20ms/epoch - 7ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.9549 - 20ms/epoch - 7ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.9437 - 19ms/epoch - 6ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.9304 - 18ms/epoch - 6ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.9149 - 19ms/epoch - 6ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.8969 - 19ms/epoch - 6ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.8764 - 19ms/epoch - 6ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.8531 - 22ms/epoch - 7ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.8269 - 21ms/epoch - 7ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.7975 - 23ms/epoch - 8ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.7647 - 21ms/epoch - 7ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.7287 - 24ms/epoch - 8ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.6893 - 23ms/epoch - 8ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.6466 - 20ms/epoch - 7ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.6005 - 22ms/epoch - 7ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.5509 - 25ms/epoch - 8ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.4981 - 22ms/epoch - 7ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.4419 - 21ms/epoch - 7ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.3826 - 21ms/epoch - 7ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.3213 - 22ms/epoch - 7ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.2588 - 20ms/epoch - 7ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.1972 - 21ms/epoch - 7ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.1398 - 19ms/epoch - 6ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 0.0900 - 22ms/epoch - 7ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 0.0510 - 20ms/epoch - 7ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.0289 - 19ms/epoch - 6ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.0223 - 19ms/epoch - 6ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.0248 - 21ms/epoch - 7ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.0292 - 21ms/epoch - 7ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 0.0297 - 20ms/epoch - 7ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 0.0262 - 19ms/epoch - 6ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 0.0218 - 21ms/epoch - 7ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 0.0185 - 21ms/epoch - 7ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 0.0174 - 20ms/epoch - 7ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 0.0172 - 19ms/epoch - 6ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.0174 - 22ms/epoch - 7ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 0.0174 - 22ms/epoch - 7ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 0.0171 - 20ms/epoch - 7ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 0.0168 - 19ms/epoch - 6ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 0.0163 - 19ms/epoch - 6ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 0.0159 - 19ms/epoch - 6ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 0.0157 - 20ms/epoch - 7ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 0.0156 - 19ms/epoch - 6ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 0.0155 - 23ms/epoch - 8ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 0.0154 - 20ms/epoch - 7ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 0.0153 - 17ms/epoch - 6ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 0.0151 - 19ms/epoch - 6ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 0.0149 - 20ms/epoch - 7ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 0.0148 - 20ms/epoch - 7ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 0.0146 - 18ms/epoch - 6ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 0.0145 - 18ms/epoch - 6ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 0.0144 - 20ms/epoch - 7ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 0.0143 - 20ms/epoch - 7ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 0.0141 - 19ms/epoch - 6ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 0.0140 - 21ms/epoch - 7ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 0.0139 - 18ms/epoch - 6ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 0.0138 - 18ms/epoch - 6ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 0.0137 - 17ms/epoch - 6ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 0.0136 - 20ms/epoch - 7ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 0.0134 - 19ms/epoch - 6ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 0.0133 - 18ms/epoch - 6ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 0.0132 - 19ms/epoch - 6ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 0.0131 - 19ms/epoch - 6ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 0.0130 - 21ms/epoch - 7ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 0.0129 - 18ms/epoch - 6ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 0.0128 - 20ms/epoch - 7ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 0.0127 - 18ms/epoch - 6ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 0.0126 - 19ms/epoch - 6ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 0.0125 - 20ms/epoch - 7ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 0.0124 - 20ms/epoch - 7ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 0.0123 - 21ms/epoch - 7ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 0.0122 - 19ms/epoch - 6ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 0.0121 - 21ms/epoch - 7ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 0.0120 - 17ms/epoch - 6ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 0.0120 - 20ms/epoch - 7ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 0.0119 - 20ms/epoch - 7ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 0.0117 - 20ms/epoch - 7ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 0.0116 - 19ms/epoch - 6ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 0.0116 - 20ms/epoch - 7ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 0.0115 - 19ms/epoch - 6ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 0.0114 - 20ms/epoch - 7ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 0.0113 - 20ms/epoch - 7ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 0.0112 - 19ms/epoch - 6ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 0.0111 - 20ms/epoch - 7ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 0.0111 - 20ms/epoch - 7ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 0.0110 - 19ms/epoch - 6ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 0.0109 - 19ms/epoch - 6ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 0.0108 - 19ms/epoch - 6ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 0.0107 - 19ms/epoch - 6ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 0.0106 - 20ms/epoch - 7ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 0.0106 - 22ms/epoch - 7ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 0.0105 - 20ms/epoch - 7ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 0.0104 - 21ms/epoch - 7ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 0.0103 - 19ms/epoch - 6ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 0.0103 - 19ms/epoch - 6ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 0.0102 - 20ms/epoch - 7ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 0.0101 - 19ms/epoch - 6ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 0.0100 - 18ms/epoch - 6ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 0.0100 - 19ms/epoch - 6ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 0.0099 - 19ms/epoch - 6ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 0.0098 - 19ms/epoch - 6ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 0.0097 - 20ms/epoch - 7ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 0.0097 - 18ms/epoch - 6ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 0.0096 - 22ms/epoch - 7ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 0.0095 - 18ms/epoch - 6ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 0.0095 - 19ms/epoch - 6ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 0.0094 - 18ms/epoch - 6ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 0.0093 - 18ms/epoch - 6ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 0.0092 - 20ms/epoch - 7ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 0.0092 - 18ms/epoch - 6ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 0.0091 - 19ms/epoch - 6ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 0.0091 - 19ms/epoch - 6ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 0.0090 - 18ms/epoch - 6ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 0.0090 - 19ms/epoch - 6ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 0.0089 - 19ms/epoch - 6ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 0.0088 - 19ms/epoch - 6ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 0.0088 - 19ms/epoch - 6ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 0.0087 - 21ms/epoch - 7ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 0.0086 - 21ms/epoch - 7ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 0.0086 - 18ms/epoch - 6ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 0.0085 - 20ms/epoch - 7ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 0.0085 - 17ms/epoch - 6ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 0.0084 - 19ms/epoch - 6ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 0.0083 - 19ms/epoch - 6ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 0.0083 - 20ms/epoch - 7ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 0.0082 - 17ms/epoch - 6ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 0.0082 - 18ms/epoch - 6ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 0.0081 - 19ms/epoch - 6ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 0.0081 - 20ms/epoch - 7ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 0.0080 - 17ms/epoch - 6ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 0.0080 - 19ms/epoch - 6ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 0.0079 - 17ms/epoch - 6ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 0.0079 - 17ms/epoch - 6ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 0.0078 - 18ms/epoch - 6ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 0.0078 - 17ms/epoch - 6ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 0.0077 - 17ms/epoch - 6ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 0.0077 - 17ms/epoch - 6ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 0.0076 - 17ms/epoch - 6ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 0.0076 - 17ms/epoch - 6ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 0.0075 - 19ms/epoch - 6ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 0.0074 - 18ms/epoch - 6ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 0.0074 - 20ms/epoch - 7ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 0.0073 - 21ms/epoch - 7ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 0.0073 - 17ms/epoch - 6ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 0.0073 - 22ms/epoch - 7ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 0.0072 - 20ms/epoch - 7ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 0.0072 - 17ms/epoch - 6ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 0.0071 - 18ms/epoch - 6ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 0.0071 - 18ms/epoch - 6ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 0.0070 - 19ms/epoch - 6ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 0.0070 - 20ms/epoch - 7ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 0.0070 - 19ms/epoch - 6ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 0.0069 - 19ms/epoch - 6ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 0.0069 - 18ms/epoch - 6ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 0.0068 - 18ms/epoch - 6ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 0.0068 - 19ms/epoch - 6ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 0.0067 - 19ms/epoch - 6ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 0.0067 - 21ms/epoch - 7ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 0.0066 - 18ms/epoch - 6ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 0.0066 - 19ms/epoch - 6ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 0.0066 - 20ms/epoch - 7ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 0.0065 - 18ms/epoch - 6ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 0.0065 - 18ms/epoch - 6ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 0.0065 - 18ms/epoch - 6ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 0.0064 - 20ms/epoch - 7ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 0.0064 - 18ms/epoch - 6ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 0.0063 - 17ms/epoch - 6ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 0.0063 - 19ms/epoch - 6ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 0.0063 - 21ms/epoch - 7ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 0.0062 - 19ms/epoch - 6ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 0.0062 - 20ms/epoch - 7ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 0.0061 - 19ms/epoch - 6ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 0.0061 - 20ms/epoch - 7ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 0.0061 - 22ms/epoch - 7ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 0.0060 - 22ms/epoch - 7ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 0.0060 - 20ms/epoch - 7ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 0.0060 - 19ms/epoch - 6ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 0.0059 - 21ms/epoch - 7ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 0.0059 - 20ms/epoch - 7ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 0.0059 - 19ms/epoch - 6ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 0.0058 - 21ms/epoch - 7ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 0.0058 - 20ms/epoch - 7ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 0.0057 - 21ms/epoch - 7ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 0.0057 - 20ms/epoch - 7ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 0.0057 - 21ms/epoch - 7ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 0.0057 - 18ms/epoch - 6ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 0.0056 - 19ms/epoch - 6ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 0.0056 - 20ms/epoch - 7ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 0.0055 - 18ms/epoch - 6ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 0.0055 - 19ms/epoch - 6ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 0.0055 - 19ms/epoch - 6ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 0.0055 - 19ms/epoch - 6ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 0.0054 - 20ms/epoch - 7ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 0.0054 - 19ms/epoch - 6ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 0.0054 - 19ms/epoch - 6ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 0.0053 - 22ms/epoch - 7ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 0.0053 - 18ms/epoch - 6ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 0.0052 - 20ms/epoch - 7ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 0.0052 - 18ms/epoch - 6ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 0.0052 - 18ms/epoch - 6ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 0.0052 - 19ms/epoch - 6ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 0.0051 - 18ms/epoch - 6ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 0.0051 - 20ms/epoch - 7ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 0.0051 - 18ms/epoch - 6ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 0.0050 - 19ms/epoch - 6ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 0.0050 - 18ms/epoch - 6ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 0.0050 - 18ms/epoch - 6ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 0.0050 - 18ms/epoch - 6ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 0.0049 - 19ms/epoch - 6ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 0.0049 - 20ms/epoch - 7ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 0.0049 - 18ms/epoch - 6ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 0.0048 - 20ms/epoch - 7ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 0.0048 - 18ms/epoch - 6ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 0.0048 - 18ms/epoch - 6ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 0.0047 - 18ms/epoch - 6ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 0.0047 - 19ms/epoch - 6ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 0.0047 - 20ms/epoch - 7ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 0.0047 - 20ms/epoch - 7ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 0.0047 - 18ms/epoch - 6ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 0.0046 - 18ms/epoch - 6ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 0.0046 - 21ms/epoch - 7ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 0.0046 - 19ms/epoch - 6ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 0.0046 - 19ms/epoch - 6ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 0.0045 - 18ms/epoch - 6ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 0.0045 - 19ms/epoch - 6ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 0.0045 - 18ms/epoch - 6ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 0.0044 - 18ms/epoch - 6ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 0.0044 - 17ms/epoch - 6ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 0.0044 - 17ms/epoch - 6ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 0.0044 - 16ms/epoch - 5ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 0.0043 - 19ms/epoch - 6ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 0.0043 - 17ms/epoch - 6ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 0.0043 - 18ms/epoch - 6ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 0.0043 - 18ms/epoch - 6ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 0.0042 - 17ms/epoch - 6ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 0.0042 - 17ms/epoch - 6ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 0.0042 - 18ms/epoch - 6ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 0.0042 - 20ms/epoch - 7ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 0.0041 - 18ms/epoch - 6ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 0.0041 - 18ms/epoch - 6ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 0.0041 - 19ms/epoch - 6ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 0.0041 - 18ms/epoch - 6ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 0.0041 - 20ms/epoch - 7ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 0.0040 - 18ms/epoch - 6ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 0.0040 - 18ms/epoch - 6ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 0.0040 - 19ms/epoch - 6ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 0.0040 - 19ms/epoch - 6ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 0.0039 - 21ms/epoch - 7ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 0.0039 - 19ms/epoch - 6ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 0.0039 - 19ms/epoch - 6ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 0.0039 - 20ms/epoch - 7ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 0.0039 - 19ms/epoch - 6ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 0.0039 - 18ms/epoch - 6ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 0.0038 - 18ms/epoch - 6ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 0.0038 - 17ms/epoch - 6ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 0.0038 - 19ms/epoch - 6ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 0.0038 - 18ms/epoch - 6ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<keras.src.callbacks.History at 0x7baee00619c0>"
]
},
"metadata": {},
"execution_count": 117
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "n-aNP4n3sqG_",
"outputId": "1d8674ef-046f-4b91-cb1f-6cac39be0816",
"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": 118,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"14/14 [==============================] - 0s 3ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7bae94a26e30>"
]
},
"metadata": {},
"execution_count": 118
},
{
"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": "513e1dfd-90e1-4aa0-8ecd-0ffa0184feeb"
},
"execution_count": 119,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710116244.4358954\n",
"Mon Mar 11 00:17:24 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": "64551f29-c8d6-4a1b-b7f9-e6e012060385"
},
"execution_count": 120,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710116244.446025\n",
"Mon Mar 11 00:17:24 2024\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BMxSJo5gtOmQ"
},
"source": [
"# VS Fully Connected"
]
},
{
"cell_type": "code",
"metadata": {
"id": "NKQx7stYswzU",
"outputId": "9a11f16c-93dc-4d2a-84a3-350d1e9fb475",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 11458
}
},
"source": [
"optimizer = Adam(learning_rate=0.0001)\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": 121,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 1s - loss: 0.8845 - 654ms/epoch - 218ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 0.4653 - 26ms/epoch - 9ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 0.2125 - 28ms/epoch - 9ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 0.0956 - 25ms/epoch - 8ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 0.0681 - 28ms/epoch - 9ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 0.0822 - 28ms/epoch - 9ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 0.1006 - 25ms/epoch - 8ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 0.0988 - 26ms/epoch - 9ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 0.0854 - 30ms/epoch - 10ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 0.0705 - 28ms/epoch - 9ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 0.0611 - 25ms/epoch - 8ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 0.0583 - 26ms/epoch - 9ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 0.0596 - 24ms/epoch - 8ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 0.0613 - 23ms/epoch - 8ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 0.0597 - 27ms/epoch - 9ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 0.0579 - 27ms/epoch - 9ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 0.0553 - 26ms/epoch - 9ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 0.0545 - 23ms/epoch - 8ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 0.0542 - 27ms/epoch - 9ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 0.0531 - 25ms/epoch - 8ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 0.0523 - 24ms/epoch - 8ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 0.0521 - 23ms/epoch - 8ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 0.0511 - 26ms/epoch - 9ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 0.0508 - 24ms/epoch - 8ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.0503 - 26ms/epoch - 9ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.0501 - 26ms/epoch - 9ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.0503 - 24ms/epoch - 8ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.0493 - 25ms/epoch - 8ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 0.0490 - 24ms/epoch - 8ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 0.0495 - 25ms/epoch - 8ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.0486 - 27ms/epoch - 9ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.0480 - 28ms/epoch - 9ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.0493 - 23ms/epoch - 8ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.0483 - 26ms/epoch - 9ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.0471 - 25ms/epoch - 8ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.0470 - 24ms/epoch - 8ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.0467 - 25ms/epoch - 8ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.0478 - 22ms/epoch - 7ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.0470 - 26ms/epoch - 9ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.0460 - 24ms/epoch - 8ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.0462 - 28ms/epoch - 9ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.0462 - 27ms/epoch - 9ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.0452 - 28ms/epoch - 9ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.0451 - 27ms/epoch - 9ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.0450 - 26ms/epoch - 9ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.0457 - 26ms/epoch - 9ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.0452 - 29ms/epoch - 10ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.0447 - 29ms/epoch - 10ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.0441 - 24ms/epoch - 8ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.0439 - 24ms/epoch - 8ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.0436 - 26ms/epoch - 9ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.0433 - 25ms/epoch - 8ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.0435 - 25ms/epoch - 8ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.0435 - 28ms/epoch - 9ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.0428 - 25ms/epoch - 8ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.0436 - 28ms/epoch - 9ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.0432 - 23ms/epoch - 8ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.0431 - 28ms/epoch - 9ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.0428 - 26ms/epoch - 9ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.0428 - 27ms/epoch - 9ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.0430 - 26ms/epoch - 9ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.0427 - 23ms/epoch - 8ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.0416 - 27ms/epoch - 9ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.0410 - 23ms/epoch - 8ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.0419 - 27ms/epoch - 9ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.0411 - 24ms/epoch - 8ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 0.0409 - 23ms/epoch - 8ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 0.0415 - 24ms/epoch - 8ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.0411 - 28ms/epoch - 9ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.0407 - 23ms/epoch - 8ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.0406 - 23ms/epoch - 8ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.0404 - 25ms/epoch - 8ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 0.0395 - 27ms/epoch - 9ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 0.0397 - 28ms/epoch - 9ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 0.0403 - 26ms/epoch - 9ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 0.0393 - 23ms/epoch - 8ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 0.0392 - 26ms/epoch - 9ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 0.0401 - 25ms/epoch - 8ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.0393 - 24ms/epoch - 8ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 0.0398 - 29ms/epoch - 10ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 0.0397 - 23ms/epoch - 8ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 0.0389 - 26ms/epoch - 9ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 0.0383 - 23ms/epoch - 8ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 0.0379 - 25ms/epoch - 8ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 0.0379 - 22ms/epoch - 7ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 0.0378 - 27ms/epoch - 9ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 0.0376 - 34ms/epoch - 11ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 0.0371 - 23ms/epoch - 8ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 0.0381 - 26ms/epoch - 9ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 0.0376 - 25ms/epoch - 8ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 0.0375 - 23ms/epoch - 8ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 0.0371 - 27ms/epoch - 9ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 0.0365 - 25ms/epoch - 8ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 0.0375 - 28ms/epoch - 9ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 0.0365 - 26ms/epoch - 9ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 0.0381 - 22ms/epoch - 7ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 0.0361 - 27ms/epoch - 9ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 0.0369 - 28ms/epoch - 9ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 0.0376 - 26ms/epoch - 9ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 0.0361 - 26ms/epoch - 9ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 0.0366 - 26ms/epoch - 9ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 0.0353 - 25ms/epoch - 8ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 0.0351 - 26ms/epoch - 9ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 0.0347 - 29ms/epoch - 10ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 0.0354 - 28ms/epoch - 9ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 0.0361 - 24ms/epoch - 8ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 0.0350 - 25ms/epoch - 8ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 0.0348 - 29ms/epoch - 10ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 0.0346 - 29ms/epoch - 10ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 0.0340 - 22ms/epoch - 7ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 0.0340 - 21ms/epoch - 7ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 0.0350 - 24ms/epoch - 8ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 0.0340 - 25ms/epoch - 8ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 0.0339 - 22ms/epoch - 7ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 0.0333 - 27ms/epoch - 9ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 0.0337 - 26ms/epoch - 9ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 0.0342 - 25ms/epoch - 8ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 0.0330 - 27ms/epoch - 9ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 0.0343 - 26ms/epoch - 9ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 0.0324 - 29ms/epoch - 10ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 0.0334 - 26ms/epoch - 9ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 0.0349 - 25ms/epoch - 8ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 0.0332 - 23ms/epoch - 8ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 0.0325 - 25ms/epoch - 8ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 0.0328 - 26ms/epoch - 9ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 0.0333 - 25ms/epoch - 8ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 0.0324 - 27ms/epoch - 9ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 0.0316 - 24ms/epoch - 8ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 0.0315 - 23ms/epoch - 8ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 0.0316 - 22ms/epoch - 7ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 0.0316 - 21ms/epoch - 7ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 0.0318 - 22ms/epoch - 7ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 0.0317 - 23ms/epoch - 8ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 0.0311 - 22ms/epoch - 7ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 0.0306 - 22ms/epoch - 7ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 0.0305 - 23ms/epoch - 8ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 0.0305 - 28ms/epoch - 9ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 0.0308 - 26ms/epoch - 9ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 0.0304 - 24ms/epoch - 8ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 0.0301 - 24ms/epoch - 8ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 0.0299 - 26ms/epoch - 9ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 0.0297 - 23ms/epoch - 8ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 0.0299 - 28ms/epoch - 9ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 0.0303 - 26ms/epoch - 9ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 0.0293 - 27ms/epoch - 9ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 0.0308 - 32ms/epoch - 11ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 0.0295 - 25ms/epoch - 8ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 0.0296 - 28ms/epoch - 9ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 0.0296 - 25ms/epoch - 8ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 0.0303 - 26ms/epoch - 9ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 0.0303 - 23ms/epoch - 8ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 0.0282 - 28ms/epoch - 9ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 0.0291 - 25ms/epoch - 8ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 0.0290 - 26ms/epoch - 9ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 0.0287 - 22ms/epoch - 7ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 0.0282 - 24ms/epoch - 8ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 0.0284 - 27ms/epoch - 9ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 0.0279 - 27ms/epoch - 9ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 0.0276 - 27ms/epoch - 9ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 0.0277 - 24ms/epoch - 8ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 0.0277 - 28ms/epoch - 9ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 0.0273 - 26ms/epoch - 9ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 0.0282 - 25ms/epoch - 8ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 0.0279 - 26ms/epoch - 9ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 0.0270 - 25ms/epoch - 8ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 0.0268 - 24ms/epoch - 8ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 0.0268 - 27ms/epoch - 9ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 0.0265 - 23ms/epoch - 8ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 0.0264 - 25ms/epoch - 8ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 0.0267 - 27ms/epoch - 9ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 0.0263 - 27ms/epoch - 9ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 0.0263 - 23ms/epoch - 8ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 0.0260 - 26ms/epoch - 9ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 0.0265 - 28ms/epoch - 9ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 0.0258 - 30ms/epoch - 10ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 0.0257 - 24ms/epoch - 8ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 0.0263 - 27ms/epoch - 9ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 0.0256 - 22ms/epoch - 7ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 0.0253 - 24ms/epoch - 8ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 0.0253 - 29ms/epoch - 10ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 0.0255 - 27ms/epoch - 9ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 0.0250 - 26ms/epoch - 9ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 0.0247 - 25ms/epoch - 8ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 0.0247 - 25ms/epoch - 8ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 0.0252 - 31ms/epoch - 10ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 0.0244 - 28ms/epoch - 9ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 0.0247 - 24ms/epoch - 8ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 0.0246 - 29ms/epoch - 10ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 0.0239 - 24ms/epoch - 8ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 0.0264 - 23ms/epoch - 8ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 0.0248 - 27ms/epoch - 9ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 0.0261 - 27ms/epoch - 9ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 0.0241 - 25ms/epoch - 8ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 0.0244 - 24ms/epoch - 8ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 0.0249 - 24ms/epoch - 8ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 0.0246 - 24ms/epoch - 8ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 0.0243 - 29ms/epoch - 10ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 0.0232 - 27ms/epoch - 9ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 0.0230 - 26ms/epoch - 9ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 0.0228 - 25ms/epoch - 8ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 0.0245 - 26ms/epoch - 9ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 0.0225 - 24ms/epoch - 8ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 0.0228 - 26ms/epoch - 9ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 0.0221 - 23ms/epoch - 8ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 0.0221 - 27ms/epoch - 9ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 0.0241 - 22ms/epoch - 7ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 0.0220 - 24ms/epoch - 8ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 0.0235 - 25ms/epoch - 8ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 0.0219 - 24ms/epoch - 8ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 0.0236 - 22ms/epoch - 7ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 0.0219 - 23ms/epoch - 8ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 0.0222 - 26ms/epoch - 9ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 0.0209 - 22ms/epoch - 7ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 0.0229 - 28ms/epoch - 9ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 0.0202 - 27ms/epoch - 9ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 0.0236 - 23ms/epoch - 8ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 0.0211 - 23ms/epoch - 8ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 0.0217 - 23ms/epoch - 8ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 0.0220 - 25ms/epoch - 8ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 0.0208 - 25ms/epoch - 8ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 0.0211 - 25ms/epoch - 8ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 0.0204 - 25ms/epoch - 8ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 0.0201 - 29ms/epoch - 10ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 0.0210 - 26ms/epoch - 9ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 0.0199 - 23ms/epoch - 8ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 0.0192 - 27ms/epoch - 9ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 0.0207 - 24ms/epoch - 8ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 0.0197 - 23ms/epoch - 8ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 0.0192 - 24ms/epoch - 8ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 0.0199 - 24ms/epoch - 8ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 0.0199 - 23ms/epoch - 8ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 0.0192 - 25ms/epoch - 8ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 0.0190 - 25ms/epoch - 8ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 0.0188 - 22ms/epoch - 7ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 0.0185 - 27ms/epoch - 9ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 0.0186 - 25ms/epoch - 8ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 0.0180 - 26ms/epoch - 9ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 0.0182 - 26ms/epoch - 9ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 0.0179 - 23ms/epoch - 8ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 0.0179 - 25ms/epoch - 8ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 0.0173 - 24ms/epoch - 8ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 0.0172 - 24ms/epoch - 8ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 0.0180 - 26ms/epoch - 9ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 0.0177 - 28ms/epoch - 9ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 0.0173 - 24ms/epoch - 8ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 0.0169 - 25ms/epoch - 8ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 0.0178 - 22ms/epoch - 7ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 0.0169 - 24ms/epoch - 8ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 0.0172 - 24ms/epoch - 8ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 0.0172 - 26ms/epoch - 9ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 0.0163 - 24ms/epoch - 8ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 0.0172 - 27ms/epoch - 9ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 0.0161 - 23ms/epoch - 8ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 0.0168 - 25ms/epoch - 8ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 0.0164 - 23ms/epoch - 8ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 0.0165 - 22ms/epoch - 7ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 0.0174 - 26ms/epoch - 9ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 0.0166 - 25ms/epoch - 8ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 0.0161 - 23ms/epoch - 8ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 0.0156 - 25ms/epoch - 8ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 0.0152 - 29ms/epoch - 10ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 0.0148 - 29ms/epoch - 10ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 0.0145 - 25ms/epoch - 8ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 0.0144 - 24ms/epoch - 8ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 0.0147 - 25ms/epoch - 8ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 0.0139 - 26ms/epoch - 9ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 0.0147 - 27ms/epoch - 9ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 0.0145 - 26ms/epoch - 9ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 0.0135 - 27ms/epoch - 9ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 0.0139 - 22ms/epoch - 7ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 0.0140 - 24ms/epoch - 8ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 0.0138 - 26ms/epoch - 9ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 0.0138 - 26ms/epoch - 9ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 0.0129 - 23ms/epoch - 8ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 0.0136 - 21ms/epoch - 7ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 0.0131 - 24ms/epoch - 8ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 0.0142 - 24ms/epoch - 8ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 0.0129 - 23ms/epoch - 8ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 0.0133 - 26ms/epoch - 9ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 0.0142 - 28ms/epoch - 9ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 0.0133 - 24ms/epoch - 8ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 0.0132 - 25ms/epoch - 8ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 0.0124 - 24ms/epoch - 8ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 0.0122 - 25ms/epoch - 8ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 0.0115 - 26ms/epoch - 9ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 0.0121 - 31ms/epoch - 10ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 0.0120 - 27ms/epoch - 9ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 0.0112 - 26ms/epoch - 9ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 0.0116 - 23ms/epoch - 8ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 0.0110 - 25ms/epoch - 8ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 0.0111 - 24ms/epoch - 8ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 0.0117 - 27ms/epoch - 9ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 0.0106 - 24ms/epoch - 8ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 0.0105 - 25ms/epoch - 8ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 0.0103 - 27ms/epoch - 9ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 0.0107 - 29ms/epoch - 10ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 0.0104 - 26ms/epoch - 9ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 0.0102 - 25ms/epoch - 8ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 0.0102 - 25ms/epoch - 8ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 0.0097 - 23ms/epoch - 8ms/step\n",
"14/14 [==============================] - 0s 3ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7bae96edff70>"
]
},
"metadata": {},
"execution_count": 121
},
{
"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": "f6d165db-87b2-4fda-9ea6-fe17b138e4bf"
},
"execution_count": 122,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710116253.8392153\n",
"Mon Mar 11 00:17:33 2024\n"
]
}
]
}
]
}