1743 lines (1743 with data), 130.3 kB
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"machine_shape": "hm"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "8XnVMPBXmtRa"
},
"source": [
"# TensorNetworks in Neural Networks.\n",
"\n",
"Here, we have a small toy example of how to use a TN inside of a fully connected neural network.\n",
"\n",
"First off, let's install tensornetwork"
]
},
{
"cell_type": "code",
"metadata": {
"id": "7HGRsYNAFxME"
},
"source": [
"# !pip install tensornetwork\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import tensorflow as tf\n",
"# Import tensornetwork\n",
"import tensornetwork as tn\n",
"from keras.optimizers import Adam\n",
"import random\n",
"import time\n",
"# Set the backend to tesorflow\n",
"# (default is numpy)\n",
"tn.set_default_backend(\"tensorflow\")\n",
"np.random.seed(42)\n",
"random.seed(42)\n",
"tf.random.set_seed(42)"
],
"execution_count": 265,
"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": 266,
"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": "6b5d1db2-3d9d-4790-93b7-65b950d74494",
"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": 267,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_44\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_110 (Dense) (None, 1024) 3072 \n",
" \n",
" dense_111 (Dense) (None, 1024) 1049600 \n",
" \n",
" dense_112 (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": "7b2878a8-f602-4552-a2ae-b949071f171d",
"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": 268,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_45\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_113 (Dense) (None, 1024) 3072 \n",
" \n",
" tn_layer_66 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_67 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_68 (TNLayer) (None, 1024) 5120 \n",
" \n",
" dense_114 (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": 269,
"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": "b5d23a60-6f5c-4105-a245-f803e03099ca"
},
"execution_count": 270,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710117438.098908\n",
"Mon Mar 11 00:37:18 2024\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "crc0q1vbIyTj",
"outputId": "802ee81b-f7f1-4daa-9071-771c80d5bca0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
}
},
"source": [
"optimizer = Adam(learning_rate=0.001, weight_decay=0.0001)\n",
"tn_model.compile(optimizer=optimizer, loss=\"mean_squared_error\")\n",
"tn_model.fit(X, Y, epochs=300, verbose=2)"
],
"execution_count": 271,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 2s - loss: 1.0018 - 2s/epoch - 752ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 1.0018 - 18ms/epoch - 6ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 1.0007 - 20ms/epoch - 7ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 1.0001 - 22ms/epoch - 7ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 1.0006 - 20ms/epoch - 7ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 0.9997 - 21ms/epoch - 7ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 0.9991 - 21ms/epoch - 7ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 0.9978 - 20ms/epoch - 7ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 0.9946 - 23ms/epoch - 8ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 0.9873 - 20ms/epoch - 7ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 0.9702 - 20ms/epoch - 7ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 0.9332 - 18ms/epoch - 6ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 0.8618 - 21ms/epoch - 7ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 0.7187 - 22ms/epoch - 7ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 0.4604 - 20ms/epoch - 7ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 0.1368 - 22ms/epoch - 7ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 0.1064 - 23ms/epoch - 8ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 0.0901 - 21ms/epoch - 7ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 0.0193 - 22ms/epoch - 7ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 0.0450 - 23ms/epoch - 8ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 0.0507 - 21ms/epoch - 7ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 0.0290 - 21ms/epoch - 7ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 0.0136 - 18ms/epoch - 6ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 0.0176 - 18ms/epoch - 6ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.0192 - 18ms/epoch - 6ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.0116 - 22ms/epoch - 7ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.0091 - 20ms/epoch - 7ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.0110 - 19ms/epoch - 6ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 0.0104 - 19ms/epoch - 6ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 0.0078 - 18ms/epoch - 6ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.0073 - 19ms/epoch - 6ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.0076 - 20ms/epoch - 7ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.0071 - 18ms/epoch - 6ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.0062 - 17ms/epoch - 6ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.0061 - 19ms/epoch - 6ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.0061 - 18ms/epoch - 6ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.0057 - 19ms/epoch - 6ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.0053 - 18ms/epoch - 6ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.0052 - 18ms/epoch - 6ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.0051 - 17ms/epoch - 6ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.0048 - 18ms/epoch - 6ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.0046 - 19ms/epoch - 6ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.0046 - 18ms/epoch - 6ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.0044 - 18ms/epoch - 6ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.0042 - 17ms/epoch - 6ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.0040 - 18ms/epoch - 6ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.0040 - 20ms/epoch - 7ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.0039 - 18ms/epoch - 6ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.0037 - 20ms/epoch - 7ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.0036 - 18ms/epoch - 6ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.0035 - 21ms/epoch - 7ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.0034 - 20ms/epoch - 7ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.0033 - 19ms/epoch - 6ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.0032 - 19ms/epoch - 6ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.0031 - 20ms/epoch - 7ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.0031 - 20ms/epoch - 7ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.0030 - 18ms/epoch - 6ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.0029 - 19ms/epoch - 6ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.0028 - 20ms/epoch - 7ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.0027 - 17ms/epoch - 6ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.0026 - 21ms/epoch - 7ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.0025 - 18ms/epoch - 6ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.0025 - 21ms/epoch - 7ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.0024 - 21ms/epoch - 7ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.0024 - 18ms/epoch - 6ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.0023 - 19ms/epoch - 6ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 0.0022 - 19ms/epoch - 6ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 0.0022 - 19ms/epoch - 6ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.0021 - 20ms/epoch - 7ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.0020 - 20ms/epoch - 7ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.0020 - 20ms/epoch - 7ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.0019 - 20ms/epoch - 7ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 0.0019 - 21ms/epoch - 7ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 0.0018 - 19ms/epoch - 6ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 0.0018 - 18ms/epoch - 6ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 0.0017 - 18ms/epoch - 6ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 0.0017 - 18ms/epoch - 6ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 0.0016 - 19ms/epoch - 6ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.0016 - 19ms/epoch - 6ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 0.0016 - 19ms/epoch - 6ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 0.0015 - 19ms/epoch - 6ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 0.0015 - 17ms/epoch - 6ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 0.0014 - 19ms/epoch - 6ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 0.0014 - 19ms/epoch - 6ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 0.0013 - 17ms/epoch - 6ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 0.0013 - 18ms/epoch - 6ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 0.0013 - 18ms/epoch - 6ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 0.0012 - 19ms/epoch - 6ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 0.0012 - 17ms/epoch - 6ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 0.0011 - 20ms/epoch - 7ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 0.0011 - 19ms/epoch - 6ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 0.0010 - 17ms/epoch - 6ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 0.0010 - 20ms/epoch - 7ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 9.9208e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 9.7184e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 9.1937e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 9.1979e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 8.9983e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 8.5745e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 8.2557e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 8.0852e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 7.7829e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 7.4215e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 7.2972e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 7.1339e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 6.7219e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 6.5332e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 6.3465e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 6.0936e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 5.8053e-04 - 21ms/epoch - 7ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 5.8398e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 5.4370e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 5.2965e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 5.2837e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 4.7747e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 4.6990e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 4.5113e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 4.5270e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 4.2444e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 3.9301e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 3.8222e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 3.6718e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 3.6430e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 3.2928e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 3.1405e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 3.1071e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 2.8516e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 2.6668e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 2.6138e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 2.4284e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 2.3902e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 2.2455e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 2.1030e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 1.9966e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 1.9019e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 1.7850e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 1.7295e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 1.6604e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 1.5229e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 1.4162e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 1.3176e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 1.2472e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 1.1829e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 1.1005e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 1.1115e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 9.6785e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 9.2727e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 8.6421e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 8.1563e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 8.3286e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 7.0726e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 6.8029e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 6.1822e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 6.0088e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 5.4362e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 5.1214e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 4.6487e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 4.1851e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 4.2002e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 4.0794e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 3.6072e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 3.3958e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 3.4304e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 2.8993e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 2.6902e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 2.3775e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 2.3346e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 2.1330e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 1.9407e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 1.8583e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 1.7093e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 1.5858e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 1.5165e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 1.4170e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 1.3359e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 1.3119e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 1.0492e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 1.1054e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 9.0719e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 9.2434e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 8.1619e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 7.5056e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 7.1607e-06 - 21ms/epoch - 7ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 6.4391e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 5.9927e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 5.6210e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 5.5874e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 4.7653e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 4.6621e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 4.3078e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 3.7840e-06 - 21ms/epoch - 7ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 3.8026e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 3.2943e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 3.0792e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 3.0140e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 2.6377e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 2.6382e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 2.4452e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 2.2098e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 2.3311e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 2.0607e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 1.8838e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 1.9085e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 1.6440e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 1.5657e-06 - 21ms/epoch - 7ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 1.5144e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 1.4761e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 1.3455e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 1.2346e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 1.1010e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 1.1191e-06 - 22ms/epoch - 7ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 1.0468e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 1.0760e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 8.7532e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 9.3743e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 7.8339e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 7.5204e-07 - 22ms/epoch - 7ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 6.9162e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 6.7592e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 6.2641e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 6.5294e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 6.0845e-07 - 22ms/epoch - 7ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 5.7718e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 5.5716e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 5.2101e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 5.5701e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 5.0983e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 5.4221e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 4.5259e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 5.4147e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 4.1771e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 5.0039e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 4.3052e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 4.2350e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 5.2413e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 4.9278e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 4.2607e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 4.8251e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 4.1909e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 3.7782e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 4.0394e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 3.6917e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 3.6075e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 3.5674e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 3.3483e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 3.2038e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 3.1165e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 3.0694e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 3.0248e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 2.9303e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 3.4319e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 3.1137e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 2.8746e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 3.0085e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 2.7549e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 2.8187e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 2.6480e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 2.8599e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 2.7695e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 3.1355e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 2.5266e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 2.5800e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 2.5984e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 2.4064e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 2.4365e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 2.3983e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 2.3908e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 2.3614e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 2.3782e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 2.3887e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 2.2184e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 2.3744e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 2.4602e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 2.4198e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 2.2537e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 2.5130e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 2.3623e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 2.1314e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 2.2194e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 2.0570e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 2.0891e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 2.1343e-07 - 22ms/epoch - 7ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 2.0734e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 2.3228e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 2.0735e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 1.9715e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 2.3563e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 2.0311e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 1.8434e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 2.1575e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 1.8598e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 1.8331e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 1.8021e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 1.7681e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 1.8444e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 1.9028e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 1.7225e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 2.1187e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 1.9311e-07 - 19ms/epoch - 6ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<keras.src.callbacks.History at 0x7bae5ae4ee30>"
]
},
"metadata": {},
"execution_count": 271
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "n-aNP4n3sqG_",
"outputId": "4de27923-29e8-4abe-b3b4-840ecf0474d9",
"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": 272,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"14/14 [==============================] - 1s 5ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7bae5a70b4f0>"
]
},
"metadata": {},
"execution_count": 272
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABNIElEQVR4nO3dd3hlV30u/nftffo56tKojEaa3nv3uNvjcaMYM8bYJJAEEgJplwTCTbjk8iMhl/QbSAIEhwvYIQZsBzc89jD22GOPPZ7ee5FGM+r19LL3+v1xJI3KqdLp5/08Dw8zOltnL40lrXev8l1CSilBRERERUvJdgOIiIgouxgGiIiIihzDABERUZFjGCAiIipyDANERERFjmGAiIioyDEMEBERFTmGASIioiJnSPTC++s+n852EFEGBZbMSur6wXnmuNc4m0XM1/1NgbjvMbuxO+br99Sdifse8WwvPTTt9yDKJ4tmXY97DUcGiGja4gUBIsptDANERERFjmGAiIioyDEMEBERFTmGAaIik+ziwULCxYNEkTEMEFFOiLeTgIjSh2GAiIioyDEMEBERFTmGASKKKZGCQ/mA6wWIomMYICIiKnIMA0SUdomUIiai7GEYICIiKnIMA0RU8LhegCg2hgGiIlLMBYeIKDqGASIioiLHMEBEeeGeujPZbgJRwWIYICIiKnIMA0RU0Lh4kCg+hgEimhZns8h2E4homhgGiCjreGIhUXYxDBBRweIUAVFiGAaIiIiKHMMAUZFgwSEiioZhgIjSKluHFHGKgChxDANERERFjmGAiAoORwWIksMwQEREVOQYBoiIiIocwwARFRROERAlj2GAiIioyDEMEBERFTmGASLKeffUnUnoOk4REE0NwwBREWD1QSKKhWGAiLKKJxYSZR/DABEVBE4REE0dwwARRTU4z5ztJhBRBjAMENGUOZtFtptARCnAMEBEaZOtEwuJKDkMA0REREWOYYCIiKjIMQwQEREVOYYBIiKiIscwQEREVOQYBogKHEsRE1E8DANERERFjmGAiIioyDEMEFHWJHJIUaLHFxPR1DEMEFHe4yFFRNPDMEBERFTkGAaIiIiKHMMAERFRkWMYIKK04ImFRPmDYYCIiKjIMQwQEREVOYYBogLGUsRElAiGASKaEmezyHYTiChFGAaIiIiKHMMAERFRkWMYIKKsSORcAiLKDIYBIiKiIscwQEREVOQYBogoZ/H4YqLMYBggoogG55mz3QQiyhCGASIioiLHMEBERFTkGAaIKOV4YiFRfmEYICpQPJeAiBLFMEBEeW176aFsN4Eo7zEMEBERFTmGASIioiLHMEBEGcdzCYhyC8MAERFRkWMYICIiKnIMA0REREWOYYCIkuZsFtluAhGlEMMAERFRkWMYIKKcxOOLiTKHYYCIiKjIGbLdAKJcpBgU1K+ZA0u5HZ5eJzqOXIHUZbabRUSUFgwDRBPM27oC6z5zNyxlttGPeXqdeP87r6H1nbNZbFnieEgRESWD0wREY8zbugI3/8kHYS61jvu4tcKB27/yMGZtXpClluUPHl9MlH8YBoiGKQYF6z5zN6SUEGL81jmhCEAC639na5ZaVzhYipgo9zAMEA2rXzMHljLbpCAwQigCJfUVqF7ckOGWERGlF8MA0TBrhT3B6xxpbgkRUWYxDBAN8/Q4E7xuKM0tISLKLIYBomHtR67A2+eClJG3EOq6joHWHvSe78hwy4iI0othgGiY1CX2fec1CCEm1RSQug5IYP93X8tS64iI0odhgGiM1rfPYPdfPgt31+C4jw9d68Ourz6N9sNXstMwIqI0YtEhogla955F67tnUbN4JiwVdnh6nOg9157tZlEE20sPZbsJRAWBYYAoEgl0n76W7VZQDpE6oHkEhCqhWuNfT5RPGAaIaJLBeeZsNyFnyBDQ97YJ/e+YoQ2FZ1YtTSFU3emHY2koy60jSg2uGSCinJMrxxfLEND2Qxt6dligDd0oRuW7quLaj+zof9uUxdYRpQ7DAFGByeVDivKtFPHA+yZ4zhsAKQCMqUwpw3/uesmCYF/kipVE+YRhgIgoiv698Z/8B97n6ADlP4YBIkqKs7k4noSlBILdCsaNCEy6CAh0qhlrE1G6MAwQEUUgBCDiLbEWgDBFrliZalIPBxSidOBuAiJKGX9TINtNSCnH8iCcx4yAHmV0QAqULAum7f5SBwYPGNH/jhmBDgVQAcfiECpv98ParKXtvlR8ODJARBRF5e3+4VmCCI/kioSxRoNjWXq2F0oduP4TKzqftYaDAASgCbhOG9D6HTuGjhjTcl8qTgwDRERRWBp0zPykB8IEABJQhv8HwFSjY9Zn3BBpWjIwuN8I13EjwmlkzMiELgAJtP/UipCzONZvUPpxmoCIKAbH4hDm/68hDB02wXdNgTCEP2ZbEIJI4+NU/zuxCj8JQEoM7jeh6i5/+hpBRYNhgIgoDsUMlG/O3HoIqSewS0ECvmvcyUCpwWkCIsqIfCs4lFUCgIizdUAAwsDtBZQaDANERDlGCMC+ODS6PiEiKeBYwrMRKDUYBoiIclDl7f7hTQyRdzIYynU4lqdvWyMVF4YBIqIcZJujoe4Rb/i3tJAA5OjUgaFUYtZvu6Fw1RelCL+ViCin5MqJhbmgbF0QtvkhDO43wX9dhVAlHEtDcKwIMghQSvHbiSgCxaCgacsizLljGcxlNjiv9+H8jqPoOnk1202LKZdPLKSpMZZJVG/l9kFKL4YBognMpVbc89ePoXJeHXRNh6IqqF5Yj3lbV+LCa0fx7j//ElLnKm4iKhxcM0A0wW3/8yGUz54BAFDU8I+IYgjv5553z0os2745a20jIkoHhgGiMcpn16B+zZzREDCREAJLH94ExcAfHSocegiQPPeoqHGagGiM+jVzRqcGorGU2VA+ewb6LnRM+36KUcXsW5eg+bYlMDssGGztwbkdR9B7rn3a700Ui5TA0EEj+vaYEegIj3xZZ4dPRHQsZf2CYsMwQDSGoiR28EussJAoa5UD2775CZQ1VkHXdSiKgupFDVhw/xqcem4fDnx/17TvkUmxji9m9cHcIiXQ+awVg/tN4yodeltUXPuRHdX3+VB1JxctFhOOdRKN0X32etyOPuQLYqC1Z9r3uvMvHkFJXTkAQFHGr01Y+vAmLLh/zbTvQRSJ65QhHAQAQI4JwMN/7tlhge86u4diwv/aRGN0nbiKgZZu6KHIE6i6puP8q0cQ8k7v0JoZyxpRvbB+tPOfSOoSyx/ZPO7k2lzgbM6xBtGUDOw1xS51rEgM7DNlrkGUdZwmoIJWMrMSlXNroQdD6DjWiqAn/tDn7r96Dvf9/a/B5LCOjhKMbCXsPd+Owz/cPe121a+dCz2kRQ0DQhEoqa+Ao7Ycro6Bad+PUifQraB/rwmu00bIEGBt1lCxxQ/bvPxZgee7pgJ6jGCnC/jbeCJiMWEYoIJkn1GGLV94EPWrZ49+LOQP4uyLB3Hoh7shNT3q5w619eKFzz2BxR9cj3lbV8DksMDVMYBzLx/C+deOQg9O/5e+oohIFecnESlYm5CswXnmjN8zX7hOG3DtSVv4uIDhztR1SsB1woiqu32o3pYf8+zCCMAb6woZvoaKBsMAFRxLhR33/+MnYSmzj/u4wWzE0oc3wVrlwNt/+8K462sWNUBKoPt0G/xDXvj63Tjy4zdx5MdvpqWNPWevQ40yKjDCP+SBu3MgLfen5IVcAtefsgEaMG7+ZjgU9O6ywDJLy4uTBEuWBzHwninm6IBjGQ9BKiYMA1Rwln10Eyzl9ogLAYUiMPfO5Tj9i/3w9Dhx+1ceRs3imRDDuwj0kIaLu45j/3d2IuRP3y/DtvcvwN09BGulI2I7pa7jzEuHoIeij2BQ8jQPMHjABOcJI6RfwDxTQ/nmAKxN8Ud7BvebhvfiR+lAhUT/26a8CAMVNwcw+L4JUsrxCwgBQEioNomyddNbF0P5hWGACs78bati7gjQQxrWfeZuzFjWOLqKf4RiUDFv60qUNlTitT/7SczphGQoBgVz716BRR9Yh9KGCgQ9AVw/fBnNNy8CzMYxaxN0QAi0H23B8affScm9KczfoeDqv9uhuUc6PwF/p4KhgyaYajRYZmsoXR2AbZ4GEaG/915WI54mPEoKeK/kx69UU7WOmb/pxrUf2SEDMpxvBABdQHVINH7aDdWW7VZSJuXHdy5RgoQiYC6xxr5GVVC3oinq64qqoHZFE5q2LELLntPj3rth3Vw037oEJrsZQ9f6cH7HETiv98e8n2JUcffXH0XdqmZASghFgdFmxty7liPoDaD1jROoXzsXRqsJQ9f6cO7lQ7iw81jSQaQQDilK14mFMgS0/Ycdmmek1xt5IfznQLeKQI+Cof0mWOeEMPNTbqixv43ynn2+hnlfGcLQIRO8LSqEAtgWhFCyIgiF6wWKDsMAFRSpSwRcPpgcltjXSQkR6fFvmK7pmL9t5WgYMJdYcfdfPorqRQ3QQxqEokBKieWP3ITDP34Tx/8r+lP8qsdvQe3KpvD9xtxTURUYrSbMWN6EZ3/92yk5/EgIAbPNhFBQQyiQ+8PV07G99FDca6QOuM8YMHjIiNBQnMWYw8HAe0VF+9M2NP6mZ9zLtgUhuM/G+JWpSNjm59e/uWoBKrYEULEl2y2hbGMYoIJz/tWjWPLQhpjnC8SjqArsM8pG/377/3oYlfPrwq8NL/wTw0+Yaz55O9ydg7j0+onJ72NUsegD6yZNR4y9T0ldORrWzcW1/Rfjtisag8WIFfetwpItC2EZDkJtZ6/jyK+Oo+Ni15TfN595W1Rcf8o2HALk8P8SqJMgBdxnjPB3KjDX3hidKVsXQO9OC/RAhHl2ANAFKm7Nj90ERBOx6BAVnFPPvgffoAe6NnlRmJSJPX1LKeHpdQIAqhbWo25lc9RwIXWJFR+P/GhVUl8Rd5RCD2moXjwzoXZFYrAYce/f/TpWbV0+GgQAoGF+HR783DbMXd085ffOV4FuBVe/b0fIeWN9QFIVnISE6/T4ZyU9IGBfEhxeNyDHXQsANR/wwj4/f2oNEI3FMEAFx9vvxo4//hG6TraN+7gWCOHSGycTeg8hBC7vDl/buGF+1IqEQHgtQdms6nEjCSMSmvcXYloLFZc/ugUVc2ZMXgw5HF5u+/gWGC3FNQncu9scXvkf6Qk+EQKQoRuf672q4so/lsB51IgbwSIcAgzlOpr+wInKW7n6nvIXpwko5RSjivo1c2AuscDVMYiuk1cz3gZX5yBe+/J/orSxCpXzaqEFQ+g42oKg24+Za+fAXGaLu2bg8vCwv2JUkciAgmqcXDfA2d4Pd/cQbFUlo9sXJ1JUBdcPXU7sC5tAKAKLHlwbfUpEEVCNKuavm4PT75yb0j2mK9OHFEmJcKcdq8JePLqApSEcAGUIuPZDG/QAJoSL8J9D/Qq8lwywNjIMUP5iGKCUWvTBdVj967eNW9HvbO/Hu996BR1HrmS8PUNtvRhq6x33sf3f24lbv/xQ1M+RUuLsiwdH9/j3XeyM2NGPFXD74eoanPxeusTJZ97Dxs9ti/h5ekhD74UO9Jy5FucricxSZou7e0LXdFQMH4hUFHRABqcRBISEWiJhXxReDOg8aYTmij2I2v+2GRW3BCA41kp5it+6lDJLPrIRmz5/76TOyV5bhq1/+ShmLMuNrW+Xd5+KuNgPCHec7q4hHBuzx79t3zmEfMGo6w10Tcf5HYejlik+88IBnHnhQPja4ekGXQ8HjaHr/dj99Wem/LWE/PFXrwshCn5nwVhCBdRSHXGKAoz53xiKhDAADZ/wQAznP2+LGvtQHwiEBpUx6xOmT/MB7rMGuE4bUvq+RNFwZIBSwmgzYc2nbo/4mqIo0KWOdZ++C6/88Y8y3LLI3v67F9B7vh0rH7sZ5tJwdRWp62jdexb7v/Ma/IM3tpWt+Y07oZoNk6YVRsKB83o/jj61J+b93v/Oa7j0xgksvH8NShurEHD5cHn3SbS8fWZaZx0EPX50HGvBjGWzok4VKKqCluOZn6rJporNAfTsNMfIAwJNf+CE+7QRA++ZoLkUCINEyaogKm/3j9tFkMDmk/B1KXi00kNAzysWDLxnurFmQUiUrAii9iEfVPv0t58SRcIwQCkxa8siqKbo306KqqBmyUw46svhah/IXMNiOP2L/Tjz4kFUL6yHajJgsLUH3n43qhfPxIL710BRFQxe68PiD62PuL5ACAGpS4T8QYR88UsX95y5jp4z11P+dRz/r3ew9a8fi1g7Qdd0dLX0oPNKeuft/U25NV9ecYsfQ8eMCHQqE+b5w9sLK+/ywdqow9roR/U9fuih8IhCpI7fNj+E/rdjHd4kYazRodgkXGcM4QI+w59nnRu5mmHEd9GB60/Z4D5jGN9mKeA8YYS/Q0Xz77ugTPMcKT0YXlPhPmuA1AQsszSUbQjA4GDQKGYMA5QS1go7pKZDxDl8x1rhyJkwAIRX+3efDs/XWyvsuP+fPoWaxTNHh/MVgxpzO6JQBKrm18FRl72jhtuPXME7//gSbvqjB4ZHYSQEwgGsu7UHO3/wRlbalU2KGWj6XRd6dlgweODGU7ahXKLqLi/KNo4Pb0qM34T2RSEYqjSE+iYGixECpWsCuPL3DgT7bkwp9L5ugalWw8zfcMNUGb+j9VwwwH06yq4PXSDQrWDgfdO0di34OxRcfcIOzamEt0RKwHXKgN6dZtQ/5kHJiuKZTqLxGAYoJby9roSO2/UO791PNaEING6cj/n3roajtgzefhcu/uo4WvacTuiwH8Wo4p7/8zhKZ1aG/x4n1EwUr5ZAul361XFc7vdgwfp5qKgrQzAQwuWjrei8XJwFhwBAtQK1H/Gh5gEfAj0KhAEw1ehJD+cHOhVAx3AQGOnUR/4sULbZj/63zdC9w0FhzC6GQLeCq99zYM4fO+M+0Q8eMIaDRLRdEBIY3Df1MKD7gavfHynJjBvBRgJSk7j+nzY0/4ELlpk8HKsYMQxQSrTuPYtNvvtgtJoivq4PP4G7OievuB9hLrVCD2kIepL7ZacYVdz5F9sxc/086JoORVVQ1lSNhrVzsfThTdj5Zz9BwOWL+R7NtyxGeXNNxNfiVSyUug5P91BSbU4HvyeAE2+djn9hkVHMmHIHFxwQaP2eHbpvbPGiG0y1GlSHDAeBKFUJQwPA4CETKm6K/X0d7FfibIcUCA5OfWHC0GETNFe04ksCEBJ9e8xo+Lh3yveg/MUwQCkR8gVx6D9ex6bfv2/S3LWu6ZC6joNP7Jr0eUJVsOShDVjyofWjRXu6T1/DiZ/txdX3zid073W/dRca1s4BcKPQzsj/V8yZgS1//CB2f/3ZmO8x+7Ylo0EiGXpIR9v75+Eb9MS/OM85m4tvVXv/HjN0f5SOHgKBThUDLsQtbuQ8YowbBgylcnjoPtp7SRgcU39qd52J8+teF3CfMgJgGChG3FpIKXP25UPY+08vwdfvHvfxwdYevPY/f4Kes+MXzwlF4M6/2I51v3UXbNWlox+vWliPO//3I1j68Ma49zSXWbHwwbUQMWr/z9q8EI44++xNDmvcIDBx7YCuaQh6/Tj4xOtx2zldpTMr0bBuLqoW1kd8sOOJhekxdCh+8SLdHe/XqIDmjR+kStcGYocKAZRtiL9QNRoZHH6TWNewmnLR4sgApdSF147h4q+OY8byJphLrXB1DKDvQkfEa+ffuwozN8ybNAw/0imv+8zduPre+ahHBNcsmYm7v/6xuAWBhBCoW9mECzEW+A1d7UHN4oaoawWkrkMLajCYjcN/l2h7/yIOPrELzvbYRxhPR+W8Wmz8/L2YsbRx9GOujgEc+n9v4EqRTwl4r6rwXlIBAdjmhmBpTP1ct+ZLZDTkxvqBiBQJ04z4vaxjSQjW2aFwXYOJoUCRMJRIlG+e+uJBS6MGz0VD9MAhJMwNTAPFimGAUk7qEp3HWuJet/iD68O1Y6PMyUtdYsF9q3Eowmp4R20Ztn7jsZjbGUffJ8Y9RpzbcQQL7l8T/QIhsP97O9FxtAUmhwXuriH4BtzRr0+BirkzcN/ffxLKhLBjry3DbX/2ERgsRlx47Vha25CLjINBND3XidbrjtFDgiAFLE0hNHzCA2N56rbIGct1BPsUxD/kKMbrukioExcK0PhbbnQ8Zw2XUx7TaVubNdQ/6oFqm/rXVrYpgL43Y6xilAIVN+fWFlHKHIYBypqyWVVRh/eB8AhB+ezIi/oWf3gDVJMhoTl+IcTo9sFoes+14/Qv9mPJQxsgdTnuHAFd19F1/Cou7jyW0M6EVFn/21uhGNVJX6MQAlJKbPjsPbj85iloCVQhLBSKT8PcJ6/DODT8NY/pMH1tKq5+z47Z/2P6e/FHlG8OoPsVS+xihlGFP6l0fRC2eYk9cStmoOExL4L3+8JP8TpgadLGFUGaKlOlRO1HvOh8zjZ+18LwOoXSdQGUrJr6NATlN4YByhotqMXcwqdretRiPrNvX5JQENBDGjpPXMVga0/ca/d/byeGrvVh2SOb4RhezOh3enHu5UM4+pO3MxoE7DWlqF89O+rrQggYbWY03bQQl3efyli7sq3imBPGwVDk53BdINinJLRyP1HlNwUwdNgEf0e0GgPRGUolKm71h88sSHLtpbFcomxd6jvm8k1BmKpd6HvLDPe5cNgw1+uouMWP0jXBpNtJhYNhgLKmZc9pzL1redRAoKgKru49G/G1kbn7WKSUcHcP4e2/e2HyexvViGWAz750EGdfPoiS+gooqgJnx8C0ygVPla26JO41ekiDvWbyscmFrOJ4/DoVQwfjr9xPlGICZn3Whe5XLBjcb4p/EqKQ4SqBFsBYmXxNg0ywzdNgm+cJn8QpU1NGmfIfwwBlzann3secO5dB6vqk6QI9pMHVNYiWdyKHgYGWHlQvaog6OiClRPfpa9j11Z8i6PEDCHewyx+5CfPuWQmj1YSA24fzO47i5LPvjd8BIRF10WKmJLJVUahKyrc0Ds5L0fj6sFQfX6x69Diz9wKaO7WPt6oVqHvYh/KNAbR8O0ZIUyTsC9OzkDEdRLSSA1SUmAkpawZauvH6136O4PCJgHpIGy0DPHS9Hzv/7CdRn8rPvnQw5jSBEALv/9uro0GgdGYlPvAvn8bCB9eOFkYy2S1Y8tAGfOBbvwV7TWnU98oG5/V+9J5vHz3dMBI9qKE1yshJoQpUGGKP1isSxur0dMaWRh2l6wM3Fi2OJSQggOp7Yhe3IspVDAOUVe2HLuOZT3wL733rFVzYeQznfnkYu/7ip3jxc9+Huyt6Vb8rb55C696zkLqE1G/8cpbDnefxp99B38XO0Y/f/MUPwuSwTAoQiqrAUm7D5j+8P8Vf2fQd/MEb4U1reuTVa8eefiduZcVC07e2LGJfPEoXKN+UvhXxdQ97wzsDlJEx9nBjDKUSsz7tzptRAaKJOE1AWRfyBXF+xxGc33Ek4c+RusSb33gOSz6yEUs+vGH0yX6gtRcnf/4uLr1+YvTaijkzULN4ZtT3UgwqGtbNhaO2LGa55EzrOHIFr3/t57jpjx6ArapkdJdDyBfAsZ+8gxM/fzfbTcy4wcV2OOda4bjsnRwKhIR9UQiOpenbXSFUoPYhH6ru9sN1ygA9IGCeocO2IMS5d8prDAOUt6QucerZfTj13D5Yy+3QdQl/hDn0inm1cd9LCIGKOTNyKgwAwLX9F/HsJ/8F9WvmoKSuHH6XD23vX0DIW6T7wRWBlkfqMeOtPtQe6of0h+cMFLNE+RY/qrf6M9IpG0okyjclttpf6oC3VYXmFjCW6TDP1Llqn3IOwwDlPwl4+6MXANIDiT0paglel2lSl7h+8FK2m5EzpEGg864q3PxAC/yd4Z0o5joNSvwNJhnnPGZA18tWhAZuJBRTrYbaD3sTrj1AlAkc2KKC1374CrQ42wOD3gC6TrZBMaqYsawRtSuaYC6xZqiF+c3flJ1RCsUEWGdpsM7KzSAwdNiI6/9pR2hg/DBAoEvB1Sfs8FxK7phsonTiyAAVvJHCQYs/tC5ixUMpJU794n0s274ZSz6yASa7BUC4KNLlN05g/7//CkG3P9PNThgPKco9MgR0vmBBxDMLZPgsg64XrZj9R64pvb8eCE89yJCAuU5LaQlmKk4MA1QUDv7HLlgq7Jhz+9Lw9kVFALqEYlBx4dUjcMwow9w7l48rQ6waVcy9ewWq5tfhlT/5cdRqiEQTuc4aoHtiDLxKAf91Ff4OBea6xHcgSB3o3WW+cbQyEF44uTiEuoe94WOQiaaAYYCKgh7Sseebv8Cp5/Zh7l3LYa1wwNPrxIXXjsJkN+O+v/9kxM8Ln48wAwsfWINTz72f4VbHl6lRAWczV7wlIzSkIOZJhiPXDSYXBjqfs2Jwv3H8+0oB91kDWv7VgeY/dMFgZyCg5DEMUFHpPdeO3nPt4z625QsPQg/FPidh4QNrczIMFIqdHYuTnip4ZmgttpceSlOLpsfg0JFIeT/VkXgQ8F1TwiWRI9EFQoNA/x4Tau7L3Sktyl0MA1T0HHXlMYOAUETOVSgEUj8qkOpSxPlED4QX/DlPGKH7Bcz1Gso3BWBpmFoRIfviEBSLhO6LFggkjFU6zEm8/+AB0/jTBie9pcDAPoYBmhqGASoKJocF87etRPMtS2CwmtB/uRPnXj6ErpNt8PW7oWt6zPLGfqc3g62NrxAWDeaKQK+Cq9+zIzQ40skK+K6qGHzPjKq7fajelnznqhiBmvt96PzvSDtSwsP4wX4F/XtMqLwtsd0YoUEFiJMddI8CqYWLIxElg2GACl5ZUzW2/c0nYCm1AkJACIGyxkrMvXM5Tj67D5feOInZty+N+vm6puPCzmMZbHFsDAI3THeqQOpA2w9sCDknnNoz/PTdu8sC0wwdpauTXzxavjl8jkHXC1bI0Nin+eE/60D3y9ZwwaQEChipDj28GTxGIFDMkkGApoR1BqigCVXB1r98FOYSK4SiQAyXfhuZFlj20U0wlVrQdaoNujb5t6we0uAf8uLMCwcy2m7KDPdZA4I9avShdyHRt9scPu53CkpWBuN8rkTPTgtkAvWHStcGYx+hrEiUrS/SypQ0bQwDVNBmbV4A+4yy6Ecd6zqWf3Qzdn31p7j63nlIKcP/Gz4caOBKN3Z88cfjjzjOonwaFUj18cXp4D5nGD50KAop4G9XoXuntpvCfdYIaLE+V0BzKvC2xn+ctzZrsC8JRj01UbFIVNzG9QI0NZwmoIJWt2p2zJ0CQlFQ3lwDRVXw5l89C0ddOerXzIFiUNB7rh09Z69nuMXRpTMIxFo8GGtbYbaqD441ramCBNfvySkeRhheQBh/i+FozYAYhAAaPuFB1wuW8GLCMaME5gYd9R/3sPgQTRnDABW0hA+EGb7O1TGA868cTlt7piqfRgTyiaVJA96L9U0iYSiTUG1T62RNNRoS2WJoqk4sbShGoO6j4UWN7vMGyBBgadB4dDJNG6cJqKB1nWqLuW1Q6jqGrvXBP5RbuwUoM0pWBqFY9chD78Mqbpn6SYjWORoMFVr09xcS1tmhhMPACEOJRNnaIMo3BhkEKCUYBqigtbx9Bt5+V8TFgQAAIXDqv3O7mBBHBdJHMQIzP+WBMGD82oHhztuxLISKm6c+FSIUoP5j3vBv2omBQJFQTEDtRxhEKfsYBqig6UENr3/t5wj5guMCwcifL+48hnO/zM0qdgCDQKKeGVo75c+1zdEw+wsulN8UgOrQIUwSlkYNdY960PBrnmlv1bPN1dD0OTds88cckS0kHItDqNrmhfO4EX1vmhDo5q9jyh4hZWKbZu6v+3y620KUNtYqBxY9uA6zb1sCg8WI/stdOPvSIbTtO5/tpkWUyRAQr/LgVBcQJrubYLonF+ZqaeKxQk4BzS3gbRfoes4GGRg5wwAABBzLA6h/1AslStVhoqlYNCv+QmiGAaIcko2RgKnuJAByKwyMyPVQMLDPiM7nRioTTvz3DZ9A2Pibnkw3iwpYImGAuwmIckC2pgMK8TyCkSmDXAwFgT4xpkRxpKAl4D5jhPeqCuusBCoREaUIJ6mIsiiwZFbeBoFcqDEQy3TWEaRL/9vm4VmBGCMuQsJ51JipJhEBYBggyopshgAgN0cEdnYsTvl7PjO0NqdCgeu4EXHrDkhMueIh0VRxmoAozXJtR0AuBoF0y5Wpg0TOIAAAYxVrB1BmMQwQDcu1TjtVptr5x1s8aG41pXyqYGfH4pQtJIwk0ihBJgOCeaYGz7kJJyRGwAOHKNMSDgOF+ouSqNCk4sk/XhBIxJW2mikdVjR2uiCdwWBEqqcRYoWLipsC8JyLvR6gfIsfhtL8PWMgl6ZlKOwrCVzDkQGiPJaOIf9kgkA6RgfGynQwSIWYneFMiYbV3ag64ox4fNHgIjuO3zkPGEpnC4kmYxggyiPpnu+fyohArEAw1dGBSPIxGEwiBK4/UANvowVV+wZh7Q7/u3lnmNB1SwWGljiy3EAqVgwDRDkoG4v8UjE1EEkqA8GIiTsP8iocCIH+VaXoX1UKEdQBAUgDN3ZRdjEMEKVRvqzcn24QiDddcKWtBkDyVQkTlei2xFwLDdLIEEC5gWGAik6+dND5JpH1AyOhYES6wkE06ahlMFauhY1US/e/H6XHV5bFv4ZhgGJix1k40jUNMFayCwonhgMg8wEhldhZUr5iGJgmdpaUazLR6adTtkcPiIpR1sMAO1OiqcnVTj/V2w0LbfSAKBclHAbYaRNlXq52+PGku/4ARw+IUivrIwNEhSZfO/BUS3cgGCvS6EGmFEoQyea/IWUfwwAVNHbMlG7sRKkQMAxQWrATJiCzowNENHUMAwWIHTHlEgYCotzHMJBG7JQpVyTaGZtbTWm5f6T3ZUAgyh1FFQbYOVO+ylTHGek+mQwIuSYfAks+/DtS7suZMMCOmvJVPnQY0zHx6yumzqeYvlYqbgmHAXbWlA8KvWPOBSP/xuwoiQpHzowMUOFgh1z4GASICgvDQAFhJ0xERFPBMDAN7HyJiKgQ5FUYYOdLROlU0iKz3QSirEg4DLAjpmKWC/XnWfZ2PHbcRKmTVyMDVNhyocPNZRP/fQo9HLCzJ8ochoEixE63MBRCOGCHT5QbGAbSiJ0uZVKuhwN2/ES5qyDCADtdoslyKRwwCBDltqTDADteovyUS+GAEmOzmjFvzkyYzUYMDDhxqaUdus5gFUvZRX+2m5CXEg4DDAGUz+6pO5PtJkS0s2Nx1u491XCQbPXBXBoVyJeOQigCGz+wFstuXQyhCEhdQlEVeJ0+vPX0Xlw9fS3bTaQCUxDTBJR+udqZ5rtk/l2zGRymKlNBIF86+URt/vB6LL1lEYQInwkj1PD/W+xm3PPpO/DLf9uJjktd2WwiFRiGgSxiB0vJGPv9ko/BINUKLQCMsJfbsPTmG0FgrJFRgnX3r8bL//paFlpHhaqgwwA7WypUI9/bqQwFsxu7U7qOINWjAoXa+U80d/VsSEgIRD4pVlEU1M+rha3UCs+QN8Oto0KVsjDAjpco83J1tCBVQaBYAsBYZpsJUpeAEu86M8MApUzCYYCdPVFuS8VoQapHB5JVjJ3/RM4+NxQ1dhLQNR3uQU+GWkTFoKCnCSg3bS89lO0mZNwzQ2szdq90TCEkI9lRgVwNAKbTV7Ny37aWLmgfXgfVZIi4bkAPaWh55yxw6CKS29dBFB3DQIEqxg43l03lv8d0A0Q2QkGiQSDTASBbHftUBD1+7P/eTtz0hw9A6hJCuREIdE1DwOPH4R/uzl4DqSAxDBQAdvyFaeS/ayZHFdIp3QEgnzr8eM6/cgQBlx9rPnU7SmdWAgCkLnFt/yUc+PdfwdUxkN0GUsFhGMgz7PiLz/bSQwUTCChxLXtOo2XPaZTProHJboazfQDePle2m0UFimEgB7HDp1yVbPXBTCmkUYGJBq6w+iulH8NAlrDDzz3+DgX975jgPmuE1AHr7BAqbg7ANkebfG2nAm+LCiEA2/wQjBW5U3I3W3Kp7HCyVJMBzbctQe3SRkgAHUdb0PrOGeghPdtNI8oIhoE0YoefP4aOGtH+X1ZAANDDC7ZcJ41wHTeh+j4fqu4Mz3cHBwTan7bBe3nMj46QcCwLom67F6o1C40vctMdFahe3IC7vvYxWMps0EPh4Lfw/jXw9Djxq68+zSdzKgoMA9PAzr4wBPsF2p+2AhKAHLOVazgU9OywwNoUgrleQ+t3HAgNTdjuJQVcJ41oG1TQ9Dk3hJq5tueLXN0+aKsuwT3feAyq2QgAUAw3/uNZKuzY9s1P4Bef+S4CLl+2mkiUEQwDEbCTLy4D+0zhIBCl/CsUib63zbA2aQgNivGBYYQU8F01wHXSgJKVockva4DUAcWY0qbHley2wmI71njRg2uhmo0Ri/woqgJziQUL7l2Fk8/uy0LriDKnqMIAO3mKxHvZELmDH6ELeC+rCHQpw6EhCiExeNA0Lgy4zxrQ96YJnosGAAKmGg0VtwRQtjEAEafc7FjcURDZdKcImm9dErvanxBoumVx2sKAyWGByWGBb8CNkC+YlnsQJSIvwwA7dUopAYR7+RiBQACaW8S+RgqEnDde799rQtfzVkDceO9At4LO/7bAc1FF/WPepAJBtuXqToLpMFhiD9UIIWCwpP7rrlpQh1W/fhtmrp8HIQS0oIbLu0/i6FNvwd01lPL7EcWT1TDATp1ygX1BCN4ravSnfkXCviAEf6eKgDdGaFDk6K6CQI+Crhcs4Y+PG3UI/9l5zAT7khDK1hbG02A2dhKkYjth36VOWMptUNTICz30kIa+Sx3Tvs9YtSubsfWvHoVQlNFyw6pRxdw7l6Fx4zz88gs/gqt9IKX3JIon6TDADpwKTdnGAHrfMEOGZOTpAh2ouCUA31X1RgcfiS5QtiEAABh4P87TpJDof8dUMGEgX5198SAaN8yP+rpiUHHupdT9zhOKwC1f/CCEokyanlAMKkx2Kzb+7ja8/r9/lrJ7EiUi4UHK7aWHGASoIBlKJGZ+angXgBjzhKtIQEjUPuyFtUlD2YYAzPV6+OMTCQn74iDsC8PrBfzXlNjrEKRAoL04th2kYydBqooMXdt/Eed+eRhAuNzvCF0L1xc48fN30X36WkruBQD1a+bAXlMadZ2CYlAwc8M82KpLUnZPokTk5ZoBomRonvCwfHBQwOCQKFkZhKFkfIduX6Bhzp86MbjPBNdZA6AJWOeEUL45AHNtuGNQTMCsz7rQ9bwVQ0eNo1sPhVGifFMA1ff7RtcACBPCwSJGIBA59tNXbDsJRrz37VfQe74dSz6yEeVN1QCAgZZunHzmPVx+42RK71XaWAWp6xBK9OcwIQRKGirh6XGm9N5EseTYryOi1OrbY0LPKxZIDeFxMAl0vWRB5R1+VG/zY+wJsZpbAApgXxiCpV6DY2loUoetWoH6j3tR/aAP/jYVQgUsTSGoE2YPHEuCcJ+K8eOlSDiWJzdFwB0FYekoPXx+xxGc33EERpsZgETQE0j5PQAg5PUDEY4ljngdUQYxDFDBGnjfiO6XxpQEHKksK4G+1y1QjEDVXX5oHuD6T2zwnDeGn+aHqxCqdh0Nv+aBbe6NcsTeVhV9b5rgOm0ENAFTrYaKLQGUbQiMKzZUujqI3p0WhFwYHUG4ITwqUbo2AN91BQaHhKE0t0v5FuJOgkiCnvR2wm37LkBqOoQh8hSR1CU8PUPovZDaRYtE8eTRxiaixEkN6HnVgliFAXpfN0PzAtd+aIfnwnAulmK089Y8Am3/YYe/I/xjMnTUiNZ/s8N1KhwEACDQGd4qeP0/bZBjytgrJmDW77hvdPLD6w8ACWEATPUa2r5vR8s/l+DiN0rR+j07vK35uYYgkzsJ8v1AIt+gB2dePDhufcJYQhE48tSe2PUsiNKAYYDGkVp4L3ygWwkPrecpb6sKzaUgVl0AGRTof8sEb0uUokNSQOpA724zQi6Bjp8OlyzWJ24VFHCdNIQrGY5hqtEx90tO1D/uQemaIEpWBVFxqx8SQOC6Oq5t3ssqWr9rh+dS6gJBstUHKTMOPrEL53YchpQSuqZDC2qQug49pOHAE7twceexbDeRihCnCQhAOAT07TGhf495uBMFVIeOilv9qLwtuWp5uUD3xp+XBQDPJWP4qX3SUP7IGwm4jhlhqtWGn/yjv2//OyZU3DR+rlkYgNJVQZSuCq8PaPm2HdAwOXxIAegSHT+3Ys6fuhKZVs4LuXomQTZJXWLft3fg5DPvYcF9a1C1oBZBdwAXdx1H23vns908KlIMAwSpA+1PW+E8ZsTYzk5zKeh5xQL/tfyrlmesSvDoWUXGHZKVmoC/Ld4Tu0CwW4UMRd8l4O9Q4GuL8SMnBYJ9KryX1XHrFDIhH3YS5PsUwViKUcXyR27C/G2rIBQBSKD5lsUYbOvFnr95Hn1cM0AZlke/3ild3GcMcB4zIfJTr4DzmAnuM/mVG821OixNofF1A8YSEsZKDdameJ2uhFqiQ4n2zzPhPWP9RAV6E/txCyZ4HU2NyWGBtcoBEetMgjS75YsfxIJ7V0FRw1UIhRL+5iqpr8C9f/MJlM6szFrbqDjl1294SouB90yxh8oViYH3THAsnXwaX67Rg4DvqgoZEqi6x4frT9rDlQXHfm3DnXbddi8MFTr6dpujv6EAyjcHYKrRMXQoxor64ZLFsUZPVGtiq8IUS26tHiuUnQQN6+ZixWM3o3bZLACA3+nFuZcP4fhP92b0kKDK+XWYfdvSiK8pqgKYDFj+sZuw959ezlibiBgGCIEuNXoQAABdINCd20+rUgf6dpvR95YJunek8o+EbW4IUgDeizcWCdrmhlB9n390VKD6Xv+YnQfjQ4O5TkflrX4IA9BToSE4qETeKqgDlXfEnh+3NmtQHTo0V/QDj4RJwr4o90NXpk13imD+tlXY8oUHRysLAoC5xIplj9yEhnVz8eqfPpWxQDD3zmXQQxqUKNsLFYOKOXcuw7vfegVSS3C6i2iaGAYIilUC/bFO7ZNQYpTkzwVdL1gw8O6EsXwp4LlsgKFUYvYXXJAaIu7pr7rLD0O5jt5dZgR7wr+ghUmibEMA1dt8UIYHDhp/24Or37ch1K8OVxe8cbu6j3rjzvMLFaje5kPnc7ao11Td5Q9PSWTQdNYLZOOAomRZymzY/Af3QUo5+TwAVUHF3Fos274ZR5/ak5H2mEuj//cfoRoNMFiMCLq5AJMyg2GAULo6gO52S/SFdAIoXZOeimyp4O9QMPBulKF+XSA0CAwdMqLm/ui/WMvWBlG6Johgn4AMCRgr9EmdsqlKx5wvuuA6YYTrtAEyKGCu11C2MQBjWWKdYvmmIPSAFz07LJAhjFZFhAgHgXijC5S8eVtXQChi9ITAiRRVwbJHbsL1w5fRfbIt7e1xdw/FrUIY9PgR8mb3Z85casX8e1aibvVsCCHQefIqLuw4Am+/O6vtovRgGCCUbQigb48ZmhuTh8AVCdUuUbY+d8PA4IE4ax6kwMA+E6rv88f8HSwEYKoKFwaKRjGEqwuWrp76kHLlrQGUrQ/AecyI0KACdeS8BEfqnrJzocZArmwrLGuqhtRlzPUcBpMB9//9J3Fx13Hs/ceXohYFSoWLO49h5WM3R31d13Scf/VoWtsQT+2KJtz1tUdgsBgBEQ5SdatnY+XHb8abf/3faNvHLZCFJrcngikjVBvQ9LtumEa24yly9GQ+U5WOpt91Q40/spk1oQERd3ug7lXCT+I5QrWGRwmqt/lRsSWQ0iBQaKa7XiCZtQBz71yOlY/fMq37xeNs78eJn+2N+Joe0uDtc+HEz95NaxtisVbYcdfXPwbVbIRQlNERFUVVoBhU3P6Vh7nboQAxDBAAwFStY/afuND4GReq7vSj6k4/Gj/jwuw/ccFUnduLmFSHjLvtTxhlzp0SmA8KYSdBy9tnoi7Wm0goAkse2gDVlN5vlpPPvY/+lm5IeSMESinhHfRg51f+C36nF7M2L8Cy7Zux8MG1sFY60tqesRbcvwaq0RDxmOXwdAuw+EPrM9Yeygz+eqRRQoSP8rUvyK86xKVrgtHXDACAEp7mKJSqfqmUD8WGpqvzeCu6Tl1F9aKZETu4iUx2C6oW1qPrRHhEwlxiRcXcGdA1Hb3n26H5pzfEZDAbw7UEGqvGrWMQQsBabsddX3sERosJ1koH9JAGoSjY9PltOPfKEez/7mvQQ+kN57M2LYj576QYVDRuXoD3v/NaWttBmcUwQHnP0qTBsTQI1+kIZwwoEopJovK27Mxfh5wCul/AUDp5QWK+y6WdBGVN1ahe1ACp6Wg/egXeXte419/42jO44y+2o3b5LEgpoy4mHKEYVBjtZmz47FbMuWM5VGN4ZCHo8eP08wdw9Km3pjynP3frCpQ1VUdsg6IqKG2ohNT10XaECSy8fw1Uo5r2+gPCED8wJRKqKL8wDFDeEwKof9yDzuetGDpgHA4E4SX6phk6Gh7zwFiZ2Y7LfdaAnp1m+K6Gf8SEUaJsXQBV2/ww2HOnE8118dYL2GtKcfOXPoS6FU2jH5O6jsu7T+G9b78yul7A7/Ti1S89iXnbVuLmL3wg5nvqIQ1D1/tw79/+Gsqba8Z1fEabGSse3YKShgrs+eYvpvQ1zb9n5aSSFmNJKSGUyEP087etwvGf7oXzev+U7p2I7lNtKG+qjjq1ooc0dJ9O/64LyizGOyoIihGo3+7FvD93ou4RD2o/4kPT512Y/T9cMNdlds3D4CEj2n5gg2/MeQYyKDDwvgmt/2pHyM35ilQwl1hx3z98EjOWzBz3caEomH37Utz1/31stMzviIuvHUPv+XboochTYbqm4/Kbp9C8ZREqZs+IOm8+5/alqB0TQJJhrXRMate4948xaqFrOubcsWxK903U2ZcPxSzVrBhUnHnhYFrbQJnHMEAFxVAqUbY+iPLNAVibtYyvE9C8QOez1vBfJk5Z6ALBfgW9v4qxviGGZ4bWJnRdotsK8329wKIProO10hHxCVZRFdStbMb8basmvfbWN38Bv9M3rhqh1CWkrmOorRf7v7sTCx9YE/PeekiL+N6JcHcPjbt3MqQuYSpJbwWwgSvd2P/dnQAwLjTpWvjPR5/ag87jrWltA2UepwmIUsh51DS8hTH6kciDB0yoecAHxZjJliVvOjsJMlFjYP62lTHnrqWU2Pj5bWg/fBmuzsHRjzuv9+PF33sCSz60HvO2rYS5xApPjxPnfnkYZ18+hJA3AFt1acynd8WgwlFfPqV2X3j1CGomjGYkSlEFXB2D8S+cpjMvHED/5S4seWgD6tfMgRBA54mrOP38flw/cCnt96fMYxggSqFAtwKoAGJsyJABgZBTwJThdQz5Jt56AUtZ7OIXQggoBhVrfuMO7Pmb58e95ut34/CP3sThH70Z8XP9Ti+M1uhhSNd0+KZYie/SGyex8IG1qJxfNynMjGw1jDZVoGsSl18/MaX7JqvzeCtHAIoIpwmIUkgxy7gFkMLXpb8thc7T6xq3Tz8SIQSab1kMoz25f/CLO4/FHMpXVAWXptgp60ENO//8J7j8xolx99CCGi6/eQq+fveke498nQef2AW/0zul+xLFwpEBKmhSAt5LKtznDYAuYGkKwbEkBJFYDZqkOZYH0bsrxpyukLDO1vJ+R0EubCs8/8phrP30XXGvUwwqbJUODCZx6M+ZFw9iwX2rYSmzTVqToGs6es5dn1ZJ3qAngHf+4SUcfOJ1VC9ugJRAz5lr8A95YZ9RivW/fTeatiwa3VXgbO/H0SffwuXdp6Z8T6JYGAaoYAUHBK790A5/uzpaXhm6GWqpjsZPeWBpTH1xJUuDDvvSINyRah4MDxlUbfWl/L7JyvfFgwBw7pXDWLp9Myxltrh1A/zO5P7N/YMe7PjSk7jtyw+F6xfoN6pcXn3vHPb+48spOTvAN+hB274L4z7m7hrCm9/4b1jK7SipL0fQG8DAle5p34soFoYBymt6CPC1qZAhwFynj9b414PA1X+3I9g/PBM25hAjzSlw9d/tmP0FJ4wV4euD/eLG6MGsECwzdQR6FLjPGSBDgGWWBuvsxHYnNDzmwfWnbXCfNI4JIYAwAXXbvbDPz68Kj9mQyHkEQU8Av/rKf+ED//LpqNfomo7O463wDSQ/v+9qH8COLz2J8uYa1CxqgK7raD98Ba6OgaTfayp8A+4ptZtoKhgGKC9JHeh704y+N03QvcMdviJRsiKIGR/ywX3GgGBvlLkAKaAHJPr3mlF1tw+dz1jhPDG+WJFi1cPvK+To55hmaGj4hCdu3QLFBDR+0gN/hwLncSN0f/hzS1cF075WIFWnFebLmQT9l7pw9sWDWPSBdZNW/4er+EkcefKtpN6zbFYVlm3fjDl3LINqMsDT58K5lw/h9C/eR9CTu6d3Ek0HwwDlpc7nLRh8z4RxW/h0AedxI3xtKowVergjnzRUP0wKDB0xwteqwtuijrku/P+6V4xeNyLQraD1Ow7YFwfgaw1PA9gWhFC+xQ9L/eSAYK7TYa7LjWN8C9n+7+2EFtSw5MPrIVQFUpdQVAXeAQ/2/sOL6D6VeLW8mqWNuOevHxs9oQ8AbJUOrHz8FjTfshg7vvQkgkmsPSDKFwwDlHd81xUMvhflEVsXCPYpkCERPQiMXOoV8F6J9iMQ4XOlgO6TcB65EUIGDxgxuN+Iuo96UbYh8aNyC9l0awwke2Sx1CUOPrELJ3/+Lho3L4DRZsbQtT5cP3AxqXl9oQjc/mcfgWJQJ235U1QFZU3VWPOpO/D+v72aVPuI8gHDAOWdwf2m8Fy8Hv2pP+RG7GuEhFBluEBQnNAw4RPH/1UPTy10PGuFpVGDOcIIQa4phMWDkfgGPbjw6tEpf37jxvmwVZdEfV1RFczfthKHfvD66JkHyRCKQOOmBWjashAGiwkDV7px/tUj8PQ4p9xmolRhGKC8ExpQgHh9bihOBy8FVLsO3ZeKUhsCEBL9e02o+2j2dwqkWy5sK0ylsqZqzNq8AA3r5kLX9JhVDQ1mI0rqK9B/uSupe1grHbjnrx9DeXPN8LHEArNuWogVj9+M/f/2Gs6+fGi6XwbRtDAMUN5RbTJcLitGIFAsEmUbAujfY8akI+KEhG1BCIpNhncbRBs9SIYu4LlQGD9O2Vw8mOwUwXQYbSbc8qcfxqxNC0aL/CRyNK8WCCV3IwHc/ZePonRmZfgew2sRRr7rNv3+fXB1DeLa/ovJvS9RCrECIeWdkjWB2B24IlG6LoCaB32ofdgDY+WN1KDadFRt9aPxUx5UbIzzPslK46FIiR5SRIm746vbMXP9PADhEBAvCEhdwtnej6HrfUndp37NHFTOrY1+JLCmY/nHbkrqPYlSrTAeZSgvSR1wnzPAeWx4+12NhrINAZiqYg9D2+ZpsC0Ihp/EJ873KxKKWaLyVj+EAMo3BVG2MYjQgIDUBYzl+mj1QetcDSUrAnAeN2JyTx7pwPkYh9ADUK3ZHT5P1bbCbMnkqMCM5bNQv3p2Up8jFIHjT+9NqNz0WI0b50MPaVHDgKIqqF3ehAf+76fQfqQF5355GO6u9B9GRDQWwwBlRcgt0PYfNvivGYYX+gEQBvS9YUb1fX5U3Rl9RboQwMxPetDxrBXOo8YbfbQUMNXoaHjcM1pMaOT68N/lpPepf8wLY7WO/nfMkIHhjl5ImOo0hAaUcTUM4q1T8LUZ4LumwDIzdxcRFuriwWTNvm1pzA4aGD4PQEpIGe6wjz61BxdeS36BompM7Nds9aKZqJxfj2Uf3YQ9f/sCWvacTvpeRFPFMEAZJyVw/UlbuEwwcGOofriv7tlhgbFCR+nq6Cu2FRPQ8JgXwft84SqBmoClQYOlObEqgSOECtTc50fVXX74rqqQmoC5QYPBEd5p4Gsfrm5Yq6H1uw4EOhVEHR1QJAbeM6PuozxIJteZHGbE+0YRQqBl71kMtfXhwqtH4Wzvn9K9+i51QiSwFgEIhw6pS9z65Q9joKUbg609U7onUbK4ZoAyztemwnvZEGO+XqJ3lxlxDqQDEH7iL98URMWWQMLlgiNRTOHpB/vC0GhJY2EArLM02OZoUG1AyCkQc2GALuC7Vtw/UlOtMZDJKQIAcF6L37H7Bj1486+ew+Ef7p5yEACAy2+cQMgfTLjmgVAEICUWf2h91GuslQ6UN9fA5IhxKBZREjgyQBnnPmWIXQMAAoEuFaFBAWN57mxjUwzxZgoklPyo4htVvJ0EhbKt8MJrR7Hy8Vuivq5rOs6laLtf0BPAnm8+jzu++lHIkB5zamKEYlAxc8O8SR+vXdGE1Z+8DbXLm0bb2fr2GRz64e6MnZlAham4H2MoK3Qtscd3Ga9WQIaVrAjeOHgo2jXLWYUwWZkeFQAAd/cQDv9wNwBMemLXNR1Dbb04+ey+lN2vbd95vPKFH6L1nbPQQ4kdVDVxd8PMjfNxz/95HDVLGsdd03TzIjzwz7+BkvqKlLWXig/DAGWcpUGLu6VPsUgYynNrIV75zf7wTgQRIRAICdUe3tKYq7h4cLwTP38Xe/72+XFbBUP+IM6/chg7vvgkgp7UnkHQe74Db33zF3jqg3+DMy8eHK1tEIke0tB5vHX070JVsOULD0KIySFBMagw2c1Y/ztbU9peKi6cJqCMcywPQrHp4cOAIpUCFhJlmwJQcuy701Ql0fibblz7sR26T96I0rqAWiIx69NuqNbstC3ftxVmy+U3TuLyGydRUl8B1WyAq2NgSqWGk3X2pYNY9GD02hGKQcWZFw6M/r1x03xYy+3Rr1dVNG6cD2ulA94+V0rbSsWBIwOUcYoBaPiEB0LBhGF3CQgJy0wN1XfnZllf2zwN8/58CLUPe1G6OojStUHUP+bBvC874x5tPFWFXHAoG1MEkTjb+zFwpTsjQQAABlt78O63fgkp5bhpg5E/H3xiF7pPXxv9eGlDZcyRBCC88NBRV56W9lLhy7FnLyoW9vkamv/Qhb7dZjiPGyFDAoYyifKbAqi42T+6EE8PAkOHjRh834TQoAK1REfZ+iDK1geytlhPMYeLGZVvSn/HkckgkM0yxMXowqtH0X+5C0s+vAEN6+YAEOg83oLTzx9A14nxISng9od3GcSR6qkNKh4MA5Q15jod9R/3ou5RL6BjtDLgCM0LXP2+Hf5r6mhRodCQQNc1FQPvmjDrs+7RbYCUfqneSZArowLZ1HuuHW//3Qtxr7v67jls+r17IdTIgUBKCee1Pgxc6U51E6lIcJqAsk6IyUEAALqet8J/XQUwdm1BeK9/oEdBx8+zNEGfIYU8PZBxAqhfOwfrPnMX1n92K2bfvhSKMf4Wv1zhG3DjzAsHwlURIxBCwDfEYlc0dRwZoJwUcgoMHTVGXmAIALqA+4wBgV4R9ywDysxOgmQKDmVyVMA+owx3f/1jKG+ugTY8J7/0oY3wDbjxxtefGTc3n8sGW2M/9c9Y2oj6tXPQfuhyzOuEImC0mRHyBaCHcmvHDmUPwwDlJN9VNYETBQW8LQaYqgpvbz9HBVJDNRmw7ZuPw15TGv77mII/phIrtn7jMbz4+SfyomDPgvvWhGt5RymzqYc0LLhvddQwYK10YMWjWzB/20oYLCZoQQ2Xd5/E8Z/uhfNacicxUuHhNAHlptyqN0QplMlRgdm3L4Wjrjxi1T9FVaCaVCz+cPSyv7nEUVcOoUT/la0YVJQ2VEZ8zT6jDA9++7ew8ME1MFjCC0VVo4q5dy7DB771m6icV5uWNlP+YBignGRp0gA1zvC/kLDNCWWmQRmU7KhAKmoMFOpOguZbFkedZwfC+/Pn3L40gy2aOr/TG/Nr0TUdvkF3xNc2/d69sJRaoajjQ5FiUKGajbjlSx9KaVsp/zAMUE4y2CXK1gYjV/sDACHhWBYcd1Qx5b5M7yAw2sxQYjxNAxh9Us51l3YdjxNsFFx6/cSkj9tnlGLmhnlRz0RQVAXlzTWoWTIzZW2l/MMwQDlrxoe8sM4eLsgyEgqG/99cr6Fue+Gtns7VtQL5ekDRQEt3zLMAdE3H4NX8OCb43C8Pw9fvhq5N/nr0kIaBlm5ceev0pNfKmqoh4hznKaVE+WyWqy5mDAOUsxQTMOu33ah/3APb/BCMNRqsczTUPepB0+9lr/RvvinmMwnOv3I45imBiqrgzIsHM9iiqfMPebHjS09i4HJ4V4Gu6ZB6eDdA54mreO3L/wk9ODkoaP74U2lCiIxVX6TcxN0ElNOECpSuCqJ0Ve78opIhwH3OgJBTwFAqYV8QgkjBT1KujgqkSjaKDPVd7MSxp9/Byo/fDKnrowvwpJSAlGjbfxGXIwyt5ypX+wBe+oMfoHrxTMxY1gip6Wg/ciVmsaHuM9fgH/LAXGqLeo0W1HD94KV0NJnyBMMAURIGDxrR9ZIFuufGoJpq01HzQV94jUMeKtTFgyOO/OhNDF3txfKP3YTy5vAoibfPhTPPH8DJ5/ZNOsI4H/ScuYaeM4nVR9CDGo7/7F2s/8zdEV+XusS5Xx6Cn0WLihrDAFGCBg8Z0fEzG4DxnYfmEej4qQ1C8aB09dQCQb6PCiRTcCgbLr1+ApdePwFLhR2KqsDb58rLEDBVp57dB0uZDcu2bw5/3cMLERWDiktvnMCB7+/Kcgsp2xgGiBIgNaD7ZQvCQWDiYiwBQKL7ZQtKVgbDpzFmCI8uTo6vP/LWu2Jw6Adv4NwrhzF/60rYakrhG3Dj0usneJ4BAWAYIIpK6oD/ugI9IBAaUqC5YvXy4UOUvJdV2OZFX70eSa6PCuTrTgKazNU+gCNPvpXtZlAOYhggmkBKYPB9I3p/ZUFoaCQAJNYhhlwKgOTCQDoV804CIkocwwDRBH2vm9Hz2siUwIjE6iMby5I7+CXbowKFvniQiBLDOgNEYwQHBHp2mof/FikARBshkDBWarA0586oABFRohgGiMYYOhTvSTm8WHD8hyQggNqHfNEOlIso26MCREQjOE1ANEawX4nY3483vsc31eiY8UEf7AsL79AkIioODANEY6i2BOb8hcSsz7qg+xQYSnWYG/SkRgSA1IwKZGJbYSI7CXK9xgARxccwQDRG6eog+nZbol+ghE9LtM3RASS3WDDTcmknQTZKERNR4rhmgGgMc72OklWByEcnCwmhAFV3F8aTMHcSENEIjgwQTVD3MS8Us8TgftONgoNSwFAmUf9xDyz10xsR4MJBIso1DANEEygGoO6jPlTf44frlBF6ADDX6bDND2W01DARUaYwDBBFYSiVKN8cyHYzsoZliImKB59ziIiIihzDAFEGpWq9QLxthfF2EnDxIBGNxTBARFPGGgNEhYFhgIiIqMgxDBARERU5hgGiDMmn+gLcSUBUXBgGiIiIihzDAFGB4U4CIkoWwwBRnsnEaYVEVFwYBogyIJ/WCxBR8WEYIKJxEl08yBoDRIWDYYCIiKjIMQwQUVqZTl/NdhOIKA6GAaIiwp0ERBQJwwBRmmVy8WC8bYVERJEwDBDlkXRvK2TlQaLixDBARERU5BgGiIiIihzDABEljTUGiAoLwwBRkYi3k4DrBYiKF8MAURpxJwER5QOGAaI8wQOKiChdGAaIiIiKHMMAERFRkWMYICIuHiQqcgwDREUglWcScFshUeFhGCAqANxJQETTwTBAlCap3FbInQRElE4MA0REREWOYYCIiKjIMQwQFTnuJCAihgGiApfNnQSm01dTdm8iSh+GAaIcF2/xIHcSENF0MQwQEREVOYYBIiKiIscwQJTDWF+AiDKBYYAoDVJZcCiduJOAiACGAaK8Fm/xIM8kIKJEMAwQ5ShOERBRpjAMEBERFTmGASIioiLHMECUgzhFQESZxDBAVKSS2UnAxYNEhY1hgChPZXInAREVNoYBohzDKQIiyjSGASIioiLHMECUYvlSfZCIaATDAFEO4RQBEWUDwwBRAYq3eJA7CYhoLIYBojwUbydBLjCdvprtJhBRghgGiIiIihzDAFGO4HoBIsoWhgEiiorrBYiKA8MAERFRkWMYIMoz0y1DnMxOAiIqDgwDRDmA6wWIKJsYBohSqJCqD3K9AFHxYBggIiIqcgwDRERERY5hgCjLuF6AiLKNYYAoj0x3JwERUSQMA0RFJNFthVw8SFRcGAaIiIiKHMMAERFRkWMYIMoiLh4kolzAMEBE43C9AFHxYRggyhP5tJPAdPpqtptARElgGCBKkVwvRcwDiogoGoYBoizhegEiyhUMA0Q0iusFiIoTwwAREVGRYxggygPxFg8SEU0HwwBRAUjFTgJOERAVL4YBIiKiIscwQJQFmd5JwG2FRBQLwwAREVGRYxggSoF0FhzKxOJBrhcgKm4MA0REREWOYYAoz+XSmQRElJ8YBoiIiIocwwBRhhX6TgKeWEiUfxgGiHIYKw8SUSYwDBARERU5hgGiIsdthUTEMECUx7iTgIhSgWGAKIOSWTzI9QJElClCSsmi5UREREWMIwNERERFjmGAiIioyDEMEBERFTmGASIioiLHMEBERFTkGAaIiIiKHMMAERFRkWMYICIiKnIMA0REREXu/wfnjH3lpS/cAAAAAABJRU5ErkJggg==\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": "a5b37f73-0a99-48fe-9e1a-27001957ba46"
},
"execution_count": 273,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710117447.6803973\n",
"Mon Mar 11 00:37:27 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": "6973ee6d-c7b9-450e-ad3b-675a5a3be93a"
},
"execution_count": 274,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710117447.6879025\n",
"Mon Mar 11 00:37:27 2024\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BMxSJo5gtOmQ"
},
"source": [
"# VS Fully Connected"
]
},
{
"cell_type": "code",
"metadata": {
"id": "NKQx7stYswzU",
"outputId": "56b123c3-07f9-437d-8a51-8208a46d2349",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 11458
}
},
"source": [
"optimizer = Adam(learning_rate=0.001, weight_decay=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": 275,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 1s - loss: 0.5656 - 777ms/epoch - 259ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 0.1959 - 24ms/epoch - 8ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 0.1423 - 24ms/epoch - 8ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 0.0917 - 26ms/epoch - 9ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 0.0828 - 24ms/epoch - 8ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 0.0827 - 25ms/epoch - 8ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 0.0680 - 25ms/epoch - 8ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 0.0680 - 27ms/epoch - 9ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 0.0605 - 30ms/epoch - 10ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 0.0632 - 25ms/epoch - 8ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 0.0537 - 28ms/epoch - 9ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 0.0523 - 25ms/epoch - 8ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 0.0522 - 25ms/epoch - 8ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 0.0483 - 29ms/epoch - 10ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 0.0498 - 25ms/epoch - 8ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 0.0444 - 26ms/epoch - 9ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 0.0487 - 28ms/epoch - 9ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 0.0467 - 30ms/epoch - 10ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 0.0419 - 25ms/epoch - 8ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 0.0439 - 26ms/epoch - 9ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 0.0406 - 26ms/epoch - 9ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 0.0414 - 25ms/epoch - 8ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 0.0421 - 27ms/epoch - 9ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 0.0378 - 29ms/epoch - 10ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.0382 - 23ms/epoch - 8ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.0425 - 29ms/epoch - 10ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.0505 - 25ms/epoch - 8ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.0423 - 24ms/epoch - 8ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 0.0513 - 23ms/epoch - 8ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 0.0385 - 26ms/epoch - 9ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.0392 - 26ms/epoch - 9ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.0416 - 23ms/epoch - 8ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.0414 - 27ms/epoch - 9ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.0374 - 24ms/epoch - 8ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.0348 - 25ms/epoch - 8ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.0319 - 25ms/epoch - 8ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.0429 - 24ms/epoch - 8ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.0382 - 29ms/epoch - 10ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.0266 - 26ms/epoch - 9ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.0400 - 25ms/epoch - 8ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.0337 - 25ms/epoch - 8ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.0293 - 24ms/epoch - 8ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.0304 - 26ms/epoch - 9ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.0370 - 24ms/epoch - 8ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.0296 - 31ms/epoch - 10ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.0279 - 27ms/epoch - 9ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.0298 - 26ms/epoch - 9ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.0244 - 28ms/epoch - 9ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.0270 - 25ms/epoch - 8ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.0191 - 26ms/epoch - 9ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.0257 - 28ms/epoch - 9ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.0229 - 26ms/epoch - 9ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.0225 - 26ms/epoch - 9ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.0250 - 27ms/epoch - 9ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.0230 - 24ms/epoch - 8ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.0265 - 28ms/epoch - 9ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.0271 - 25ms/epoch - 8ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.0179 - 26ms/epoch - 9ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.0230 - 28ms/epoch - 9ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.0185 - 30ms/epoch - 10ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.0132 - 24ms/epoch - 8ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.0144 - 24ms/epoch - 8ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.0155 - 25ms/epoch - 8ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.0118 - 26ms/epoch - 9ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.0186 - 25ms/epoch - 8ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.0130 - 25ms/epoch - 8ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 0.0114 - 24ms/epoch - 8ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 0.0109 - 27ms/epoch - 9ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.0073 - 27ms/epoch - 9ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.0096 - 25ms/epoch - 8ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.0088 - 26ms/epoch - 9ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.0063 - 25ms/epoch - 8ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 0.0057 - 25ms/epoch - 8ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 0.0059 - 26ms/epoch - 9ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 0.0094 - 28ms/epoch - 9ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 0.0108 - 25ms/epoch - 8ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 0.0085 - 25ms/epoch - 8ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 0.0050 - 24ms/epoch - 8ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.0049 - 27ms/epoch - 9ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 0.0047 - 25ms/epoch - 8ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 0.0029 - 24ms/epoch - 8ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 0.0025 - 24ms/epoch - 8ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 0.0028 - 23ms/epoch - 8ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 0.0029 - 28ms/epoch - 9ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 0.0037 - 25ms/epoch - 8ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 0.0040 - 30ms/epoch - 10ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 0.0043 - 27ms/epoch - 9ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 0.0029 - 27ms/epoch - 9ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 0.0031 - 26ms/epoch - 9ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 0.0072 - 28ms/epoch - 9ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 0.0089 - 30ms/epoch - 10ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 0.0054 - 28ms/epoch - 9ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 0.0038 - 28ms/epoch - 9ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 0.0057 - 30ms/epoch - 10ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 0.0089 - 29ms/epoch - 10ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 0.0104 - 29ms/epoch - 10ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 0.0123 - 30ms/epoch - 10ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 0.0076 - 29ms/epoch - 10ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 0.0081 - 29ms/epoch - 10ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 0.0060 - 28ms/epoch - 9ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 0.0033 - 26ms/epoch - 9ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 0.0046 - 27ms/epoch - 9ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 0.0033 - 28ms/epoch - 9ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 0.0031 - 25ms/epoch - 8ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 0.0022 - 25ms/epoch - 8ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 0.0019 - 24ms/epoch - 8ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 0.0016 - 26ms/epoch - 9ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 0.0013 - 27ms/epoch - 9ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 0.0023 - 28ms/epoch - 9ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 0.0022 - 25ms/epoch - 8ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 0.0016 - 24ms/epoch - 8ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 5.8179e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 9.4752e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 0.0015 - 25ms/epoch - 8ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 0.0018 - 27ms/epoch - 9ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 0.0020 - 28ms/epoch - 9ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 0.0019 - 27ms/epoch - 9ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 0.0012 - 26ms/epoch - 9ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 8.6916e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 6.4590e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 7.4487e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 9.1896e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 6.3055e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 4.8272e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 4.5317e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 3.0330e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 2.4756e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 3.8699e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 3.8916e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 2.0093e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 2.3783e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 1.3623e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 1.0620e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 8.6745e-05 - 27ms/epoch - 9ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 1.0782e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 1.2216e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 8.1404e-05 - 29ms/epoch - 10ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 6.2126e-05 - 27ms/epoch - 9ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 1.1796e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 1.2094e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 1.8683e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 2.6161e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 3.9223e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 3.7091e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 5.9121e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 8.4272e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 5.3048e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 5.3695e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 7.6038e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 6.5180e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 6.9406e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 6.4779e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 5.7664e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 3.8977e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 3.5430e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 3.2681e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 4.4352e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 6.7539e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 0.0018 - 25ms/epoch - 8ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 0.0013 - 26ms/epoch - 9ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 9.5242e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 9.1812e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 7.7427e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 7.6587e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 0.0013 - 25ms/epoch - 8ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 0.0015 - 26ms/epoch - 9ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 0.0017 - 31ms/epoch - 10ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 0.0012 - 27ms/epoch - 9ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 0.0026 - 25ms/epoch - 8ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 0.0017 - 26ms/epoch - 9ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 0.0013 - 25ms/epoch - 8ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 0.0020 - 23ms/epoch - 8ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 0.0027 - 24ms/epoch - 8ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 0.0024 - 26ms/epoch - 9ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 0.0037 - 28ms/epoch - 9ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 0.0034 - 26ms/epoch - 9ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 0.0030 - 25ms/epoch - 8ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 0.0030 - 24ms/epoch - 8ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 0.0056 - 23ms/epoch - 8ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 0.0022 - 25ms/epoch - 8ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 0.0029 - 24ms/epoch - 8ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 0.0029 - 25ms/epoch - 8ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 0.0043 - 23ms/epoch - 8ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 0.0068 - 22ms/epoch - 7ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 0.0037 - 25ms/epoch - 8ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 0.0033 - 23ms/epoch - 8ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 0.0026 - 27ms/epoch - 9ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 0.0021 - 26ms/epoch - 9ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 0.0024 - 26ms/epoch - 9ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 0.0018 - 23ms/epoch - 8ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 0.0025 - 24ms/epoch - 8ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 0.0022 - 27ms/epoch - 9ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 0.0030 - 28ms/epoch - 9ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 0.0037 - 26ms/epoch - 9ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 0.0034 - 25ms/epoch - 8ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 0.0033 - 26ms/epoch - 9ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 0.0043 - 27ms/epoch - 9ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 0.0055 - 24ms/epoch - 8ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 0.0046 - 25ms/epoch - 8ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 0.0060 - 24ms/epoch - 8ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 0.0049 - 25ms/epoch - 8ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 0.0043 - 24ms/epoch - 8ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 0.0047 - 25ms/epoch - 8ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 0.0047 - 28ms/epoch - 9ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 0.0047 - 28ms/epoch - 9ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 0.0031 - 25ms/epoch - 8ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 0.0023 - 27ms/epoch - 9ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 0.0021 - 25ms/epoch - 8ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 0.0015 - 27ms/epoch - 9ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 0.0015 - 25ms/epoch - 8ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 7.4148e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 5.6472e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 4.3762e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 4.6429e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 8.8636e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 6.5560e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 4.8605e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 5.5407e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 0.0010 - 27ms/epoch - 9ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 0.0014 - 25ms/epoch - 8ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 0.0011 - 29ms/epoch - 10ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 6.4845e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 5.3416e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 3.1980e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 3.4107e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 7.5128e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 7.8182e-04 - 30ms/epoch - 10ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 7.2743e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 6.0113e-04 - 31ms/epoch - 10ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 5.7638e-04 - 29ms/epoch - 10ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 6.0373e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 5.0583e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 8.2448e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 8.7208e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 0.0012 - 27ms/epoch - 9ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 0.0011 - 26ms/epoch - 9ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 0.0015 - 29ms/epoch - 10ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 0.0025 - 27ms/epoch - 9ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 0.0025 - 27ms/epoch - 9ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 0.0027 - 28ms/epoch - 9ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 0.0014 - 28ms/epoch - 9ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 0.0014 - 28ms/epoch - 9ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 0.0012 - 25ms/epoch - 8ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 0.0012 - 28ms/epoch - 9ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 0.0011 - 27ms/epoch - 9ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 7.9537e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 5.1383e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 5.3926e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 4.8827e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 2.2486e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 3.3749e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 4.1919e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 0.0010 - 26ms/epoch - 9ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 0.0012 - 25ms/epoch - 8ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 6.7083e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 8.4139e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 6.9105e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 6.0060e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 7.9923e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 0.0012 - 26ms/epoch - 9ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 0.0014 - 24ms/epoch - 8ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 0.0025 - 26ms/epoch - 9ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 0.0040 - 24ms/epoch - 8ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 0.0024 - 24ms/epoch - 8ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 0.0026 - 28ms/epoch - 9ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 0.0030 - 23ms/epoch - 8ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 0.0025 - 23ms/epoch - 8ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 0.0023 - 25ms/epoch - 8ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 0.0019 - 27ms/epoch - 9ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 0.0026 - 26ms/epoch - 9ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 0.0027 - 26ms/epoch - 9ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 0.0048 - 28ms/epoch - 9ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 0.0031 - 25ms/epoch - 8ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 0.0014 - 25ms/epoch - 8ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 0.0018 - 25ms/epoch - 8ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 0.0027 - 25ms/epoch - 8ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 0.0045 - 27ms/epoch - 9ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 0.0040 - 26ms/epoch - 9ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 0.0017 - 28ms/epoch - 9ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 0.0018 - 26ms/epoch - 9ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 0.0028 - 29ms/epoch - 10ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 0.0020 - 23ms/epoch - 8ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 0.0010 - 27ms/epoch - 9ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 9.4381e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 6.6271e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 7.6344e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 9.9750e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 0.0017 - 27ms/epoch - 9ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 0.0021 - 26ms/epoch - 9ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 0.0016 - 27ms/epoch - 9ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 0.0021 - 24ms/epoch - 8ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 0.0016 - 28ms/epoch - 9ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 0.0012 - 32ms/epoch - 11ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 8.5258e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 9.4247e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 9.4022e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 9.5384e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 9.6760e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 8.2499e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 7.3381e-04 - 24ms/epoch - 8ms/step\n",
"14/14 [==============================] - 0s 2ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7bae58c3bca0>"
]
},
"metadata": {},
"execution_count": 275
},
{
"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": "e4c27d6c-a0a7-4b35-cfa5-e7cbe5f4a895"
},
"execution_count": 276,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710117457.4379208\n",
"Mon Mar 11 00:37:37 2024\n"
]
}
]
}
]
}