1743 lines (1743 with data), 129.7 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": 123,
"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": 124,
"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": "3cad9759-093d-4d01-fabe-afbe4f1885ef",
"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": 125,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_20\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_50 (Dense) (None, 1024) 3072 \n",
" \n",
" dense_51 (Dense) (None, 1024) 1049600 \n",
" \n",
" dense_52 (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": "e69e4e3d-3c07-4057-9937-e7d5e90af060",
"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": 126,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_21\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_53 (Dense) (None, 1024) 3072 \n",
" \n",
" tn_layer_30 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_31 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_32 (TNLayer) (None, 1024) 5120 \n",
" \n",
" dense_54 (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": 127,
"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": "36263f2f-c563-4649-a89a-d858ad294057"
},
"execution_count": 128,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710116324.52908\n",
"Mon Mar 11 00:18:44 2024\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "crc0q1vbIyTj",
"outputId": "8593d247-3171-420b-fc84-be9e66579d20",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
}
},
"source": [
"optimizer = Adam(learning_rate=0.0012)\n",
"tn_model.compile(optimizer=optimizer, loss=\"mean_squared_error\")\n",
"tn_model.fit(X, Y, epochs=300, verbose=2)"
],
"execution_count": 129,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 2s - loss: 1.0022 - 2s/epoch - 690ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 1.0022 - 18ms/epoch - 6ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 1.0010 - 20ms/epoch - 7ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 1.0002 - 18ms/epoch - 6ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 1.0007 - 18ms/epoch - 6ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 0.9994 - 17ms/epoch - 6ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 0.9983 - 18ms/epoch - 6ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 0.9954 - 18ms/epoch - 6ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 0.9876 - 17ms/epoch - 6ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 0.9685 - 16ms/epoch - 5ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 0.9230 - 20ms/epoch - 7ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 0.8300 - 19ms/epoch - 6ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 0.6306 - 17ms/epoch - 6ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 0.2893 - 18ms/epoch - 6ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 0.0785 - 19ms/epoch - 6ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 0.1516 - 18ms/epoch - 6ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 0.0387 - 17ms/epoch - 6ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 0.0574 - 18ms/epoch - 6ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 0.0703 - 18ms/epoch - 6ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 0.0414 - 20ms/epoch - 7ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 0.0163 - 19ms/epoch - 6ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 0.0176 - 19ms/epoch - 6ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 0.0236 - 19ms/epoch - 6ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 0.0139 - 16ms/epoch - 5ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.0094 - 17ms/epoch - 6ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.0116 - 17ms/epoch - 6ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.0110 - 18ms/epoch - 6ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.0079 - 19ms/epoch - 6ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 0.0073 - 20ms/epoch - 7ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 0.0075 - 18ms/epoch - 6ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.0069 - 18ms/epoch - 6ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.0061 - 18ms/epoch - 6ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.0058 - 16ms/epoch - 5ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.0057 - 17ms/epoch - 6ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.0054 - 19ms/epoch - 6ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.0051 - 18ms/epoch - 6ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.0049 - 18ms/epoch - 6ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.0048 - 17ms/epoch - 6ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.0046 - 16ms/epoch - 5ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.0044 - 18ms/epoch - 6ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.0042 - 17ms/epoch - 6ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.0042 - 19ms/epoch - 6ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.0040 - 17ms/epoch - 6ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.0039 - 19ms/epoch - 6ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.0037 - 18ms/epoch - 6ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.0036 - 17ms/epoch - 6ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.0035 - 16ms/epoch - 5ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.0034 - 18ms/epoch - 6ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.0033 - 19ms/epoch - 6ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.0032 - 17ms/epoch - 6ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.0031 - 18ms/epoch - 6ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.0030 - 19ms/epoch - 6ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.0029 - 17ms/epoch - 6ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.0028 - 17ms/epoch - 6ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.0027 - 17ms/epoch - 6ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.0027 - 16ms/epoch - 5ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.0026 - 18ms/epoch - 6ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.0025 - 19ms/epoch - 6ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.0024 - 17ms/epoch - 6ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.0023 - 17ms/epoch - 6ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.0022 - 19ms/epoch - 6ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.0022 - 18ms/epoch - 6ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.0021 - 19ms/epoch - 6ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.0020 - 18ms/epoch - 6ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.0020 - 18ms/epoch - 6ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.0019 - 19ms/epoch - 6ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 0.0018 - 17ms/epoch - 6ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 0.0018 - 16ms/epoch - 5ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.0017 - 16ms/epoch - 5ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.0016 - 17ms/epoch - 6ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.0016 - 18ms/epoch - 6ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.0015 - 17ms/epoch - 6ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 0.0015 - 16ms/epoch - 5ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 0.0014 - 16ms/epoch - 5ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 0.0013 - 18ms/epoch - 6ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 0.0013 - 19ms/epoch - 6ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 0.0013 - 16ms/epoch - 5ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 0.0011 - 18ms/epoch - 6ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 0.0011 - 18ms/epoch - 6ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 0.0010 - 17ms/epoch - 6ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 0.0010 - 19ms/epoch - 6ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 9.5104e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 9.0919e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 8.7620e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 8.2485e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 7.8331e-04 - 16ms/epoch - 5ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 7.7180e-04 - 16ms/epoch - 5ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 7.1667e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 6.9424e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 6.5068e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 6.0235e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 5.8652e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 5.4925e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 5.3154e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 4.7807e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 4.9105e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 4.4833e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 4.2057e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 3.9538e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 3.6667e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 3.4509e-04 - 16ms/epoch - 5ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 3.1735e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 2.9849e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 2.8785e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 2.5633e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 2.4092e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 2.2271e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 2.0372e-04 - 17ms/epoch - 6ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 1.9363e-04 - 21ms/epoch - 7ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 1.7164e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 1.5844e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 1.4527e-04 - 20ms/epoch - 7ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 1.3974e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 1.2305e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 1.1807e-04 - 18ms/epoch - 6ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 9.9716e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 1.0380e-04 - 19ms/epoch - 6ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 8.1176e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 8.0384e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 6.7155e-05 - 21ms/epoch - 7ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 6.5435e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 5.8196e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 5.1913e-05 - 21ms/epoch - 7ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 4.2851e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 3.8011e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 3.4557e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 2.9785e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 2.6725e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 2.2777e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 2.2321e-05 - 19ms/epoch - 6ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 1.8141e-05 - 20ms/epoch - 7ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 1.9058e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 1.4560e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 1.2435e-05 - 17ms/epoch - 6ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 1.2210e-05 - 18ms/epoch - 6ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 9.9732e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 9.9544e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 7.4968e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 8.2949e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 6.8369e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 6.5581e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 5.9514e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 5.1302e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 5.2015e-06 - 22ms/epoch - 7ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 3.6858e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 4.3501e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 3.8775e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 3.5695e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 4.0545e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 2.8301e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 3.7082e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 3.1982e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 2.0719e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 2.8015e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 2.6883e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 2.2614e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 2.0983e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 2.0310e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 1.6565e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 1.6433e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 1.5779e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 1.6707e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 1.8394e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 1.5925e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 1.4811e-06 - 16ms/epoch - 5ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 1.7765e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 1.2923e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 1.3868e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 1.3120e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 1.2385e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 1.2631e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 1.2445e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 1.2106e-06 - 17ms/epoch - 6ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 1.1094e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 1.2265e-06 - 21ms/epoch - 7ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 1.3665e-06 - 18ms/epoch - 6ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 1.1590e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 1.2842e-06 - 20ms/epoch - 7ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 1.2512e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 1.0135e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 1.2452e-06 - 21ms/epoch - 7ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 9.8491e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 1.0698e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 9.7977e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 9.7406e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 1.0186e-06 - 19ms/epoch - 6ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 9.4785e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 9.9507e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 9.8987e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 8.8557e-07 - 22ms/epoch - 7ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 9.1470e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 9.0003e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 8.6794e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 8.8270e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 9.1021e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 7.9391e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 8.6513e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 7.9748e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 8.4584e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 8.2406e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 8.4916e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 8.1449e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 7.6091e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 7.8054e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 7.3869e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 7.1380e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 7.4758e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 9.7975e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 8.8135e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 7.7344e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 8.8777e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 9.0341e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 6.2205e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 8.8858e-07 - 15ms/epoch - 5ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 6.6861e-07 - 15ms/epoch - 5ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 7.3539e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 7.1969e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 5.9905e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 8.0267e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 6.8998e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 5.7316e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 6.7821e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 7.9592e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 6.0482e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 5.9809e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 6.5201e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 5.5291e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 6.2546e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 6.3268e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 5.1760e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 6.6912e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 5.4127e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 5.4283e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 5.7403e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 7.5307e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 6.6303e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 5.7765e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 6.5861e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 6.2443e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 5.8977e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 5.7435e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 5.5991e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 5.5134e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 5.1549e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 6.8741e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 7.6186e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 5.2485e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 5.5356e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 5.8789e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 5.5302e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 5.0148e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 5.3040e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 4.1067e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 4.8097e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 4.3740e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 3.9026e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 5.1687e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 4.9260e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 5.0057e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 4.6330e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 4.0644e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 4.3993e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 3.9521e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 4.1140e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 5.1053e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 4.1531e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 3.7031e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 3.5286e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 3.7079e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 3.4281e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 3.5435e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 4.3389e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 3.9433e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 3.9575e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 4.0704e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 3.5702e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 3.7917e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 3.8744e-07 - 16ms/epoch - 5ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 4.1212e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 3.3615e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 3.5620e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 4.3584e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 4.0955e-07 - 20ms/epoch - 7ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 3.3551e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 3.7372e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 4.4329e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 2.8296e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 3.7673e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 2.9639e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 2.8115e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 3.0668e-07 - 21ms/epoch - 7ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 2.8956e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 2.8037e-07 - 19ms/epoch - 6ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 3.0205e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 2.9180e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 2.8180e-07 - 18ms/epoch - 6ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 2.6438e-07 - 17ms/epoch - 6ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 2.9039e-07 - 17ms/epoch - 6ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<keras.src.callbacks.History at 0x7bae95696830>"
]
},
"metadata": {},
"execution_count": 129
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "n-aNP4n3sqG_",
"outputId": "2e8767fd-8914-4b67-bdde-a23e05dd480f",
"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": 130,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"14/14 [==============================] - 0s 3ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7bae94e17c70>"
]
},
"metadata": {},
"execution_count": 130
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABL80lEQVR4nO3dd3gc130v/O+Z2b6LDhCFIAj23quoXkg1F1mWLEtO5Dh24sRp14kdX19f5/XrxLlOf2MnLrHs17YUR44l2WoWJZoSJUqUKPbeC0ASvWP77sy5fywAomwDsH2+n+fRIxI72DkgCZzvnPI7QkopQURERIalZLsBRERElF0MA0RERAbHMEBERGRwDANEREQGxzBARERkcAwDREREBscwQEREZHAMA0RERAZnSvbCe2s+l852EFGKBJfMSsn79M+zxn19cLaI+3qgIZjwHo31nQmv2VpzOuE1APBQ8cGkriMymkWzWhJew5EBIiIig2MYICIiMjiGASIiIoNjGCAiIjI4hgEiyopkFg8SUWYwDBBR3uNOAqLpYRggIiIyOIYBIiIig2MYICIiMjiGASJKuWSqDxJR7mAYICIiMjiGASIiIoNjGCAiIjI4hgEiIiKDYxggoklLdHwxEeUXhgEiIiKDYxggIiIyOIYBIspZW2tOZ7sJRIbAMEBERGRwDANEREQGxzBARERkcAwDREREBscwQEREZHAMA0RERAbHMEBERGRwDANElHGN9Z3ZbgIRjcIwQEQT9M+zZrsJRJRBDANEBSS4ZFa2m0BEeYhhgIiIyOAYBoiIiAyOYYCIiMjgGAaIiIgMjmGAiIjI4BgGiIiIDI5hgIjy2kPFB7PdBKK8xzBARERkcAwDREREBscwQEREZHAMA0RERAbHMEBEKRVoCGa7CUQ0SQwDREREBscwQEREZHAMA0SUk7bWnM52E4gMg2GAiIjI4BgGiIiIDI5hgIiIyOAYBoiIiAyOYYCIMqqxvjPbTSCicRgGiIiIDI5hgIiIyOAYBoiIiAyOYYCIiMjgGAaIiIgMjmGAiIjI4BgGiIiIDI5hgIiIyOAYBoiIiAyOYYCIiMjgGAaIaFIGZ4tsN4GIUoxhgIiIyOAYBoiIiAyOYYCIiMjgGAaIiIgMjmGAiIjI4BgGiIiIDI5hgIiIyOAYBoiIiAyOYYCIMqaxvjOp67bWnE7quoeKD06nOUQ0hGGAiIjI4BgGiIiIDI5hgIhSJtAQzHYTiGgKGAaIiIgMjmGAiIjI4BgGiIiIDI5hgIiIyOAYBoiIiAyOYYCIiMjgGAaIiIgMzpTtBhDlIsWkoHbNHNhKnfB2D6Lt8GVIXWa7WUREacEwQDTOvLtWYN1n7oStxDHyMW/3IN7/7mtofudMFltGRJQenCYgGmXeXStw4198ENZi+5iP28tcuPUrD2LW5gVZahkRUfowDBANUUwK1n3mTkgpIYQY85pQBCCB9b9/V5ZaR0SUPgwDRENq18yBrcQxIQgME4pAUW0ZKhfXZbhlRETpxTBANMRe5kzyOleaW0JElFkMA0RDvF2DSV43kOaWEBFlFsMA0ZDWw5fh63FDyuhbCHVdR19zF7rPtWW4ZYWhsb4z200gohgYBoiGSF1i73dfgxBiQk0BqeuABPZ977UstY6IKH0YBohGaX77NHb99bPwdPSP+fjAtR7s/OrTaD10OTsNIyJKIxYdIhqnec8ZNL97BlWLZ8JW5oS3axDdZ1uz3SwiorRhGCCKRgKdp65luxWUQ6QOaF4BoUqo9sTXE+UThgEiojhkGOh524Led6zQBiIzq7aGMCpuD8C1NJzl1hGlBtcMEFFO2VpzOttNGCHDwNUfO9C13QZt4HoxKv8VFdd+4kTv25Ysto4odRgGiIhi6HvfAu85EyAFgFGVKWXk1x0v2RDqiV6xkiifMAwQEcXQuyfxk3/f+xwdoPzHMEBEFIWUQKhTwZgRgQkXAcF2NWNtIkoXhgEioiiEAESiJdYCEJboFStTTeqRgEKUDtxNQEQUg2t5CINHzYAeY3RAChQtC6Xt/lIH+veb0fuOFcE2BVAB1+Iwym8NwD5bS9t9yXg4MkBEFEP5rYGhWYIoj+SKhLlKg2tZerYXSh1o+Zkd7c/aI0EAAtAE3KdMaP6uEwOHzWm5LxkTwwARUQy2Oh0zH/dCWABAAsrQfwAsVTpmfcYDkaYlA/37zHAfMyOSRkaNTOgCkEDrz+0ID3InA6UGpwmIiOJwLQ5j/v8ewMAhC/zXFAhT5GOOBWGIND5O9b5jjfOqAKRE/z4LKu4IpK8RZBgMA0SUtMHZsZ9EAw3BDLYksxQrULo5c1+f1JPYpSAB/zXuZKDU4DQBEaVdY31ntpuQXwQAkWDrgACEidsLKDUYBohojP558YanKROEAJyLwyPrE6KSAq4lPBuBUoNhgIgoB5XfGhjaxBB9J4OpVIdrefq2NZKxMAwQEeUgxxwNNQ/7Ij+lhQQgR6YOTMUSs37PA4WrvihF+E+JiChHlawLwTE/jP59FgRaVAhVwrU0DNeKEIMApRT/ORFFoZgUNGxZhDm3LYO1xIHBlh6c234EHSeuZLtpZDDmEonKu7h9kNKLYYBoHGuxHVv/9lGUz6uBrulQVAWVC2sx766VOP/aEbz7r7+G1LmKm4gKB9cMEI1zy/98AKWNMwAAihr5FlFMkf3c87auxLKHNmetbURE6cAwQDRKaWMVatfMGQkB4wkhsPTBTVBM/NahwqGHAclzjwyN0wREo9SumTMyNRCLrcSB0sYZ6DnfNu37KWYVjTcvwexblsDqsqG/uQtntx9G99nWSb9XcMmsabeHjENKYOCAGT27rQi2RUa+7I2RExFdS1m/wGgYBohGUZTkDn6JFxaSZa9wYds3P4GS+groug5FUVC5qA4L7l2Dk8/txf4f7Jz2PYiikRJof9aO/n2WMZUOfU0qrv3Eicp7/Ki4nYsWjYRjnUSjdJ5pSdjRh/0h9DV3Tftet//VwyiqKQUAKMrYtQlLH9yEBfeumfY9iKJxnzRFggAAyFEBeOjXXdtt8LewezAS/m0TjdJx/Ar6mjqhh6NPoOqajnOvHkbYN71Da2Ysq0flwtqRzn88qUssf3jzmJNriVKlb48lfqljRaJvryVzDaKs4zQBFbSimeUon1sNPRRG29FmhLyJhz53/c1zuOcffwsWl31klGB4K2H3uVYc+vGuaberdu1c6GEtZhgQikBRbRlc1aVwt/VN+36UOsFOBb17LHCfMkOGAftsDWVbAnDMy58VeP5rKqDHSZq6QOAqT0Q0EoYBKkjOGSXY8vn7Ubu6ceRj4UAIZ148gIM/3gWp6TE/d+BqN174wyew+IPrMe+uFbC4bHC39eHsywdx7rUj0EPT/6GvKCJaxfkJRArWJuSTrTWnk772oeKDaWxJdO5TJlx70hE5LmCoM3WfFHAfN6PiTj8qt+XHPLswA/DFu0JGriHDYBiggmMrc+Lef34cthLnmI+brGYsfXAT7BUuvP33L4y5vmpRHaQEOk9dRWDAB3+vB4d/+iYO//TNtLSx60wL1BijAsMCA1542vvScn+avLBboOUpB6ABY+ZvhkJB904bbLO0vDhJsGh5CH3vWeKODriW8RAkI2EYoIKz7KObYCt1Rl0IKBSBubcvx6lf7YO3axC3fuVBVC2eCTG0i0APa7iw8xj2fXcHwoH0/TC8+v55eDoHYC93RW2n1HWcfukg9HDsEQyaPM0L9O+3YPC4GTIgYJ2poXRzEPaGxKM9/fssQ3vxY3SgQqL3bUtehIGyG4Pof98CKeXYBYQAICRUh0TJuumti6H8wjBABWf+tlVxdwToYQ3rPnMnZiyrH1nFP0wxqZh310oU15XjtS//LO50wmQoJgVz71yBRR9Yh+K6MoS8QbQcuoTZNy4CrOZRaxN0QAi0HmnCsaffScm9KSLQpuDKfziheYY7P4FAu4KBAxZYqjTYGjUUrw7CMU+DiNLf+y6pUU8THiEFfJfz40eqpVLHzE95cO0nTsigjOQbAUAXUF0S9Z/2QHVku5WUSfnxL5coSUIRsBbZ41+jKqhZ0RDzdUVVUL2iAQ1bFqFp96kx7123bi5m37wEFqcVA9d6cG77YQy29Ma9n2JWcefXH0HNqtmAlBCKArPDirl3LEfIF0TzG8dRu3YuzHYLBq714OzLB3F+x9GUBRECZBi4+kMnNO9wrzf8QuTXwU4VwS4FA/sssM8JY+YnPVDj/zPKe875GuZ9ZQADBy3wNakQCuBYEEbRihAUrhcwHIYBKihSlwi6/bC4bPGvkxIi2uPfEF3TMX/bypEwYC2y486/fgSVi+qghzUIRYGUEssfvgGHfvomjv1X7Kf4VY/dhOqVDZH7jbqnoiow2y2YsbwBz/72t1Ny+JEQAlaHBeGQhnAw94er003qgOe0Cf0HzQgPJFiMORQMfJdVtD7tQP2nvGNediwIw3Mmzo9MRcIxP7/+zFUbULYliLIt2W4JZRvDABWcc68ewZIHNsQ9XyARRVXgnFEy8vtb//eDKJ9fE3ltaOGfGHrCXPP4rfC09+Pi68cnvo9ZxaIPrJswHTH6PkU1pahbNxfX9l1I2K5YTDYzVtyzCku2LIRtKAhdPdOCw785hrYLHVN+33zma1LR8pRjKATIof+SKNwgBTynzQi0K7BWXx+dKVkXRPcOG/RglHl2ANAFym7Oj90EROMZa98SGcLJZ9+Dv98LXZu4KEzK5J6+pZTwdg8CACoW1qJm5eyY4ULqEis+Hv3Rqqi2LOEohR7WULl4ZlLtisZkM+Puf/htrLpr+UgQAIC6+TW4/w+3Ye7q2VN+73wV7FRw5QdOhAevrw+YVAUnIeE+NfZZSQ8KOJeEhtYNyDHXAkDVB3xwzs+fWgNEozEMUMHx9Xqw/c9/go4TV8d8XAuGcfGNE0m9hxACl3ZFrq3fMD9mRUIgspagZFblmJGEYUnN+wsxrfUByx/ZgrI5MyYuhhwKL7d8fAvMtuxNAjfWd2b8nt27rJGV/9Ge4JMhABm+/rm+Kyou/3MRBo+YcT1YREKAqVRHw58Movxmrr6n/MVpAko5xayids0cWItscLf1o+PElYy3wd3ej9e+9J8orq9A+bxqaKEw2o40IeQJYObaObCWOBKuGbg0NOyvmFUkM6CgmifWDRhs7YWncwCOiqKR7YvjKaqCloOXkvvCxhGKwKL718aeElEEVLOK+evm4NQ7Z6d0j3wjJSKddrwKe4noAra6SACUYeDajx3QgxgXLiK/Dvcq8F00wV7PMED5i2GAUmrRB9dh9W/fMmZF/2BrL9791itoO3w54+0ZuNqNgavdYz627/s7cPOXHoj5OVJKnHnxwMge/54L7VE7+tGCngDcHf0T30uXOPHMe9j4h9uifp4e1tB9vg1dp68l+Eqis5U4Eu6e0DUdZUMHIhmCDsjQNIKAkFCLJJyLIosBB0+YobnjD6L2vm1F2U1BCI61Up7iP11KmSUf2YhNn7t7QufkrC7BXX/9CGYsm5Wllo11adfJqIv9gEjH6ekYwNFRe/yv7j2LsD8Uc72Bruk4t/1QzDLFp1/Yj9Mv7I9cOzTdoOuRoDHQ0otdX39myl9LOJB49boQwlA7C4QKqMU6EhQFGPXfKIqEMAF1n/BCDOU/X5Ma/1AfCIT7lVHrE6ZP8wOeMya4T5lS+r5EsXBkgFLC7LBgzSdvjfqaoijQpY51n74Dr/z5TzLcsuje/ocX0H2uFSsfvRHW4kh1FanraN5zBvu++xoC/de3la35nduhWk0TphWGw8FgSy+OPLU77v3e/+5ruPjGcSy8dw2K6ysQdPtxadcJNL19elpnHYS8AbQdbcKMZbNiThUoqoKmY5mfqsmmss1BdO2wxskDAg1/MgjPKTP63rNAcysQJomiVSGU3xoYs4sgic0nketS8Gilh4GuV2zoe89yfc2CkChaEUL1A36ozulvPyWKhmGAUmLWlkVQLbH/OSmqgqolM+GqLYW7tS9zDYvj1K/24fSLB1C5sBaqxYT+5i74ej2oXDwTC+5dA0VV0H+tB4s/tD7q+gIhBKQuEQ6EEPYnLl3cdboFXadbUv51HPuvd3DX3z4atXaCrunoaOpC++XML+LLprKbAhg4akawXRk3zx/ZXlh+hx/2eh32+gAqtwaghyMjCtE6fsf8MHrftsa5m4S5SofikHCfNkUK+Ax9nn1u9GqGUd9FB1qecsBz2jS2zVJg8LgZgTYVs//YDSVeU5KghyJrKjxnTJCagG2WhpINQZhcDBpGxjBAKWEvc0JqOkSCw3fsZa6cCQNAZLV/56nIfL29zIl7/+WTqFo8c2Q4XzGpcbcjCkWgYn4NXDXZO2q49fBlvPPPL+GGP7tvaBRGQiASwDqbu7DjR29kpV3ZpFiBhj9wo2u7Df37rz9lm0olKu7woWTj2PCmxPlJ6FwUhqlCQ7hnfLAYJlC8JojL/+hCqOf6lEL36zZYqjXM/B0PLOWJO1rveRM8p2Ls+tAFgp0K+t63TGvXQqBNwZUnnNAGlciWSAm4T5rQvcOK2ke9KFphnOkkGothgFLC1+1O6rhd39De/VQTikD9xvmYf/dquKpL4Ot148JvjqFp96mkDvtRzCq2/p/HUDyzPPL7BKFmvES1BNLt4m+O4VKvFwvWz0NZTQlCwTAuHWlG+6XMFBwKNOTeSnrVDlR/xI+q+/wIdikQJsBSpU96OD/YrgA6hoLAcKc+/GuBks0B9L5the4bCgqjdjEEOxVc+b4Lc/58MOETff9+cyRIxNoFIYH+vVMPA3oAuPKD4ZLMuB5sJCA1iZb/dGD2n7hhm8ky2EbEMEAp0bznDDb574HZbon6uj70BO5un7jifpi12A49rCHkndwPO8Ws4va/eggz18+DrulQVAUlDZWoWzsXSx/chB1f/hmCbn/c95h902KUzq6K+lqiioVS1+HtHJhUm9Mh4A3i+FunEl9oMIoVU+7gQn0Czd93QvePLl50naVag+qSkSAQoyphuA/oP2hB2Q3x/12HepUE2yEFQv1TX5gwcMgCzR2r+JIAhETPbivqPu6b8j0ofzEMUEqE/SEc/OHr2PTH90yYu9Y1HVLXceCJnRM+T6gKljywAUs+tH6kaE/nqWs4/t97cOW9c0nde93v3oG6tXMAXC+0M/z/sjkzsOXP78eurz8b9z0ab1kyEiQmQw/ruPr+Ofj7vYkvprzTu9sKPRCjo4dAsF1FnxsJixsNHjYnDAOmYjk0dB/rvSRMrqk/tbtPJ/hxrwt4TpoBMAwYEbcWUsqcefkg9vzLS/D3esZ8vL+5C6/9z5+h68zYxXNCEbj9rx7Cut+9A47K4pGPVyysxe3/z8NY+uDGhPe0ltix8P61EHFq/8/avBCuBPvsLS57wiAwfu2ArmkI+QI48MTrCds5XcUzy1G3bi4qFtZOqqouTc/AwcTFi3RPoh+jApov8V9a8dpg/FAhgJINiReqxiJDQ28S7xpWUzYsjgxQSp1/7Sgu/OYYZixvgLXYDndbH3rOt0W9dv7dqzBzw7wJw/DDnfK6z9yJK++di3lEcNWSmbjz6x9LWBBICIGalQ04H2eB38CVLlQtrou5VkDqOrSQBpPVPPR7iavvX8CBJ3ZisDX+EcbTUT6vGhs/dzdmLK0f+Zi7rQ8H//83cNngUwK+Kyp8F1VAAI65YdjqUz/XrfmTSV7X1w9EpUhYZiTuZV1LwrA3hiN1DcaHAkXCVCRRunnqazNs9Rq8F0yxA4eQsNYxDRgVwwClnNQl2o82Jbxu8QfXR2rHxpiTl7rEgntW42CU1fCu6hLc9Y1H425nHHmfOPcYdnb7YSy4d03sC4TAvu/vQNuRJlhcNng6BuDv88S+PgXK5s7APf/4OJRxYcdZXYJbvvwRmGxmnH/taFrbkIvM/SE0PNeO5hbXyCFBkAK2hjDqPuGFuTR1W+TMpTpCPQoSD8fEeV0XSXXiQgHqf9eDtufskXLKozpt+2wNtY94oTqm/rWVbAqi5804qxilQNmNubcQlDKDYYCypmRWRczhfSAyQlDaGH1R3+IPb4BqMSU1xy+EGNk+GEv32Vac+tU+LHlgA6Qux5wjoOs6Oo5dwYUdR5PamZAq63/vLihmdcLXKISAlBIbPrsVl948CS2JKoSFQvFrmPtkC8wDQ1/zqA7Tf1XFle870fg/pr8Xf1jp5iA6X7HFL2YYU+STiteH4JiX3BO3YgXqHvUhdK8/8hSvA7YGbUwRpKmylEtUf8SH9uccY3ctDK1TKF4XRNGqqU9DUH5jGKCs0UJa3C18uqbHLObTeOuSpIKAHtbQfvwK+pu7El677/s7MHCtB8se3gzX0GLGwKAPZ18+iCM/ezujQcBZVYza1Y0xXxdCwOywouGGhbi062TG2pVtZUcHYe4PR38O1wVCPUpSK/eTVXpDEAOHLAi0xaoxEJupWKLs5kDkzIJJrvMwl0qUrEt9x1y6KQRLpRs9b1nhORsJG9ZaHWU3BVC8JjTpdlLhYBigrGnafQpz71geMxAoqoIre85EfW147j4eKSU8nQN4+x9emPjeZjVqGeAzLx3AmZcPoKi2DIqqYLCtb1rlgqfKUVmU8Bo9rMFZNfHY5EJWdixxnYqBA4lX7idLsQCzPutG5ys29O+zJD4JUchIlUAbYC6ffE2DTHDM0+CY542cxClTU0aZ8h/DAGXNyefex5zbl0Hq+oTpAj2swd3Rj6Z3ooeBvqYuVC6qizk6IKVE56lr2PnVnyPkDQCIdLDLH74B87auhNluQdDjx7ntR3Di2ffG7oCQiLloMVOS2aooVMVwWxpVr55g9l5A86T28Va1AzUP+lG6MYimb8cJaYqEc2F6FjKmg4hVcoAMiZmQsqavqROvf+0XCA2dCKiHtZEywAMtvdjx5Z/FfCo/89KBuNMEQgi8/51XR4JA8cxyfODfPo2F968dKYxkcdqw5IEN+MC3fhfOquKY75UNgy296D7XOnK6YTR6SENzjJGTtLRpdvZ7jmCZKf5ovSJhrkxPZ2yr11G8Pnh90eJoQgICqNwav7gVUa5iGKCsaj14Cc984lt471uv4PyOozj760PY+Vc/x4t/+AN4OmJX9bv85kk07zkDqUtI/foPZznUeR57+h30XGgf+fiNX/ggLC7bhAChqApspQ5s/tN7U/yVTd+BH70R2bSmR1+9dvTpd0YqKwaX5Mbx0NOxteZ0wmt61pZE7YtH6AKlm9K3Ir7mQV9kZ4AyPMYeaYypWGLWpz15MypANB6nCSjrwv4Qzm0/jHPbDyf9OVKXePMbz2HJRzZiyYc3jDzZ9zV348Qv3sXF14+PXFs2ZwaqFs+M+V6KSUXdurlwVZfELZecaW2HL+P1r/0CN/zZfXBUFI3scgj7gzj6s3dw/BfvZruJGde/2InBuXa4LvkmhgIh4VwUhmtp+nZXCBWofsCPijsDcJ80QQ8KWGfocCwIc+6d8hrDAOUtqUucfHYvTj63F/ZSJ3RdIhBlDr1sXnXC9xJCoGzOjJwKAwBwbd8FPPv4v6F2zRwU1ZQi4Pbj6vvnEfYZdD+4ItD0cC1mvNWD6oO9kIHInIFilSjdEkDlXYGMdMqmIonSTcmt9pc64GtWoXkEzCU6rDN1rtqnnMMwQPlPAr7e2AWA9GByT4paktdlmtQlWg5czHYzcoY0CbTfUYEb72tCoD2yE8Vao0FJvMEk4waPmtDxsh3hvusJxVKtofrDvqRrDxBlAge2qOC1HroMLcH2wJAviI4TV6GYVcxYVo/qFQ2wFtkz1EKaCsUC2GdpsM/KzSAwcMiMlv90Itw3dhgg2KHgyhNOeC9O7phsonTiyAAVvOHCQYs/tC5qxUMpJU7+6n0se2gzlnxkAyxOG4BIUaRLbxzHvv/4DUKeQKabTXlMhoH2F2yIemaBjJxl0PGiHY1/5p7S++vByNSDDAtYa7SUlmAmY2IYIEM48MOdsJU5MefWpZHti4oAdAnFpOL8q4fhmlGCubcvH1OGWDWrmHvnClTMr8Erf/HTmNUQicZznzFB98YZeJUCgRYVgTYF1prkdyBIHejeab1+tDIQWTi5OIyaB32RY5CJpoBhgAxBD+vY/c1f4eRzezH3juWwl7ng7R7E+deOwOK04p5/fDzq50XOR5iBhfetwcnn3s9wq5OTym2F/fNSVNTf4MIDCuKeZDh8Xf/kwkD7c3b07zOPfV8p4DljQtO/uzD7T90wORkIaPIYBshQus+2ovts65iPbfn8/dDD8c9JWHjf2pwNA0b1zMBaPFR8MNvNiMrk0pFMeT/VlXwQ8F9TIiWRo9EFwv1A724Lqu7hlBZNHhcQkuG5akrjBgGhiJyrUDisEIoNDdvRtjhr99aDQN9eM6780IGm7zjR9ksb/C1T//HoXByGYov3hC5hrtBgrUs+DPTvtwwVO4r1lgJ9e2OEBaIEODJAhmBx2TB/20rMvmkJTHYLei+14+zLB9Fx4ir8vR7omh63vHFg0JfB1lImBbsVXPm+E+H+4Sd5Af8VFf3vWVFxpx+V2yb/pK2Ygap7/Wj/ZbQdKZEOPdSroHe3BeW3JFczItyvAAmyg+5VILVIcSSiyWAYoIJX0lCJbX/3CdiK7YAQEEKgpL4cc29fjhPP7sXFN06g8dalMT9f13Sc33E0gy1OTj6MCjTWd2a7CXFJHbj6IwfCg+NO7Rk6nbB7pw2WGTqKV09+8Wjp5sg5Bh0v2CHDo6cMhn6tA50v2yMFk5IoYKS69MhYbpxAoFglgwBNCacJqKAJVcFdf/0IrEV2CEWBGCr9NjwtsOyjm2AptqHj5FXo2sSfsnpYQ2DAh9Mv7M9ouyk5zwysndbne86YEOpSYx9NLCR6dlkjx/1OQdHKUILPlejaYYNMov5Q8dpQ/COUFYmS9QatTEnTxjBABW3W5gVwziiJfdSxrmP5Rzdj51d/jivvnYOUMvLf0OFAfZc7sf0LPx17xHEOyIdRgXzgOWtKOA8faFWh+6ZWP9hzxgxo8T5XQBtU4GtO/Dhvn63BuSQU89RExSZRdgsXD9LUcJqAClrNqsa4OwWEoqB0dhUUVcGbf/MsXDWlqF0zB4pJQffZVnSdaclwi/NPoCGPn0aTXL8np3gYoe6PFBhKtLNgpGZAHEIAdZ/wouMFW2Qx4ahRAmudjtqPe1l8iKaMYYAKWtIHwgxd527rw7lXDqWtPamQjVGBwdmFebKOrUED3ov3tUmYSiRUx9Q6WUuVhmS2GFoqk0sbihmo+WhkUaPnnAkyDNjqNB6dTNPGaQIqaB0nr8bdNih1HQPXehAY4G6BfC04NJ11A0UrQ1DsevSh9yFlN039JET7HA2mMi32+wsJe2M46TAwzFQkUbI2hNKNIQYBSgmGASpoTW+fhq/XHXVxIABACJz8Zf4UE+JagdRSzMDMT3ohTBi7dmCo83YtC6PsxqlPgwgFqP2YL/KTdnwgUCQUC1D9EQZRyj6GASpoekjD61/7BcL+0JhAMPzrCzuO4uyvc7OKHWWGY46Gxs+7UXpDEKpLh7BI2Oo11DziRd1veae9Vc8xV0PDH3rgmD/qiGwh4VocRsU2HwaPmdHzpgXBTv44puwRUia3aebems+luy1EaWOvcGHR/evQeMsSmGxm9F7qwJmXDuLq3nPZblrS0j0qEG+aIN6agXgLCCdbZ2BrzelJXT9arpYmHi08KKB5BHytAh3POSCDw2cYAICAa3kQtY/4oLCQIKXQolmJF0JzASEZgq/bjcM/fROHf/pmtptCcexoWzytQJDrTEUS7pMmtD83ujLh9aDlPm5GS1ig/lPezDeODI3jUkR5gGsFCkOwR4wqURxttEXAc9oM3xWWEaTMYhggooIw3WqEmdD7tnVoViDOdkMhMXjEnKkmEQFgGCDKeRwVSN4zA2tzOhS4j5mRsO6AxJQrHhJNFdcMEOWIbHb6U108mKuGA0GuLSpM5gwCADBXsHYAZVbSYaAQn04sp65kuwmUZwrx+yDXig2lchFhrFGCbIUE60wN3rPjTkiMggcOUaYZemSgEH+wE8Uz2Y4/mVEBa7Ml5vbCy1erpnSM8Y62xSO/TsfugnRMJSQTMMpuCMJ7Nv56gNItAZiKecbAZOTy1FAu+EoS1xg6DBAVsuk+8adqemCqgWDYcDDI9S2HSXVIMyXqVnei4vBg1OOL+hc5cez2ecBAOlpIFBvDAFEBSPVQ/2SDQLzRgVRJ92hBRgiBlvuq4Ku3oWJvP+ydkT8z3wwLOm4qw8ASV5YbSEbFMECUh9I5zz/VEYFE0wWjTWekAMjzYCAEelcVo3dVMURIBwQgTdzYRdnFMECUwzK9uC9TOwdGh4NUBoNocjksSDNDAOUGhgEi5N6K+nw1lemCVI8ajJcoLKRTLgeRQpTNv+tc9pVlia9JOgzwhyVRYUvVqMB01w+kctQg29g5Ub7gyAARpXx6IFULCtM9akBEEQwDRAaTjxUFhxXSqAFRLmEYICogudTRp3u7IUcNiFKHYYAoT+RSR5+sTNQfGDY+HOQTBpnsyud/O6nCMEAFKx87TzImdkaUbSkLA/zBS0TRZHJ0gIimJukwwM6eiKbK2mwZ83uGA6LcwmkCIsq48eEgGQwQROnDMEBEeWEqAYLyA4Ne9jEMEBFRVjHoZR/DAOUsPi1kFn8gExlX3oYBdhRERESpkXQYYOdLVNgCDUGODhAZFA/TJiIiMri8nSYgotTL19GBoiaZ7SYQ5TWGASLKWezkiTKDYaBA8KCTwpep+vWZGh1gR0+UO5IOA+xsiLJr9PdgPh5sw86fKHdxZIAoD6U7GKR6dIBBgCi3MQwQ5blcHzFgECDKfQwDRAUklcEgX3cWFBKH3Yp5c2bCajWjr28QF5taoesMV5R6DANEMWytOZ3UdTvaFqe5JVOTCyMGmRwVKLkQyNi90k0oAhs/sBbLbl4MoQhIXUJRFfgG/Xjr6T24cupatptIBUZIKZP6br1t5xfS3ZackWwnQJQpqQwckw0GUx0dSHcQKKTOf7wbPrIBS29aBCHEmI9LXUJC4tff2YG2ix1Zah3lm51vfDnhNUmPDLCDJMqe0d9/0w0GuTBiMBWF3PmP5ix1YOmNE4MAgJFRgnX3rsbL//5aFlpHhYrTBER5ZjgYpGK0IJlgMJW1A6kYFTBK5z/e3NWNkJAQmBgGAEBRFNTOq4aj2A7vgC/DraNCxTBAlKdSGQpSaapBwKid/3hWhwVSlwlPjrE6rAwDlDIMA0R5LlVTCI31nSkdHUiEnX90gz0eKGr8JKBrOjz93gy1iIyAYYDwUPHBbDehYD0zsDaj98v2aEG8UYFc7vwtp65kuwkjrjZ1QPvwOqgWU9R1A3pYQ9M7Z4CDF8CNn5QqhgkD7PAoG6bz7246QSIdoSDR6EC2iwvlUoc+HSFvAPu+vwM3/Ol9kLqEUK4HAl3TEPQGcOjHu7LXQCpIeR0G2MFTIXuo+GDGRxbSJV2jAoUSAMY798phBN0BrPnkrSieWQ4gsq3w2r6L2P8fv4G7rS+7DaSCk5NhgJ08UcTw90IuhAJWI8yspt2n0LT7FEobq2BxWjHY2gdfjzvbzaIClZEwwM6dqLBlY4qgUEcFxuu7zBNjKf0mHQbYsVOhCrQp6H3HAs8ZM6QO2BvDKLsxCMccbeK17Qp8TSqEABzzwzCXsV58PlMtJsy+ZQmql9ZDAmg70oTmd05DD+vZbhpRRiQdBhgCqJANHDGj9b/sgACgRxZsuU+Y4T5mQeU9flTcHpnzDvUJtD7tgO/SqG8dIeFaFkLNQz6o9iw0Psfl8i4CAKhcXIc7vvYx2Eoc0MOR4Lfw3jXwdg3iN199mk/mZAgJyloQFb5Qr0Dr03ZAYiQIANd/3bXdBu8FFZoXaP6uC74mdewbSAH3CTOu/tAJOXEQIWtyrRhRKqVqisBRWYSt33gUFpcNAKCYVCimyN+vrcyJbd/8xMhrRIWMYYAMr2+vJRIEYpR/hSLR87YVfXutCPeLsYFhmBTwXzHBfSL6YJvUAD2UsianRT6dU5Aqi+5fC9VqjlrkR1EVWItsWHD3qiy0jCizcnI3AVEm+S6ZABkjCACALuC7pCLYoQyFhhiERP8BC4pWhkc+5DljQs+bFngvmAAIWKo0lN0URMnGIMQkoni2txnm0k6CVC4cnH3zkvjV/oRAw02LceLZvSm752gWlw0Wlw3+Pg/C/hxPi1TQGAaIBBDp5eMEAgFoHhH/GikQHrz+eu8eCzqetwPi+nsHOxW0/zIy7VD7qG9SgSBXZbvY0HSYbOa4rwshYLKlPghVLKjBqt++BTPXz4MQAlpIw6VdJ3Dkqbfg6RhI+f2IEimAH0VE0+NcEI7bx0ORcC4Iw1QiEXdoQJEjuwqCXQo6Xhiaax4z6hAJFINHLRg4HL8jovTrudgOXYu90EMPa+i52JbSe1avnI17/ulx1K2dO1JuWDWrmHv7Mtz/rU/BVVua0vsRJYNhgAyvZGMQwoShJ/godKDspiBKNwbjv5EuULIhck3f+wmeJoVE7zu5M/SeLqneSZDq2gJnXjwARVVjvq6YVJx9KXU7qYQicNMXPgihKBOmJxSTCovTjo1/sC1l9yNKFsMAGZ6pSGLmJz0QKsYGAkUCQqL6QR/sDRpKNgRhrdUjHx9PSDgXh+BcGFkvELimxF+HIAWCrbE7IcqMa/su4OyvDwGIlPsdpmuR+gLHf/EuOk9dS9n9atfMgbOqOOY6BcWkYOaGeXBUFqXsnkTJ4JoBKniaFxg8akGoX8DkkihaGYKpaGyH7lygYc5fDqJ/rwXuMyZAE7DPCaN0cxDW6kjHoFiAWZ91o+N5OwaOmEd2FQizROmmICrv9Y+sARAWRIJFnEAgcui7Lx92EqSr4uB7334F3edaseQjG1HaUAkA6GvqxIln3sOlN06k9F7F9RWQug6hxH4OE0KgqK4c3q7BlN6bKJ4c+nFElHo9uy3oesUW2f+vAJBAx0s2lN8WQOW2AEafEKt5BKAAzoVh2Go1uJaGJ3TYqh2o/bgPlff7EbiqQqiArSEMddxWdNeSEDwn43x7KRKu5ZNbPZ6tHQW5tJMgXc5tP4xz2w/D7LACkAh5E0wJTVHYFwCiHEsc9TqiDGIYoILV974ZnS+NKgk4XFlWAj2v26CYgYo7AtC8QMvPHPCeM0ee5oeqEKpOHXW/5YVj7vUFZr5mFT1vWuA+ZQY0AUu1hrItQZRsCEamGYYUrw6he4cNYTei1CWIjEoUrw3C36LA5JIwFefnivx83kkQTcib3k746t7zkJoOYYo+RSR1CW/XALrPp3bRIlEiXDNABUlqQNerNsRb/d/9uhWaD7j2Yye854dysbxeVEjzClz9oROBtsi3ycARM5q/44T7ZCQIAECwPbJVsOU/HZCjytgrFmDW73uud/JD6w8ACWECLLUarv7AiaZ/LcKFbxSj+ftO+Jq5hiCWQjmUyN/vxekXD4xZnzCaUAQOP7U7fj0LojRgGKAxpBbZCx/sVHKqtO5k+ZpVaG4F8fYMypBA71sW+JpiFB2SAlIHundZEXYLtP08Ssnioa2C7hOmSCXDUSxVOuZ+cRC1j3lRvCaEolUhlN0cgAQQbFHHtM13SUXz95zwXsx8IEjXeoFcP5MgWw48sRNntx+ClBK6pkMLaZC6Dj2sYf8TO3Fhx9FsN5EMiNMEBCASAnp2W9C72zrUiQKqS0fZzQGU3zK5anm5QPclnpcFAO9Fc+SpPVqJYQDQBdxHzbBUa0NP/rHft/cdC8puGDvXLExA8aoQildF1gc0fdsJaJgYPqQAdIm2X9gx5y/dyUwrG0ahjAoMk7rE3m9vx4ln3sOCe9agYkE1Qp4gLuw8hqvvnct288igGAYIUgdan7Zj8KgZozs7za2g6xUbAtfyr1qeuSLJo2cVmXBIVmoCgauJntgFQp0qZDj2LoFAmwL/1TjfclIg1KPCd0kds06BCo9iVrH84Rswf9sqCEUAEph902L0X+3G7r97Hj1cM0AZlkc/3ildPKdNGDxqQfSn3ki1PM/p/MqN1modtoZw7EJCQsJcrsHekKjTlVCLdCix/njGvWe876hgd3LfbqEkr4snVScWFuJOAovLBnuFCyLemQRpdtMXPogFd6+CoioQQkQCAYCi2jLc/XefQPHM8qy1jYwpv37CU1r0vWeJP1SuSPS9Z4FraTj66zlEDwH+KypkWKBiqx8tTzohw+O+tqFOu+YhH0xlOnp2WWO/oQBKNwdhqdIxcDBOxzhUsjje6IlqT25VmGLL3OqxXK8vkMopgrp1c7Hi0RtRvWwWACAw6MPZlw/i2M/3ZPSQoPL5NWi8ZWnU1xRVASwmLP/YDdjzLy9nrE1EDAOEYIcaOwgAgC4Q7MztQSSpAz27rOh5ywLdN1z5R8IxNwwpAN+F64sEHXPDqLwnMDIqUHl3YNTOg7GhwVqjo/zmAIQJ6CrTEOpXom8V1IHy2+IvmLPP1qC6dGju2AceCYuEc1Huhy4gv7YVzt+2Cls+f/9IZUEAsBbZsezhG1C3bi5e/cunMhYI5t6+DHpYgxJje6FiUjHn9mV491uvQGpJTncRTRPDAEGxS6A33ql9Eootxks5ouMFG/reHTeWLwW8l0wwFUs0ft4NqSHqnv6KOwIwlero3mlFqCvyA1pYJEo2BFG5zQ9laOCg/ve8uPIDB8K96lB1weu3q/moL+E8v1CBym1+tD/niHlNxR2ByJQEpYytxIHNf3IPpJQTzwNQFZTNrcayhzbjyFO7M9Iea3Hsv/9hqtkEk82MkIc7MigzGAYIxauD6Gy1xV5IJ4DiNempyJYKgTYFfe/GGOrXBcL9wMBBM6rujf2DtWRtCMVrQgj1CMiwgLlMn9ApWyp0zPmCG+7jZrhPmSBDAtZaDSUbgzCXJPeUXLopBD3oQ9d2G2QYI1URISJBINHoQr5IxbbCVE0RzLtrBYQiRk4IHE9RFSx7+Aa0HLqEzhNXU3LPeDydAwmrEIa8AYR92f2esxbbMX/rStSsboQQAu0nruD89sPw9Xqy2i5KD4YBQsmGIHp2W6F5MHEIXJFQnRIl63M3DPTvT7DmQQr07bWg8p5A3J/BQgCWivjHFCumSHXB4tVTH1IuvzmIkvVBDB41I9yvQB0+L8GVP8Pu+aSkoRJSl3HXc5gsJtz7j4/jws5j2PPPL8UsCpQKF3YcxcpHb4z5uq7pOPfqkbS2IZHqFQ2442sPw2QzAyISpGpWN2Llx2/Em3/7S1zdyy2QhSa3J4IpI1QH0PAHHliGt+MpcuRkPkuFjoY/8EBNPLKZNeE+kXB7oO5TIk/iOUK1R0YJKrcFULYlmJUgkGjxYKHsJJjMWoC5ty/HysduSmNrgMHWXhz/7z1RX9PDGnw9bhz/73fT2oZ47GVO3PH1j0G1miEUZWRERVEVKCYVt37lQe52KEAMAwQAsFTqaPwLN+o/40bF7QFU3B5A/WfcaPwLNyyVub2ISXXJhNv+hFnm1CmB6ZSqbYXZlMpdBE1vn465WG88oQgseWADVEt6/7GceO599DZ1QsrrIVBKCV+/Fzu+8l8IDPowa/MCLHtoMxbevxb2clda2zPagnvXQDWboh6zHJluARZ/aH3G2kOZYZAfj5QMISJH+ToX5FfBm+I1odhrBgBAiUxzsKqfMbUfa0bHySuoXDQzagc3nsVpQ8XCWnQcjwQSa5EdZXNnQNd0dJ9rhRaY3hCTyWqO1BKorxizjkEIAXupE3d87WGYbRbYy13QwxqEomDT57bh7CuHse97r0EPpzecz9q0IO6fk2JSUb95Ad7/7mtpbQdlFsMA5T1bgwbX0hDcp6KcMaBIKBaJ8luyszAvPCigBwRMxRMXJOazXNtWWNJQicpFdZCajtYjl+Hrdo95/Y2vPYPb/uohVC+fBSllzMWEwxSTCrPTig2fvQtzblsO1RwZWQh5Azj1/H4ceeqtKc/pz71rBUoaKqO2QVEVFNeVQ+r6SDsiBBbeuwaqWU17/QFhShyYkglVlF8YBijvCQHUPuZF+/N2DOw3DwWCyBJ9ywwddY96YS7PbOflOWNC1w4r/Fci32LCLFGyLoiKbQGYnFNryzMDa1PZxJw1mSkCZ1Uxbvzih1CzomHkY1LXcWnXSbz37VdG1gsEBn149YtPYt62lbjx8x+I+556WMNASw/u/vvfQunsqjEdn9lhxYpHtqCorgy7v/mryX1hQ+ZvXTmhpMVoUkoIJfoQ/fxtq3Ds53sw2NI7pXsno/PkVZQ2VMacWtHDGjpPpX/XBWUW4x0VBMUM1D7kw7z/NYiah72o/ogfDZ9zo/F/uGGtyeyah/6DZlz9kQP+UecZyJBA3/sWNP+7E2FP9ucrcr3yYDKsRXbc80+PY8aSmWM+LhQFjbcuxR3/78dGyvwOu/DaUXSfa4Uejj4Vpms6Lr15ErO3LEJZ44yY8+Zzbl2K6lEBZDLs5a4J7Rrz/nFGLXRNx5zblk3pvsk68/LBuKWaFZOK0y8cSGsbKPMYBqigmIolStaHULo5CPtsLePrBDQf0P6sPfKb8VMWukCoV0H3b+Ksb8gR09lJMJ0aA5MZFVj0wXWwl7uiPsEqqoKalbMxf9uqCa+99c1fITDoH1ONUOoSUtcxcLUb+763AwvvWxP33npYi/reyfB0Doy592RIXcJSlN4KYH2XO7HvezsAYExo0rXIr488tRvtx5rT2gbKPE4TEKXQ4BHL0BbG2Eci9++3oOo+PxRzJltWeOZvWxl37lpKiY2f24bWQ5fgbu8f+fhgSy9e/KMnsORD6zFv20pYi+zwdg3i7K8P4czLBxH2BeGoLI779K6YVLhqS6fU7vOvHkbVuNGMZCmqgLutP/GF03T6hf3ovdSBJQ9sQO2aORACaD9+Baee34eW/RfTfn/KPIYBohQKdiqACiDOhgwZFAgPClgyvI6h0NhK4he/EEJAMalY8zu3YfffPT/mNX+vB4d+8iYO/eTNqJ8bGPTBbI89OqJrOvxTrMR38Y0TWHjfWpTPr5kQZoa3GsaaKtA1iUuvH5/SfSer/VgzRwAMhNMERCmkWGXCAkiR69Jz/3yuMTDZ2gLebveYffrRCCEw+6bFMDsn9wd+YcfRuEP5iqrg4hQ7ZT2kYcf/+hkuvXF8zD20kIZLb56Ev9cz4d7DX+eBJ3YiMOib0n2J4uHIABU0KQHfRRWecyZAF7A1hOFaEoZIrgbNpLmWh9C9M86crpCwN2pT3lGQCtNdPJgr2wrPvXIIaz99R8LrFJMKR7kL/ZM49Of0iwew4J7VsJU4JqxJ0DUdXWdbplWSN+QN4p1/egkHnngdlYvrICXQdfoaAgM+OGcUY/3v3YmGLYtGdhUMtvbiyJNv4dKuk1O+J1E8DANUsEJ9Atd+7ESgVR0prwzdCrVYR/0nvbDVp764kq1Oh3NpCJ5oNQ+Ghgwq7vKn/L5GdPaVQ1j60GbYShwJ6wYEBif3Zx7o92L7F5/ELV96IFK/QL9e5fLKe2ex559fTsnZAf5+L67uPT/mY56OAbz5jV/CVupEUW0pQr4g+i53TvteRPEwDFBe08OA/6oKGQasNfpIjX89BFz5DydCvUMzYaMOMdIGBa78hxONnx+EuSxyfahXXB89mBWGbaaOYJcCz1kTZBiwzdJgb0xud0Ldo160PO2A54R5VAgBhAWoecgH5/zcrvCYjTMJplJ+OOQN4jdf+S984N8+HfMaXdPRfqwZ/r7Jz++7W/uw/YtPonR2FaoW1UHXdbQeugx3W9+k32sq/H2eKbWbaCoYBigvSR3oedOKnjct0H1DHb4iUbQihBkf8sNz2oRQd4y5ACmgByV691hRcacf7c/YMXh8bLEixa5H3lfIkc+xzNBQ9wlvwroFigWof9yLQJuCwWNm6IHI5xavCqVtrYBR9V7swJkXD2DRB9ZNWP0fqeIncfjJtyb1niWzKrDsoc2Yc9syqBYTvD1unH35IE796n2EvLl7eifRdDAMUF5qf96G/vcsGLOFTxcYPGaG/6oKc5ke6cgnDNUPkQIDh83wN6vwNamjrov8X/eJkeuGBTsVNH/XBefiIPzNkWkAx4IwSrcEYKudGBCsNTqsNdkpg5wtU6kxMN1DifZ9fwe0kIYlH14PoSqQuoSiKvD1ebHnn15E58nkq+VVLa3H1r99dOSEPgBwlLuw8rGbMPumxdj+xScRmsTaA6J8wTBAecffoqD/vRiP2LpAqEeBDIvYQWD4Up+A73Ksb4EonysFdL/E4OHrIaR/vxn9+8yo+agPJRuSPyo3Wwqh8uB4Upc48MROnPjFu6jfvABmhxUD13rQsv/CpOb1hSJw65c/AsWkTtjyp6gKShoqseaTt+H977ya6i+BKOsYBijv9O+zRObi9dhP/WEP4l8jJIQqIwWCEoSGcZ849rd6ZGqh7Vk7bPUarFFGCDIlE9sKU72TIJVHFfv7vTj/6pEpf379xvlwVBbFfF1RFczfthIHf/T6yJkHkyEUgfpNC9CwZSFMNgv6Lnfi3KuH4e0anHKbiVKFYYDyTrhPARL1ueEEHbwUUJ06dH8qSm0IQEj07rGg5qPcKZBvShoqMWvzAtStmwtd0+NWNTRZzSiqLUPvpY5J3cNe7sLWv30UpbOrho4lFph1w0KseOxG7PvOazjz8sHpfhlE08IwQHlHdchIuaw4gUCxSZRsCKJ3txUTjogTEo4FYSgOGdltEGv0YDJ0Ae/59H07ZerEwkzuJEjlqMBUmB0W3PSXH8asTQtGivwkczSvFgxP7kYCuPOvH0HxzPLIPYbWIgz/q9v0x/fA3dGPa/suTO59iVKIFQgp7xStCcbvwBWJ4nVBVN3vR/WDXpjLr6cG1aGj4q4A6j/pRdnGBO8zWdk/jJAm4bavPoSZ6+cBiISAREFA6hKDrb0YaOmZ1H1q18xB+dzq2EcCazqWf+yGSb0nUapxZICyRuqA56wJg0eHtt9VaSjZEISlIv68tGOeBseCUORJfPx8vyKhWCXKbw5ACKB0UwglG0MI9wlIXcBcqo9UH7TP1VC0IojBY2ZM7MmjHTgf5xB6AKo9Nyrz5YNsjwrMWD4LtasbJ/U5QhE49vSepMpNj1a/cT70sBYzDCiqgurlDbjv//skWg834eyvD8HTkf7DiIhGYxigrAh7BK7+0IHANdPQQj8AwoSeN6yovCeAittjb98SApj5uBdtz9oxeMR8vY+WApYqHXWPeUeKCQ1fH/m9nPA+tY/6YK7U0fuOFTI41NELCUuNhnCfMqaGQaJ1Cv6rJvivKbDNzN4iwngKcSfBVDXesjRuBw0MnQcgJaSMdNhHntqN869NfoGiak7ux2zlopkon1+LZR/dhN1//wKadp+a9L2IpophgDJOSqDlSUekTDBwfah+qK/u2m6DuUxH8erYK7YVC1D3qA+he/yRKoGagK1Og212clUChwkVqLongIo7AvBfUSE1AWudBpMrstPA3zpU3bBaQ/P3XAi2K4g5OqBI9L1nRc1HeZBMPNkeFQAAi8uKRP9QhBBo2nMGA1d7cP7VIxhs7Z3SvXoutkMksRYBiIQOqUvc/KUPo6+pE/3NXVO6J9Fkcc0AZZz/qgrfJVOc+XqJ7p1WJDiQDkDkib90UwhlW4JJlwuORrFEph+cC8MjJY2FCbDP0uCYo0F1AOFBgbgLA3QB/7X8/ZZKtHgw0bbCqRQcypbBa4k7dn+/F2/+zXM49ONdUw4CAHDpjeMIB0JJ1zwQigCkxOIPrY95jb3chdLZVbC44hyKRTQJHBmgjPOcNMWvAQCBYIeKcL+AuTR35uEVU6KZAgkl82X9AeTP0cW5MCoAAOdfO4KVj90U83Vd03E2Rdv9Qt4gdn/zedz21Y9ChvW4UxPDFJOKmRvmTfh49YoGrH78FlQvbxhpZ/Pbp3Hwx7sydmYCFab8fYyhvKVryT2+y0S1AjKsaEXo+sFDsa5ZnvtVCAnwdA7g0I93AcCEJ3Zd0zFwtRsnnt2bsvtd3XsOr3z+x2h+5wz0cHIHVY3f3TBz43xs/T+PoWpJ/ZhrGm5chPv+9XdQVFuWsvaS8TAMUMbZ6rSEW/oUm4SpNLcW4pXeGIjsRBBRAoGQUJ2RLY0UXa6MCgw7/ot3sfvvnx+zVTAcCOHcK4ew/QtPIuRN7bRH97k2vPXNX+GpD/4dTr94YKS2QTR6WEP7seaR3wtVwZbP3w8hJoYExaTC4rRi/e/fldL2krFwmoAyzrU8BMWhRw4DilYKWEiUbApCybF/nZYKifpPeXDtp07ofnk9SusCapHErE97oNpTf99UFBziToLoLr1xApfeOIGi2jKoVhPcbX1TKjU8WWdeOoBF98f+e1VMKk6/sH/k9/Wb5sNe6ox9vaqifuN82Mtd8PW4U9pWMgaODFDGKSag7hNeCAXjht0lICRsMzVU3pmbZX0d8zTM+18DqH7Qh+LVIRSvDaH2US/mfWkw4dHGlLsGW3vRd7kzI0EAAPqbu/Dut34NKeWYaYPhXx94Yic6T10b+XhxXXnckQQgsvDQVVOalvZS4cuxZy8yCud8DbP/1I2eXVYMHjNDhgVMJRKlNwRRdmNgZCGeHgIGDpnR/74F4X4FapGOkvUhlKwPZm2xnmKNFDMq3ZT+jqMQyxBTxPlXj6D3UgeWfHgD6tbNASDQfqwJp57fj47jY6dUgp5AZJdBAqme2iDjYBigrLHW6Kj9uA81j/gAHSOVAYdpPuDKD5wIXFNHigqFBwQ6rqnoe9eCWZ/1jGwDLESZCgLJSPVphRTRfbYVb//DCwmvu/LuWWz6o7sh1OiBQEqJwWs96LvcmeomkkFwmoCyToiJQQAAOp63I9CiAhi9tiCy1z/YpaDtF2mYoM9D+bKtMKsEULt2DtZ95g6s/+xdaLx1KRRz4i1+ucLf58HpF/ZHqiJGIYSAf4DFrmjqODJAOSk8KDBwxBx9gSEA6AKe0yYEu0XCswzyUS6NCiQjlwsOOWeU4M6vfwyls6ugDc3JL31gI/x9Hrzx9WfGzM3nsv7m+E/9M5bWo3btHLQevBT3OqEImB1WhP1B6GGuc6EIhgHKSf4rahInCgr4mkywVHBvfzxG3kmgWkzY9s3H4Kwqjvx+VMEfS5Edd33jUbz4uSfyomDPgnvWRGp5xyizqYc1LLhndcwwYC93YcUjWzB/20qYbBZoIQ2Xdp3AsZ/vweC1yZ3ESIWH0wSUm3Kr3lBGZXpUoJAXDzbeuhSumtKoVf8UVYFqUbH4w7HL/uYSV00phBL7R7ZiUlFcVx71NeeMEtz/7d/FwvvXwGSL/H2rZhVzb1+GD3zrUyifV52WNlP+YBignGRr0AA1wfC/kHDMCWemQZSXZt+0OOY8OxDZnz/n1qUZbNHUBQZ9cb8WXdPh7/dEfW3TH90NW7Edijo2FCkmFarVjJu++KGUtpXyD8MA5SSTU6JkbSh6tT8AEBKuZaExRxUXglxcK5DPOwnMDiuUOE/TAEaelHPdxZ3HEgQbBRdfPz7h484ZxZi5YV7MMxEUVUHp7CpULZmZsrZS/mEYoJw140M+2BuHCrIMh4Kh/1trNdQ8xNXTFF9fU2fcswB0TUf/lfw4Jvjsrw/B3+uBrk38evSwhr6mTlx+69SE10oaKiESHOcppURpo3HXlhDDAOUwxQLM+j0Pah/zwjE/DHOVBvscDTWPeNHwR+kp/ZtNuTgqkCrZOpfg3CuH4p4SqKgKTr94IIMtmrrAgA/bv/gk+i5FdhXomg6pR3YDtB+/gte+9J/QQxODghZIPJUmhMhY9UXKTdxNQDlNqEDxqhCKV+XODyoZBjxnTQgPCpiKJZwLwhBZ+k5KVGPAyDsJAKDnQjuOPv0OVn78RkhdH1mAJ6UEpMTVfRdwKcrQeq5yt/bhpT/5ESoXz8SMZfWQmo7Ww5fjFhvqPH0NgQEvrMWOmNdoIQ0tBy6mo8mUJxgGiCah/4AZHS/ZoHuvD6qpDh1VH/RH1jhMUbZGBQp5J8Gwwz95EwNXurH8YzegdHYkHPl63Dj9/H6ceG7vhCOM80HX6WvoOp1cfQQ9pOHYf7+L9Z+5M+rrUpc4++uDCLBokaExDBAlqf+gGW3/7QAwtvPQvAJtP3dAKF4Ur86dEYxMyeWCQ8Muvn4cF18/DluZE4qqwNfjzssQMFUnn90LW4kDyx7aHPm6hxYiKiYVF984jv0/2JnlFlK2MQwQJUFqQOfLNkSCwPjFWAKAROfLNhStDEVOY5yEXF4rkM87CaLx90bfemcEB3/0Bs6+cgjz71oJR1Ux/H0eXHz9OM8zIAAMA0QxSR0ItCjQgwLhAQWaO14vHzlEyXdJhWNe7NXrRNnkbu3D4SffynYzKAcxDBCNIyXQ/74Z3b+xITwwHACSe0IOuxUAyYeBXB4VICLjYBggGqfndSu6XhueEhiWXH1kc0n+HPxihMWDRJQc1hkgGiXUJ9C1wzr0u2gBINYIgYS5XINtduZGBbitkIhShWGAaJSBg4meliOLBcd+SAICqH7AH+tAOSKinMZpAqJRQr1K1P5+rLE9vqVKx4wP+uFcmPyhSfmwVqDQdhIQUWwMA0SjqI4k5vyFxKzPuqH7FZiKdVjrdI4IEFFeYxggGqV4dQg9u2yxL1AipyU65ugA8mexYLrkQ8EhIkqMawaIRrHW6ihaFYx+dLKQEApQcef0OsBcmCLgTgIiGo0jA0Tj1HzMB8Uq0b/Pcr3goBQwlUjUftwLW23ujwhwJwERTQbDANE4igmo+agflVsDcJ80Qw8C1hodjvnhSZcazldcPEhkLAwDRDGYiiVKNwez3YyoEtUYICKaDIM85xDlhlxYL0BENB7DABERkcExDBAZDHcSENF4DANEBWa6OwmSXTyYbI0By6kr02kOEWUAwwBRhnC9ABHlKoYBojzDnQRElGoMA0RERAbHMEBERGRwDANEGZAr6wUS7SRg5UEiY2IYICIiMjiGAaICwgOKiGgqGAaIaNKSrTFARPmBYYAozVK5XoDbCokoHRgGiAyCiweJKBaGASIiIoNjGCAiIjI4hgGiAsGdBEQ0VQwDRMT1AkQGxzBAlCdyZScBtxUSFR6GAaI0ypUyxERE8TAMEBlAom2FRGRsDANEREQGxzBAVAC4k4CIpoNhgMjguJOAiBgGiChp3ElAVJgYBojyQK5sK5wsy6kr2W4CESWBYYAoTXJlWyF3EhBRIgwDREREBscwQJTnuJOAiKaLYYDIwLiTgIgAhgGinJeviweJKH8wDBBRUritkKhwMQwQFTDuJCCiZDAMEOUwThEQUSYwDBDlMe4kIKJUYBggSoNcKThERJQMhgEig5rMtkIuHiQqbAwDRDmK6wWIKFMYBogKFHcSEFGyGAaIiIgMjmGAKAclM0XAnQRElCoMA0QUFxcPEhU+hgEiA+IBRUQ0GsMAUY7hLgIiyjSGAaICxJ0ERDQZDANEREQGxzBAlGLTKUWc7BRBpnYScPEgkTEwDBBRWlhOXcl2E4goSQwDREREBscwQJQjMrWLgNsKiWg8hgGiApOqnQRcL0BkHAwDREREBscwQJRneCYBEaUawwBRDmDVQSLKJoYBIpqA6wWIjIVhgMhAuJOAiKJhGCBKoelUHyQiyhaGAaICwgOKiGgqGAaIsmwyiwczsZOA6wWIjIdhgIiIyOAYBoiIiAyOYYCIRnCKgMiYGAaIsiiTxYa4rZCIYmEYIMoTiRYPcicBEU0VwwAREZHBMQwQEYDUrhewnLqSsvciovRjGCAiIjI4hgGiFJlsKWKeVEhEuYJhgIiIyOAYBojywHR3EiTaVsj6AkTGxjBARERkcAwDREREBscwQJQFXDxIRLmEYYCIiMjgGAaIclyixYNERNPFMECU56a7k4CIiGGAyOC4rZCIGAaIUmCy1QeJiHIJwwBRhk1mJwHXCxBRJjAMEFFK8cRCovzDMEBERGRwDANEeSzRTgIiomQwDBDlqFSsF+C2QiJKBsMAERGRwTEMEGVQrp1JwBoDRAQwDBARERmekFJyUpGIiMjAODJARERkcAwDREREBscwQEREZHAMA0RERAbHMEBERGRwDANEREQGxzBARERkcAwDREREBscwQEREZHD/F7RJ9Tu5zl+JAAAAAElFTkSuQmCC\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": "7d7a604b-4d49-491a-ac78-39195e1ca4ae"
},
"execution_count": 131,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710116333.5600998\n",
"Mon Mar 11 00:18:53 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": "bd600076-872d-4e1b-993e-3eb5996ccdfd"
},
"execution_count": 132,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710116333.5701277\n",
"Mon Mar 11 00:18:53 2024\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BMxSJo5gtOmQ"
},
"source": [
"# VS Fully Connected"
]
},
{
"cell_type": "code",
"metadata": {
"id": "NKQx7stYswzU",
"outputId": "d5aa6857-9064-45df-fb25-29e690adba64",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 11458
}
},
"source": [
"optimizer = Adam(learning_rate=0.0012)\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": 133,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 1s - loss: 0.6598 - 652ms/epoch - 217ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 0.2323 - 25ms/epoch - 8ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 0.2338 - 22ms/epoch - 7ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 0.1102 - 25ms/epoch - 8ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 0.1145 - 25ms/epoch - 8ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 0.0913 - 25ms/epoch - 8ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 0.0768 - 22ms/epoch - 7ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 0.0826 - 25ms/epoch - 8ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 0.0613 - 25ms/epoch - 8ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 0.0605 - 24ms/epoch - 8ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 0.0584 - 25ms/epoch - 8ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 0.0539 - 23ms/epoch - 8ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 0.0542 - 23ms/epoch - 8ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 0.0486 - 25ms/epoch - 8ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 0.0470 - 22ms/epoch - 7ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 0.0481 - 25ms/epoch - 8ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 0.0498 - 25ms/epoch - 8ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 0.0481 - 25ms/epoch - 8ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 0.0514 - 21ms/epoch - 7ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 0.0416 - 26ms/epoch - 9ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 0.0457 - 24ms/epoch - 8ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 0.0393 - 24ms/epoch - 8ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 0.0462 - 25ms/epoch - 8ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 0.0369 - 23ms/epoch - 8ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.0417 - 21ms/epoch - 7ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.0410 - 21ms/epoch - 7ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.0431 - 23ms/epoch - 8ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.0359 - 24ms/epoch - 8ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 0.0438 - 26ms/epoch - 9ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 0.0353 - 27ms/epoch - 9ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.0387 - 24ms/epoch - 8ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.0392 - 25ms/epoch - 8ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.0380 - 26ms/epoch - 9ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.0344 - 25ms/epoch - 8ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.0327 - 23ms/epoch - 8ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.0299 - 23ms/epoch - 8ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.0367 - 21ms/epoch - 7ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.0362 - 24ms/epoch - 8ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.0259 - 25ms/epoch - 8ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.0365 - 24ms/epoch - 8ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.0322 - 24ms/epoch - 8ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.0283 - 22ms/epoch - 7ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.0284 - 23ms/epoch - 8ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.0320 - 22ms/epoch - 7ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.0278 - 22ms/epoch - 7ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.0252 - 25ms/epoch - 8ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.0274 - 24ms/epoch - 8ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.0234 - 24ms/epoch - 8ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.0249 - 25ms/epoch - 8ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.0181 - 23ms/epoch - 8ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.0226 - 23ms/epoch - 8ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.0200 - 22ms/epoch - 7ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.0207 - 27ms/epoch - 9ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.0214 - 25ms/epoch - 8ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.0210 - 25ms/epoch - 8ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.0232 - 25ms/epoch - 8ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.0232 - 27ms/epoch - 9ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.0159 - 26ms/epoch - 9ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.0226 - 22ms/epoch - 7ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.0183 - 23ms/epoch - 8ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.0132 - 26ms/epoch - 9ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.0133 - 22ms/epoch - 7ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.0138 - 22ms/epoch - 7ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.0114 - 23ms/epoch - 8ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.0161 - 24ms/epoch - 8ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.0114 - 25ms/epoch - 8ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 0.0101 - 21ms/epoch - 7ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 0.0101 - 26ms/epoch - 9ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.0068 - 23ms/epoch - 8ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.0083 - 21ms/epoch - 7ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.0084 - 23ms/epoch - 8ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.0064 - 24ms/epoch - 8ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 0.0055 - 25ms/epoch - 8ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 0.0055 - 23ms/epoch - 8ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 0.0090 - 22ms/epoch - 7ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 0.0099 - 28ms/epoch - 9ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 0.0080 - 23ms/epoch - 8ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 0.0047 - 25ms/epoch - 8ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.0040 - 25ms/epoch - 8ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 0.0039 - 24ms/epoch - 8ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 0.0029 - 23ms/epoch - 8ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 0.0026 - 24ms/epoch - 8ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 0.0033 - 25ms/epoch - 8ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 0.0030 - 24ms/epoch - 8ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 0.0037 - 22ms/epoch - 7ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 0.0050 - 23ms/epoch - 8ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 0.0052 - 24ms/epoch - 8ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 0.0039 - 23ms/epoch - 8ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 0.0029 - 27ms/epoch - 9ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 0.0056 - 25ms/epoch - 8ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 0.0062 - 24ms/epoch - 8ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 0.0053 - 23ms/epoch - 8ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 0.0041 - 22ms/epoch - 7ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 0.0060 - 26ms/epoch - 9ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 0.0115 - 24ms/epoch - 8ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 0.0143 - 26ms/epoch - 9ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 0.0179 - 27ms/epoch - 9ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 0.0116 - 25ms/epoch - 8ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 0.0107 - 23ms/epoch - 8ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 0.0071 - 24ms/epoch - 8ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 0.0044 - 23ms/epoch - 8ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 0.0052 - 22ms/epoch - 7ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 0.0040 - 23ms/epoch - 8ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 0.0039 - 24ms/epoch - 8ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 0.0025 - 23ms/epoch - 8ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 0.0019 - 22ms/epoch - 7ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 0.0018 - 24ms/epoch - 8ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 0.0018 - 20ms/epoch - 7ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 0.0029 - 24ms/epoch - 8ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 0.0016 - 23ms/epoch - 8ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 0.0017 - 25ms/epoch - 8ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 9.4836e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 0.0013 - 24ms/epoch - 8ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 0.0015 - 26ms/epoch - 9ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 0.0013 - 23ms/epoch - 8ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 0.0016 - 22ms/epoch - 7ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 0.0014 - 22ms/epoch - 7ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 6.4063e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 5.5384e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 7.0712e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 7.5221e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 9.2724e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 7.1569e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 4.6445e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 4.0198e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 2.5691e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 2.2985e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 2.5531e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 2.5285e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 1.4015e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 1.1250e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 5.8567e-05 - 29ms/epoch - 10ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 8.9969e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 8.7723e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 7.5590e-05 - 22ms/epoch - 7ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 5.8312e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 6.6033e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 9.3015e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 1.0821e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 1.2314e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 2.0514e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 2.3059e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 3.7112e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 3.7160e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 5.7703e-04 - 21ms/epoch - 7ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 8.6848e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 5.7999e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 5.0330e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 6.0953e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 4.1837e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 3.4953e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 2.6392e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 2.7849e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 1.5888e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 1.6697e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 1.1727e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 1.3184e-04 - 21ms/epoch - 7ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 9.0471e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 1.2640e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 1.2582e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 9.5760e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 6.5952e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 7.4432e-05 - 25ms/epoch - 8ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 9.7495e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 1.9253e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 1.2695e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 1.7182e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 1.1844e-04 - 21ms/epoch - 7ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 7.8934e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 7.9707e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 9.5003e-05 - 25ms/epoch - 8ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 1.1063e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 1.1499e-04 - 21ms/epoch - 7ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 1.7240e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 2.0076e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 2.1857e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 1.7662e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 1.2830e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 2.0258e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 1.8504e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 1.9662e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 2.4486e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 3.5109e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 5.6724e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 3.5596e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 3.6418e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 3.3606e-04 - 22ms/epoch - 7ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 5.9402e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 8.9377e-04 - 28ms/epoch - 9ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 0.0010 - 24ms/epoch - 8ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 0.0011 - 22ms/epoch - 7ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 0.0011 - 23ms/epoch - 8ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 0.0016 - 24ms/epoch - 8ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 0.0040 - 25ms/epoch - 8ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 0.0049 - 27ms/epoch - 9ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 0.0049 - 25ms/epoch - 8ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 0.0069 - 23ms/epoch - 8ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 0.0066 - 25ms/epoch - 8ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 0.0061 - 27ms/epoch - 9ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 0.0062 - 24ms/epoch - 8ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 0.0080 - 23ms/epoch - 8ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 0.0053 - 25ms/epoch - 8ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 0.0085 - 27ms/epoch - 9ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 0.0085 - 24ms/epoch - 8ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 0.0080 - 24ms/epoch - 8ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 0.0054 - 22ms/epoch - 7ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 0.0041 - 26ms/epoch - 9ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 0.0059 - 25ms/epoch - 8ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 0.0054 - 26ms/epoch - 9ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 0.0052 - 22ms/epoch - 7ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 0.0038 - 22ms/epoch - 7ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 0.0029 - 23ms/epoch - 8ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 0.0033 - 26ms/epoch - 9ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 0.0024 - 23ms/epoch - 8ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 0.0029 - 25ms/epoch - 8ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 0.0037 - 24ms/epoch - 8ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 0.0054 - 23ms/epoch - 8ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 0.0061 - 27ms/epoch - 9ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 0.0130 - 23ms/epoch - 8ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 0.0163 - 26ms/epoch - 9ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 0.0140 - 23ms/epoch - 8ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 0.0076 - 26ms/epoch - 9ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 0.0073 - 23ms/epoch - 8ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 0.0045 - 26ms/epoch - 9ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 0.0055 - 22ms/epoch - 7ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 0.0106 - 25ms/epoch - 8ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 0.0091 - 23ms/epoch - 8ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 0.0096 - 23ms/epoch - 8ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 0.0059 - 23ms/epoch - 8ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 0.0043 - 25ms/epoch - 8ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 0.0045 - 26ms/epoch - 9ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 0.0048 - 24ms/epoch - 8ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 0.0049 - 25ms/epoch - 8ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 0.0039 - 22ms/epoch - 7ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 0.0028 - 21ms/epoch - 7ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 0.0031 - 25ms/epoch - 8ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 0.0034 - 25ms/epoch - 8ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 0.0060 - 23ms/epoch - 8ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 0.0064 - 25ms/epoch - 8ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 0.0073 - 27ms/epoch - 9ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 0.0059 - 23ms/epoch - 8ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 0.0046 - 23ms/epoch - 8ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 0.0034 - 24ms/epoch - 8ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 0.0021 - 26ms/epoch - 9ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 0.0025 - 29ms/epoch - 10ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 0.0020 - 25ms/epoch - 8ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 0.0015 - 27ms/epoch - 9ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 0.0013 - 27ms/epoch - 9ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 0.0014 - 25ms/epoch - 8ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 9.0710e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 9.1112e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 4.8017e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 2.7603e-04 - 25ms/epoch - 8ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 2.5117e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 2.0525e-04 - 27ms/epoch - 9ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 1.4329e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 1.4124e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 1.3548e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 1.0465e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 9.8711e-05 - 25ms/epoch - 8ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 1.1772e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 1.1090e-04 - 26ms/epoch - 9ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 9.1619e-05 - 25ms/epoch - 8ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 1.0185e-04 - 24ms/epoch - 8ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 1.0794e-04 - 23ms/epoch - 8ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 6.5203e-05 - 27ms/epoch - 9ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 5.2961e-05 - 25ms/epoch - 8ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 4.7645e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 4.2113e-05 - 27ms/epoch - 9ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 5.5765e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 3.5395e-05 - 26ms/epoch - 9ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 4.0880e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 3.7067e-05 - 25ms/epoch - 8ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 3.1848e-05 - 25ms/epoch - 8ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 2.7936e-05 - 25ms/epoch - 8ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 2.1419e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 1.9413e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 2.1095e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 2.6716e-05 - 25ms/epoch - 8ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 1.9460e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 2.1032e-05 - 27ms/epoch - 9ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 2.1039e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 2.2973e-05 - 26ms/epoch - 9ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 5.6016e-05 - 22ms/epoch - 7ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 5.2723e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 4.4597e-05 - 25ms/epoch - 8ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 2.6856e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 2.2079e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 1.5146e-05 - 25ms/epoch - 8ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 2.1189e-05 - 22ms/epoch - 7ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 2.8772e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 2.4932e-05 - 24ms/epoch - 8ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 1.8940e-05 - 26ms/epoch - 9ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 8.6153e-06 - 25ms/epoch - 8ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 1.5789e-05 - 26ms/epoch - 9ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 1.0249e-05 - 28ms/epoch - 9ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 1.2946e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 1.5102e-05 - 27ms/epoch - 9ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 1.5625e-05 - 23ms/epoch - 8ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 1.5894e-05 - 26ms/epoch - 9ms/step\n",
"14/14 [==============================] - 0s 3ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7bae94d8b610>"
]
},
"metadata": {},
"execution_count": 133
},
{
"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": "88f6a418-535b-4864-84b4-601fa6b854ea"
},
"execution_count": 134,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710116342.5681193\n",
"Mon Mar 11 00:19:02 2024\n"
]
}
]
}
]
}