{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.7" }, "colab": { "name": "10Bar_ANN.ipynb", "provenance": [], "collapsed_sections": [], "toc_visible": true } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "1MNpyc1WBC41" }, "source": [ "# AI application in Structural Engineering\n", "_Larissa Driemeier, Izabel F. Machado and Gabriel Lopes Rodrigues_\n", " ![](https://drive.google.com/uc?export=view&id=1D5NMNp-KTfou5cSIiDdXwdDDTzRGzToq)\n", "\n", "This introductory notebook replicates the geometry of the structure analysed in the paper\n", "[*Background Information of Deep Learning for Structural Engineering*](https://www.researchgate.net/publication/318190131_Background_Information_of_Deep_Learning_for_Structural_Engineering). \n", "\n", "It is based on the [PMR5251 - Class#3](https://edisciplinas.usp.br/pluginfile.php/5728638/mod_resource/content/1/Aula01_Introd_ML.pdf) and [PMR5251 - Class#4](https://edisciplinas.usp.br/pluginfile.php/5759070/mod_resource/content/1/Aula02_RedesNeuraisArtificiais.pdf)\n" ] }, { "cell_type": "markdown", "metadata": { "id": "p8799bui8E0s" }, "source": [ "## Structural Model" ] }, { "cell_type": "markdown", "metadata": { "id": "bS02BkT-5T63" }, "source": [ "### Geometry\n", "\n", "The figure below shows a beam like 2D truss with 10 bars. The length of the bars are fixed, however the cross sectional areas are obtained through a random uniform sampling between $0.6$ $cm^2$ and $225.8$ $cm^2$. In total, 500 different structures were generated.\n", "\n", " ![](https://drive.google.com/uc?export=view&id=1xOuJYBWiWGkq5l_Z_hcAjYak_hjG26l5)\n", "\n", "Then, the structure is loaded and analysed in the commercial FE software Abaqus. Since the dimensions in the structure are fixed, the input the set of areas, while all nodal displacements and also bar stresses are computed as output." ] }, { "cell_type": "markdown", "metadata": { "id": "57lFpyyBoFtD" }, "source": [ "### Linear material model \n", "\n", "The material characteristics are generic values for Aluminum alloy 6061, as listed below.\n", "\n", "Property | Value                        | Unity                      \n", "--- | --- | ---\n", "Mass density $\\rho$ | $2.768\\times 10^{-9}$ | $ton/mm^2$\n", "Poisson $\\nu$ | $0.35$ | -\n", "Young's Modulus $E$| $68950$ | $MPa$\n", "Yield stress $\\sigma_{y0}$| $200$ | $MPa$\n", "\n", "The material undergoes elastic deformation until it reaches the elastic limit defined by the yield stress. After the elastic limit, the material exhibits plastic behavior,that is, the material deforms irreversibly and does not return to its original shape and size, even when the load is removed. Initially, only elastic behaviour is considered." ] }, { "cell_type": "markdown", "metadata": { "id": "ifh1T81H7wHt" }, "source": [ "## Machine Learning tool\n", "Virtually no one develops its own code to implement and train a ANN since there are numerous development tools, already tested, that do most of this work and are widely used.\n", "\n", "The great advantage of using one of these tools comes from the fact that we only need to define the configuration (architecture) of the RNA, that is, to define how *forward propagation* is performed. When forward propagation is defined, the back propagation, which is in fact the most difficult part of coding an ANN, is automatically generated using symbolic manipulation.\n", "\n", "The most used deep-learning tools today are the following:\n", "- TensorFlow;\n", "- Keras;\n", "- Pytorch;\n", "- Caffe;\n", "- Theano;\n", "- MXNET;\n", "- CNTK;\n", "- Others.\n", "\n", "Almost all of these tools are freely available on the Internet.\n", "\n", "The Figure below shows the classification of these tools by users in the deep-learning area, which also provides an indication of the relative percentage of use of these tools.\n", "\n", " ![](https://drive.google.com/uc?export=view&id=1JzK2Zz7_yRrzYqCqz3k3pkEMDUC1Esli)\n", "\n", "Google's TensorFlow and Facebook's PyTorch are both widely used machine learning and deep learning frameworks. TensorFlow,a symbolic math library used for machine learning and training neural networks, was open sourced in 2015 and backed by a huge community of machine learning experts.\n", "\n", "PyTorch, on the other hand, is a Python package released by Facebook in 2016 for training neural networks. It quickly gained popularity because developers found it easy to use unlike TensorFlow. \n", "\n", "Keras was developed at MIT and is the most used deep learning framework among top-5 winning teams on Kaggle. It is, nowadays, TensorFlow's high-level API. Originally, Keras' default backend was Theano. When Google released TensorFlow, Keras started supporting TensorFlow as a backend, being the default since the release of Keras v1.1.0.\n", "\n", "Both TensorFlow and Keras usage grew together and, finally, the `tf.keras` submodule was introduced in TensorFlow v1.10.0, the first step in integrating Keras directly within the TensorFlow package itself.\n", "\n", "Keras actually consists of only a more user-friendly interface for other tools, so to use Keras we must also have TensorFlow, or Theano, or CNTK installed on the computer. \n", "\n", "Some Keras commands from TensorFlow are slightly different from the original Keras, so a program made for Keras must be modified to run with TensorFlow's Keras, but modifications are few and simple.\n", "\n", "Care must be taken with the numerous versions of TensorFlow and Keras, because a program made for an older version may not work with a newer version.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "5rLzO6oiTgpW" }, "source": [ "### Keras\n", "\n", "Keras is a tool for developing deep-learning ANNs, based on the Python language, which provides a simple and convenient way to build, train and test an ANN.\n", "\n", "The fundamental structure of the ANNs is the layer, which receives a tensor as input and generate another tensor as an output.\n", "\n", "There are several types of layers, each type being specific for a given tensor format and for a certain type of processing. So, for example:\n", "\n", "- Data in the form of vectors are stored in 2D tensors (1st axis: examples; 2nd axis: characteristics) and typically processed in densely connected layers, called *dense* layers;\n", "\n", "\n", "- Grayscale image data is stored in 3D tensors (1st axis: examples; 2nd axis: height; 3rd axis: width) and typically processed in *convolutive* layers;\n", "\n", "\n", "- Sequences of temporal data are stored in 3D tensors (1st axis: examples; 2nd axis: time; 3rd axis: characteristics) and typically processed in *recurring* layers, for example, LSTM or GRU layers.\n", "\n", "The layers can be seen as *blocks* that we use to build an ANN. Building deep-learning models in Keras is done by clipping together compatible layers to form useful data-transformation pipelines.\n", "The notion of layer compatibility here refers specifically to the fact that every layer will only accept input tensors of a certain format and will return output tensors of a certain format.\n", "\n", "In Keras there are two ways to define an RNA:\n", "\n", "- as *Sequential class* - configure models with a single sequence of layers, which is the most common type of ANNs;\n", "\n", "- as *Functional class* - configure models with sequences of cyclic or tree layers, allowing a totally arbitrary ANN configuration.\n", "\n", "\n", "We will start with the simplest way to create an RNA in Keras, which is the sequential model. Creating, training and testing an ANN with Keras is done in the following steps:\n", "- Definition of training and test data;\n", "- ANN configuration, which consists of defining the layers to map the inputs to the desired outputs;\n", "- Compilation of the ANN, which also includes configuring the training process by choosing the cost function, the optimizer and the metric to evaluate performance;\n", "- ANN training;\n", "- ANN performance evaluation.\n", "\n", "The Keras documentation provides details on its use. This documentation can be seen at the [link](https://keras.io/).\n", "\n", "The Keras manual for TensorFlow is available at the [link](https://www.tensorflow.org/api_docs/python/tf/keras)." ] }, { "cell_type": "markdown", "metadata": { "id": "y-ytuiSdBC43" }, "source": [ "### Libraries\n", "Throughout this notebook the new version 2.0 of Tersorflow was used, with built-in keras support, which has been recently released to the public.\n", "To install it, just follow the instructions in [the official website](https://www.tensorflow.org/install), to guarantee that the right version is installed.\n", "\n", "The rest of the libraries used were simply installed using pip, the default Python tool for installing packages. These include:\n", "\n", "- NumPy: library for dealing with large matrices and also providing optimized functions for these data structures\n", "\n", "- Pandas: used to visualize the data and to work with the dataset.\n", "\n", "- matplotlib: used to generate plots from the models.\n", "\n", "- sklearn (also known as scikit-learn): used because of the many useful functions and utilities it provides for machine learning." ] }, { "cell_type": "code", "metadata": { "id": "sMBfXDXABC43", "outputId": "703fee17-c1d4-48a6-ee51-ff38b6ed6b87", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "import tensorflow as tf\n", "tf.__version__" ], "execution_count": 1, "outputs": [ { "output_type": "execute_result", "data": { "application/vnd.google.colaboratory.intrinsic+json": { "type": "string" }, "text/plain": [ "'2.3.0'" ] }, "metadata": { "tags": [] }, "execution_count": 1 } ] }, { "cell_type": "code", "metadata": { "id": "u5ATF9uyBC47" }, "source": [ "from tensorflow import keras\n", "import numpy as np\n", "import pandas as pd" ], "execution_count": 2, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "HMEnmW28BC49" }, "source": [ "import matplotlib.pyplot as plt\n", "plt.style.use('fivethirtyeight')\n", "%matplotlib inline" ], "execution_count": 3, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "UHa54RD05ude" }, "source": [ "## Data Loading and Manipulation\n", "\n", "Uploading four files:\n", "1. the dataset containing the areas, `areas.csv`;\n", "2. displacements and reaction force along the time, `FinalResult.csv`;\n", "\n", "If you prefer generate new data, we suggest to use the student version of the software [Abaqus](https://edu.3ds.com/en/software/abaqus-student-edition). The following files are available in the same [link](https://edisciplinas.usp.br/course/view.php?id=82602#section-3):\n", " 1. To generate random areas `gera_areas_10.py`;\n", " 2. Script to run in Abaqus to generate data `10-BarStructure.py`;\n", " 3. Basic geometry to be called by the script mentioned in item 2 `BasicInput.inp`;\n", " 4. Copy the file `extracted_data_DATA_HOUR.csv` as `FinalResult.csv` to upload.\n", "\n", " **Important**\n", "\n", "The script in item 02 automatically generates the bar geometry in Abaqus. If you want to build up a geometry - at least once - with Abaqus, Prof Marcilio Alves kindly prepared a tutorial that can be accessed through the [link](https://www.youtube.com/channel/UCEDn-UheEHKLfOKJKmSKzJw). \n" ] }, { "cell_type": "code", "metadata": { "id": "Or0FZJoDncwC", "outputId": "aaa61d19-0da2-46ba-d753-a66ad4338f7b", "colab": { "resources": { "http://localhost:8080/nbextensions/google.colab/files.js": { "data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7CgpmdW5jdGlvbiBfdXBsb2FkRmlsZXMoaW5wdXRJZCwgb3V0cHV0SWQpIHsKICBjb25zdCBzdGVwcyA9IHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCk7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICAvLyBDYWNoZSBzdGVwcyBvbiB0aGUgb3V0cHV0RWxlbWVudCB0byBtYWtlIGl0IGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgY2FsbAogIC8vIHRvIHVwbG9hZEZpbGVzQ29udGludWUgZnJvbSBQeXRob24uCiAgb3V0cHV0RWxlbWVudC5zdGVwcyA9IHN0ZXBzOwoKICByZXR1cm4gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpOwp9CgovLyBUaGlzIGlzIHJvdWdobHkgYW4gYXN5bmMgZ2VuZXJhdG9yIChub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyIHlldCksCi8vIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZSBhc3luY2hyb25vdXMgc3RlcHMgYW5kIHRoZSBQeXRob24gc2lkZSBpcyBnb2luZwovLyB0byBwb2xsIGZvciBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcC4KLy8gVGhpcyB1c2VzIGEgUHJvbWlzZSB0byBibG9jayB0aGUgcHl0aG9uIHNpZGUgb24gY29tcGxldGlvbiBvZiBlYWNoIHN0ZXAsCi8vIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIHN0ZXAgYXMgdGhlIGlucHV0IHRvIHRoZSBuZXh0IHN0ZXAuCmZ1bmN0aW9uIF91cGxvYWRGaWxlc0NvbnRpbnVlKG91dHB1dElkKSB7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICBjb25zdCBzdGVwcyA9IG91dHB1dEVsZW1lbnQuc3RlcHM7CgogIGNvbnN0IG5leHQgPSBzdGVwcy5uZXh0KG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSk7CiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXh0LnZhbHVlLnByb21pc2UpLnRoZW4oKHZhbHVlKSA9PiB7CiAgICAvLyBDYWNoZSB0aGUgbGFzdCBwcm9taXNlIHZhbHVlIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBuZXh0CiAgICAvLyBzdGVwIG9mIHRoZSBnZW5lcmF0b3IuCiAgICBvdXRwdXRFbGVtZW50Lmxhc3RQcm9taXNlVmFsdWUgPSB2YWx1ZTsKICAgIHJldHVybiBuZXh0LnZhbHVlLnJlc3BvbnNlOwogIH0pOwp9CgovKioKICogR2VuZXJhdG9yIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBiZXR3ZWVuIGVhY2ggYXN5bmMgc3RlcCBvZiB0aGUgdXBsb2FkCiAqIHByb2Nlc3MuCiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIGlucHV0IGZpbGUgcGlja2VyIGVsZW1lbnQuCiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRJZCBFbGVtZW50IElEIG9mIHRoZSBvdXRwdXQgZGlzcGxheS4KICogQHJldHVybiB7IUl0ZXJhYmxlPCFPYmplY3Q+fSBJdGVyYWJsZSBvZiBuZXh0IHN0ZXBzLgogKi8KZnVuY3Rpb24qIHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpOwogIGlucHV0RWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwoKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIG91dHB1dEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7CgogIGNvbnN0IHBpY2tlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7CiAgICAgIHJlc29sdmUoZS50YXJnZXQuZmlsZXMpOwogICAgfSk7CiAgfSk7CgogIGNvbnN0IGNhbmNlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIGlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNhbmNlbCk7CiAgY2FuY2VsLnRleHRDb250ZW50ID0gJ0NhbmNlbCB1cGxvYWQnOwogIGNvbnN0IGNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgY2FuY2VsLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9OwogIH0pOwoKICAvLyBXYWl0IGZvciB0aGUgdXNlciB0byBwaWNrIHRoZSBmaWxlcy4KICBjb25zdCBmaWxlcyA9IHlpZWxkIHsKICAgIHByb21pc2U6IFByb21pc2UucmFjZShbcGlja2VkUHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pLAogICAgcmVzcG9uc2U6IHsKICAgICAgYWN0aW9uOiAnc3RhcnRpbmcnLAogICAgfQogIH07CgogIGNhbmNlbC5yZW1vdmUoKTsKCiAgLy8gRGlzYWJsZSB0aGUgaW5wdXQgZWxlbWVudCBzaW5jZSBmdXJ0aGVyIHBpY2tzIGFyZSBub3QgYWxsb3dlZC4KICBpbnB1dEVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwoKICBpZiAoIWZpbGVzKSB7CiAgICByZXR1cm4gewogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgICAgfQogICAgfTsKICB9CgogIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykgewogICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgbGkuYXBwZW5kKHNwYW4oZmlsZS5uYW1lLCB7Zm9udFdlaWdodDogJ2JvbGQnfSkpOwogICAgbGkuYXBwZW5kKHNwYW4oCiAgICAgICAgYCgke2ZpbGUudHlwZSB8fCAnbi9hJ30pIC0gJHtmaWxlLnNpemV9IGJ5dGVzLCBgICsKICAgICAgICBgbGFzdCBtb2RpZmllZDogJHsKICAgICAgICAgICAgZmlsZS5sYXN0TW9kaWZpZWREYXRlID8gZmlsZS5sYXN0TW9kaWZpZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ24vYSd9IC0gYCkpOwogICAgY29uc3QgcGVyY2VudCA9IHNwYW4oJzAlIGRvbmUnKTsKICAgIGxpLmFwcGVuZENoaWxkKHBlcmNlbnQpOwoKICAgIG91dHB1dEVsZW1lbnQuYXBwZW5kQ2hpbGQobGkpOwoKICAgIGNvbnN0IGZpbGVEYXRhUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4gewogICAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTsKICAgICAgfTsKICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpOwogICAgfSk7CiAgICAvLyBXYWl0IGZvciB0aGUgZGF0YSB0byBiZSByZWFkeS4KICAgIGxldCBmaWxlRGF0YSA9IHlpZWxkIHsKICAgICAgcHJvbWlzZTogZmlsZURhdGFQcm9taXNlLAogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbnRpbnVlJywKICAgICAgfQogICAgfTsKCiAgICAvLyBVc2UgYSBjaHVua2VkIHNlbmRpbmcgdG8gYXZvaWQgbWVzc2FnZSBzaXplIGxpbWl0cy4gU2VlIGIvNjIxMTU2NjAuCiAgICBsZXQgcG9zaXRpb24gPSAwOwogICAgd2hpbGUgKHBvc2l0aW9uIDwgZmlsZURhdGEuYnl0ZUxlbmd0aCkgewogICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihmaWxlRGF0YS5ieXRlTGVuZ3RoIC0gcG9zaXRpb24sIE1BWF9QQVlMT0FEX1NJWkUpOwogICAgICBjb25zdCBjaHVuayA9IG5ldyBVaW50OEFycmF5KGZpbGVEYXRhLCBwb3NpdGlvbiwgbGVuZ3RoKTsKICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOwoKICAgICAgY29uc3QgYmFzZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGNodW5rKSk7CiAgICAgIHlpZWxkIHsKICAgICAgICByZXNwb25zZTogewogICAgICAgICAgYWN0aW9uOiAnYXBwZW5kJywKICAgICAgICAgIGZpbGU6IGZpbGUubmFtZSwKICAgICAgICAgIGRhdGE6IGJhc2U2NCwKICAgICAgICB9LAogICAgICB9OwogICAgICBwZXJjZW50LnRleHRDb250ZW50ID0KICAgICAgICAgIGAke01hdGgucm91bmQoKHBvc2l0aW9uIC8gZmlsZURhdGEuYnl0ZUxlbmd0aCkgKiAxMDApfSUgZG9uZWA7CiAgICB9CiAgfQoKICAvLyBBbGwgZG9uZS4KICB5aWVsZCB7CiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICB9CiAgfTsKfQoKc2NvcGUuZ29vZ2xlID0gc2NvcGUuZ29vZ2xlIHx8IHt9OwpzY29wZS5nb29nbGUuY29sYWIgPSBzY29wZS5nb29nbGUuY29sYWIgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYi5fZmlsZXMgPSB7CiAgX3VwbG9hZEZpbGVzLAogIF91cGxvYWRGaWxlc0NvbnRpbnVlLAp9Owp9KShzZWxmKTsK", "ok": true, "headers": [ [ "content-type", "application/javascript" ] ], "status": 200, "status_text": "" } }, "base_uri": "https://localhost:8080/", "height": 108 } }, "source": [ "from google.colab import files\n", "uploaded = files.upload()" ], "execution_count": 4, "outputs": [ { "output_type": "display_data", "data": { "text/html": [ "\n", " \n", " \n", " Upload widget is only available when the cell has been executed in the\n", " current browser session. Please rerun this cell to enable.\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "Saving areas.csv to areas.csv\n", "Saving FinalResult.csv to FinalResult.csv\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "82ahz20vBC5C" }, "source": [ "As shown below, there are 10 different areas, which will be the inputs, and various other measurements, which might be used as outputs of the Neural Network" ] }, { "cell_type": "code", "metadata": { "id": "qJAFdYK8BC5A" }, "source": [ "df = pd.read_csv('FinalResult.csv', index_col=0)" ], "execution_count": 5, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "tpm5RpQdBC5D", "outputId": "ca6dcee4-863b-4dc1-80a0-8439a96bb5e4", "colab": { "base_uri": "https://localhost:8080/", "height": 726 } }, "source": [ "df.dtypes" ], "execution_count": 6, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "area1 float64\n", "area2 float64\n", "area3 float64\n", "area4 float64\n", "area5 float64\n", "area6 float64\n", "area7 float64\n", "area8 float64\n", "area9 float64\n", "area10 float64\n", "d1 float64\n", "d2 float64\n", "d3 float64\n", "d4 float64\n", "d5 float64\n", "d6 float64\n", "d7 float64\n", "d8 float64\n", "s11_1 float64\n", "s11_2 float64\n", "s11_3 float64\n", "s11_4 float64\n", "s11_5 float64\n", "s11_6 float64\n", "s11_7 float64\n", "s11_8 float64\n", "s11_9 float64\n", "s11_10 float64\n", "mises_1 float64\n", "mises_2 float64\n", "mises_3 float64\n", "mises_4 float64\n", "mises_5 float64\n", "mises_6 float64\n", "mises_7 float64\n", "mises_8 float64\n", "mises_9 float64\n", "mises_10 float64\n", "dtype: object" ] }, "metadata": { "tags": [] }, "execution_count": 6 } ] }, { "cell_type": "code", "metadata": { "id": "h2P15QlKBC5F", "outputId": "8cecaad1-c3da-4bf1-d31a-f86648d2434f", "colab": { "base_uri": "https://localhost:8080/", "height": 248 } }, "source": [ "# To show all the columns\n", "pd.set_option('display.max_columns', None)\n", "df.head()" ], "execution_count": 7, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
area1area2area3area4area5area6area7area8area9area10d1d2d3d4d5d6d7d8s11_1s11_2s11_3s11_4s11_5s11_6s11_7s11_8s11_9s11_10mises_1mises_2mises_3mises_4mises_5mises_6mises_7mises_8mises_9mises_10
iteration
00.0030860.0191440.0172600.0058040.0112170.0101830.0147340.0178220.0021740.00069810.579137-70.774597-24.355942-71.5503926.575743-16.113703-8.060376-16.891342-122876112.05863760.0030187446.05849860.5-60778972.049584148.0-132877080.033294788.0-35960320.092389552.0122876112.05863760.0030187446.05849860.560778972.049584148.0132877080.033294788.035960320.092389552.0
10.0188810.0098060.0172270.0001070.0100900.0163090.0052120.0213470.0203600.0007499.366341-245.959854-17.619713-251.0329446.852213-21.184267-17.206579-26.058153-3115212.036751352.0018957688.038253380.0-129745584.051668864.0-728894336.033372482.0-54035168.0774317952.03115212.036751352.0018957688.038253380.0129745584.051668864.0728894336.033372482.054035168.0774317952.0
20.0006330.0122530.0212100.0086450.0049380.0095660.0007140.0050520.0099210.01122641.207355-185.375214-96.529587-193.67851337.074791-54.188625-68.113937-65.723526-214267184.086978520.0031161468.062610644.0-513610688.0279561120.0-38947984.0-9012399.0-64523128.022189706.0214267184.086978520.0031161468.062610644.0513610688.0279561120.038947984.09012399.064523128.022189706.0
30.0053090.0052590.0049870.0104100.0065860.0005440.0189220.0125910.0145240.0042479.551858-69.896049-15.171593-72.0827948.560319-36.236866-6.773345-43.978748-63326688.058377396.007476665.016489037.0-51074160.064548776.0-36164440.0140273008.0-104346992.045672644.063326688.058377396.007476665.016489037.051074160.064548776.036164440.0140273008.0104346992.045672644.0
40.0224120.0194260.0027820.0075520.0163080.0160760.0211490.0095660.0187520.0151559.622062-46.439331-8.717741-48.5901377.751640-23.164854-7.650749-22.620508-8045611.0-4104622.7514103846.016218065.0-57690196.058450960.0-24679984.056439460.0-58111388.033765824.08045611.04104622.7514103846.016218065.057690196.058450960.024679984.056439460.058111388.033765824.0
\n", "
" ], "text/plain": [ " area1 area2 area3 area4 area5 area6 \\\n", "iteration \n", "0 0.003086 0.019144 0.017260 0.005804 0.011217 0.010183 \n", "1 0.018881 0.009806 0.017227 0.000107 0.010090 0.016309 \n", "2 0.000633 0.012253 0.021210 0.008645 0.004938 0.009566 \n", "3 0.005309 0.005259 0.004987 0.010410 0.006586 0.000544 \n", "4 0.022412 0.019426 0.002782 0.007552 0.016308 0.016076 \n", "\n", " area7 area8 area9 area10 d1 d2 \\\n", "iteration \n", "0 0.014734 0.017822 0.002174 0.000698 10.579137 -70.774597 \n", "1 0.005212 0.021347 0.020360 0.000749 9.366341 -245.959854 \n", "2 0.000714 0.005052 0.009921 0.011226 41.207355 -185.375214 \n", "3 0.018922 0.012591 0.014524 0.004247 9.551858 -69.896049 \n", "4 0.021149 0.009566 0.018752 0.015155 9.622062 -46.439331 \n", "\n", " d3 d4 d5 d6 d7 d8 \\\n", "iteration \n", "0 -24.355942 -71.550392 6.575743 -16.113703 -8.060376 -16.891342 \n", "1 -17.619713 -251.032944 6.852213 -21.184267 -17.206579 -26.058153 \n", "2 -96.529587 -193.678513 37.074791 -54.188625 -68.113937 -65.723526 \n", "3 -15.171593 -72.082794 8.560319 -36.236866 -6.773345 -43.978748 \n", "4 -8.717741 -48.590137 7.751640 -23.164854 -7.650749 -22.620508 \n", "\n", " s11_1 s11_2 s11_3 s11_4 s11_5 \\\n", "iteration \n", "0 -122876112.0 5863760.00 30187446.0 5849860.5 -60778972.0 \n", "1 -3115212.0 36751352.00 18957688.0 38253380.0 -129745584.0 \n", "2 -214267184.0 86978520.00 31161468.0 62610644.0 -513610688.0 \n", "3 -63326688.0 58377396.00 7476665.0 16489037.0 -51074160.0 \n", "4 -8045611.0 -4104622.75 14103846.0 16218065.0 -57690196.0 \n", "\n", " s11_6 s11_7 s11_8 s11_9 s11_10 \\\n", "iteration \n", "0 49584148.0 -132877080.0 33294788.0 -35960320.0 92389552.0 \n", "1 51668864.0 -728894336.0 33372482.0 -54035168.0 774317952.0 \n", "2 279561120.0 -38947984.0 -9012399.0 -64523128.0 22189706.0 \n", "3 64548776.0 -36164440.0 140273008.0 -104346992.0 45672644.0 \n", "4 58450960.0 -24679984.0 56439460.0 -58111388.0 33765824.0 \n", "\n", " mises_1 mises_2 mises_3 mises_4 mises_5 \\\n", "iteration \n", "0 122876112.0 5863760.00 30187446.0 5849860.5 60778972.0 \n", "1 3115212.0 36751352.00 18957688.0 38253380.0 129745584.0 \n", "2 214267184.0 86978520.00 31161468.0 62610644.0 513610688.0 \n", "3 63326688.0 58377396.00 7476665.0 16489037.0 51074160.0 \n", "4 8045611.0 4104622.75 14103846.0 16218065.0 57690196.0 \n", "\n", " mises_6 mises_7 mises_8 mises_9 mises_10 \n", "iteration \n", "0 49584148.0 132877080.0 33294788.0 35960320.0 92389552.0 \n", "1 51668864.0 728894336.0 33372482.0 54035168.0 774317952.0 \n", "2 279561120.0 38947984.0 9012399.0 64523128.0 22189706.0 \n", "3 64548776.0 36164440.0 140273008.0 104346992.0 45672644.0 \n", "4 58450960.0 24679984.0 56439460.0 58111388.0 33765824.0 " ] }, "metadata": { "tags": [] }, "execution_count": 7 } ] }, { "cell_type": "markdown", "metadata": { "id": "-WGv5XThBC5H" }, "source": [ "### Splitting dataset\n", "\n", "The whole dataset will be split into training and test sets and organized in tensors.\n", "The training set will be used to train the model and the test set to verify its performance.\n", "\n", "The way the data is organized depends on the data type. Keras expects the first axis of the data, both in and out of the ANN, to be the number of examples $m$. \n", "\n", "For example, in our problem where the input data for each example is a vector with $ n_x = 10$ areas, the output is a vector with $n_y = 2$ and there are $m = 520$ examples, so the input and output tensors of the ANNs expected by Keras are as follows:\n", "\n", "- Size of the input tensor $(m, n_x)$;\n", "- Size of the output tensor $(m,n_y)$.\n", "\n", "When divided into train $(80\\%)$ and test $(20\\%)$, we expect the dimensions $(416,10)$, $(104,10)$ for train and test input and $(104,10)$, $(104,2)$ for train and test output, respectively.\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "uyOEcTmLBC5I" }, "source": [ "from sklearn.model_selection import train_test_split\n", "train, test = train_test_split(df, test_size=0.2, random_state=1)" ], "execution_count": 8, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "jardg69qBC5K", "outputId": "02044458-1325-4e94-da92-d95695a92a49", "colab": { "base_uri": "https://localhost:8080/", "height": 248 } }, "source": [ "train.head()" ], "execution_count": 9, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
area1area2area3area4area5area6area7area8area9area10d1d2d3d4d5d6d7d8s11_1s11_2s11_3s11_4s11_5s11_6s11_7s11_8s11_9s11_10mises_1mises_2mises_3mises_4mises_5mises_6mises_7mises_8mises_9mises_10
iteration
2010.0209590.0052350.0191970.0100050.0200770.0023490.0012710.0106060.0210140.01053916.004036-120.325661-53.915527-120.18594416.137526-32.663422-50.967178-54.107288-22231914.01.616967e+08-1.006564e+06-1.053551e+06-384316160.0121684416.02838388.5011838953.0-62306460.065863956.022231914.01.616967e+081.006564e+061.053551e+06384316160.0121684416.02838388.5011838953.062306460.065863956.0
920.0225290.0058680.0116310.0167140.0156290.0098220.0175580.0110000.0161720.01112612.547656-53.592022-8.100519-54.67098211.504974-27.936739-6.230652-30.526878-14099667.01.953085e+077.862298e+068.135870e+06-46982004.086752840.0-16162369.0091602400.0-61951560.026877044.014099667.01.953085e+077.862298e+068.135870e+0646982004.086752840.016162369.0091602400.061951560.026877044.0
3440.0032190.0123110.0178840.0161570.0032170.0211460.0210480.0081380.0220800.00435014.224157-54.255360-18.496674-60.12879613.368400-21.245007-6.041500-21.704147-93917784.03.462124e+066.452812e+064.428844e+07-45555708.0100803928.0-46319392.0059051812.0-29696636.026462190.093917784.03.462124e+066.452812e+064.428844e+0745555708.0100803928.046319392.0059051812.029696636.026462190.0
1190.0152170.0201340.0039380.0145350.0110370.0077390.0160590.0220210.0005480.02026718.363760-50.452175-12.587241-51.1659433.985027-24.647602-9.228423-21.760574-25327046.0-2.176952e+071.084223e+085.382156e+06-69586584.030048950.0-4145055.7547249120.0-77902696.037499008.025327046.02.176952e+071.084223e+085.382156e+0669586584.030048950.04145055.7547249120.077902696.037499008.0
2210.0004900.0029860.0065510.0106980.0006630.0015720.0179950.0221350.0097660.0106408.433659-77.570465-70.816208-118.8271415.633955-34.009995-6.182016-55.686005-487371776.01.634472e+082.111106e+073.110945e+08-46615268.042482636.0-27404998.00186641504.0-106984240.031545470.0487371776.01.634472e+082.111106e+073.110945e+0846615268.042482636.027404998.00186641504.0106984240.031545470.0
\n", "
" ], "text/plain": [ " area1 area2 area3 area4 area5 area6 \\\n", "iteration \n", "201 0.020959 0.005235 0.019197 0.010005 0.020077 0.002349 \n", "92 0.022529 0.005868 0.011631 0.016714 0.015629 0.009822 \n", "344 0.003219 0.012311 0.017884 0.016157 0.003217 0.021146 \n", "119 0.015217 0.020134 0.003938 0.014535 0.011037 0.007739 \n", "221 0.000490 0.002986 0.006551 0.010698 0.000663 0.001572 \n", "\n", " area7 area8 area9 area10 d1 d2 \\\n", "iteration \n", "201 0.001271 0.010606 0.021014 0.010539 16.004036 -120.325661 \n", "92 0.017558 0.011000 0.016172 0.011126 12.547656 -53.592022 \n", "344 0.021048 0.008138 0.022080 0.004350 14.224157 -54.255360 \n", "119 0.016059 0.022021 0.000548 0.020267 18.363760 -50.452175 \n", "221 0.017995 0.022135 0.009766 0.010640 8.433659 -77.570465 \n", "\n", " d3 d4 d5 d6 d7 d8 \\\n", "iteration \n", "201 -53.915527 -120.185944 16.137526 -32.663422 -50.967178 -54.107288 \n", "92 -8.100519 -54.670982 11.504974 -27.936739 -6.230652 -30.526878 \n", "344 -18.496674 -60.128796 13.368400 -21.245007 -6.041500 -21.704147 \n", "119 -12.587241 -51.165943 3.985027 -24.647602 -9.228423 -21.760574 \n", "221 -70.816208 -118.827141 5.633955 -34.009995 -6.182016 -55.686005 \n", "\n", " s11_1 s11_2 s11_3 s11_4 s11_5 \\\n", "iteration \n", "201 -22231914.0 1.616967e+08 -1.006564e+06 -1.053551e+06 -384316160.0 \n", "92 -14099667.0 1.953085e+07 7.862298e+06 8.135870e+06 -46982004.0 \n", "344 -93917784.0 3.462124e+06 6.452812e+06 4.428844e+07 -45555708.0 \n", "119 -25327046.0 -2.176952e+07 1.084223e+08 5.382156e+06 -69586584.0 \n", "221 -487371776.0 1.634472e+08 2.111106e+07 3.110945e+08 -46615268.0 \n", "\n", " s11_6 s11_7 s11_8 s11_9 s11_10 \\\n", "iteration \n", "201 121684416.0 2838388.50 11838953.0 -62306460.0 65863956.0 \n", "92 86752840.0 -16162369.00 91602400.0 -61951560.0 26877044.0 \n", "344 100803928.0 -46319392.00 59051812.0 -29696636.0 26462190.0 \n", "119 30048950.0 -4145055.75 47249120.0 -77902696.0 37499008.0 \n", "221 42482636.0 -27404998.00 186641504.0 -106984240.0 31545470.0 \n", "\n", " mises_1 mises_2 mises_3 mises_4 mises_5 \\\n", "iteration \n", "201 22231914.0 1.616967e+08 1.006564e+06 1.053551e+06 384316160.0 \n", "92 14099667.0 1.953085e+07 7.862298e+06 8.135870e+06 46982004.0 \n", "344 93917784.0 3.462124e+06 6.452812e+06 4.428844e+07 45555708.0 \n", "119 25327046.0 2.176952e+07 1.084223e+08 5.382156e+06 69586584.0 \n", "221 487371776.0 1.634472e+08 2.111106e+07 3.110945e+08 46615268.0 \n", "\n", " mises_6 mises_7 mises_8 mises_9 mises_10 \n", "iteration \n", "201 121684416.0 2838388.50 11838953.0 62306460.0 65863956.0 \n", "92 86752840.0 16162369.00 91602400.0 61951560.0 26877044.0 \n", "344 100803928.0 46319392.00 59051812.0 29696636.0 26462190.0 \n", "119 30048950.0 4145055.75 47249120.0 77902696.0 37499008.0 \n", "221 42482636.0 27404998.00 186641504.0 106984240.0 31545470.0 " ] }, "metadata": { "tags": [] }, "execution_count": 9 } ] }, { "cell_type": "markdown", "metadata": { "id": "AtoamKYSBC5O" }, "source": [ "#### Defining the training values and the expected outputs\n", "\n", "The input for the NN is a vector with all 10 areas that compound the geometry of the structure. Remember that we mantain all other parameters, such as material properties and dimensions, fixed.\n", "\n", "Formato esperado dos dados keras o Keras espear que o primeiro eixo dos dados, tanto de entrada como de saída da RNA seja p número de exemplos. Dimensão do tensor de entrada (m,nx). Dimensão do tensor de saída (m,ny).\n", "\n", "As output for the NN, let's generate an array of displacements (\\[*d2*, *d4*\\]). These correspond to the vertical displacements of the rightmost nodes of the structure.\n" ] }, { "cell_type": "code", "metadata": { "id": "2l5vD_siBC5P" }, "source": [ "x_train = train.loc[:,'area1':'area10'].values\n", "y_train = train[['d2', 'd4']].values\n", "x_test = test.loc[:,'area1':'area10'].values\n", "y_test = test[['d2', 'd4']].values" ], "execution_count": 10, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "1FAeW_EoccsU", "outputId": "34fd7f67-9dea-4fcb-8b0c-85cd9b54e983", "colab": { "base_uri": "https://localhost:8080/", "height": 54 } }, "source": [ "print(x_train.shape, y_train.shape)\n", "print(x_test.shape, y_test.shape)" ], "execution_count": 11, "outputs": [ { "output_type": "stream", "text": [ "(416, 10) (416, 2)\n", "(104, 10) (104, 2)\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "5G27Ww8pvUC-" }, "source": [ "### FEA results\n", "\n", "Read the results from FEA, where `d2` and `d4` are the displacements at the rightmost nodes of the structure to see the variation our future NN has to learn." ] }, { "cell_type": "code", "metadata": { "id": "9JW7edpTvEjK", "outputId": "08795539-b08f-4e01-d042-68ea74905b47", "colab": { "base_uri": "https://localhost:8080/", "height": 279 } }, "source": [ "disp2 = df[['d2']].values\n", "disp4 = df[['d4']].values\n", "xAxis = [i + 1.0 for i, _ in enumerate(disp2)]\n", "plt.scatter(xAxis,disp2,color='firebrick',s=6, label =r'$d_2$')\n", "plt.scatter(xAxis,disp4,color='darkslateblue',s=8, label =r'$d_4$')\n", "plt.title('Displacements at the end of the truss structure')\n", "plt.legend()\n", "plt.show()" ], "execution_count": 12, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "NZHeVHAdBC5R" }, "source": [ "### Normalizing Dataset\n", "\n", "As the paper has done, the input data was normalized, to obtain better results.\n", "\n", "The normalizer of the sklearn library was used to facilitate the process." ] }, { "cell_type": "code", "metadata": { "id": "CRF7EoS0BC5S" }, "source": [ "from sklearn import preprocessing\n", "\n", "normalizer = preprocessing.StandardScaler().fit(x_train)\n", "x_train_norm = normalizer.transform(x_train)\n", "x_test_norm = normalizer.transform(x_test)" ], "execution_count": 13, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "uEQDFdR0BC5U" }, "source": [ "As can be seen below, the mean and standard deviation for the training set are, respectively, approximately 0 and 1. Since the dataset is normalized with respect to the training set, \n", "for the test data the mean and standard deviation are, in this case, slightly different." ] }, { "cell_type": "code", "metadata": { "id": "GQjQ8vqRBC5U", "outputId": "1ed91535-460b-4134-9c47-878aa502f1b6", "colab": { "base_uri": "https://localhost:8080/", "height": 54 } }, "source": [ "# Mean\n", "mean_train = np.mean(x_train_norm)\n", "mean_test = np.mean(x_test_norm)\n", "\n", "# Standard Deviation\n", "std_train = np.std(x_train_norm)\n", "std_test = np.std(x_test_norm)\n", "\n", "print('For the training set, the mean is {:2.4f} and the standard deviation is {:2.4f}'.format(mean_train,std_train))\n", "print('For the test set, the mean is {:2.4f} and the standard deviation is {:2.4f}'.format(mean_test,std_test))\n" ], "execution_count": 14, "outputs": [ { "output_type": "stream", "text": [ "For the training set, the mean is -0.0000 and the standard deviation is 1.0000\n", "For the test set, the mean is -0.0043 and the standard deviation is 0.9993\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "DlNNpHuqiQ6Q" }, "source": [ "## First ANN model\n", "\n", "This model is a Neural Network with architecture (10-20-2), sigmoid activation function and Stochastic Gradient Descendent (SGD) as the optimizer. It is exactly the first model described in the paper.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "P1h4_elMwSxK" }, "source": [ "### Configuration\n", "\n", "The architecture (10-20-2) our network consists of one input layer with 10 features, followed by a sequence of two Dense layers, which are fully connected neural layers. The first hidden layer has 20 neurons, and the second (and last) layer has 2 neurons.\n", "\n", "See that the last activation function is not defined - default in Keras is set to `None`. That means, it is linear $g(z)=z$. That means that by default it is a linear activation.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "q7EL_kXTdhqv" }, "source": [ "We will reate teh sequencial ANN in two ways:\n", "1. Passing a list of layer instances to the Keras constructor;\n", "2. In steps using commands to add one layer at a time, using `add()`." ] }, { "cell_type": "code", "metadata": { "id": "lBL_l784eDnN", "outputId": "fcbca14e-8d66-475f-fcce-94e0e06b04a8", "colab": { "base_uri": "https://localhost:8080/", "height": 272 } }, "source": [ "from tensorflow.keras import models\n", "from tensorflow.keras.layers import Dense, Activation\n", "\n", "##First definition\n", "\n", "model = models.Sequential([\n", " Dense(20, input_shape=(10,)),\n", " Activation('sigmoid'),\n", " Dense(2)\n", "])\n", "\n", "model.summary()" ], "execution_count": 15, "outputs": [ { "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense (Dense) (None, 20) 220 \n", "_________________________________________________________________\n", "activation (Activation) (None, 20) 0 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 2) 42 \n", "=================================================================\n", "Total params: 262\n", "Trainable params: 262\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "EUj6C4o7fcIw" }, "source": [ "This command defines an RNA of an intermediate layer and an output layer with the following characteristics:\n", " * Input data for each training example is a 1-D vector (10);\n", " * It is observed that the dimension of the second axis of the input tensor is not included in the ʻinput_shape` argument, because at that moment the number of examples that will be used in training is unknown;\n", " * Be careful - although it seems that in the `input_shape` argument the second axis is the number of examples, Keras expects the first axis of the input tensor to be the number of examples;\n", " * The hidden layer is of the dense type (fully connected), it has 20 neurons and its activation function is sigmoid;\n", " * The output layer is dense (fully connected), has a two neurons and its activation function is sigmoid.\n", "\n", "The name used for this ANN was `model`, but any other name could be given.\n", "\n", "The `summary ()` method presents a summary of the main characteristics of the network.\n", "\n", "As you saw in the previous code, the architecture of the ANN is presented in a table, the content of which is as follows:\n", " * First column provides the types of network layers and numbers the layers;\n", " * Second column shows the number of neurons in the layer;\n", " * Third column shows the number of layer parameters.\n", "\n", "And the valuer $220???$ Where did it come from?\n", "\n", "The number of parameters is the sum of those in weignt matrix $ \\mathbf W$, dimension *number of neurons in the layer* per *number of inputs*, and the bias vector $\\mathbf b$, dimension *number of biases*:\n", "$$\n", "20\\times 10 + 20 = 220\n", "$$\n", "\n", " It is important to visualize the RNA architecture because any error messages in its compilation or training, reference the layer by its number, which can be obtained by the `summary ()` method.\n", "\n", "Another way to visualize an RNA in Keras is to graph it using the `plot_model` function.\n", "\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "fYp5KoQBmckX", "outputId": "f0e7ffde-25f6-4fc6-dc15-d4ec6f99b42a", "colab": { "base_uri": "https://localhost:8080/", "height": 422 } }, "source": [ "from tensorflow.keras.utils import plot_model\n", "import pydot\n", "plot_model(model, to_file = '/content/model.png', show_shapes = True)" ], "execution_count": 17, "outputs": [ { "output_type": "execute_result", "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 17 } ] }, { "cell_type": "code", "metadata": { "id": "npWzQbmUisbm", "outputId": "2b7239d1-525a-4e5c-dcd4-ae09c89adf30", "colab": { "base_uri": "https://localhost:8080/", "height": 235 } }, "source": [ "from keras import models\n", "from keras import layers\n", "\n", "##Second definition\n", "\n", "model = models.Sequential()\n", "model.add(layers.Dense(20, activation='sigmoid', input_shape=(10,))) \n", "model.add(layers.Dense(2))\n", "\n", "model.summary()" ], "execution_count": 18, "outputs": [ { "output_type": "stream", "text": [ "Model: \"sequential_1\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense_2 (Dense) (None, 20) 220 \n", "_________________________________________________________________\n", "dense_3 (Dense) (None, 2) 42 \n", "=================================================================\n", "Total params: 262\n", "Trainable params: 262\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "yGli1m7ugs2a" }, "source": [ "In this case, instead of importing only the sequential model structure, the first command imports all types of models from Keras. The second command imports all types of layers from Keras, instead of only dense layers, as previously done.\n", "\n", "The third command creates the RNA instance using a sequential model.\n", "\n", "The fourth command adds the first layer of RNA of the dense type, with 20 neurons, with Sigmoid activation function, whose input is a line vector of dimension (10).\n", "\n", "The fifth command adds a second dense type layer, with 2 neurons and sigmoid activation function." ] }, { "cell_type": "markdown", "metadata": { "id": "x-uwG07qhVWC" }, "source": [ "#### Dimensions of the input data\n", "\n", "The ANN needs to know the dimensions of the input data, for this reason the first layer in a sequential model needs to receive this information.\n", "\n", "It is observed that only the first layer needs this information, since Keras automatically infers the dimensions of the input data of the other layers of the ANN using the information of the number of neuron of each layer.\n", "\n", "There are several ways to define the size of the ANN input data:\n", "\n", "- Passing the `input_shape` argument to the first layer. This argument is a tuple of integers or simply `None`, where` None` indicates that any positive integer can be expected;\n", "\n", "- In the `input_shape` argument the number of examples is not included and Keras automatically infers this number from the input data provided;\n", "\n", "- Some 2D layers, such as dense layers, support the specification of the input data also via the `input_dim` argument.\n", "\n", "As an example, the following commands are equivalent:\n", "\n", "```\n", "ann = models.Sequential ()\n", "ann.add (Dense (20, input_shape = (10,)))\n", "```\n", "or\n", "```\n", "ann = models.Sequential ()\n", "ann.add (Dense (20, input_dim = 10))\n", "```\n", "\n", "If you need to specify a fixed number of examples, you can pass the `batch_size` argument to the input layer. Thus, for example, if `batch_size = 32` and ʻinput_shape = (6, 8)` are used for the first layer, a dimension tensor (32, 6, 8) will be expected as input data." ] }, { "cell_type": "markdown", "metadata": { "id": "XCe7YUIDkfPS" }, "source": [ "The development of an ANN requires many iterations to obtain a desirable result, so to avoid executing the same configuration commands over and over again, which can be long depending on the size of the ANN, you can create a function to configure the RNA. For this we have, for example, the following function:" ] }, { "cell_type": "code", "metadata": { "id": "brtoNRr2lWC0" }, "source": [ "def build_model(data_shape):\n", " model = models.Sequential()\n", " model.add(layers.Dense(units=20, activation='sigmoid', input_shape=data_shape))\n", " model.add(layers.Dense(units=2))\n", " return model" ], "execution_count": 19, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "Y5OdcHoHlr2V" }, "source": [ "In this case the argument `data_shape` represents the dimension of the input data without considering the number of examples." ] }, { "cell_type": "markdown", "metadata": { "id": "PkGkuWT-wkaB" }, "source": [ "### Compilation \n", "\n", "The generation of the ANN is performed in the compilation stage, where the loss function and the training method and configured and the metrics for the ANN evaluation are defined:\n", "\n", "+ The loss function `mean_squared_error` — How the network will be able to measure its performance on the training data, and thus how it will be able to steer itself in the right direction. We choose \n", "+ The optimizer `sgd` — The mechanism through which the network will update itself based on the data it sees and its loss function.\n", "+ Metrics to monitor during training and testing `mean_absolute_error`, `mean_absolute_percentage_error`.\n", "\n", "Keras uses the principle of making things simple, but at the same time it allows the user to control whatever is needed. If we want, we can configurate completely the optimizer. See more details at the [link](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers).\n", "\n", "### Loss Function\n", "\n", "Mean squared error $E$ is calculated as the average of the squared differences between the predicted $\\hat{\\mathbf{y}}^{(i)}$ and target values ${\\mathbf{y}}^{(i)}$,\n", "$$\n", "E(\\hat{\\mathbf{y}}^{(i)},{\\mathbf{y}}^{(i)})=\\sum\\limits_{j=1}^{n_y} \\left(\\hat{y}^{(i)}_j -{y}^{(i)}_j\\right)^2= \\left\\|\\hat{\\mathbf{y}}^{(i)} - \\hat{\\mathbf{y}}^{(i)} \\right\\|_2^2\n", "$$\n", "for the data $i$, $i=1,...m$.\n", "Then, the loss function $J$\n", "$$\n", "J\\left(\\mathbf{W},\\mathbf{B}\\right)={1\\over m}\\sum\\limits_{i=1}^{m}E(\\hat{\\mathbf{y}}^{(i)},{\\mathbf{y}}^{(i)}) = {1\\over m}\\sum\\limits_{i=1}^{m}\\sum\\limits_{j=1}^{n_y} \\left(\\hat{y}^{(i)}_j -{y}^{(i)}_j\\right)^2 = {1\\over m} \\sum\\limits_{i=1}^{m}\\left\\|\\hat{\\mathbf{y}}^{(i)} - \\hat{\\mathbf{y}}^{(i)} \\right\\|_2^2\n", "$$\n", "depends on the weights $\\mathbf{W}$ and bias $\\mathbf{b}$ parameters.\n", "The result is always positive regardless of the sign of the predicted and actual values and a perfect value is 0.0. \n", "\n", "The squaring means that larger mistakes result in more error than smaller mistakes, that is, the model is punished for making larger mistakes.\n", "\n", "The mean squared error loss function can be used in Keras by specifying ‘mse‘ or `mean_squared_error` as the loss function when compiling the model.\n", "\n", "### Optimizer\n", "\n", "SGD is the same as gradient descent, except that it is used to split the data into batches. The parameter is called *mini-batch size*.\n", "\n", "Faster optimizers are available in the literature to speed up the training step. We will apply the SGD + Momentum (known as SGD), but, be aware that are other popular Optimizer approaches such as Nesterov Accelerated Gradient, AdaGrad, RMSProp, Adam, and Nadam optimization.\n", "\n", "The best optimizer, according to the literature, is Adam.\n", "\n", "The SGD optimizer used in the paper had a learning rate of 0.01 and momentum of 0.9, which probably due to differences in the dataset, didn't converge. To achieve better results, a learning rate of 0.001 was used instead.\n", "\n", "### Metrics\n", "\n", "A metric or Key Performance Indicator (KPI) is a function that is used to judge the performance of your model. The most commonly used are defined below.\n", "\n", "**MAE**\n", "\n", "The Mean Absolute Error (`mean_absolute_error`,`MAE`, `mae`) computes the mean absolute error between the labels and predictions \n", "$$\n", "MAE = \\frac{1}{n} \\sum_1^n |y^{(i)} - \\hat{y}^{(i)}|\n", "$$\n", "\n", "\n", "**MAPE**\n", "\n", "The Mean Absolute Percentage Error (`mean_absolute_percentage_error`, `MAPE`, `mape`) is one of which is\n", "$$\n", "MAPE = \\frac{100}{n} \\sum_i^n \\frac{y^{(i)} - \\hat{y}^{(i)}}{y^{(i)}}\n", "$$\n", "\n", "Similar to MAE, but normalized by true observation. Downside is when true observation value $\\hat{y}^{(i)}$ is zero or near to zero, this metric will be problematic.\n", "\n", "**MSE**\n", "\n", "Mean squared error (`mean_squared_error`, `MSE` or `mse`) is a quadratic scoring rule that also measures the average magnitude of the error. It’s the average of squared differences between prediction and actual observation,\n", "$$\n", "RMSE =\\frac{1}{n} \\sum_i^n (y^{(i)} -\\hat{y}^{(i)})^2\n", "$$\n", "\n", "MSE is like a combination measurement of bias and variance of your prediction, i.e., $MSE = Bias^2 + Var$.\n", "\n", "MAE and MSE are two of the most common metrics used to measure accuracy for continuous variables. They express average model prediction error in units of the variable of interest, can range from $0$ to $+\\infty$ and are indifferent to the direction of errors. They are negatively-oriented scores, which means lower values are better.\n", "\n", "Taking the average of the squared errors has some interesting implications for MSE. Since the errors are squared, the RMSE gives a relatively high weight to large errors. This means the MSE should be more useful when large errors are particularly undesirable. \n" ] }, { "cell_type": "code", "metadata": { "id": "NwlBi4P-wnep" }, "source": [ "from tensorflow.keras import optimizers\n", "\n", "sgd = optimizers.SGD(lr=0.001, momentum=0.9)\n", "\n", "model.compile(optimizer=sgd,\n", " loss='mean_squared_error',\n", " metrics=['mean_absolute_error', 'mean_absolute_percentage_error'])" ], "execution_count": 20, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "B4dj_21ji8DI" }, "source": [ "The code below is a callback to create a loss history for the test set. It evaluates the model after each epoch and appends the result into an array. It is used to generate a plot of the model loss for both the training and the test sets. \n", "\n", "However, it is also very slow and makes training last for more than half an hour with large epochs, which is why the code to call it is normally commented." ] }, { "cell_type": "code", "metadata": { "id": "fKATE-Cti6r_" }, "source": [ "class TestLossHistory(keras.callbacks.Callback):\n", " def __init__(self, x_test, y_test):\n", " self.x_test = x_test\n", " self.y_test = y_test\n", " self.i = 0\n", " def on_train_begin(self, logs={}):\n", " self.losses = []\n", " def on_epoch_end(self, batch, logs={}):\n", " #print(f\"logs: {logs}\")\n", " self.losses.append(self.model.evaluate(self.x_test, self.y_test))\n", " def on_train_end(self, logs={}):\n", " self.losses = np.array(self.losses)" ], "execution_count": 21, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "o_SwzFsTNWqs" }, "source": [ "### Training" ] }, { "cell_type": "markdown", "metadata": { "id": "E8-AUpRmkAQ-" }, "source": [ "#### Gradient descent\n", "\n", "The Gradient Descent (GD) method is the basic *motor* of artificial neural networks. \n", "\n", "As discussed in class, GD is an iterative method, following the steps:\n", "\n", "* Initialization of the ANN parameters: assign an initial value to the parameters weights ($\\mathbf W$), and bias ($\\mathbf b$);\n", "* Execution of the ANN for all examples of the training data set, so that given the inputs, the outputs predicted by the ANN are calculated;\n", "* Calculation of the loss function for all training examples, through the sum of the error function;\n", "* Calculation of the gradient of the cost function in relation to all parameters of the ANN;\n", "* Updating of ANN parameters in the opposite direction to the gradient in order to reduce the value of the loss function.\n", "\n", "The steps 2 to 5 are iterative. Therefore, training a deep neural network can be an extremely time-consuming task especially with complex problems. \n", "\n", "In the algorithm presented before, updating the ANN parameters is done only after calculating the gradient of the cost function for all training examples and this can be a big problem, or even unfeasible, if we have a large number of training examples, for example, something in the order of 100 thousand or 1 million, which is not uncommon.\n", "\n", "To avoid computer memory problems, the optimization process can be changed in order to update the ANN parameters after processing only a few examples (a *batch*) of the training dataset. In general, this process is called in the literature as Stochastic Gradient Descent (SGD) because the training data is randomly divided into smaller sets.\n", "\n", "There literature is a bit confused about nomenclature of the other versions of the GD. As far as the size of the dataset used to update parameters is concern, the options are,\n", "* Batch Gradient Descent (BGD) or simply GD - running on a full dataset. Gradient is more general, but intractable for huge datasets;\n", "* Stochastic Gradient Descent (SGD) - picking a random instance at each step. Gradient can be noisy;\n", "* Mini-batch Gradient Descent (MBGD) or also Stochastic Gradient Descent (SGD) - running on random subsets of the data with dimension `bath_size` - looking for a balance between running the full data set or only one before update the parameters. Not very noisy and computationally tractable, that means, best of both worlds.\n", "\n", "As usually, there is no free lunch and all have pros and cons. Batch Gradient Descent can reach the global minimum at a terribly slow pace, specially with huge problems since in modern day architectures, the number of parameters may be in billions. Mini-batch Gradient Descent gets to the global minimum faster than BGD but it is easier to get stuck in the local minimum, and SGD is usually harder to get to the global minimum compared to the other two.\n", "\n", "We'll train our NN using MBGD and BGD, in order to compare effectiveness.\n", "\n", "In Keras `batch_size` refers to the batch size in MBGD. The default in keras is a MBGD with `batch_size=32`. If you want to run a GD, you need to set the `batch_size` to the number of training samples.\n", "\n", "Below, train and test are performed with mini-batch." ] }, { "cell_type": "markdown", "metadata": { "id": "888J2FRRsf11" }, "source": [ "The training of an ANN is carried out with the `fit()` method. For example, train an ANN using 10 epochs, the command used is as follows:\n", "\n", "\n", "```\n", "model.fit (x_train, y_train, epochs = 10, verbose = 2)\n", "```\n", "The fit method performs the training of the ANN with the training examples composed of the input data, `x_train`, and the output data, `y_train`.\n", "`epochs = 10` means that 10 training seasons are used and `verbose = 2` means that after each epoch the values of the loss function and the metrics are presented.\n", "\n", "There are several arguments for the fit method, which you can explore, as your knowledge of the subject grows, and your needs...\n", "\n", "All options for the fit method can be seen in detail in the Keras documentation." ] }, { "cell_type": "code", "metadata": { "id": "VyHRZYqrmnwc", "outputId": "8dcfc10a-d9e1-4224-ba62-a7c4e06f1f5c", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 } }, "source": [ "history_with_minibatch = model.fit(x_train_norm, y_train, epochs=1000, batch_size=32, verbose=2)\n", "\n", "# To use the test loss history, comment the lines above and uncomment the lines below\n", "#test_history_with_minibatch = TestLossHistory(x_test, y_test)\n", "#history_with_minibatch = model.fit(x_train, y_train, epochs=10000, batch_size=32, \n", "# callbacks=[test_history_with_minibatch])\n", "\n" ], "execution_count": 22, "outputs": [ { "output_type": "stream", "text": [ "Epoch 1/1000\n", "13/13 - 0s - loss: 10457.1406 - mean_absolute_error: 81.9938 - mean_absolute_percentage_error: 81.0320\n", "Epoch 2/1000\n", "13/13 - 0s - loss: 3595.0168 - mean_absolute_error: 39.2084 - mean_absolute_percentage_error: 39.2464\n", "Epoch 3/1000\n", "13/13 - 0s - loss: 2838.3850 - mean_absolute_error: 40.6159 - mean_absolute_percentage_error: 46.2864\n", "Epoch 4/1000\n", "13/13 - 0s - loss: 2542.8540 - mean_absolute_error: 34.2631 - mean_absolute_percentage_error: 36.0159\n", "Epoch 5/1000\n", "13/13 - 0s - loss: 2222.7971 - mean_absolute_error: 28.6818 - mean_absolute_percentage_error: 26.3918\n", "Epoch 6/1000\n", "13/13 - 0s - loss: 2053.7253 - mean_absolute_error: 27.4369 - mean_absolute_percentage_error: 25.2451\n", "Epoch 7/1000\n", "13/13 - 0s - loss: 1919.7296 - mean_absolute_error: 26.0849 - mean_absolute_percentage_error: 23.9291\n", "Epoch 8/1000\n", "13/13 - 0s - loss: 1831.1478 - mean_absolute_error: 25.7161 - mean_absolute_percentage_error: 24.0732\n", "Epoch 9/1000\n", "13/13 - 0s - loss: 1741.7014 - mean_absolute_error: 25.5093 - mean_absolute_percentage_error: 24.1112\n", "Epoch 10/1000\n", "13/13 - 0s - loss: 1652.7073 - mean_absolute_error: 23.3726 - mean_absolute_percentage_error: 20.9652\n", "Epoch 11/1000\n", "13/13 - 0s - loss: 1567.6295 - mean_absolute_error: 23.8840 - mean_absolute_percentage_error: 22.3592\n", "Epoch 12/1000\n", "13/13 - 0s - loss: 1513.3868 - mean_absolute_error: 23.4911 - mean_absolute_percentage_error: 22.0369\n", "Epoch 13/1000\n", "13/13 - 0s - loss: 1447.8527 - mean_absolute_error: 22.6376 - mean_absolute_percentage_error: 21.0141\n", "Epoch 14/1000\n", "13/13 - 0s - loss: 1443.5059 - mean_absolute_error: 22.7407 - mean_absolute_percentage_error: 21.2879\n", "Epoch 15/1000\n", "13/13 - 0s - loss: 1389.7402 - mean_absolute_error: 22.2666 - mean_absolute_percentage_error: 20.8056\n", "Epoch 16/1000\n", "13/13 - 0s - loss: 1385.1749 - mean_absolute_error: 21.7174 - mean_absolute_percentage_error: 20.0503\n", "Epoch 17/1000\n", "13/13 - 0s - loss: 1373.4464 - mean_absolute_error: 22.3612 - mean_absolute_percentage_error: 21.1893\n", "Epoch 18/1000\n", "13/13 - 0s - loss: 1337.6736 - mean_absolute_error: 21.3610 - mean_absolute_percentage_error: 19.7115\n", "Epoch 19/1000\n", "13/13 - 0s - loss: 1294.2346 - mean_absolute_error: 21.9628 - mean_absolute_percentage_error: 20.9082\n", "Epoch 20/1000\n", "13/13 - 0s - loss: 1262.6887 - mean_absolute_error: 20.6891 - mean_absolute_percentage_error: 19.1470\n", "Epoch 21/1000\n", "13/13 - 0s - loss: 1213.9762 - mean_absolute_error: 20.9908 - mean_absolute_percentage_error: 19.8839\n", "Epoch 22/1000\n", "13/13 - 0s - loss: 1198.9930 - mean_absolute_error: 20.7486 - mean_absolute_percentage_error: 19.5137\n", "Epoch 23/1000\n", "13/13 - 0s - loss: 1166.6812 - mean_absolute_error: 20.0214 - mean_absolute_percentage_error: 18.6858\n", "Epoch 24/1000\n", "13/13 - 0s - loss: 1145.1075 - mean_absolute_error: 19.9976 - mean_absolute_percentage_error: 18.6985\n", "Epoch 25/1000\n", "13/13 - 0s - loss: 1130.6265 - mean_absolute_error: 19.9869 - mean_absolute_percentage_error: 18.7968\n", "Epoch 26/1000\n", "13/13 - 0s - loss: 1096.5422 - mean_absolute_error: 19.8104 - mean_absolute_percentage_error: 18.7879\n", "Epoch 27/1000\n", "13/13 - 0s - loss: 1084.1912 - mean_absolute_error: 19.6500 - mean_absolute_percentage_error: 18.5812\n", "Epoch 28/1000\n", "13/13 - 0s - loss: 1077.1567 - mean_absolute_error: 19.4821 - mean_absolute_percentage_error: 18.3146\n", "Epoch 29/1000\n", "13/13 - 0s - loss: 1060.8541 - mean_absolute_error: 19.0636 - mean_absolute_percentage_error: 17.7750\n", "Epoch 30/1000\n", "13/13 - 0s - loss: 1029.2537 - mean_absolute_error: 19.2571 - mean_absolute_percentage_error: 18.2114\n", "Epoch 31/1000\n", "13/13 - 0s - loss: 1042.2880 - mean_absolute_error: 19.2088 - mean_absolute_percentage_error: 18.0984\n", "Epoch 32/1000\n", "13/13 - 0s - loss: 1036.3608 - mean_absolute_error: 18.9607 - mean_absolute_percentage_error: 17.7840\n", "Epoch 33/1000\n", "13/13 - 0s - loss: 1054.4661 - mean_absolute_error: 19.8233 - mean_absolute_percentage_error: 19.0398\n", "Epoch 34/1000\n", "13/13 - 0s - loss: 996.7095 - mean_absolute_error: 18.9881 - mean_absolute_percentage_error: 17.9744\n", "Epoch 35/1000\n", "13/13 - 0s - loss: 992.5377 - mean_absolute_error: 18.8803 - mean_absolute_percentage_error: 17.8376\n", "Epoch 36/1000\n", "13/13 - 0s - loss: 979.6670 - mean_absolute_error: 18.5071 - mean_absolute_percentage_error: 17.3890\n", "Epoch 37/1000\n", "13/13 - 0s - loss: 951.7438 - mean_absolute_error: 18.2795 - mean_absolute_percentage_error: 17.1716\n", "Epoch 38/1000\n", "13/13 - 0s - loss: 953.5180 - mean_absolute_error: 18.1176 - mean_absolute_percentage_error: 16.8722\n", "Epoch 39/1000\n", "13/13 - 0s - loss: 946.6915 - mean_absolute_error: 18.2943 - mean_absolute_percentage_error: 17.2243\n", "Epoch 40/1000\n", "13/13 - 0s - loss: 936.7479 - mean_absolute_error: 18.2044 - mean_absolute_percentage_error: 17.2219\n", "Epoch 41/1000\n", "13/13 - 0s - loss: 937.4834 - mean_absolute_error: 18.3838 - mean_absolute_percentage_error: 17.3943\n", "Epoch 42/1000\n", "13/13 - 0s - loss: 937.4288 - mean_absolute_error: 17.8081 - mean_absolute_percentage_error: 16.6344\n", "Epoch 43/1000\n", "13/13 - 0s - loss: 917.8645 - mean_absolute_error: 18.3234 - mean_absolute_percentage_error: 17.4217\n", "Epoch 44/1000\n", "13/13 - 0s - loss: 907.9509 - mean_absolute_error: 18.2757 - mean_absolute_percentage_error: 17.5090\n", "Epoch 45/1000\n", "13/13 - 0s - loss: 894.6522 - mean_absolute_error: 17.5886 - mean_absolute_percentage_error: 16.5631\n", "Epoch 46/1000\n", "13/13 - 0s - loss: 888.2665 - mean_absolute_error: 17.5579 - mean_absolute_percentage_error: 16.5064\n", "Epoch 47/1000\n", "13/13 - 0s - loss: 888.7860 - mean_absolute_error: 17.7159 - mean_absolute_percentage_error: 16.8011\n", "Epoch 48/1000\n", "13/13 - 0s - loss: 885.4411 - mean_absolute_error: 17.6336 - mean_absolute_percentage_error: 16.6862\n", "Epoch 49/1000\n", "13/13 - 0s - loss: 873.7543 - mean_absolute_error: 17.4386 - mean_absolute_percentage_error: 16.3987\n", "Epoch 50/1000\n", "13/13 - 0s - loss: 876.8665 - mean_absolute_error: 17.9267 - mean_absolute_percentage_error: 17.2527\n", "Epoch 51/1000\n", "13/13 - 0s - loss: 885.3278 - mean_absolute_error: 17.2996 - mean_absolute_percentage_error: 16.1940\n", "Epoch 52/1000\n", "13/13 - 0s - loss: 863.3450 - mean_absolute_error: 17.4462 - mean_absolute_percentage_error: 16.5929\n", "Epoch 53/1000\n", "13/13 - 0s - loss: 852.5263 - mean_absolute_error: 17.2810 - mean_absolute_percentage_error: 16.3762\n", "Epoch 54/1000\n", "13/13 - 0s - loss: 832.7229 - mean_absolute_error: 17.0254 - mean_absolute_percentage_error: 16.1864\n", "Epoch 55/1000\n", "13/13 - 0s - loss: 824.8167 - mean_absolute_error: 17.0988 - mean_absolute_percentage_error: 16.3747\n", "Epoch 56/1000\n", "13/13 - 0s - loss: 829.7142 - mean_absolute_error: 16.9055 - mean_absolute_percentage_error: 16.0544\n", "Epoch 57/1000\n", "13/13 - 0s - loss: 818.4922 - mean_absolute_error: 16.9135 - mean_absolute_percentage_error: 16.1877\n", "Epoch 58/1000\n", "13/13 - 0s - loss: 801.0604 - mean_absolute_error: 16.6110 - mean_absolute_percentage_error: 15.8736\n", "Epoch 59/1000\n", "13/13 - 0s - loss: 796.3906 - mean_absolute_error: 16.5057 - mean_absolute_percentage_error: 15.7812\n", "Epoch 60/1000\n", "13/13 - 0s - loss: 782.2727 - mean_absolute_error: 16.4592 - mean_absolute_percentage_error: 15.8262\n", "Epoch 61/1000\n", "13/13 - 0s - loss: 772.7695 - mean_absolute_error: 16.3310 - mean_absolute_percentage_error: 15.6162\n", "Epoch 62/1000\n", "13/13 - 0s - loss: 768.0025 - mean_absolute_error: 16.3055 - mean_absolute_percentage_error: 15.7182\n", "Epoch 63/1000\n", "13/13 - 0s - loss: 773.8391 - mean_absolute_error: 16.3272 - mean_absolute_percentage_error: 15.7458\n", "Epoch 64/1000\n", "13/13 - 0s - loss: 753.1220 - mean_absolute_error: 16.1950 - mean_absolute_percentage_error: 15.6487\n", "Epoch 65/1000\n", "13/13 - 0s - loss: 742.4428 - mean_absolute_error: 16.1458 - mean_absolute_percentage_error: 15.7585\n", "Epoch 66/1000\n", "13/13 - 0s - loss: 741.8105 - mean_absolute_error: 16.0833 - mean_absolute_percentage_error: 15.6383\n", "Epoch 67/1000\n", "13/13 - 0s - loss: 737.7828 - mean_absolute_error: 15.8259 - mean_absolute_percentage_error: 15.1591\n", "Epoch 68/1000\n", "13/13 - 0s - loss: 721.4388 - mean_absolute_error: 15.8705 - mean_absolute_percentage_error: 15.4398\n", "Epoch 69/1000\n", "13/13 - 0s - loss: 725.6967 - mean_absolute_error: 15.9304 - mean_absolute_percentage_error: 15.5875\n", "Epoch 70/1000\n", "13/13 - 0s - loss: 721.0450 - mean_absolute_error: 15.7393 - mean_absolute_percentage_error: 15.2671\n", "Epoch 71/1000\n", "13/13 - 0s - loss: 726.4877 - mean_absolute_error: 15.7675 - mean_absolute_percentage_error: 15.1913\n", "Epoch 72/1000\n", "13/13 - 0s - loss: 713.2573 - mean_absolute_error: 15.6310 - mean_absolute_percentage_error: 15.2081\n", "Epoch 73/1000\n", "13/13 - 0s - loss: 713.8944 - mean_absolute_error: 15.5495 - mean_absolute_percentage_error: 14.9890\n", "Epoch 74/1000\n", "13/13 - 0s - loss: 723.4837 - mean_absolute_error: 15.9572 - mean_absolute_percentage_error: 15.6584\n", "Epoch 75/1000\n", "13/13 - 0s - loss: 698.1409 - mean_absolute_error: 15.4894 - mean_absolute_percentage_error: 15.0835\n", "Epoch 76/1000\n", "13/13 - 0s - loss: 694.6918 - mean_absolute_error: 15.4515 - mean_absolute_percentage_error: 15.0144\n", "Epoch 77/1000\n", "13/13 - 0s - loss: 700.2059 - mean_absolute_error: 15.7598 - mean_absolute_percentage_error: 15.5202\n", "Epoch 78/1000\n", "13/13 - 0s - loss: 696.3672 - mean_absolute_error: 15.4773 - mean_absolute_percentage_error: 15.0094\n", "Epoch 79/1000\n", "13/13 - 0s - loss: 694.5367 - mean_absolute_error: 15.3397 - mean_absolute_percentage_error: 14.8846\n", "Epoch 80/1000\n", "13/13 - 0s - loss: 684.0808 - mean_absolute_error: 15.2952 - mean_absolute_percentage_error: 14.8360\n", "Epoch 81/1000\n", "13/13 - 0s - loss: 684.2256 - mean_absolute_error: 15.2725 - mean_absolute_percentage_error: 14.9254\n", "Epoch 82/1000\n", "13/13 - 0s - loss: 698.2273 - mean_absolute_error: 15.4636 - mean_absolute_percentage_error: 14.9770\n", "Epoch 83/1000\n", "13/13 - 0s - loss: 695.9293 - mean_absolute_error: 15.2730 - mean_absolute_percentage_error: 14.7262\n", "Epoch 84/1000\n", "13/13 - 0s - loss: 676.0780 - mean_absolute_error: 15.2846 - mean_absolute_percentage_error: 14.9661\n", "Epoch 85/1000\n", "13/13 - 0s - loss: 664.7328 - mean_absolute_error: 15.1111 - mean_absolute_percentage_error: 14.6953\n", "Epoch 86/1000\n", "13/13 - 0s - loss: 659.1143 - mean_absolute_error: 15.0028 - mean_absolute_percentage_error: 14.7163\n", "Epoch 87/1000\n", "13/13 - 0s - loss: 655.5219 - mean_absolute_error: 14.9932 - mean_absolute_percentage_error: 14.6338\n", "Epoch 88/1000\n", "13/13 - 0s - loss: 651.5660 - mean_absolute_error: 14.8832 - mean_absolute_percentage_error: 14.5225\n", "Epoch 89/1000\n", "13/13 - 0s - loss: 654.4638 - mean_absolute_error: 15.0164 - mean_absolute_percentage_error: 14.7390\n", "Epoch 90/1000\n", "13/13 - 0s - loss: 652.7512 - mean_absolute_error: 14.8458 - mean_absolute_percentage_error: 14.4258\n", "Epoch 91/1000\n", "13/13 - 0s - loss: 650.6651 - mean_absolute_error: 14.8402 - mean_absolute_percentage_error: 14.4731\n", "Epoch 92/1000\n", "13/13 - 0s - loss: 649.0293 - mean_absolute_error: 14.8890 - mean_absolute_percentage_error: 14.5267\n", "Epoch 93/1000\n", "13/13 - 0s - loss: 646.1671 - mean_absolute_error: 14.7838 - mean_absolute_percentage_error: 14.4711\n", "Epoch 94/1000\n", "13/13 - 0s - loss: 637.5804 - mean_absolute_error: 14.8252 - mean_absolute_percentage_error: 14.5801\n", "Epoch 95/1000\n", "13/13 - 0s - loss: 632.1353 - mean_absolute_error: 14.7686 - mean_absolute_percentage_error: 14.4682\n", "Epoch 96/1000\n", "13/13 - 0s - loss: 633.2566 - mean_absolute_error: 14.8542 - mean_absolute_percentage_error: 14.5353\n", "Epoch 97/1000\n", "13/13 - 0s - loss: 631.3490 - mean_absolute_error: 14.6879 - mean_absolute_percentage_error: 14.3435\n", "Epoch 98/1000\n", "13/13 - 0s - loss: 627.6758 - mean_absolute_error: 14.6009 - mean_absolute_percentage_error: 14.2871\n", "Epoch 99/1000\n", "13/13 - 0s - loss: 631.0787 - mean_absolute_error: 14.5699 - mean_absolute_percentage_error: 14.2484\n", "Epoch 100/1000\n", "13/13 - 0s - loss: 620.3688 - mean_absolute_error: 14.7178 - mean_absolute_percentage_error: 14.4737\n", "Epoch 101/1000\n", "13/13 - 0s - loss: 608.3241 - mean_absolute_error: 14.4649 - mean_absolute_percentage_error: 14.1709\n", "Epoch 102/1000\n", "13/13 - 0s - loss: 615.2341 - mean_absolute_error: 14.3231 - mean_absolute_percentage_error: 13.8402\n", "Epoch 103/1000\n", "13/13 - 0s - loss: 594.9028 - mean_absolute_error: 14.2401 - mean_absolute_percentage_error: 13.9921\n", "Epoch 104/1000\n", "13/13 - 0s - loss: 605.3483 - mean_absolute_error: 14.4433 - mean_absolute_percentage_error: 14.2566\n", "Epoch 105/1000\n", "13/13 - 0s - loss: 596.7621 - mean_absolute_error: 14.5071 - mean_absolute_percentage_error: 14.4048\n", "Epoch 106/1000\n", "13/13 - 0s - loss: 595.7911 - mean_absolute_error: 14.3241 - mean_absolute_percentage_error: 14.0547\n", "Epoch 107/1000\n", "13/13 - 0s - loss: 592.4833 - mean_absolute_error: 14.2851 - mean_absolute_percentage_error: 14.0989\n", "Epoch 108/1000\n", "13/13 - 0s - loss: 587.4126 - mean_absolute_error: 14.2802 - mean_absolute_percentage_error: 14.1430\n", "Epoch 109/1000\n", "13/13 - 0s - loss: 589.4996 - mean_absolute_error: 14.2287 - mean_absolute_percentage_error: 14.0898\n", "Epoch 110/1000\n", "13/13 - 0s - loss: 607.0283 - mean_absolute_error: 14.5170 - mean_absolute_percentage_error: 14.4294\n", "Epoch 111/1000\n", "13/13 - 0s - loss: 588.1122 - mean_absolute_error: 14.3868 - mean_absolute_percentage_error: 14.3584\n", "Epoch 112/1000\n", "13/13 - 0s - loss: 591.0248 - mean_absolute_error: 14.1582 - mean_absolute_percentage_error: 13.8400\n", "Epoch 113/1000\n", "13/13 - 0s - loss: 586.1296 - mean_absolute_error: 14.4386 - mean_absolute_percentage_error: 14.3264\n", "Epoch 114/1000\n", "13/13 - 0s - loss: 577.4584 - mean_absolute_error: 14.0814 - mean_absolute_percentage_error: 13.9123\n", "Epoch 115/1000\n", "13/13 - 0s - loss: 581.3720 - mean_absolute_error: 14.1331 - mean_absolute_percentage_error: 14.0315\n", "Epoch 116/1000\n", "13/13 - 0s - loss: 575.6790 - mean_absolute_error: 13.9271 - mean_absolute_percentage_error: 13.7198\n", "Epoch 117/1000\n", "13/13 - 0s - loss: 570.2477 - mean_absolute_error: 14.0919 - mean_absolute_percentage_error: 14.0277\n", "Epoch 118/1000\n", "13/13 - 0s - loss: 568.8024 - mean_absolute_error: 14.0146 - mean_absolute_percentage_error: 13.8508\n", "Epoch 119/1000\n", "13/13 - 0s - loss: 564.0790 - mean_absolute_error: 13.9056 - mean_absolute_percentage_error: 13.6788\n", "Epoch 120/1000\n", "13/13 - 0s - loss: 572.6575 - mean_absolute_error: 14.0254 - mean_absolute_percentage_error: 13.8875\n", "Epoch 121/1000\n", "13/13 - 0s - loss: 572.2040 - mean_absolute_error: 14.1653 - mean_absolute_percentage_error: 14.0635\n", "Epoch 122/1000\n", "13/13 - 0s - loss: 563.7462 - mean_absolute_error: 13.9489 - mean_absolute_percentage_error: 13.8146\n", "Epoch 123/1000\n", "13/13 - 0s - loss: 559.6757 - mean_absolute_error: 13.8083 - mean_absolute_percentage_error: 13.6718\n", "Epoch 124/1000\n", "13/13 - 0s - loss: 565.0881 - mean_absolute_error: 14.1012 - mean_absolute_percentage_error: 14.0605\n", "Epoch 125/1000\n", "13/13 - 0s - loss: 563.8667 - mean_absolute_error: 13.9434 - mean_absolute_percentage_error: 13.7982\n", "Epoch 126/1000\n", "13/13 - 0s - loss: 553.8242 - mean_absolute_error: 13.8199 - mean_absolute_percentage_error: 13.7715\n", "Epoch 127/1000\n", "13/13 - 0s - loss: 552.5750 - mean_absolute_error: 13.9285 - mean_absolute_percentage_error: 13.9683\n", "Epoch 128/1000\n", "13/13 - 0s - loss: 557.7867 - mean_absolute_error: 13.8696 - mean_absolute_percentage_error: 13.7283\n", "Epoch 129/1000\n", "13/13 - 0s - loss: 545.5400 - mean_absolute_error: 13.6303 - mean_absolute_percentage_error: 13.5244\n", "Epoch 130/1000\n", "13/13 - 0s - loss: 553.3904 - mean_absolute_error: 13.7717 - mean_absolute_percentage_error: 13.6983\n", "Epoch 131/1000\n", "13/13 - 0s - loss: 544.1772 - mean_absolute_error: 13.7461 - mean_absolute_percentage_error: 13.6712\n", "Epoch 132/1000\n", "13/13 - 0s - loss: 549.1602 - mean_absolute_error: 13.8348 - mean_absolute_percentage_error: 13.7522\n", "Epoch 133/1000\n", "13/13 - 0s - loss: 546.7507 - mean_absolute_error: 13.6791 - mean_absolute_percentage_error: 13.6233\n", "Epoch 134/1000\n", "13/13 - 0s - loss: 544.7169 - mean_absolute_error: 13.8181 - mean_absolute_percentage_error: 13.8573\n", "Epoch 135/1000\n", "13/13 - 0s - loss: 539.4024 - mean_absolute_error: 13.6378 - mean_absolute_percentage_error: 13.6070\n", "Epoch 136/1000\n", "13/13 - 0s - loss: 540.7118 - mean_absolute_error: 13.6755 - mean_absolute_percentage_error: 13.7099\n", "Epoch 137/1000\n", "13/13 - 0s - loss: 538.8231 - mean_absolute_error: 13.5466 - mean_absolute_percentage_error: 13.4592\n", "Epoch 138/1000\n", "13/13 - 0s - loss: 533.5483 - mean_absolute_error: 13.6180 - mean_absolute_percentage_error: 13.6343\n", "Epoch 139/1000\n", "13/13 - 0s - loss: 539.1981 - mean_absolute_error: 13.5186 - mean_absolute_percentage_error: 13.4177\n", "Epoch 140/1000\n", "13/13 - 0s - loss: 534.8341 - mean_absolute_error: 13.5698 - mean_absolute_percentage_error: 13.5618\n", "Epoch 141/1000\n", "13/13 - 0s - loss: 540.4844 - mean_absolute_error: 13.5465 - mean_absolute_percentage_error: 13.4199\n", "Epoch 142/1000\n", "13/13 - 0s - loss: 533.7561 - mean_absolute_error: 13.6707 - mean_absolute_percentage_error: 13.7109\n", "Epoch 143/1000\n", "13/13 - 0s - loss: 532.0190 - mean_absolute_error: 13.6256 - mean_absolute_percentage_error: 13.6436\n", "Epoch 144/1000\n", "13/13 - 0s - loss: 534.0291 - mean_absolute_error: 13.4619 - mean_absolute_percentage_error: 13.3158\n", "Epoch 145/1000\n", "13/13 - 0s - loss: 530.3854 - mean_absolute_error: 13.5542 - mean_absolute_percentage_error: 13.5586\n", "Epoch 146/1000\n", "13/13 - 0s - loss: 528.3665 - mean_absolute_error: 13.5095 - mean_absolute_percentage_error: 13.4948\n", "Epoch 147/1000\n", "13/13 - 0s - loss: 542.6868 - mean_absolute_error: 13.6911 - mean_absolute_percentage_error: 13.5981\n", "Epoch 148/1000\n", "13/13 - 0s - loss: 523.1442 - mean_absolute_error: 13.4948 - mean_absolute_percentage_error: 13.5723\n", "Epoch 149/1000\n", "13/13 - 0s - loss: 538.1680 - mean_absolute_error: 13.5207 - mean_absolute_percentage_error: 13.3676\n", "Epoch 150/1000\n", "13/13 - 0s - loss: 533.1920 - mean_absolute_error: 13.7417 - mean_absolute_percentage_error: 13.8142\n", "Epoch 151/1000\n", "13/13 - 0s - loss: 524.3185 - mean_absolute_error: 13.3891 - mean_absolute_percentage_error: 13.3365\n", "Epoch 152/1000\n", "13/13 - 0s - loss: 532.3018 - mean_absolute_error: 13.5835 - mean_absolute_percentage_error: 13.4546\n", "Epoch 153/1000\n", "13/13 - 0s - loss: 520.4493 - mean_absolute_error: 13.4016 - mean_absolute_percentage_error: 13.4391\n", "Epoch 154/1000\n", "13/13 - 0s - loss: 521.7105 - mean_absolute_error: 13.3583 - mean_absolute_percentage_error: 13.3148\n", "Epoch 155/1000\n", "13/13 - 0s - loss: 526.2037 - mean_absolute_error: 13.5032 - mean_absolute_percentage_error: 13.4948\n", "Epoch 156/1000\n", "13/13 - 0s - loss: 515.7217 - mean_absolute_error: 13.3193 - mean_absolute_percentage_error: 13.3346\n", "Epoch 157/1000\n", "13/13 - 0s - loss: 522.0669 - mean_absolute_error: 13.4024 - mean_absolute_percentage_error: 13.4647\n", "Epoch 158/1000\n", "13/13 - 0s - loss: 517.6416 - mean_absolute_error: 13.3717 - mean_absolute_percentage_error: 13.4041\n", "Epoch 159/1000\n", "13/13 - 0s - loss: 521.7946 - mean_absolute_error: 13.3645 - mean_absolute_percentage_error: 13.3215\n", "Epoch 160/1000\n", "13/13 - 0s - loss: 525.6801 - mean_absolute_error: 13.3720 - mean_absolute_percentage_error: 13.2060\n", "Epoch 161/1000\n", "13/13 - 0s - loss: 519.1943 - mean_absolute_error: 13.4604 - mean_absolute_percentage_error: 13.5591\n", "Epoch 162/1000\n", "13/13 - 0s - loss: 512.4716 - mean_absolute_error: 13.2901 - mean_absolute_percentage_error: 13.3237\n", "Epoch 163/1000\n", "13/13 - 0s - loss: 511.7964 - mean_absolute_error: 13.2536 - mean_absolute_percentage_error: 13.2785\n", "Epoch 164/1000\n", "13/13 - 0s - loss: 515.2090 - mean_absolute_error: 13.3100 - mean_absolute_percentage_error: 13.3531\n", "Epoch 165/1000\n", "13/13 - 0s - loss: 513.5665 - mean_absolute_error: 13.1875 - mean_absolute_percentage_error: 13.1496\n", "Epoch 166/1000\n", "13/13 - 0s - loss: 513.1967 - mean_absolute_error: 13.2202 - mean_absolute_percentage_error: 13.2836\n", "Epoch 167/1000\n", "13/13 - 0s - loss: 526.3568 - mean_absolute_error: 13.3411 - mean_absolute_percentage_error: 13.2566\n", "Epoch 168/1000\n", "13/13 - 0s - loss: 516.8263 - mean_absolute_error: 13.5216 - mean_absolute_percentage_error: 13.6189\n", "Epoch 169/1000\n", "13/13 - 0s - loss: 520.1404 - mean_absolute_error: 13.4880 - mean_absolute_percentage_error: 13.4954\n", "Epoch 170/1000\n", "13/13 - 0s - loss: 519.6717 - mean_absolute_error: 13.4489 - mean_absolute_percentage_error: 13.3883\n", "Epoch 171/1000\n", "13/13 - 0s - loss: 516.4882 - mean_absolute_error: 13.2043 - mean_absolute_percentage_error: 13.0826\n", "Epoch 172/1000\n", "13/13 - 0s - loss: 503.5385 - mean_absolute_error: 13.1641 - mean_absolute_percentage_error: 13.2914\n", "Epoch 173/1000\n", "13/13 - 0s - loss: 508.2118 - mean_absolute_error: 13.1833 - mean_absolute_percentage_error: 13.1860\n", "Epoch 174/1000\n", "13/13 - 0s - loss: 499.3159 - mean_absolute_error: 13.1490 - mean_absolute_percentage_error: 13.2749\n", "Epoch 175/1000\n", "13/13 - 0s - loss: 511.2240 - mean_absolute_error: 13.1706 - mean_absolute_percentage_error: 13.0965\n", "Epoch 176/1000\n", "13/13 - 0s - loss: 507.4839 - mean_absolute_error: 13.3455 - mean_absolute_percentage_error: 13.4204\n", "Epoch 177/1000\n", "13/13 - 0s - loss: 514.0870 - mean_absolute_error: 13.3250 - mean_absolute_percentage_error: 13.3502\n", "Epoch 178/1000\n", "13/13 - 0s - loss: 509.4098 - mean_absolute_error: 13.2519 - mean_absolute_percentage_error: 13.2989\n", "Epoch 179/1000\n", "13/13 - 0s - loss: 499.4777 - mean_absolute_error: 13.0468 - mean_absolute_percentage_error: 13.1969\n", "Epoch 180/1000\n", "13/13 - 0s - loss: 502.2126 - mean_absolute_error: 13.1081 - mean_absolute_percentage_error: 13.1028\n", "Epoch 181/1000\n", "13/13 - 0s - loss: 493.3275 - mean_absolute_error: 12.9542 - mean_absolute_percentage_error: 13.0398\n", "Epoch 182/1000\n", "13/13 - 0s - loss: 500.1064 - mean_absolute_error: 13.0641 - mean_absolute_percentage_error: 13.2014\n", "Epoch 183/1000\n", "13/13 - 0s - loss: 496.5677 - mean_absolute_error: 13.1074 - mean_absolute_percentage_error: 13.1604\n", "Epoch 184/1000\n", "13/13 - 0s - loss: 492.6933 - mean_absolute_error: 12.9559 - mean_absolute_percentage_error: 13.0745\n", "Epoch 185/1000\n", "13/13 - 0s - loss: 495.8012 - mean_absolute_error: 12.9927 - mean_absolute_percentage_error: 13.1181\n", "Epoch 186/1000\n", "13/13 - 0s - loss: 502.5981 - mean_absolute_error: 13.2250 - mean_absolute_percentage_error: 13.3259\n", "Epoch 187/1000\n", "13/13 - 0s - loss: 498.7386 - mean_absolute_error: 13.0306 - mean_absolute_percentage_error: 13.1341\n", "Epoch 188/1000\n", "13/13 - 0s - loss: 493.2109 - mean_absolute_error: 12.9662 - mean_absolute_percentage_error: 13.0625\n", "Epoch 189/1000\n", "13/13 - 0s - loss: 493.2025 - mean_absolute_error: 13.0846 - mean_absolute_percentage_error: 13.2175\n", "Epoch 190/1000\n", "13/13 - 0s - loss: 492.7420 - mean_absolute_error: 12.9905 - mean_absolute_percentage_error: 13.0731\n", "Epoch 191/1000\n", "13/13 - 0s - loss: 492.6033 - mean_absolute_error: 13.1036 - mean_absolute_percentage_error: 13.2751\n", "Epoch 192/1000\n", "13/13 - 0s - loss: 498.3465 - mean_absolute_error: 13.0392 - mean_absolute_percentage_error: 13.0444\n", "Epoch 193/1000\n", "13/13 - 0s - loss: 491.6524 - mean_absolute_error: 13.0288 - mean_absolute_percentage_error: 13.2551\n", "Epoch 194/1000\n", "13/13 - 0s - loss: 496.8899 - mean_absolute_error: 12.9410 - mean_absolute_percentage_error: 13.0117\n", "Epoch 195/1000\n", "13/13 - 0s - loss: 489.2687 - mean_absolute_error: 12.9889 - mean_absolute_percentage_error: 13.0734\n", "Epoch 196/1000\n", "13/13 - 0s - loss: 488.9494 - mean_absolute_error: 12.8862 - mean_absolute_percentage_error: 12.9923\n", "Epoch 197/1000\n", "13/13 - 0s - loss: 487.6745 - mean_absolute_error: 12.9029 - mean_absolute_percentage_error: 13.0482\n", "Epoch 198/1000\n", "13/13 - 0s - loss: 484.7308 - mean_absolute_error: 12.8536 - mean_absolute_percentage_error: 13.0031\n", "Epoch 199/1000\n", "13/13 - 0s - loss: 490.7259 - mean_absolute_error: 12.9822 - mean_absolute_percentage_error: 13.1754\n", "Epoch 200/1000\n", "13/13 - 0s - loss: 488.1507 - mean_absolute_error: 12.9844 - mean_absolute_percentage_error: 13.1151\n", "Epoch 201/1000\n", "13/13 - 0s - loss: 491.9326 - mean_absolute_error: 12.9922 - mean_absolute_percentage_error: 13.0867\n", "Epoch 202/1000\n", "13/13 - 0s - loss: 483.5333 - mean_absolute_error: 12.8165 - mean_absolute_percentage_error: 13.0043\n", "Epoch 203/1000\n", "13/13 - 0s - loss: 482.5294 - mean_absolute_error: 12.8205 - mean_absolute_percentage_error: 12.9579\n", "Epoch 204/1000\n", "13/13 - 0s - loss: 483.2523 - mean_absolute_error: 12.8122 - mean_absolute_percentage_error: 12.9254\n", "Epoch 205/1000\n", "13/13 - 0s - loss: 480.2082 - mean_absolute_error: 12.7785 - mean_absolute_percentage_error: 12.9716\n", "Epoch 206/1000\n", "13/13 - 0s - loss: 478.3665 - mean_absolute_error: 12.8152 - mean_absolute_percentage_error: 13.0343\n", "Epoch 207/1000\n", "13/13 - 0s - loss: 476.6414 - mean_absolute_error: 12.7372 - mean_absolute_percentage_error: 12.9194\n", "Epoch 208/1000\n", "13/13 - 0s - loss: 479.8979 - mean_absolute_error: 12.7656 - mean_absolute_percentage_error: 12.9289\n", "Epoch 209/1000\n", "13/13 - 0s - loss: 492.7337 - mean_absolute_error: 12.9765 - mean_absolute_percentage_error: 13.0866\n", "Epoch 210/1000\n", "13/13 - 0s - loss: 476.7307 - mean_absolute_error: 12.7628 - mean_absolute_percentage_error: 12.9509\n", "Epoch 211/1000\n", "13/13 - 0s - loss: 481.4268 - mean_absolute_error: 12.8323 - mean_absolute_percentage_error: 13.0165\n", "Epoch 212/1000\n", "13/13 - 0s - loss: 481.2487 - mean_absolute_error: 12.8484 - mean_absolute_percentage_error: 13.0379\n", "Epoch 213/1000\n", "13/13 - 0s - loss: 475.1828 - mean_absolute_error: 12.7404 - mean_absolute_percentage_error: 12.9408\n", "Epoch 214/1000\n", "13/13 - 0s - loss: 481.6961 - mean_absolute_error: 12.7436 - mean_absolute_percentage_error: 12.9291\n", "Epoch 215/1000\n", "13/13 - 0s - loss: 476.5853 - mean_absolute_error: 12.7970 - mean_absolute_percentage_error: 12.9993\n", "Epoch 216/1000\n", "13/13 - 0s - loss: 477.2667 - mean_absolute_error: 12.8771 - mean_absolute_percentage_error: 13.1262\n", "Epoch 217/1000\n", "13/13 - 0s - loss: 482.5834 - mean_absolute_error: 12.7382 - mean_absolute_percentage_error: 12.7971\n", "Epoch 218/1000\n", "13/13 - 0s - loss: 472.9550 - mean_absolute_error: 12.7425 - mean_absolute_percentage_error: 12.9642\n", "Epoch 219/1000\n", "13/13 - 0s - loss: 479.9418 - mean_absolute_error: 12.7445 - mean_absolute_percentage_error: 12.8599\n", "Epoch 220/1000\n", "13/13 - 0s - loss: 475.4538 - mean_absolute_error: 12.7755 - mean_absolute_percentage_error: 12.9832\n", "Epoch 221/1000\n", "13/13 - 0s - loss: 475.4112 - mean_absolute_error: 12.8421 - mean_absolute_percentage_error: 13.1198\n", "Epoch 222/1000\n", "13/13 - 0s - loss: 481.4738 - mean_absolute_error: 12.7701 - mean_absolute_percentage_error: 12.8457\n", "Epoch 223/1000\n", "13/13 - 0s - loss: 484.5676 - mean_absolute_error: 13.0023 - mean_absolute_percentage_error: 13.2001\n", "Epoch 224/1000\n", "13/13 - 0s - loss: 490.1596 - mean_absolute_error: 12.8002 - mean_absolute_percentage_error: 12.8620\n", "Epoch 225/1000\n", "13/13 - 0s - loss: 488.7870 - mean_absolute_error: 13.1702 - mean_absolute_percentage_error: 13.2848\n", "Epoch 226/1000\n", "13/13 - 0s - loss: 475.3818 - mean_absolute_error: 12.7074 - mean_absolute_percentage_error: 12.8834\n", "Epoch 227/1000\n", "13/13 - 0s - loss: 476.3607 - mean_absolute_error: 12.6513 - mean_absolute_percentage_error: 12.8236\n", "Epoch 228/1000\n", "13/13 - 0s - loss: 475.8089 - mean_absolute_error: 12.7949 - mean_absolute_percentage_error: 13.0370\n", "Epoch 229/1000\n", "13/13 - 0s - loss: 469.6893 - mean_absolute_error: 12.6378 - mean_absolute_percentage_error: 12.8349\n", "Epoch 230/1000\n", "13/13 - 0s - loss: 470.0218 - mean_absolute_error: 12.6895 - mean_absolute_percentage_error: 12.9382\n", "Epoch 231/1000\n", "13/13 - 0s - loss: 469.0876 - mean_absolute_error: 12.6310 - mean_absolute_percentage_error: 12.8551\n", "Epoch 232/1000\n", "13/13 - 0s - loss: 469.0316 - mean_absolute_error: 12.5981 - mean_absolute_percentage_error: 12.8525\n", "Epoch 233/1000\n", "13/13 - 0s - loss: 468.3581 - mean_absolute_error: 12.5700 - mean_absolute_percentage_error: 12.8066\n", "Epoch 234/1000\n", "13/13 - 0s - loss: 468.5559 - mean_absolute_error: 12.5878 - mean_absolute_percentage_error: 12.7599\n", "Epoch 235/1000\n", "13/13 - 0s - loss: 472.1300 - mean_absolute_error: 12.6574 - mean_absolute_percentage_error: 12.8952\n", "Epoch 236/1000\n", "13/13 - 0s - loss: 467.2559 - mean_absolute_error: 12.6986 - mean_absolute_percentage_error: 13.0299\n", "Epoch 237/1000\n", "13/13 - 0s - loss: 480.4188 - mean_absolute_error: 12.7155 - mean_absolute_percentage_error: 12.7769\n", "Epoch 238/1000\n", "13/13 - 0s - loss: 473.2374 - mean_absolute_error: 12.8448 - mean_absolute_percentage_error: 13.1207\n", "Epoch 239/1000\n", "13/13 - 0s - loss: 468.2318 - mean_absolute_error: 12.7035 - mean_absolute_percentage_error: 12.9684\n", "Epoch 240/1000\n", "13/13 - 0s - loss: 466.4967 - mean_absolute_error: 12.5468 - mean_absolute_percentage_error: 12.7726\n", "Epoch 241/1000\n", "13/13 - 0s - loss: 466.5006 - mean_absolute_error: 12.6160 - mean_absolute_percentage_error: 12.8492\n", "Epoch 242/1000\n", "13/13 - 0s - loss: 464.0511 - mean_absolute_error: 12.5585 - mean_absolute_percentage_error: 12.7860\n", "Epoch 243/1000\n", "13/13 - 0s - loss: 468.5371 - mean_absolute_error: 12.6654 - mean_absolute_percentage_error: 12.8686\n", "Epoch 244/1000\n", "13/13 - 0s - loss: 465.4608 - mean_absolute_error: 12.6509 - mean_absolute_percentage_error: 12.9666\n", "Epoch 245/1000\n", "13/13 - 0s - loss: 472.3359 - mean_absolute_error: 12.7081 - mean_absolute_percentage_error: 12.9243\n", "Epoch 246/1000\n", "13/13 - 0s - loss: 475.9432 - mean_absolute_error: 12.8417 - mean_absolute_percentage_error: 13.0451\n", "Epoch 247/1000\n", "13/13 - 0s - loss: 466.3263 - mean_absolute_error: 12.5317 - mean_absolute_percentage_error: 12.7698\n", "Epoch 248/1000\n", "13/13 - 0s - loss: 463.9555 - mean_absolute_error: 12.5794 - mean_absolute_percentage_error: 12.8231\n", "Epoch 249/1000\n", "13/13 - 0s - loss: 466.8095 - mean_absolute_error: 12.6096 - mean_absolute_percentage_error: 12.8538\n", "Epoch 250/1000\n", "13/13 - 0s - loss: 466.2811 - mean_absolute_error: 12.6537 - mean_absolute_percentage_error: 12.9151\n", "Epoch 251/1000\n", "13/13 - 0s - loss: 460.9413 - mean_absolute_error: 12.5221 - mean_absolute_percentage_error: 12.7904\n", "Epoch 252/1000\n", "13/13 - 0s - loss: 466.7609 - mean_absolute_error: 12.5932 - mean_absolute_percentage_error: 12.7901\n", "Epoch 253/1000\n", "13/13 - 0s - loss: 465.6845 - mean_absolute_error: 12.6373 - mean_absolute_percentage_error: 12.9306\n", "Epoch 254/1000\n", "13/13 - 0s - loss: 458.9380 - mean_absolute_error: 12.5095 - mean_absolute_percentage_error: 12.7733\n", "Epoch 255/1000\n", "13/13 - 0s - loss: 459.6940 - mean_absolute_error: 12.5103 - mean_absolute_percentage_error: 12.8024\n", "Epoch 256/1000\n", "13/13 - 0s - loss: 462.4422 - mean_absolute_error: 12.5185 - mean_absolute_percentage_error: 12.8043\n", "Epoch 257/1000\n", "13/13 - 0s - loss: 460.3936 - mean_absolute_error: 12.5437 - mean_absolute_percentage_error: 12.8593\n", "Epoch 258/1000\n", "13/13 - 0s - loss: 464.1327 - mean_absolute_error: 12.6474 - mean_absolute_percentage_error: 12.8606\n", "Epoch 259/1000\n", "13/13 - 0s - loss: 461.1656 - mean_absolute_error: 12.6506 - mean_absolute_percentage_error: 12.9581\n", "Epoch 260/1000\n", "13/13 - 0s - loss: 460.5437 - mean_absolute_error: 12.4505 - mean_absolute_percentage_error: 12.7305\n", "Epoch 261/1000\n", "13/13 - 0s - loss: 464.3062 - mean_absolute_error: 12.5482 - mean_absolute_percentage_error: 12.7555\n", "Epoch 262/1000\n", "13/13 - 0s - loss: 459.4864 - mean_absolute_error: 12.5734 - mean_absolute_percentage_error: 12.9223\n", "Epoch 263/1000\n", "13/13 - 0s - loss: 460.7520 - mean_absolute_error: 12.5237 - mean_absolute_percentage_error: 12.8001\n", "Epoch 264/1000\n", "13/13 - 0s - loss: 456.8634 - mean_absolute_error: 12.4711 - mean_absolute_percentage_error: 12.7355\n", "Epoch 265/1000\n", "13/13 - 0s - loss: 463.7895 - mean_absolute_error: 12.6920 - mean_absolute_percentage_error: 13.0549\n", "Epoch 266/1000\n", "13/13 - 0s - loss: 459.3670 - mean_absolute_error: 12.4443 - mean_absolute_percentage_error: 12.6564\n", "Epoch 267/1000\n", "13/13 - 0s - loss: 453.8303 - mean_absolute_error: 12.4150 - mean_absolute_percentage_error: 12.6836\n", "Epoch 268/1000\n", "13/13 - 0s - loss: 456.2568 - mean_absolute_error: 12.5555 - mean_absolute_percentage_error: 12.9177\n", "Epoch 269/1000\n", "13/13 - 0s - loss: 454.5345 - mean_absolute_error: 12.4685 - mean_absolute_percentage_error: 12.7883\n", "Epoch 270/1000\n", "13/13 - 0s - loss: 455.2695 - mean_absolute_error: 12.4721 - mean_absolute_percentage_error: 12.8123\n", "Epoch 271/1000\n", "13/13 - 0s - loss: 452.0010 - mean_absolute_error: 12.3615 - mean_absolute_percentage_error: 12.7187\n", "Epoch 272/1000\n", "13/13 - 0s - loss: 452.8384 - mean_absolute_error: 12.4029 - mean_absolute_percentage_error: 12.7130\n", "Epoch 273/1000\n", "13/13 - 0s - loss: 452.8369 - mean_absolute_error: 12.4752 - mean_absolute_percentage_error: 12.8048\n", "Epoch 274/1000\n", "13/13 - 0s - loss: 449.2690 - mean_absolute_error: 12.3782 - mean_absolute_percentage_error: 12.7152\n", "Epoch 275/1000\n", "13/13 - 0s - loss: 451.6993 - mean_absolute_error: 12.4000 - mean_absolute_percentage_error: 12.7513\n", "Epoch 276/1000\n", "13/13 - 0s - loss: 451.3517 - mean_absolute_error: 12.3932 - mean_absolute_percentage_error: 12.7073\n", "Epoch 277/1000\n", "13/13 - 0s - loss: 451.1111 - mean_absolute_error: 12.3753 - mean_absolute_percentage_error: 12.7367\n", "Epoch 278/1000\n", "13/13 - 0s - loss: 449.7075 - mean_absolute_error: 12.2787 - mean_absolute_percentage_error: 12.5719\n", "Epoch 279/1000\n", "13/13 - 0s - loss: 452.9120 - mean_absolute_error: 12.4855 - mean_absolute_percentage_error: 12.8636\n", "Epoch 280/1000\n", "13/13 - 0s - loss: 447.1674 - mean_absolute_error: 12.3529 - mean_absolute_percentage_error: 12.7994\n", "Epoch 281/1000\n", "13/13 - 0s - loss: 449.0269 - mean_absolute_error: 12.3327 - mean_absolute_percentage_error: 12.6852\n", "Epoch 282/1000\n", "13/13 - 0s - loss: 449.4147 - mean_absolute_error: 12.3801 - mean_absolute_percentage_error: 12.7359\n", "Epoch 283/1000\n", "13/13 - 0s - loss: 447.0533 - mean_absolute_error: 12.3427 - mean_absolute_percentage_error: 12.7617\n", "Epoch 284/1000\n", "13/13 - 0s - loss: 447.7479 - mean_absolute_error: 12.3918 - mean_absolute_percentage_error: 12.7856\n", "Epoch 285/1000\n", "13/13 - 0s - loss: 450.8637 - mean_absolute_error: 12.4272 - mean_absolute_percentage_error: 12.7554\n", "Epoch 286/1000\n", "13/13 - 0s - loss: 446.4858 - mean_absolute_error: 12.3189 - mean_absolute_percentage_error: 12.7039\n", "Epoch 287/1000\n", "13/13 - 0s - loss: 446.7758 - mean_absolute_error: 12.3527 - mean_absolute_percentage_error: 12.7895\n", "Epoch 288/1000\n", "13/13 - 0s - loss: 446.6930 - mean_absolute_error: 12.3516 - mean_absolute_percentage_error: 12.7265\n", "Epoch 289/1000\n", "13/13 - 0s - loss: 449.6686 - mean_absolute_error: 12.3524 - mean_absolute_percentage_error: 12.7084\n", "Epoch 290/1000\n", "13/13 - 0s - loss: 447.2883 - mean_absolute_error: 12.3976 - mean_absolute_percentage_error: 12.8293\n", "Epoch 291/1000\n", "13/13 - 0s - loss: 447.2669 - mean_absolute_error: 12.3599 - mean_absolute_percentage_error: 12.8099\n", "Epoch 292/1000\n", "13/13 - 0s - loss: 445.2499 - mean_absolute_error: 12.3520 - mean_absolute_percentage_error: 12.7495\n", "Epoch 293/1000\n", "13/13 - 0s - loss: 451.4928 - mean_absolute_error: 12.3779 - mean_absolute_percentage_error: 12.6700\n", "Epoch 294/1000\n", "13/13 - 0s - loss: 448.9490 - mean_absolute_error: 12.4853 - mean_absolute_percentage_error: 12.8559\n", "Epoch 295/1000\n", "13/13 - 0s - loss: 445.3922 - mean_absolute_error: 12.4051 - mean_absolute_percentage_error: 12.8699\n", "Epoch 296/1000\n", "13/13 - 0s - loss: 443.7124 - mean_absolute_error: 12.3774 - mean_absolute_percentage_error: 12.8205\n", "Epoch 297/1000\n", "13/13 - 0s - loss: 443.6237 - mean_absolute_error: 12.3645 - mean_absolute_percentage_error: 12.7392\n", "Epoch 298/1000\n", "13/13 - 0s - loss: 441.5387 - mean_absolute_error: 12.2772 - mean_absolute_percentage_error: 12.7302\n", "Epoch 299/1000\n", "13/13 - 0s - loss: 446.3504 - mean_absolute_error: 12.3729 - mean_absolute_percentage_error: 12.8052\n", "Epoch 300/1000\n", "13/13 - 0s - loss: 444.3576 - mean_absolute_error: 12.3898 - mean_absolute_percentage_error: 12.8170\n", "Epoch 301/1000\n", "13/13 - 0s - loss: 445.1643 - mean_absolute_error: 12.4265 - mean_absolute_percentage_error: 12.7979\n", "Epoch 302/1000\n", "13/13 - 0s - loss: 442.3760 - mean_absolute_error: 12.3163 - mean_absolute_percentage_error: 12.7670\n", "Epoch 303/1000\n", "13/13 - 0s - loss: 443.2356 - mean_absolute_error: 12.3329 - mean_absolute_percentage_error: 12.7640\n", "Epoch 304/1000\n", "13/13 - 0s - loss: 444.3709 - mean_absolute_error: 12.4097 - mean_absolute_percentage_error: 12.8660\n", "Epoch 305/1000\n", "13/13 - 0s - loss: 440.3172 - mean_absolute_error: 12.2392 - mean_absolute_percentage_error: 12.7382\n", "Epoch 306/1000\n", "13/13 - 0s - loss: 438.8603 - mean_absolute_error: 12.2008 - mean_absolute_percentage_error: 12.6121\n", "Epoch 307/1000\n", "13/13 - 0s - loss: 443.5577 - mean_absolute_error: 12.4049 - mean_absolute_percentage_error: 12.8870\n", "Epoch 308/1000\n", "13/13 - 0s - loss: 436.9437 - mean_absolute_error: 12.2796 - mean_absolute_percentage_error: 12.7961\n", "Epoch 309/1000\n", "13/13 - 0s - loss: 446.3799 - mean_absolute_error: 12.3215 - mean_absolute_percentage_error: 12.6908\n", "Epoch 310/1000\n", "13/13 - 0s - loss: 445.1508 - mean_absolute_error: 12.4771 - mean_absolute_percentage_error: 12.9230\n", "Epoch 311/1000\n", "13/13 - 0s - loss: 443.5291 - mean_absolute_error: 12.3213 - mean_absolute_percentage_error: 12.7847\n", "Epoch 312/1000\n", "13/13 - 0s - loss: 441.5943 - mean_absolute_error: 12.4048 - mean_absolute_percentage_error: 12.8679\n", "Epoch 313/1000\n", "13/13 - 0s - loss: 442.9413 - mean_absolute_error: 12.2813 - mean_absolute_percentage_error: 12.7088\n", "Epoch 314/1000\n", "13/13 - 0s - loss: 440.5330 - mean_absolute_error: 12.2522 - mean_absolute_percentage_error: 12.6926\n", "Epoch 315/1000\n", "13/13 - 0s - loss: 439.0862 - mean_absolute_error: 12.3234 - mean_absolute_percentage_error: 12.8011\n", "Epoch 316/1000\n", "13/13 - 0s - loss: 435.4766 - mean_absolute_error: 12.2395 - mean_absolute_percentage_error: 12.7364\n", "Epoch 317/1000\n", "13/13 - 0s - loss: 435.6559 - mean_absolute_error: 12.2112 - mean_absolute_percentage_error: 12.7584\n", "Epoch 318/1000\n", "13/13 - 0s - loss: 435.4037 - mean_absolute_error: 12.1660 - mean_absolute_percentage_error: 12.6360\n", "Epoch 319/1000\n", "13/13 - 0s - loss: 433.3854 - mean_absolute_error: 12.1600 - mean_absolute_percentage_error: 12.6004\n", "Epoch 320/1000\n", "13/13 - 0s - loss: 437.5375 - mean_absolute_error: 12.3192 - mean_absolute_percentage_error: 12.8553\n", "Epoch 321/1000\n", "13/13 - 0s - loss: 433.4386 - mean_absolute_error: 12.1386 - mean_absolute_percentage_error: 12.6132\n", "Epoch 322/1000\n", "13/13 - 0s - loss: 434.4897 - mean_absolute_error: 12.1421 - mean_absolute_percentage_error: 12.6154\n", "Epoch 323/1000\n", "13/13 - 0s - loss: 433.2291 - mean_absolute_error: 12.1667 - mean_absolute_percentage_error: 12.6765\n", "Epoch 324/1000\n", "13/13 - 0s - loss: 435.9229 - mean_absolute_error: 12.2310 - mean_absolute_percentage_error: 12.7449\n", "Epoch 325/1000\n", "13/13 - 0s - loss: 435.4741 - mean_absolute_error: 12.2471 - mean_absolute_percentage_error: 12.7515\n", "Epoch 326/1000\n", "13/13 - 0s - loss: 436.6560 - mean_absolute_error: 12.2205 - mean_absolute_percentage_error: 12.6835\n", "Epoch 327/1000\n", "13/13 - 0s - loss: 432.2663 - mean_absolute_error: 12.1795 - mean_absolute_percentage_error: 12.6757\n", "Epoch 328/1000\n", "13/13 - 0s - loss: 434.4219 - mean_absolute_error: 12.2200 - mean_absolute_percentage_error: 12.7567\n", "Epoch 329/1000\n", "13/13 - 0s - loss: 434.0881 - mean_absolute_error: 12.2113 - mean_absolute_percentage_error: 12.7171\n", "Epoch 330/1000\n", "13/13 - 0s - loss: 432.7718 - mean_absolute_error: 12.1944 - mean_absolute_percentage_error: 12.7238\n", "Epoch 331/1000\n", "13/13 - 0s - loss: 432.9524 - mean_absolute_error: 12.1005 - mean_absolute_percentage_error: 12.5567\n", "Epoch 332/1000\n", "13/13 - 0s - loss: 432.7847 - mean_absolute_error: 12.1082 - mean_absolute_percentage_error: 12.6171\n", "Epoch 333/1000\n", "13/13 - 0s - loss: 431.3965 - mean_absolute_error: 12.2290 - mean_absolute_percentage_error: 12.8123\n", "Epoch 334/1000\n", "13/13 - 0s - loss: 431.6549 - mean_absolute_error: 12.1678 - mean_absolute_percentage_error: 12.6403\n", "Epoch 335/1000\n", "13/13 - 0s - loss: 435.7601 - mean_absolute_error: 12.1192 - mean_absolute_percentage_error: 12.5857\n", "Epoch 336/1000\n", "13/13 - 0s - loss: 431.6119 - mean_absolute_error: 12.1883 - mean_absolute_percentage_error: 12.7313\n", "Epoch 337/1000\n", "13/13 - 0s - loss: 431.8085 - mean_absolute_error: 12.1365 - mean_absolute_percentage_error: 12.6303\n", "Epoch 338/1000\n", "13/13 - 0s - loss: 429.8746 - mean_absolute_error: 12.1255 - mean_absolute_percentage_error: 12.6304\n", "Epoch 339/1000\n", "13/13 - 0s - loss: 432.7043 - mean_absolute_error: 12.2267 - mean_absolute_percentage_error: 12.7653\n", "Epoch 340/1000\n", "13/13 - 0s - loss: 433.3038 - mean_absolute_error: 12.1504 - mean_absolute_percentage_error: 12.6362\n", "Epoch 341/1000\n", "13/13 - 0s - loss: 430.9252 - mean_absolute_error: 12.2142 - mean_absolute_percentage_error: 12.7509\n", "Epoch 342/1000\n", "13/13 - 0s - loss: 431.3374 - mean_absolute_error: 12.1140 - mean_absolute_percentage_error: 12.5827\n", "Epoch 343/1000\n", "13/13 - 0s - loss: 428.7845 - mean_absolute_error: 12.1188 - mean_absolute_percentage_error: 12.6880\n", "Epoch 344/1000\n", "13/13 - 0s - loss: 430.2752 - mean_absolute_error: 12.1198 - mean_absolute_percentage_error: 12.6252\n", "Epoch 345/1000\n", "13/13 - 0s - loss: 435.0140 - mean_absolute_error: 12.3088 - mean_absolute_percentage_error: 12.7716\n", "Epoch 346/1000\n", "13/13 - 0s - loss: 431.3159 - mean_absolute_error: 12.2374 - mean_absolute_percentage_error: 12.7815\n", "Epoch 347/1000\n", "13/13 - 0s - loss: 428.4481 - mean_absolute_error: 12.1192 - mean_absolute_percentage_error: 12.6508\n", "Epoch 348/1000\n", "13/13 - 0s - loss: 428.0173 - mean_absolute_error: 12.1309 - mean_absolute_percentage_error: 12.6642\n", "Epoch 349/1000\n", "13/13 - 0s - loss: 431.2542 - mean_absolute_error: 12.1776 - mean_absolute_percentage_error: 12.6563\n", "Epoch 350/1000\n", "13/13 - 0s - loss: 431.7249 - mean_absolute_error: 12.0856 - mean_absolute_percentage_error: 12.5501\n", "Epoch 351/1000\n", "13/13 - 0s - loss: 427.1788 - mean_absolute_error: 12.1206 - mean_absolute_percentage_error: 12.7222\n", "Epoch 352/1000\n", "13/13 - 0s - loss: 426.3975 - mean_absolute_error: 12.1217 - mean_absolute_percentage_error: 12.6605\n", "Epoch 353/1000\n", "13/13 - 0s - loss: 428.6539 - mean_absolute_error: 12.1178 - mean_absolute_percentage_error: 12.6198\n", "Epoch 354/1000\n", "13/13 - 0s - loss: 432.0725 - mean_absolute_error: 12.1406 - mean_absolute_percentage_error: 12.6457\n", "Epoch 355/1000\n", "13/13 - 0s - loss: 428.5241 - mean_absolute_error: 12.0913 - mean_absolute_percentage_error: 12.6244\n", "Epoch 356/1000\n", "13/13 - 0s - loss: 430.9943 - mean_absolute_error: 12.2372 - mean_absolute_percentage_error: 12.7477\n", "Epoch 357/1000\n", "13/13 - 0s - loss: 430.4146 - mean_absolute_error: 12.1346 - mean_absolute_percentage_error: 12.6175\n", "Epoch 358/1000\n", "13/13 - 0s - loss: 426.1328 - mean_absolute_error: 12.2197 - mean_absolute_percentage_error: 12.8104\n", "Epoch 359/1000\n", "13/13 - 0s - loss: 432.0252 - mean_absolute_error: 12.0927 - mean_absolute_percentage_error: 12.5965\n", "Epoch 360/1000\n", "13/13 - 0s - loss: 427.3438 - mean_absolute_error: 12.1446 - mean_absolute_percentage_error: 12.6656\n", "Epoch 361/1000\n", "13/13 - 0s - loss: 428.7632 - mean_absolute_error: 12.2096 - mean_absolute_percentage_error: 12.7540\n", "Epoch 362/1000\n", "13/13 - 0s - loss: 426.6405 - mean_absolute_error: 12.0846 - mean_absolute_percentage_error: 12.6616\n", "Epoch 363/1000\n", "13/13 - 0s - loss: 427.1561 - mean_absolute_error: 12.0357 - mean_absolute_percentage_error: 12.5595\n", "Epoch 364/1000\n", "13/13 - 0s - loss: 427.1922 - mean_absolute_error: 12.0899 - mean_absolute_percentage_error: 12.6042\n", "Epoch 365/1000\n", "13/13 - 0s - loss: 426.2296 - mean_absolute_error: 12.1842 - mean_absolute_percentage_error: 12.7905\n", "Epoch 366/1000\n", "13/13 - 0s - loss: 434.3116 - mean_absolute_error: 12.1173 - mean_absolute_percentage_error: 12.5730\n", "Epoch 367/1000\n", "13/13 - 0s - loss: 427.5799 - mean_absolute_error: 12.1416 - mean_absolute_percentage_error: 12.7056\n", "Epoch 368/1000\n", "13/13 - 0s - loss: 425.3054 - mean_absolute_error: 12.0511 - mean_absolute_percentage_error: 12.5907\n", "Epoch 369/1000\n", "13/13 - 0s - loss: 426.8798 - mean_absolute_error: 12.0927 - mean_absolute_percentage_error: 12.6441\n", "Epoch 370/1000\n", "13/13 - 0s - loss: 424.4882 - mean_absolute_error: 12.0360 - mean_absolute_percentage_error: 12.6236\n", "Epoch 371/1000\n", "13/13 - 0s - loss: 423.0153 - mean_absolute_error: 12.0557 - mean_absolute_percentage_error: 12.6192\n", "Epoch 372/1000\n", "13/13 - 0s - loss: 424.0534 - mean_absolute_error: 12.1319 - mean_absolute_percentage_error: 12.7129\n", "Epoch 373/1000\n", "13/13 - 0s - loss: 424.1599 - mean_absolute_error: 12.0092 - mean_absolute_percentage_error: 12.5474\n", "Epoch 374/1000\n", "13/13 - 0s - loss: 422.6250 - mean_absolute_error: 12.1161 - mean_absolute_percentage_error: 12.7171\n", "Epoch 375/1000\n", "13/13 - 0s - loss: 426.6268 - mean_absolute_error: 12.0596 - mean_absolute_percentage_error: 12.5865\n", "Epoch 376/1000\n", "13/13 - 0s - loss: 432.3851 - mean_absolute_error: 12.2811 - mean_absolute_percentage_error: 12.8088\n", "Epoch 377/1000\n", "13/13 - 0s - loss: 425.8726 - mean_absolute_error: 12.1244 - mean_absolute_percentage_error: 12.7046\n", "Epoch 378/1000\n", "13/13 - 0s - loss: 423.5388 - mean_absolute_error: 12.0029 - mean_absolute_percentage_error: 12.5420\n", "Epoch 379/1000\n", "13/13 - 0s - loss: 423.9855 - mean_absolute_error: 12.0756 - mean_absolute_percentage_error: 12.6551\n", "Epoch 380/1000\n", "13/13 - 0s - loss: 426.7162 - mean_absolute_error: 12.0929 - mean_absolute_percentage_error: 12.6138\n", "Epoch 381/1000\n", "13/13 - 0s - loss: 420.9671 - mean_absolute_error: 12.0012 - mean_absolute_percentage_error: 12.6126\n", "Epoch 382/1000\n", "13/13 - 0s - loss: 424.5152 - mean_absolute_error: 12.0701 - mean_absolute_percentage_error: 12.6369\n", "Epoch 383/1000\n", "13/13 - 0s - loss: 420.1474 - mean_absolute_error: 12.0175 - mean_absolute_percentage_error: 12.5775\n", "Epoch 384/1000\n", "13/13 - 0s - loss: 423.8651 - mean_absolute_error: 12.0252 - mean_absolute_percentage_error: 12.5520\n", "Epoch 385/1000\n", "13/13 - 0s - loss: 425.1813 - mean_absolute_error: 12.1408 - mean_absolute_percentage_error: 12.7504\n", "Epoch 386/1000\n", "13/13 - 0s - loss: 424.1230 - mean_absolute_error: 12.1376 - mean_absolute_percentage_error: 12.6865\n", "Epoch 387/1000\n", "13/13 - 0s - loss: 421.9528 - mean_absolute_error: 12.1113 - mean_absolute_percentage_error: 12.7373\n", "Epoch 388/1000\n", "13/13 - 0s - loss: 425.1730 - mean_absolute_error: 11.9760 - mean_absolute_percentage_error: 12.4918\n", "Epoch 389/1000\n", "13/13 - 0s - loss: 422.9383 - mean_absolute_error: 12.0523 - mean_absolute_percentage_error: 12.6443\n", "Epoch 390/1000\n", "13/13 - 0s - loss: 421.4926 - mean_absolute_error: 12.1054 - mean_absolute_percentage_error: 12.7285\n", "Epoch 391/1000\n", "13/13 - 0s - loss: 420.8449 - mean_absolute_error: 12.0528 - mean_absolute_percentage_error: 12.6458\n", "Epoch 392/1000\n", "13/13 - 0s - loss: 420.4140 - mean_absolute_error: 12.0447 - mean_absolute_percentage_error: 12.6081\n", "Epoch 393/1000\n", "13/13 - 0s - loss: 421.4208 - mean_absolute_error: 11.9910 - mean_absolute_percentage_error: 12.5395\n", "Epoch 394/1000\n", "13/13 - 0s - loss: 419.6586 - mean_absolute_error: 11.9863 - mean_absolute_percentage_error: 12.5533\n", "Epoch 395/1000\n", "13/13 - 0s - loss: 421.9319 - mean_absolute_error: 12.1207 - mean_absolute_percentage_error: 12.7105\n", "Epoch 396/1000\n", "13/13 - 0s - loss: 424.3781 - mean_absolute_error: 12.0943 - mean_absolute_percentage_error: 12.6029\n", "Epoch 397/1000\n", "13/13 - 0s - loss: 424.0708 - mean_absolute_error: 12.1816 - mean_absolute_percentage_error: 12.7698\n", "Epoch 398/1000\n", "13/13 - 0s - loss: 420.4525 - mean_absolute_error: 11.9982 - mean_absolute_percentage_error: 12.5948\n", "Epoch 399/1000\n", "13/13 - 0s - loss: 418.9371 - mean_absolute_error: 11.9453 - mean_absolute_percentage_error: 12.5093\n", "Epoch 400/1000\n", "13/13 - 0s - loss: 419.5039 - mean_absolute_error: 12.0105 - mean_absolute_percentage_error: 12.6071\n", "Epoch 401/1000\n", "13/13 - 0s - loss: 417.8398 - mean_absolute_error: 11.9817 - mean_absolute_percentage_error: 12.5809\n", "Epoch 402/1000\n", "13/13 - 0s - loss: 417.0167 - mean_absolute_error: 11.9664 - mean_absolute_percentage_error: 12.5771\n", "Epoch 403/1000\n", "13/13 - 0s - loss: 418.9957 - mean_absolute_error: 12.0262 - mean_absolute_percentage_error: 12.6045\n", "Epoch 404/1000\n", "13/13 - 0s - loss: 422.8282 - mean_absolute_error: 12.1380 - mean_absolute_percentage_error: 12.7110\n", "Epoch 405/1000\n", "13/13 - 0s - loss: 420.3360 - mean_absolute_error: 11.9725 - mean_absolute_percentage_error: 12.5218\n", "Epoch 406/1000\n", "13/13 - 0s - loss: 423.6665 - mean_absolute_error: 12.2126 - mean_absolute_percentage_error: 12.8145\n", "Epoch 407/1000\n", "13/13 - 0s - loss: 420.3656 - mean_absolute_error: 12.0536 - mean_absolute_percentage_error: 12.6530\n", "Epoch 408/1000\n", "13/13 - 0s - loss: 417.5995 - mean_absolute_error: 11.9983 - mean_absolute_percentage_error: 12.5855\n", "Epoch 409/1000\n", "13/13 - 0s - loss: 417.6521 - mean_absolute_error: 11.9851 - mean_absolute_percentage_error: 12.5941\n", "Epoch 410/1000\n", "13/13 - 0s - loss: 419.3703 - mean_absolute_error: 12.0200 - mean_absolute_percentage_error: 12.6206\n", "Epoch 411/1000\n", "13/13 - 0s - loss: 416.5469 - mean_absolute_error: 11.9655 - mean_absolute_percentage_error: 12.5855\n", "Epoch 412/1000\n", "13/13 - 0s - loss: 418.7945 - mean_absolute_error: 12.1008 - mean_absolute_percentage_error: 12.6918\n", "Epoch 413/1000\n", "13/13 - 0s - loss: 415.5088 - mean_absolute_error: 11.9459 - mean_absolute_percentage_error: 12.5637\n", "Epoch 414/1000\n", "13/13 - 0s - loss: 416.8658 - mean_absolute_error: 11.9434 - mean_absolute_percentage_error: 12.5503\n", "Epoch 415/1000\n", "13/13 - 0s - loss: 417.7662 - mean_absolute_error: 12.0410 - mean_absolute_percentage_error: 12.6352\n", "Epoch 416/1000\n", "13/13 - 0s - loss: 416.4220 - mean_absolute_error: 11.9437 - mean_absolute_percentage_error: 12.5711\n", "Epoch 417/1000\n", "13/13 - 0s - loss: 417.9090 - mean_absolute_error: 12.0353 - mean_absolute_percentage_error: 12.6224\n", "Epoch 418/1000\n", "13/13 - 0s - loss: 415.1443 - mean_absolute_error: 12.0047 - mean_absolute_percentage_error: 12.6165\n", "Epoch 419/1000\n", "13/13 - 0s - loss: 415.0113 - mean_absolute_error: 11.9077 - mean_absolute_percentage_error: 12.5219\n", "Epoch 420/1000\n", "13/13 - 0s - loss: 416.1752 - mean_absolute_error: 11.9516 - mean_absolute_percentage_error: 12.5717\n", "Epoch 421/1000\n", "13/13 - 0s - loss: 419.0813 - mean_absolute_error: 11.8880 - mean_absolute_percentage_error: 12.4615\n", "Epoch 422/1000\n", "13/13 - 0s - loss: 414.8416 - mean_absolute_error: 11.9586 - mean_absolute_percentage_error: 12.5852\n", "Epoch 423/1000\n", "13/13 - 0s - loss: 415.7653 - mean_absolute_error: 11.9923 - mean_absolute_percentage_error: 12.6398\n", "Epoch 424/1000\n", "13/13 - 0s - loss: 416.7589 - mean_absolute_error: 11.9720 - mean_absolute_percentage_error: 12.5688\n", "Epoch 425/1000\n", "13/13 - 0s - loss: 414.4948 - mean_absolute_error: 12.0156 - mean_absolute_percentage_error: 12.6861\n", "Epoch 426/1000\n", "13/13 - 0s - loss: 418.2061 - mean_absolute_error: 11.9308 - mean_absolute_percentage_error: 12.5377\n", "Epoch 427/1000\n", "13/13 - 0s - loss: 413.8765 - mean_absolute_error: 11.8980 - mean_absolute_percentage_error: 12.4743\n", "Epoch 428/1000\n", "13/13 - 0s - loss: 413.6489 - mean_absolute_error: 11.9802 - mean_absolute_percentage_error: 12.6283\n", "Epoch 429/1000\n", "13/13 - 0s - loss: 413.7198 - mean_absolute_error: 11.9280 - mean_absolute_percentage_error: 12.5693\n", "Epoch 430/1000\n", "13/13 - 0s - loss: 412.6855 - mean_absolute_error: 11.8955 - mean_absolute_percentage_error: 12.5296\n", "Epoch 431/1000\n", "13/13 - 0s - loss: 413.6727 - mean_absolute_error: 11.8855 - mean_absolute_percentage_error: 12.4975\n", "Epoch 432/1000\n", "13/13 - 0s - loss: 416.6144 - mean_absolute_error: 11.9694 - mean_absolute_percentage_error: 12.6063\n", "Epoch 433/1000\n", "13/13 - 0s - loss: 415.0888 - mean_absolute_error: 12.0366 - mean_absolute_percentage_error: 12.6768\n", "Epoch 434/1000\n", "13/13 - 0s - loss: 411.9078 - mean_absolute_error: 11.9421 - mean_absolute_percentage_error: 12.5948\n", "Epoch 435/1000\n", "13/13 - 0s - loss: 414.3206 - mean_absolute_error: 11.8888 - mean_absolute_percentage_error: 12.5213\n", "Epoch 436/1000\n", "13/13 - 0s - loss: 413.2494 - mean_absolute_error: 11.9245 - mean_absolute_percentage_error: 12.5557\n", "Epoch 437/1000\n", "13/13 - 0s - loss: 413.2299 - mean_absolute_error: 11.9103 - mean_absolute_percentage_error: 12.5436\n", "Epoch 438/1000\n", "13/13 - 0s - loss: 412.8557 - mean_absolute_error: 11.9050 - mean_absolute_percentage_error: 12.5661\n", "Epoch 439/1000\n", "13/13 - 0s - loss: 412.6595 - mean_absolute_error: 11.8681 - mean_absolute_percentage_error: 12.4971\n", "Epoch 440/1000\n", "13/13 - 0s - loss: 412.4824 - mean_absolute_error: 11.9697 - mean_absolute_percentage_error: 12.6156\n", "Epoch 441/1000\n", "13/13 - 0s - loss: 412.5836 - mean_absolute_error: 11.8834 - mean_absolute_percentage_error: 12.5235\n", "Epoch 442/1000\n", "13/13 - 0s - loss: 412.9341 - mean_absolute_error: 11.8400 - mean_absolute_percentage_error: 12.4548\n", "Epoch 443/1000\n", "13/13 - 0s - loss: 412.8098 - mean_absolute_error: 11.9138 - mean_absolute_percentage_error: 12.5614\n", "Epoch 444/1000\n", "13/13 - 0s - loss: 415.4454 - mean_absolute_error: 12.0540 - mean_absolute_percentage_error: 12.6655\n", "Epoch 445/1000\n", "13/13 - 0s - loss: 412.0962 - mean_absolute_error: 11.9357 - mean_absolute_percentage_error: 12.5901\n", "Epoch 446/1000\n", "13/13 - 0s - loss: 412.5525 - mean_absolute_error: 11.9241 - mean_absolute_percentage_error: 12.5833\n", "Epoch 447/1000\n", "13/13 - 0s - loss: 412.8480 - mean_absolute_error: 11.8946 - mean_absolute_percentage_error: 12.5421\n", "Epoch 448/1000\n", "13/13 - 0s - loss: 412.0866 - mean_absolute_error: 11.9028 - mean_absolute_percentage_error: 12.5210\n", "Epoch 449/1000\n", "13/13 - 0s - loss: 409.8691 - mean_absolute_error: 11.8538 - mean_absolute_percentage_error: 12.5300\n", "Epoch 450/1000\n", "13/13 - 0s - loss: 411.0534 - mean_absolute_error: 11.8993 - mean_absolute_percentage_error: 12.6076\n", "Epoch 451/1000\n", "13/13 - 0s - loss: 410.6710 - mean_absolute_error: 11.9227 - mean_absolute_percentage_error: 12.5754\n", "Epoch 452/1000\n", "13/13 - 0s - loss: 409.7558 - mean_absolute_error: 11.8367 - mean_absolute_percentage_error: 12.4765\n", "Epoch 453/1000\n", "13/13 - 0s - loss: 409.6194 - mean_absolute_error: 11.8531 - mean_absolute_percentage_error: 12.5094\n", "Epoch 454/1000\n", "13/13 - 0s - loss: 409.4490 - mean_absolute_error: 11.8623 - mean_absolute_percentage_error: 12.5288\n", "Epoch 455/1000\n", "13/13 - 0s - loss: 412.4577 - mean_absolute_error: 11.8465 - mean_absolute_percentage_error: 12.4581\n", "Epoch 456/1000\n", "13/13 - 0s - loss: 408.7739 - mean_absolute_error: 11.8530 - mean_absolute_percentage_error: 12.5287\n", "Epoch 457/1000\n", "13/13 - 0s - loss: 409.8109 - mean_absolute_error: 11.8824 - mean_absolute_percentage_error: 12.5449\n", "Epoch 458/1000\n", "13/13 - 0s - loss: 408.9757 - mean_absolute_error: 11.8193 - mean_absolute_percentage_error: 12.4695\n", "Epoch 459/1000\n", "13/13 - 0s - loss: 410.1229 - mean_absolute_error: 11.8810 - mean_absolute_percentage_error: 12.5306\n", "Epoch 460/1000\n", "13/13 - 0s - loss: 410.2135 - mean_absolute_error: 11.9127 - mean_absolute_percentage_error: 12.6036\n", "Epoch 461/1000\n", "13/13 - 0s - loss: 409.6582 - mean_absolute_error: 11.8368 - mean_absolute_percentage_error: 12.5130\n", "Epoch 462/1000\n", "13/13 - 0s - loss: 409.2724 - mean_absolute_error: 11.8392 - mean_absolute_percentage_error: 12.5030\n", "Epoch 463/1000\n", "13/13 - 0s - loss: 409.1904 - mean_absolute_error: 11.8459 - mean_absolute_percentage_error: 12.5050\n", "Epoch 464/1000\n", "13/13 - 0s - loss: 408.9219 - mean_absolute_error: 11.8410 - mean_absolute_percentage_error: 12.5026\n", "Epoch 465/1000\n", "13/13 - 0s - loss: 411.4264 - mean_absolute_error: 11.8363 - mean_absolute_percentage_error: 12.4801\n", "Epoch 466/1000\n", "13/13 - 0s - loss: 409.0594 - mean_absolute_error: 11.9041 - mean_absolute_percentage_error: 12.5554\n", "Epoch 467/1000\n", "13/13 - 0s - loss: 409.2744 - mean_absolute_error: 11.8706 - mean_absolute_percentage_error: 12.5569\n", "Epoch 468/1000\n", "13/13 - 0s - loss: 410.2125 - mean_absolute_error: 11.7988 - mean_absolute_percentage_error: 12.4347\n", "Epoch 469/1000\n", "13/13 - 0s - loss: 408.2437 - mean_absolute_error: 11.8570 - mean_absolute_percentage_error: 12.5347\n", "Epoch 470/1000\n", "13/13 - 0s - loss: 409.1985 - mean_absolute_error: 11.8287 - mean_absolute_percentage_error: 12.4894\n", "Epoch 471/1000\n", "13/13 - 0s - loss: 408.1160 - mean_absolute_error: 11.8162 - mean_absolute_percentage_error: 12.4977\n", "Epoch 472/1000\n", "13/13 - 0s - loss: 412.2443 - mean_absolute_error: 11.8850 - mean_absolute_percentage_error: 12.5324\n", "Epoch 473/1000\n", "13/13 - 0s - loss: 410.4485 - mean_absolute_error: 11.9479 - mean_absolute_percentage_error: 12.5858\n", "Epoch 474/1000\n", "13/13 - 0s - loss: 412.5911 - mean_absolute_error: 11.9340 - mean_absolute_percentage_error: 12.5529\n", "Epoch 475/1000\n", "13/13 - 0s - loss: 413.9974 - mean_absolute_error: 12.0131 - mean_absolute_percentage_error: 12.6955\n", "Epoch 476/1000\n", "13/13 - 0s - loss: 411.3481 - mean_absolute_error: 11.9360 - mean_absolute_percentage_error: 12.5518\n", "Epoch 477/1000\n", "13/13 - 0s - loss: 408.3725 - mean_absolute_error: 11.7841 - mean_absolute_percentage_error: 12.4446\n", "Epoch 478/1000\n", "13/13 - 0s - loss: 408.5160 - mean_absolute_error: 11.8607 - mean_absolute_percentage_error: 12.5047\n", "Epoch 479/1000\n", "13/13 - 0s - loss: 409.2385 - mean_absolute_error: 11.8890 - mean_absolute_percentage_error: 12.5306\n", "Epoch 480/1000\n", "13/13 - 0s - loss: 410.2919 - mean_absolute_error: 11.8078 - mean_absolute_percentage_error: 12.4363\n", "Epoch 481/1000\n", "13/13 - 0s - loss: 406.2271 - mean_absolute_error: 11.7903 - mean_absolute_percentage_error: 12.4692\n", "Epoch 482/1000\n", "13/13 - 0s - loss: 408.1197 - mean_absolute_error: 11.8682 - mean_absolute_percentage_error: 12.5088\n", "Epoch 483/1000\n", "13/13 - 0s - loss: 407.5062 - mean_absolute_error: 11.7867 - mean_absolute_percentage_error: 12.4097\n", "Epoch 484/1000\n", "13/13 - 0s - loss: 405.3882 - mean_absolute_error: 11.7551 - mean_absolute_percentage_error: 12.4115\n", "Epoch 485/1000\n", "13/13 - 0s - loss: 404.8477 - mean_absolute_error: 11.7391 - mean_absolute_percentage_error: 12.3622\n", "Epoch 486/1000\n", "13/13 - 0s - loss: 404.8660 - mean_absolute_error: 11.7438 - mean_absolute_percentage_error: 12.3298\n", "Epoch 487/1000\n", "13/13 - 0s - loss: 406.3628 - mean_absolute_error: 11.7292 - mean_absolute_percentage_error: 12.3386\n", "Epoch 488/1000\n", "13/13 - 0s - loss: 404.7527 - mean_absolute_error: 11.7057 - mean_absolute_percentage_error: 12.2928\n", "Epoch 489/1000\n", "13/13 - 0s - loss: 404.9182 - mean_absolute_error: 11.7680 - mean_absolute_percentage_error: 12.4012\n", "Epoch 490/1000\n", "13/13 - 0s - loss: 402.7046 - mean_absolute_error: 11.7075 - mean_absolute_percentage_error: 12.3381\n", "Epoch 491/1000\n", "13/13 - 0s - loss: 403.9696 - mean_absolute_error: 11.6581 - mean_absolute_percentage_error: 12.2410\n", "Epoch 492/1000\n", "13/13 - 0s - loss: 402.7599 - mean_absolute_error: 11.6260 - mean_absolute_percentage_error: 12.1880\n", "Epoch 493/1000\n", "13/13 - 0s - loss: 402.2086 - mean_absolute_error: 11.6785 - mean_absolute_percentage_error: 12.3042\n", "Epoch 494/1000\n", "13/13 - 0s - loss: 401.6055 - mean_absolute_error: 11.6581 - mean_absolute_percentage_error: 12.2638\n", "Epoch 495/1000\n", "13/13 - 0s - loss: 400.3457 - mean_absolute_error: 11.5991 - mean_absolute_percentage_error: 12.1955\n", "Epoch 496/1000\n", "13/13 - 0s - loss: 402.3124 - mean_absolute_error: 11.6100 - mean_absolute_percentage_error: 12.1766\n", "Epoch 497/1000\n", "13/13 - 0s - loss: 402.3036 - mean_absolute_error: 11.7141 - mean_absolute_percentage_error: 12.3303\n", "Epoch 498/1000\n", "13/13 - 0s - loss: 399.5263 - mean_absolute_error: 11.6980 - mean_absolute_percentage_error: 12.3344\n", "Epoch 499/1000\n", "13/13 - 0s - loss: 402.7471 - mean_absolute_error: 11.6329 - mean_absolute_percentage_error: 12.1810\n", "Epoch 500/1000\n", "13/13 - 0s - loss: 401.5591 - mean_absolute_error: 11.7205 - mean_absolute_percentage_error: 12.3447\n", "Epoch 501/1000\n", "13/13 - 0s - loss: 400.3222 - mean_absolute_error: 11.5965 - mean_absolute_percentage_error: 12.1874\n", "Epoch 502/1000\n", "13/13 - 0s - loss: 400.5070 - mean_absolute_error: 11.6815 - mean_absolute_percentage_error: 12.3165\n", "Epoch 503/1000\n", "13/13 - 0s - loss: 400.6719 - mean_absolute_error: 11.6439 - mean_absolute_percentage_error: 12.1985\n", "Epoch 504/1000\n", "13/13 - 0s - loss: 398.2557 - mean_absolute_error: 11.6153 - mean_absolute_percentage_error: 12.1871\n", "Epoch 505/1000\n", "13/13 - 0s - loss: 398.2492 - mean_absolute_error: 11.6438 - mean_absolute_percentage_error: 12.2652\n", "Epoch 506/1000\n", "13/13 - 0s - loss: 397.1644 - mean_absolute_error: 11.5568 - mean_absolute_percentage_error: 12.1601\n", "Epoch 507/1000\n", "13/13 - 0s - loss: 397.9029 - mean_absolute_error: 11.5867 - mean_absolute_percentage_error: 12.1537\n", "Epoch 508/1000\n", "13/13 - 0s - loss: 397.6815 - mean_absolute_error: 11.6157 - mean_absolute_percentage_error: 12.2041\n", "Epoch 509/1000\n", "13/13 - 0s - loss: 397.1190 - mean_absolute_error: 11.5738 - mean_absolute_percentage_error: 12.1847\n", "Epoch 510/1000\n", "13/13 - 0s - loss: 398.0490 - mean_absolute_error: 11.5255 - mean_absolute_percentage_error: 12.0797\n", "Epoch 511/1000\n", "13/13 - 0s - loss: 395.5604 - mean_absolute_error: 11.5280 - mean_absolute_percentage_error: 12.1401\n", "Epoch 512/1000\n", "13/13 - 0s - loss: 397.0879 - mean_absolute_error: 11.5896 - mean_absolute_percentage_error: 12.1658\n", "Epoch 513/1000\n", "13/13 - 0s - loss: 397.1346 - mean_absolute_error: 11.5462 - mean_absolute_percentage_error: 12.1123\n", "Epoch 514/1000\n", "13/13 - 0s - loss: 396.1802 - mean_absolute_error: 11.5532 - mean_absolute_percentage_error: 12.1504\n", "Epoch 515/1000\n", "13/13 - 0s - loss: 395.9593 - mean_absolute_error: 11.6045 - mean_absolute_percentage_error: 12.2301\n", "Epoch 516/1000\n", "13/13 - 0s - loss: 395.6547 - mean_absolute_error: 11.5558 - mean_absolute_percentage_error: 12.1306\n", "Epoch 517/1000\n", "13/13 - 0s - loss: 397.4572 - mean_absolute_error: 11.5457 - mean_absolute_percentage_error: 12.1050\n", "Epoch 518/1000\n", "13/13 - 0s - loss: 396.8264 - mean_absolute_error: 11.6016 - mean_absolute_percentage_error: 12.1831\n", "Epoch 519/1000\n", "13/13 - 0s - loss: 394.2421 - mean_absolute_error: 11.5452 - mean_absolute_percentage_error: 12.1236\n", "Epoch 520/1000\n", "13/13 - 0s - loss: 394.7950 - mean_absolute_error: 11.5502 - mean_absolute_percentage_error: 12.1511\n", "Epoch 521/1000\n", "13/13 - 0s - loss: 395.9553 - mean_absolute_error: 11.5201 - mean_absolute_percentage_error: 12.0514\n", "Epoch 522/1000\n", "13/13 - 0s - loss: 395.0056 - mean_absolute_error: 11.5413 - mean_absolute_percentage_error: 12.0748\n", "Epoch 523/1000\n", "13/13 - 0s - loss: 396.3539 - mean_absolute_error: 11.5620 - mean_absolute_percentage_error: 12.1854\n", "Epoch 524/1000\n", "13/13 - 0s - loss: 395.4290 - mean_absolute_error: 11.4971 - mean_absolute_percentage_error: 12.0643\n", "Epoch 525/1000\n", "13/13 - 0s - loss: 396.0446 - mean_absolute_error: 11.5214 - mean_absolute_percentage_error: 12.0592\n", "Epoch 526/1000\n", "13/13 - 0s - loss: 394.9500 - mean_absolute_error: 11.5208 - mean_absolute_percentage_error: 12.0614\n", "Epoch 527/1000\n", "13/13 - 0s - loss: 395.5226 - mean_absolute_error: 11.6045 - mean_absolute_percentage_error: 12.1731\n", "Epoch 528/1000\n", "13/13 - 0s - loss: 393.7043 - mean_absolute_error: 11.5015 - mean_absolute_percentage_error: 12.0716\n", "Epoch 529/1000\n", "13/13 - 0s - loss: 394.3950 - mean_absolute_error: 11.4941 - mean_absolute_percentage_error: 12.0865\n", "Epoch 530/1000\n", "13/13 - 0s - loss: 393.8698 - mean_absolute_error: 11.4819 - mean_absolute_percentage_error: 12.0547\n", "Epoch 531/1000\n", "13/13 - 0s - loss: 394.9804 - mean_absolute_error: 11.5072 - mean_absolute_percentage_error: 12.0448\n", "Epoch 532/1000\n", "13/13 - 0s - loss: 394.3686 - mean_absolute_error: 11.5432 - mean_absolute_percentage_error: 12.0969\n", "Epoch 533/1000\n", "13/13 - 0s - loss: 395.5732 - mean_absolute_error: 11.5165 - mean_absolute_percentage_error: 12.0850\n", "Epoch 534/1000\n", "13/13 - 0s - loss: 395.1144 - mean_absolute_error: 11.5554 - mean_absolute_percentage_error: 12.1677\n", "Epoch 535/1000\n", "13/13 - 0s - loss: 393.0063 - mean_absolute_error: 11.4669 - mean_absolute_percentage_error: 12.0592\n", "Epoch 536/1000\n", "13/13 - 0s - loss: 394.0858 - mean_absolute_error: 11.5407 - mean_absolute_percentage_error: 12.0976\n", "Epoch 537/1000\n", "13/13 - 0s - loss: 393.3807 - mean_absolute_error: 11.5612 - mean_absolute_percentage_error: 12.1380\n", "Epoch 538/1000\n", "13/13 - 0s - loss: 392.9891 - mean_absolute_error: 11.4929 - mean_absolute_percentage_error: 12.0675\n", "Epoch 539/1000\n", "13/13 - 0s - loss: 394.1691 - mean_absolute_error: 11.4307 - mean_absolute_percentage_error: 11.9929\n", "Epoch 540/1000\n", "13/13 - 0s - loss: 392.0036 - mean_absolute_error: 11.4311 - mean_absolute_percentage_error: 11.9693\n", "Epoch 541/1000\n", "13/13 - 0s - loss: 393.2103 - mean_absolute_error: 11.5170 - mean_absolute_percentage_error: 12.0729\n", "Epoch 542/1000\n", "13/13 - 0s - loss: 391.7026 - mean_absolute_error: 11.4609 - mean_absolute_percentage_error: 12.0298\n", "Epoch 543/1000\n", "13/13 - 0s - loss: 392.0204 - mean_absolute_error: 11.5149 - mean_absolute_percentage_error: 12.1229\n", "Epoch 544/1000\n", "13/13 - 0s - loss: 391.4854 - mean_absolute_error: 11.4106 - mean_absolute_percentage_error: 12.0045\n", "Epoch 545/1000\n", "13/13 - 0s - loss: 391.8098 - mean_absolute_error: 11.4561 - mean_absolute_percentage_error: 12.0195\n", "Epoch 546/1000\n", "13/13 - 0s - loss: 393.2914 - mean_absolute_error: 11.4832 - mean_absolute_percentage_error: 12.0193\n", "Epoch 547/1000\n", "13/13 - 0s - loss: 392.3300 - mean_absolute_error: 11.4333 - mean_absolute_percentage_error: 12.0130\n", "Epoch 548/1000\n", "13/13 - 0s - loss: 392.4113 - mean_absolute_error: 11.4701 - mean_absolute_percentage_error: 12.0315\n", "Epoch 549/1000\n", "13/13 - 0s - loss: 392.9607 - mean_absolute_error: 11.5223 - mean_absolute_percentage_error: 12.0903\n", "Epoch 550/1000\n", "13/13 - 0s - loss: 391.3287 - mean_absolute_error: 11.4578 - mean_absolute_percentage_error: 12.0305\n", "Epoch 551/1000\n", "13/13 - 0s - loss: 389.3974 - mean_absolute_error: 11.3874 - mean_absolute_percentage_error: 11.9757\n", "Epoch 552/1000\n", "13/13 - 0s - loss: 391.5204 - mean_absolute_error: 11.4860 - mean_absolute_percentage_error: 12.0739\n", "Epoch 553/1000\n", "13/13 - 0s - loss: 390.5748 - mean_absolute_error: 11.4435 - mean_absolute_percentage_error: 12.0186\n", "Epoch 554/1000\n", "13/13 - 0s - loss: 391.9024 - mean_absolute_error: 11.4116 - mean_absolute_percentage_error: 12.0211\n", "Epoch 555/1000\n", "13/13 - 0s - loss: 390.4011 - mean_absolute_error: 11.5004 - mean_absolute_percentage_error: 12.0958\n", "Epoch 556/1000\n", "13/13 - 0s - loss: 391.2487 - mean_absolute_error: 11.4074 - mean_absolute_percentage_error: 11.9670\n", "Epoch 557/1000\n", "13/13 - 0s - loss: 390.7792 - mean_absolute_error: 11.4232 - mean_absolute_percentage_error: 12.0015\n", "Epoch 558/1000\n", "13/13 - 0s - loss: 392.0808 - mean_absolute_error: 11.5512 - mean_absolute_percentage_error: 12.1495\n", "Epoch 559/1000\n", "13/13 - 0s - loss: 392.2695 - mean_absolute_error: 11.4154 - mean_absolute_percentage_error: 11.9803\n", "Epoch 560/1000\n", "13/13 - 0s - loss: 392.0866 - mean_absolute_error: 11.5406 - mean_absolute_percentage_error: 12.1156\n", "Epoch 561/1000\n", "13/13 - 0s - loss: 389.3039 - mean_absolute_error: 11.4209 - mean_absolute_percentage_error: 12.0461\n", "Epoch 562/1000\n", "13/13 - 0s - loss: 390.1351 - mean_absolute_error: 11.4341 - mean_absolute_percentage_error: 12.0297\n", "Epoch 563/1000\n", "13/13 - 0s - loss: 389.4803 - mean_absolute_error: 11.4017 - mean_absolute_percentage_error: 11.9754\n", "Epoch 564/1000\n", "13/13 - 0s - loss: 388.1857 - mean_absolute_error: 11.3776 - mean_absolute_percentage_error: 11.9637\n", "Epoch 565/1000\n", "13/13 - 0s - loss: 390.5411 - mean_absolute_error: 11.4705 - mean_absolute_percentage_error: 12.0321\n", "Epoch 566/1000\n", "13/13 - 0s - loss: 388.7760 - mean_absolute_error: 11.3824 - mean_absolute_percentage_error: 11.9690\n", "Epoch 567/1000\n", "13/13 - 0s - loss: 391.4604 - mean_absolute_error: 11.3873 - mean_absolute_percentage_error: 11.9574\n", "Epoch 568/1000\n", "13/13 - 0s - loss: 389.4977 - mean_absolute_error: 11.4670 - mean_absolute_percentage_error: 12.0656\n", "Epoch 569/1000\n", "13/13 - 0s - loss: 389.1742 - mean_absolute_error: 11.4649 - mean_absolute_percentage_error: 12.0727\n", "Epoch 570/1000\n", "13/13 - 0s - loss: 387.6246 - mean_absolute_error: 11.3844 - mean_absolute_percentage_error: 11.9847\n", "Epoch 571/1000\n", "13/13 - 0s - loss: 389.1191 - mean_absolute_error: 11.3527 - mean_absolute_percentage_error: 11.9168\n", "Epoch 572/1000\n", "13/13 - 0s - loss: 387.1858 - mean_absolute_error: 11.3784 - mean_absolute_percentage_error: 11.9637\n", "Epoch 573/1000\n", "13/13 - 0s - loss: 388.8805 - mean_absolute_error: 11.4307 - mean_absolute_percentage_error: 12.0291\n", "Epoch 574/1000\n", "13/13 - 0s - loss: 389.8057 - mean_absolute_error: 11.3782 - mean_absolute_percentage_error: 11.9521\n", "Epoch 575/1000\n", "13/13 - 0s - loss: 388.5407 - mean_absolute_error: 11.4010 - mean_absolute_percentage_error: 11.9792\n", "Epoch 576/1000\n", "13/13 - 0s - loss: 387.7442 - mean_absolute_error: 11.4135 - mean_absolute_percentage_error: 12.0403\n", "Epoch 577/1000\n", "13/13 - 0s - loss: 387.8985 - mean_absolute_error: 11.3781 - mean_absolute_percentage_error: 11.9944\n", "Epoch 578/1000\n", "13/13 - 0s - loss: 388.5639 - mean_absolute_error: 11.4255 - mean_absolute_percentage_error: 12.0169\n", "Epoch 579/1000\n", "13/13 - 0s - loss: 387.2716 - mean_absolute_error: 11.4329 - mean_absolute_percentage_error: 12.0389\n", "Epoch 580/1000\n", "13/13 - 0s - loss: 387.3894 - mean_absolute_error: 11.4112 - mean_absolute_percentage_error: 11.9925\n", "Epoch 581/1000\n", "13/13 - 0s - loss: 388.0859 - mean_absolute_error: 11.3247 - mean_absolute_percentage_error: 11.9052\n", "Epoch 582/1000\n", "13/13 - 0s - loss: 386.5807 - mean_absolute_error: 11.3907 - mean_absolute_percentage_error: 11.9680\n", "Epoch 583/1000\n", "13/13 - 0s - loss: 386.4463 - mean_absolute_error: 11.3990 - mean_absolute_percentage_error: 12.0374\n", "Epoch 584/1000\n", "13/13 - 0s - loss: 386.7399 - mean_absolute_error: 11.3361 - mean_absolute_percentage_error: 11.9461\n", "Epoch 585/1000\n", "13/13 - 0s - loss: 386.9524 - mean_absolute_error: 11.3807 - mean_absolute_percentage_error: 11.9925\n", "Epoch 586/1000\n", "13/13 - 0s - loss: 388.8630 - mean_absolute_error: 11.4378 - mean_absolute_percentage_error: 12.0076\n", "Epoch 587/1000\n", "13/13 - 0s - loss: 388.0345 - mean_absolute_error: 11.3869 - mean_absolute_percentage_error: 11.9630\n", "Epoch 588/1000\n", "13/13 - 0s - loss: 386.3453 - mean_absolute_error: 11.3981 - mean_absolute_percentage_error: 12.0024\n", "Epoch 589/1000\n", "13/13 - 0s - loss: 387.1868 - mean_absolute_error: 11.3230 - mean_absolute_percentage_error: 11.8995\n", "Epoch 590/1000\n", "13/13 - 0s - loss: 387.6793 - mean_absolute_error: 11.4452 - mean_absolute_percentage_error: 12.0884\n", "Epoch 591/1000\n", "13/13 - 0s - loss: 387.1184 - mean_absolute_error: 11.4492 - mean_absolute_percentage_error: 12.0714\n", "Epoch 592/1000\n", "13/13 - 0s - loss: 386.0021 - mean_absolute_error: 11.3215 - mean_absolute_percentage_error: 11.9029\n", "Epoch 593/1000\n", "13/13 - 0s - loss: 387.4334 - mean_absolute_error: 11.4064 - mean_absolute_percentage_error: 11.9757\n", "Epoch 594/1000\n", "13/13 - 0s - loss: 386.5630 - mean_absolute_error: 11.4643 - mean_absolute_percentage_error: 12.1011\n", "Epoch 595/1000\n", "13/13 - 0s - loss: 387.1562 - mean_absolute_error: 11.3718 - mean_absolute_percentage_error: 11.9666\n", "Epoch 596/1000\n", "13/13 - 0s - loss: 385.6318 - mean_absolute_error: 11.3110 - mean_absolute_percentage_error: 11.8951\n", "Epoch 597/1000\n", "13/13 - 0s - loss: 388.8904 - mean_absolute_error: 11.5210 - mean_absolute_percentage_error: 12.1322\n", "Epoch 598/1000\n", "13/13 - 0s - loss: 386.2661 - mean_absolute_error: 11.4243 - mean_absolute_percentage_error: 12.0444\n", "Epoch 599/1000\n", "13/13 - 0s - loss: 386.1207 - mean_absolute_error: 11.3976 - mean_absolute_percentage_error: 12.0153\n", "Epoch 600/1000\n", "13/13 - 0s - loss: 386.4650 - mean_absolute_error: 11.3383 - mean_absolute_percentage_error: 11.9045\n", "Epoch 601/1000\n", "13/13 - 0s - loss: 385.1771 - mean_absolute_error: 11.3115 - mean_absolute_percentage_error: 11.8757\n", "Epoch 602/1000\n", "13/13 - 0s - loss: 384.8161 - mean_absolute_error: 11.4020 - mean_absolute_percentage_error: 12.0211\n", "Epoch 603/1000\n", "13/13 - 0s - loss: 385.3417 - mean_absolute_error: 11.3655 - mean_absolute_percentage_error: 11.9589\n", "Epoch 604/1000\n", "13/13 - 0s - loss: 384.4327 - mean_absolute_error: 11.2665 - mean_absolute_percentage_error: 11.8712\n", "Epoch 605/1000\n", "13/13 - 0s - loss: 384.5326 - mean_absolute_error: 11.3465 - mean_absolute_percentage_error: 11.9738\n", "Epoch 606/1000\n", "13/13 - 0s - loss: 384.4012 - mean_absolute_error: 11.3864 - mean_absolute_percentage_error: 12.0286\n", "Epoch 607/1000\n", "13/13 - 0s - loss: 384.8027 - mean_absolute_error: 11.3838 - mean_absolute_percentage_error: 11.9815\n", "Epoch 608/1000\n", "13/13 - 0s - loss: 386.4172 - mean_absolute_error: 11.3999 - mean_absolute_percentage_error: 11.9656\n", "Epoch 609/1000\n", "13/13 - 0s - loss: 384.7673 - mean_absolute_error: 11.3734 - mean_absolute_percentage_error: 11.9730\n", "Epoch 610/1000\n", "13/13 - 0s - loss: 385.6833 - mean_absolute_error: 11.3392 - mean_absolute_percentage_error: 11.9434\n", "Epoch 611/1000\n", "13/13 - 0s - loss: 384.7587 - mean_absolute_error: 11.4031 - mean_absolute_percentage_error: 12.0432\n", "Epoch 612/1000\n", "13/13 - 0s - loss: 384.2700 - mean_absolute_error: 11.4321 - mean_absolute_percentage_error: 12.0573\n", "Epoch 613/1000\n", "13/13 - 0s - loss: 383.3143 - mean_absolute_error: 11.3047 - mean_absolute_percentage_error: 11.9003\n", "Epoch 614/1000\n", "13/13 - 0s - loss: 384.9365 - mean_absolute_error: 11.3094 - mean_absolute_percentage_error: 11.8917\n", "Epoch 615/1000\n", "13/13 - 0s - loss: 384.9736 - mean_absolute_error: 11.4195 - mean_absolute_percentage_error: 12.0544\n", "Epoch 616/1000\n", "13/13 - 0s - loss: 382.8224 - mean_absolute_error: 11.3455 - mean_absolute_percentage_error: 11.9772\n", "Epoch 617/1000\n", "13/13 - 0s - loss: 385.2912 - mean_absolute_error: 11.3298 - mean_absolute_percentage_error: 11.9213\n", "Epoch 618/1000\n", "13/13 - 0s - loss: 383.0661 - mean_absolute_error: 11.3183 - mean_absolute_percentage_error: 11.9077\n", "Epoch 619/1000\n", "13/13 - 0s - loss: 382.8314 - mean_absolute_error: 11.3423 - mean_absolute_percentage_error: 11.9890\n", "Epoch 620/1000\n", "13/13 - 0s - loss: 383.9340 - mean_absolute_error: 11.3739 - mean_absolute_percentage_error: 12.0182\n", "Epoch 621/1000\n", "13/13 - 0s - loss: 384.3107 - mean_absolute_error: 11.3297 - mean_absolute_percentage_error: 11.9426\n", "Epoch 622/1000\n", "13/13 - 0s - loss: 382.1641 - mean_absolute_error: 11.3345 - mean_absolute_percentage_error: 11.9693\n", "Epoch 623/1000\n", "13/13 - 0s - loss: 382.1649 - mean_absolute_error: 11.3337 - mean_absolute_percentage_error: 11.9401\n", "Epoch 624/1000\n", "13/13 - 0s - loss: 382.0675 - mean_absolute_error: 11.3188 - mean_absolute_percentage_error: 11.9514\n", "Epoch 625/1000\n", "13/13 - 0s - loss: 382.6204 - mean_absolute_error: 11.2489 - mean_absolute_percentage_error: 11.8818\n", "Epoch 626/1000\n", "13/13 - 0s - loss: 385.2655 - mean_absolute_error: 11.3590 - mean_absolute_percentage_error: 11.9904\n", "Epoch 627/1000\n", "13/13 - 0s - loss: 382.3189 - mean_absolute_error: 11.3657 - mean_absolute_percentage_error: 11.9907\n", "Epoch 628/1000\n", "13/13 - 0s - loss: 381.9502 - mean_absolute_error: 11.3369 - mean_absolute_percentage_error: 11.9390\n", "Epoch 629/1000\n", "13/13 - 0s - loss: 381.2953 - mean_absolute_error: 11.2925 - mean_absolute_percentage_error: 11.8849\n", "Epoch 630/1000\n", "13/13 - 0s - loss: 381.8824 - mean_absolute_error: 11.2578 - mean_absolute_percentage_error: 11.8738\n", "Epoch 631/1000\n", "13/13 - 0s - loss: 382.0545 - mean_absolute_error: 11.2862 - mean_absolute_percentage_error: 11.8893\n", "Epoch 632/1000\n", "13/13 - 0s - loss: 383.5830 - mean_absolute_error: 11.4162 - mean_absolute_percentage_error: 12.0462\n", "Epoch 633/1000\n", "13/13 - 0s - loss: 381.7707 - mean_absolute_error: 11.2682 - mean_absolute_percentage_error: 11.8831\n", "Epoch 634/1000\n", "13/13 - 0s - loss: 383.4155 - mean_absolute_error: 11.3583 - mean_absolute_percentage_error: 11.9700\n", "Epoch 635/1000\n", "13/13 - 0s - loss: 383.0373 - mean_absolute_error: 11.4024 - mean_absolute_percentage_error: 12.0267\n", "Epoch 636/1000\n", "13/13 - 0s - loss: 383.5828 - mean_absolute_error: 11.3749 - mean_absolute_percentage_error: 11.9855\n", "Epoch 637/1000\n", "13/13 - 0s - loss: 382.3245 - mean_absolute_error: 11.2975 - mean_absolute_percentage_error: 11.9042\n", "Epoch 638/1000\n", "13/13 - 0s - loss: 381.3340 - mean_absolute_error: 11.2921 - mean_absolute_percentage_error: 11.9020\n", "Epoch 639/1000\n", "13/13 - 0s - loss: 381.6431 - mean_absolute_error: 11.3276 - mean_absolute_percentage_error: 11.9478\n", "Epoch 640/1000\n", "13/13 - 0s - loss: 381.4355 - mean_absolute_error: 11.2888 - mean_absolute_percentage_error: 11.9074\n", "Epoch 641/1000\n", "13/13 - 0s - loss: 379.4893 - mean_absolute_error: 11.1965 - mean_absolute_percentage_error: 11.8267\n", "Epoch 642/1000\n", "13/13 - 0s - loss: 382.8273 - mean_absolute_error: 11.3878 - mean_absolute_percentage_error: 12.0823\n", "Epoch 643/1000\n", "13/13 - 0s - loss: 380.5880 - mean_absolute_error: 11.3166 - mean_absolute_percentage_error: 11.9305\n", "Epoch 644/1000\n", "13/13 - 0s - loss: 380.9896 - mean_absolute_error: 11.2626 - mean_absolute_percentage_error: 11.8356\n", "Epoch 645/1000\n", "13/13 - 0s - loss: 381.9717 - mean_absolute_error: 11.3087 - mean_absolute_percentage_error: 11.9381\n", "Epoch 646/1000\n", "13/13 - 0s - loss: 380.4502 - mean_absolute_error: 11.2886 - mean_absolute_percentage_error: 11.9045\n", "Epoch 647/1000\n", "13/13 - 0s - loss: 381.0085 - mean_absolute_error: 11.3373 - mean_absolute_percentage_error: 11.9557\n", "Epoch 648/1000\n", "13/13 - 0s - loss: 379.7002 - mean_absolute_error: 11.2404 - mean_absolute_percentage_error: 11.8805\n", "Epoch 649/1000\n", "13/13 - 0s - loss: 379.8648 - mean_absolute_error: 11.3106 - mean_absolute_percentage_error: 11.9658\n", "Epoch 650/1000\n", "13/13 - 0s - loss: 380.6757 - mean_absolute_error: 11.2877 - mean_absolute_percentage_error: 11.8828\n", "Epoch 651/1000\n", "13/13 - 0s - loss: 382.0331 - mean_absolute_error: 11.3114 - mean_absolute_percentage_error: 11.9321\n", "Epoch 652/1000\n", "13/13 - 0s - loss: 382.8277 - mean_absolute_error: 11.3822 - mean_absolute_percentage_error: 12.0024\n", "Epoch 653/1000\n", "13/13 - 0s - loss: 380.7734 - mean_absolute_error: 11.3858 - mean_absolute_percentage_error: 12.0131\n", "Epoch 654/1000\n", "13/13 - 0s - loss: 380.3890 - mean_absolute_error: 11.3178 - mean_absolute_percentage_error: 11.9616\n", "Epoch 655/1000\n", "13/13 - 0s - loss: 381.1183 - mean_absolute_error: 11.2597 - mean_absolute_percentage_error: 11.8270\n", "Epoch 656/1000\n", "13/13 - 0s - loss: 379.8987 - mean_absolute_error: 11.3324 - mean_absolute_percentage_error: 11.9794\n", "Epoch 657/1000\n", "13/13 - 0s - loss: 379.0110 - mean_absolute_error: 11.2407 - mean_absolute_percentage_error: 11.8800\n", "Epoch 658/1000\n", "13/13 - 0s - loss: 381.7084 - mean_absolute_error: 11.2671 - mean_absolute_percentage_error: 11.8418\n", "Epoch 659/1000\n", "13/13 - 0s - loss: 382.9890 - mean_absolute_error: 11.3859 - mean_absolute_percentage_error: 11.9826\n", "Epoch 660/1000\n", "13/13 - 0s - loss: 380.0331 - mean_absolute_error: 11.2683 - mean_absolute_percentage_error: 11.8562\n", "Epoch 661/1000\n", "13/13 - 0s - loss: 380.9023 - mean_absolute_error: 11.3324 - mean_absolute_percentage_error: 11.9375\n", "Epoch 662/1000\n", "13/13 - 0s - loss: 380.1284 - mean_absolute_error: 11.3718 - mean_absolute_percentage_error: 12.0480\n", "Epoch 663/1000\n", "13/13 - 0s - loss: 378.2838 - mean_absolute_error: 11.2634 - mean_absolute_percentage_error: 11.9215\n", "Epoch 664/1000\n", "13/13 - 0s - loss: 380.0701 - mean_absolute_error: 11.2842 - mean_absolute_percentage_error: 11.9059\n", "Epoch 665/1000\n", "13/13 - 0s - loss: 378.2037 - mean_absolute_error: 11.2540 - mean_absolute_percentage_error: 11.8882\n", "Epoch 666/1000\n", "13/13 - 0s - loss: 379.8353 - mean_absolute_error: 11.2372 - mean_absolute_percentage_error: 11.8423\n", "Epoch 667/1000\n", "13/13 - 0s - loss: 378.1283 - mean_absolute_error: 11.2493 - mean_absolute_percentage_error: 11.9038\n", "Epoch 668/1000\n", "13/13 - 0s - loss: 378.4315 - mean_absolute_error: 11.3116 - mean_absolute_percentage_error: 11.9888\n", "Epoch 669/1000\n", "13/13 - 0s - loss: 378.5614 - mean_absolute_error: 11.2697 - mean_absolute_percentage_error: 11.8619\n", "Epoch 670/1000\n", "13/13 - 0s - loss: 379.0686 - mean_absolute_error: 11.1880 - mean_absolute_percentage_error: 11.8199\n", "Epoch 671/1000\n", "13/13 - 0s - loss: 380.3371 - mean_absolute_error: 11.3041 - mean_absolute_percentage_error: 11.9138\n", "Epoch 672/1000\n", "13/13 - 0s - loss: 378.1485 - mean_absolute_error: 11.2887 - mean_absolute_percentage_error: 11.9471\n", "Epoch 673/1000\n", "13/13 - 0s - loss: 378.3685 - mean_absolute_error: 11.1969 - mean_absolute_percentage_error: 11.8560\n", "Epoch 674/1000\n", "13/13 - 0s - loss: 376.9416 - mean_absolute_error: 11.1691 - mean_absolute_percentage_error: 11.7821\n", "Epoch 675/1000\n", "13/13 - 0s - loss: 379.5758 - mean_absolute_error: 11.3061 - mean_absolute_percentage_error: 11.9847\n", "Epoch 676/1000\n", "13/13 - 0s - loss: 377.7624 - mean_absolute_error: 11.2699 - mean_absolute_percentage_error: 11.9290\n", "Epoch 677/1000\n", "13/13 - 0s - loss: 377.7310 - mean_absolute_error: 11.2592 - mean_absolute_percentage_error: 11.8648\n", "Epoch 678/1000\n", "13/13 - 0s - loss: 377.7567 - mean_absolute_error: 11.2573 - mean_absolute_percentage_error: 11.8750\n", "Epoch 679/1000\n", "13/13 - 0s - loss: 376.0319 - mean_absolute_error: 11.2031 - mean_absolute_percentage_error: 11.8447\n", "Epoch 680/1000\n", "13/13 - 0s - loss: 377.6140 - mean_absolute_error: 11.2150 - mean_absolute_percentage_error: 11.8297\n", "Epoch 681/1000\n", "13/13 - 0s - loss: 379.2241 - mean_absolute_error: 11.2481 - mean_absolute_percentage_error: 11.8661\n", "Epoch 682/1000\n", "13/13 - 0s - loss: 377.9804 - mean_absolute_error: 11.2459 - mean_absolute_percentage_error: 11.8558\n", "Epoch 683/1000\n", "13/13 - 0s - loss: 377.7537 - mean_absolute_error: 11.2796 - mean_absolute_percentage_error: 11.9114\n", "Epoch 684/1000\n", "13/13 - 0s - loss: 376.7826 - mean_absolute_error: 11.2199 - mean_absolute_percentage_error: 11.8660\n", "Epoch 685/1000\n", "13/13 - 0s - loss: 377.0853 - mean_absolute_error: 11.1965 - mean_absolute_percentage_error: 11.8482\n", "Epoch 686/1000\n", "13/13 - 0s - loss: 376.4417 - mean_absolute_error: 11.1881 - mean_absolute_percentage_error: 11.8453\n", "Epoch 687/1000\n", "13/13 - 0s - loss: 375.2855 - mean_absolute_error: 11.1854 - mean_absolute_percentage_error: 11.8324\n", "Epoch 688/1000\n", "13/13 - 0s - loss: 377.8888 - mean_absolute_error: 11.2577 - mean_absolute_percentage_error: 11.8771\n", "Epoch 689/1000\n", "13/13 - 0s - loss: 378.8543 - mean_absolute_error: 11.2891 - mean_absolute_percentage_error: 11.8809\n", "Epoch 690/1000\n", "13/13 - 0s - loss: 375.6409 - mean_absolute_error: 11.2093 - mean_absolute_percentage_error: 11.8372\n", "Epoch 691/1000\n", "13/13 - 0s - loss: 376.8820 - mean_absolute_error: 11.2048 - mean_absolute_percentage_error: 11.8623\n", "Epoch 692/1000\n", "13/13 - 0s - loss: 377.3102 - mean_absolute_error: 11.1951 - mean_absolute_percentage_error: 11.8217\n", "Epoch 693/1000\n", "13/13 - 0s - loss: 376.7316 - mean_absolute_error: 11.2343 - mean_absolute_percentage_error: 11.8445\n", "Epoch 694/1000\n", "13/13 - 0s - loss: 375.9599 - mean_absolute_error: 11.2155 - mean_absolute_percentage_error: 11.8726\n", "Epoch 695/1000\n", "13/13 - 0s - loss: 377.8578 - mean_absolute_error: 11.1938 - mean_absolute_percentage_error: 11.8084\n", "Epoch 696/1000\n", "13/13 - 0s - loss: 375.7491 - mean_absolute_error: 11.2120 - mean_absolute_percentage_error: 11.8491\n", "Epoch 697/1000\n", "13/13 - 0s - loss: 375.6649 - mean_absolute_error: 11.1961 - mean_absolute_percentage_error: 11.8452\n", "Epoch 698/1000\n", "13/13 - 0s - loss: 377.0182 - mean_absolute_error: 11.2540 - mean_absolute_percentage_error: 11.8763\n", "Epoch 699/1000\n", "13/13 - 0s - loss: 376.2435 - mean_absolute_error: 11.1894 - mean_absolute_percentage_error: 11.8284\n", "Epoch 700/1000\n", "13/13 - 0s - loss: 375.5583 - mean_absolute_error: 11.1899 - mean_absolute_percentage_error: 11.7821\n", "Epoch 701/1000\n", "13/13 - 0s - loss: 375.6108 - mean_absolute_error: 11.2289 - mean_absolute_percentage_error: 11.8597\n", "Epoch 702/1000\n", "13/13 - 0s - loss: 374.8450 - mean_absolute_error: 11.1702 - mean_absolute_percentage_error: 11.8024\n", "Epoch 703/1000\n", "13/13 - 0s - loss: 376.6058 - mean_absolute_error: 11.1887 - mean_absolute_percentage_error: 11.8514\n", "Epoch 704/1000\n", "13/13 - 0s - loss: 375.1604 - mean_absolute_error: 11.1339 - mean_absolute_percentage_error: 11.7732\n", "Epoch 705/1000\n", "13/13 - 0s - loss: 375.7577 - mean_absolute_error: 11.1963 - mean_absolute_percentage_error: 11.8090\n", "Epoch 706/1000\n", "13/13 - 0s - loss: 374.9407 - mean_absolute_error: 11.2236 - mean_absolute_percentage_error: 11.8632\n", "Epoch 707/1000\n", "13/13 - 0s - loss: 374.8935 - mean_absolute_error: 11.1495 - mean_absolute_percentage_error: 11.8223\n", "Epoch 708/1000\n", "13/13 - 0s - loss: 376.1502 - mean_absolute_error: 11.1211 - mean_absolute_percentage_error: 11.7362\n", "Epoch 709/1000\n", "13/13 - 0s - loss: 375.9211 - mean_absolute_error: 11.2059 - mean_absolute_percentage_error: 11.7920\n", "Epoch 710/1000\n", "13/13 - 0s - loss: 374.9158 - mean_absolute_error: 11.1884 - mean_absolute_percentage_error: 11.7982\n", "Epoch 711/1000\n", "13/13 - 0s - loss: 374.7072 - mean_absolute_error: 11.1231 - mean_absolute_percentage_error: 11.7657\n", "Epoch 712/1000\n", "13/13 - 0s - loss: 373.7880 - mean_absolute_error: 11.1447 - mean_absolute_percentage_error: 11.7822\n", "Epoch 713/1000\n", "13/13 - 0s - loss: 373.2920 - mean_absolute_error: 11.1368 - mean_absolute_percentage_error: 11.7522\n", "Epoch 714/1000\n", "13/13 - 0s - loss: 371.9253 - mean_absolute_error: 11.1082 - mean_absolute_percentage_error: 11.7627\n", "Epoch 715/1000\n", "13/13 - 0s - loss: 372.9055 - mean_absolute_error: 11.1931 - mean_absolute_percentage_error: 11.8785\n", "Epoch 716/1000\n", "13/13 - 0s - loss: 372.3782 - mean_absolute_error: 11.1859 - mean_absolute_percentage_error: 11.8401\n", "Epoch 717/1000\n", "13/13 - 0s - loss: 375.1768 - mean_absolute_error: 11.2467 - mean_absolute_percentage_error: 11.8959\n", "Epoch 718/1000\n", "13/13 - 0s - loss: 370.5179 - mean_absolute_error: 11.1088 - mean_absolute_percentage_error: 11.7330\n", "Epoch 719/1000\n", "13/13 - 0s - loss: 372.9463 - mean_absolute_error: 11.1374 - mean_absolute_percentage_error: 11.7264\n", "Epoch 720/1000\n", "13/13 - 0s - loss: 372.9307 - mean_absolute_error: 11.1945 - mean_absolute_percentage_error: 11.8578\n", "Epoch 721/1000\n", "13/13 - 0s - loss: 371.5629 - mean_absolute_error: 11.1601 - mean_absolute_percentage_error: 11.8052\n", "Epoch 722/1000\n", "13/13 - 0s - loss: 371.3785 - mean_absolute_error: 11.1185 - mean_absolute_percentage_error: 11.7429\n", "Epoch 723/1000\n", "13/13 - 0s - loss: 374.1333 - mean_absolute_error: 11.1601 - mean_absolute_percentage_error: 11.7452\n", "Epoch 724/1000\n", "13/13 - 0s - loss: 372.9739 - mean_absolute_error: 11.2368 - mean_absolute_percentage_error: 11.8959\n", "Epoch 725/1000\n", "13/13 - 0s - loss: 371.0180 - mean_absolute_error: 11.1837 - mean_absolute_percentage_error: 11.8290\n", "Epoch 726/1000\n", "13/13 - 0s - loss: 374.0226 - mean_absolute_error: 11.1181 - mean_absolute_percentage_error: 11.6971\n", "Epoch 727/1000\n", "13/13 - 0s - loss: 370.0493 - mean_absolute_error: 11.0863 - mean_absolute_percentage_error: 11.7099\n", "Epoch 728/1000\n", "13/13 - 0s - loss: 372.0991 - mean_absolute_error: 11.1991 - mean_absolute_percentage_error: 11.8424\n", "Epoch 729/1000\n", "13/13 - 0s - loss: 370.8665 - mean_absolute_error: 11.1703 - mean_absolute_percentage_error: 11.8371\n", "Epoch 730/1000\n", "13/13 - 0s - loss: 373.1395 - mean_absolute_error: 11.1155 - mean_absolute_percentage_error: 11.7449\n", "Epoch 731/1000\n", "13/13 - 0s - loss: 370.2910 - mean_absolute_error: 11.0708 - mean_absolute_percentage_error: 11.6906\n", "Epoch 732/1000\n", "13/13 - 0s - loss: 371.2637 - mean_absolute_error: 11.1886 - mean_absolute_percentage_error: 11.8322\n", "Epoch 733/1000\n", "13/13 - 0s - loss: 371.9478 - mean_absolute_error: 11.2424 - mean_absolute_percentage_error: 11.9200\n", "Epoch 734/1000\n", "13/13 - 0s - loss: 371.9152 - mean_absolute_error: 11.1321 - mean_absolute_percentage_error: 11.7529\n", "Epoch 735/1000\n", "13/13 - 0s - loss: 370.1636 - mean_absolute_error: 11.1342 - mean_absolute_percentage_error: 11.7873\n", "Epoch 736/1000\n", "13/13 - 0s - loss: 370.0885 - mean_absolute_error: 11.1023 - mean_absolute_percentage_error: 11.7346\n", "Epoch 737/1000\n", "13/13 - 0s - loss: 370.3069 - mean_absolute_error: 11.1042 - mean_absolute_percentage_error: 11.7501\n", "Epoch 738/1000\n", "13/13 - 0s - loss: 369.9632 - mean_absolute_error: 11.1309 - mean_absolute_percentage_error: 11.7991\n", "Epoch 739/1000\n", "13/13 - 0s - loss: 372.2918 - mean_absolute_error: 11.1994 - mean_absolute_percentage_error: 11.8183\n", "Epoch 740/1000\n", "13/13 - 0s - loss: 370.4397 - mean_absolute_error: 11.1251 - mean_absolute_percentage_error: 11.7879\n", "Epoch 741/1000\n", "13/13 - 0s - loss: 371.0245 - mean_absolute_error: 11.1804 - mean_absolute_percentage_error: 11.8298\n", "Epoch 742/1000\n", "13/13 - 0s - loss: 371.2759 - mean_absolute_error: 11.0868 - mean_absolute_percentage_error: 11.6762\n", "Epoch 743/1000\n", "13/13 - 0s - loss: 371.2964 - mean_absolute_error: 11.1196 - mean_absolute_percentage_error: 11.7904\n", "Epoch 744/1000\n", "13/13 - 0s - loss: 369.3210 - mean_absolute_error: 11.1789 - mean_absolute_percentage_error: 11.8677\n", "Epoch 745/1000\n", "13/13 - 0s - loss: 370.3783 - mean_absolute_error: 11.1662 - mean_absolute_percentage_error: 11.8022\n", "Epoch 746/1000\n", "13/13 - 0s - loss: 371.3637 - mean_absolute_error: 11.1803 - mean_absolute_percentage_error: 11.8637\n", "Epoch 747/1000\n", "13/13 - 0s - loss: 369.2684 - mean_absolute_error: 11.0836 - mean_absolute_percentage_error: 11.7188\n", "Epoch 748/1000\n", "13/13 - 0s - loss: 369.2724 - mean_absolute_error: 11.1066 - mean_absolute_percentage_error: 11.7313\n", "Epoch 749/1000\n", "13/13 - 0s - loss: 369.6543 - mean_absolute_error: 11.0916 - mean_absolute_percentage_error: 11.7279\n", "Epoch 750/1000\n", "13/13 - 0s - loss: 370.2114 - mean_absolute_error: 11.0966 - mean_absolute_percentage_error: 11.6964\n", "Epoch 751/1000\n", "13/13 - 0s - loss: 369.1985 - mean_absolute_error: 11.1386 - mean_absolute_percentage_error: 11.8282\n", "Epoch 752/1000\n", "13/13 - 0s - loss: 368.4264 - mean_absolute_error: 11.1118 - mean_absolute_percentage_error: 11.7932\n", "Epoch 753/1000\n", "13/13 - 0s - loss: 369.9295 - mean_absolute_error: 11.1452 - mean_absolute_percentage_error: 11.7727\n", "Epoch 754/1000\n", "13/13 - 0s - loss: 369.0783 - mean_absolute_error: 11.0867 - mean_absolute_percentage_error: 11.7336\n", "Epoch 755/1000\n", "13/13 - 0s - loss: 369.6163 - mean_absolute_error: 11.1116 - mean_absolute_percentage_error: 11.7423\n", "Epoch 756/1000\n", "13/13 - 0s - loss: 369.5679 - mean_absolute_error: 11.1542 - mean_absolute_percentage_error: 11.8282\n", "Epoch 757/1000\n", "13/13 - 0s - loss: 370.2115 - mean_absolute_error: 11.1780 - mean_absolute_percentage_error: 11.8437\n", "Epoch 758/1000\n", "13/13 - 0s - loss: 368.8219 - mean_absolute_error: 11.0691 - mean_absolute_percentage_error: 11.7293\n", "Epoch 759/1000\n", "13/13 - 0s - loss: 367.9598 - mean_absolute_error: 11.0766 - mean_absolute_percentage_error: 11.7528\n", "Epoch 760/1000\n", "13/13 - 0s - loss: 367.9628 - mean_absolute_error: 11.0766 - mean_absolute_percentage_error: 11.7063\n", "Epoch 761/1000\n", "13/13 - 0s - loss: 368.4864 - mean_absolute_error: 11.0652 - mean_absolute_percentage_error: 11.7309\n", "Epoch 762/1000\n", "13/13 - 0s - loss: 367.9349 - mean_absolute_error: 11.0919 - mean_absolute_percentage_error: 11.7544\n", "Epoch 763/1000\n", "13/13 - 0s - loss: 368.1219 - mean_absolute_error: 11.0996 - mean_absolute_percentage_error: 11.7469\n", "Epoch 764/1000\n", "13/13 - 0s - loss: 368.4856 - mean_absolute_error: 11.1114 - mean_absolute_percentage_error: 11.7859\n", "Epoch 765/1000\n", "13/13 - 0s - loss: 369.2055 - mean_absolute_error: 11.0934 - mean_absolute_percentage_error: 11.7292\n", "Epoch 766/1000\n", "13/13 - 0s - loss: 369.7629 - mean_absolute_error: 11.1326 - mean_absolute_percentage_error: 11.7715\n", "Epoch 767/1000\n", "13/13 - 0s - loss: 370.2518 - mean_absolute_error: 11.2441 - mean_absolute_percentage_error: 11.9157\n", "Epoch 768/1000\n", "13/13 - 0s - loss: 367.9963 - mean_absolute_error: 11.1216 - mean_absolute_percentage_error: 11.7685\n", "Epoch 769/1000\n", "13/13 - 0s - loss: 367.7666 - mean_absolute_error: 11.0714 - mean_absolute_percentage_error: 11.7029\n", "Epoch 770/1000\n", "13/13 - 0s - loss: 367.3588 - mean_absolute_error: 11.1093 - mean_absolute_percentage_error: 11.7969\n", "Epoch 771/1000\n", "13/13 - 0s - loss: 368.0620 - mean_absolute_error: 11.0738 - mean_absolute_percentage_error: 11.7503\n", "Epoch 772/1000\n", "13/13 - 0s - loss: 368.7217 - mean_absolute_error: 11.1282 - mean_absolute_percentage_error: 11.7961\n", "Epoch 773/1000\n", "13/13 - 0s - loss: 368.1326 - mean_absolute_error: 11.1037 - mean_absolute_percentage_error: 11.7499\n", "Epoch 774/1000\n", "13/13 - 0s - loss: 367.9292 - mean_absolute_error: 11.0893 - mean_absolute_percentage_error: 11.7175\n", "Epoch 775/1000\n", "13/13 - 0s - loss: 369.0417 - mean_absolute_error: 11.1151 - mean_absolute_percentage_error: 11.7625\n", "Epoch 776/1000\n", "13/13 - 0s - loss: 367.7359 - mean_absolute_error: 11.1018 - mean_absolute_percentage_error: 11.7742\n", "Epoch 777/1000\n", "13/13 - 0s - loss: 366.3675 - mean_absolute_error: 11.0536 - mean_absolute_percentage_error: 11.7074\n", "Epoch 778/1000\n", "13/13 - 0s - loss: 367.9824 - mean_absolute_error: 11.1237 - mean_absolute_percentage_error: 11.7814\n", "Epoch 779/1000\n", "13/13 - 0s - loss: 367.3302 - mean_absolute_error: 11.1215 - mean_absolute_percentage_error: 11.8143\n", "Epoch 780/1000\n", "13/13 - 0s - loss: 367.5294 - mean_absolute_error: 11.0447 - mean_absolute_percentage_error: 11.6900\n", "Epoch 781/1000\n", "13/13 - 0s - loss: 365.8187 - mean_absolute_error: 11.0281 - mean_absolute_percentage_error: 11.6929\n", "Epoch 782/1000\n", "13/13 - 0s - loss: 368.1905 - mean_absolute_error: 11.1639 - mean_absolute_percentage_error: 11.8258\n", "Epoch 783/1000\n", "13/13 - 0s - loss: 366.8528 - mean_absolute_error: 11.0759 - mean_absolute_percentage_error: 11.7453\n", "Epoch 784/1000\n", "13/13 - 0s - loss: 366.5563 - mean_absolute_error: 11.0756 - mean_absolute_percentage_error: 11.7732\n", "Epoch 785/1000\n", "13/13 - 0s - loss: 366.6221 - mean_absolute_error: 11.0375 - mean_absolute_percentage_error: 11.7119\n", "Epoch 786/1000\n", "13/13 - 0s - loss: 366.2986 - mean_absolute_error: 11.0024 - mean_absolute_percentage_error: 11.6575\n", "Epoch 787/1000\n", "13/13 - 0s - loss: 367.5917 - mean_absolute_error: 11.1015 - mean_absolute_percentage_error: 11.7802\n", "Epoch 788/1000\n", "13/13 - 0s - loss: 365.9051 - mean_absolute_error: 11.0589 - mean_absolute_percentage_error: 11.7487\n", "Epoch 789/1000\n", "13/13 - 0s - loss: 368.3323 - mean_absolute_error: 11.1253 - mean_absolute_percentage_error: 11.8173\n", "Epoch 790/1000\n", "13/13 - 0s - loss: 366.2921 - mean_absolute_error: 11.0665 - mean_absolute_percentage_error: 11.7120\n", "Epoch 791/1000\n", "13/13 - 0s - loss: 365.4769 - mean_absolute_error: 11.0047 - mean_absolute_percentage_error: 11.6474\n", "Epoch 792/1000\n", "13/13 - 0s - loss: 367.5490 - mean_absolute_error: 11.1174 - mean_absolute_percentage_error: 11.7865\n", "Epoch 793/1000\n", "13/13 - 0s - loss: 367.0336 - mean_absolute_error: 11.1250 - mean_absolute_percentage_error: 11.8166\n", "Epoch 794/1000\n", "13/13 - 0s - loss: 365.2625 - mean_absolute_error: 11.0533 - mean_absolute_percentage_error: 11.7411\n", "Epoch 795/1000\n", "13/13 - 0s - loss: 365.4840 - mean_absolute_error: 11.0681 - mean_absolute_percentage_error: 11.7509\n", "Epoch 796/1000\n", "13/13 - 0s - loss: 365.2658 - mean_absolute_error: 11.0306 - mean_absolute_percentage_error: 11.7393\n", "Epoch 797/1000\n", "13/13 - 0s - loss: 365.8779 - mean_absolute_error: 11.0561 - mean_absolute_percentage_error: 11.7128\n", "Epoch 798/1000\n", "13/13 - 0s - loss: 366.2827 - mean_absolute_error: 11.0129 - mean_absolute_percentage_error: 11.6761\n", "Epoch 799/1000\n", "13/13 - 0s - loss: 365.7867 - mean_absolute_error: 11.0432 - mean_absolute_percentage_error: 11.7297\n", "Epoch 800/1000\n", "13/13 - 0s - loss: 365.5902 - mean_absolute_error: 11.0834 - mean_absolute_percentage_error: 11.7850\n", "Epoch 801/1000\n", "13/13 - 0s - loss: 365.0648 - mean_absolute_error: 11.0677 - mean_absolute_percentage_error: 11.7628\n", "Epoch 802/1000\n", "13/13 - 0s - loss: 365.5852 - mean_absolute_error: 11.0215 - mean_absolute_percentage_error: 11.6916\n", "Epoch 803/1000\n", "13/13 - 0s - loss: 365.3333 - mean_absolute_error: 11.0352 - mean_absolute_percentage_error: 11.7320\n", "Epoch 804/1000\n", "13/13 - 0s - loss: 366.1028 - mean_absolute_error: 11.0867 - mean_absolute_percentage_error: 11.7796\n", "Epoch 805/1000\n", "13/13 - 0s - loss: 364.9981 - mean_absolute_error: 11.0125 - mean_absolute_percentage_error: 11.6751\n", "Epoch 806/1000\n", "13/13 - 0s - loss: 365.5372 - mean_absolute_error: 11.0212 - mean_absolute_percentage_error: 11.6919\n", "Epoch 807/1000\n", "13/13 - 0s - loss: 365.0457 - mean_absolute_error: 11.0132 - mean_absolute_percentage_error: 11.6840\n", "Epoch 808/1000\n", "13/13 - 0s - loss: 364.4689 - mean_absolute_error: 11.0252 - mean_absolute_percentage_error: 11.7008\n", "Epoch 809/1000\n", "13/13 - 0s - loss: 364.2446 - mean_absolute_error: 11.0458 - mean_absolute_percentage_error: 11.7523\n", "Epoch 810/1000\n", "13/13 - 0s - loss: 364.1638 - mean_absolute_error: 11.0252 - mean_absolute_percentage_error: 11.7134\n", "Epoch 811/1000\n", "13/13 - 0s - loss: 365.1512 - mean_absolute_error: 10.9680 - mean_absolute_percentage_error: 11.6371\n", "Epoch 812/1000\n", "13/13 - 0s - loss: 364.4959 - mean_absolute_error: 11.0368 - mean_absolute_percentage_error: 11.7317\n", "Epoch 813/1000\n", "13/13 - 0s - loss: 365.8557 - mean_absolute_error: 11.1200 - mean_absolute_percentage_error: 11.7898\n", "Epoch 814/1000\n", "13/13 - 0s - loss: 364.5653 - mean_absolute_error: 11.0540 - mean_absolute_percentage_error: 11.7435\n", "Epoch 815/1000\n", "13/13 - 0s - loss: 364.6316 - mean_absolute_error: 11.0371 - mean_absolute_percentage_error: 11.7122\n", "Epoch 816/1000\n", "13/13 - 0s - loss: 364.8640 - mean_absolute_error: 11.0602 - mean_absolute_percentage_error: 11.7672\n", "Epoch 817/1000\n", "13/13 - 0s - loss: 364.4233 - mean_absolute_error: 11.0335 - mean_absolute_percentage_error: 11.7530\n", "Epoch 818/1000\n", "13/13 - 0s - loss: 363.6579 - mean_absolute_error: 10.9937 - mean_absolute_percentage_error: 11.6820\n", "Epoch 819/1000\n", "13/13 - 0s - loss: 364.2528 - mean_absolute_error: 11.0287 - mean_absolute_percentage_error: 11.7252\n", "Epoch 820/1000\n", "13/13 - 0s - loss: 364.8234 - mean_absolute_error: 11.0340 - mean_absolute_percentage_error: 11.7174\n", "Epoch 821/1000\n", "13/13 - 0s - loss: 364.4177 - mean_absolute_error: 11.0248 - mean_absolute_percentage_error: 11.7406\n", "Epoch 822/1000\n", "13/13 - 0s - loss: 363.8502 - mean_absolute_error: 11.0152 - mean_absolute_percentage_error: 11.7092\n", "Epoch 823/1000\n", "13/13 - 0s - loss: 364.4796 - mean_absolute_error: 11.0377 - mean_absolute_percentage_error: 11.7069\n", "Epoch 824/1000\n", "13/13 - 0s - loss: 364.9044 - mean_absolute_error: 10.9823 - mean_absolute_percentage_error: 11.6372\n", "Epoch 825/1000\n", "13/13 - 0s - loss: 364.9603 - mean_absolute_error: 11.0508 - mean_absolute_percentage_error: 11.7535\n", "Epoch 826/1000\n", "13/13 - 0s - loss: 363.5598 - mean_absolute_error: 11.0146 - mean_absolute_percentage_error: 11.7317\n", "Epoch 827/1000\n", "13/13 - 0s - loss: 363.3417 - mean_absolute_error: 10.9912 - mean_absolute_percentage_error: 11.6848\n", "Epoch 828/1000\n", "13/13 - 0s - loss: 363.2065 - mean_absolute_error: 11.0359 - mean_absolute_percentage_error: 11.7687\n", "Epoch 829/1000\n", "13/13 - 0s - loss: 364.2095 - mean_absolute_error: 11.0195 - mean_absolute_percentage_error: 11.6898\n", "Epoch 830/1000\n", "13/13 - 0s - loss: 364.2341 - mean_absolute_error: 11.0397 - mean_absolute_percentage_error: 11.7343\n", "Epoch 831/1000\n", "13/13 - 0s - loss: 363.3269 - mean_absolute_error: 11.0242 - mean_absolute_percentage_error: 11.7396\n", "Epoch 832/1000\n", "13/13 - 0s - loss: 362.9870 - mean_absolute_error: 11.0060 - mean_absolute_percentage_error: 11.7014\n", "Epoch 833/1000\n", "13/13 - 0s - loss: 363.2513 - mean_absolute_error: 10.9901 - mean_absolute_percentage_error: 11.6992\n", "Epoch 834/1000\n", "13/13 - 0s - loss: 363.5799 - mean_absolute_error: 10.9989 - mean_absolute_percentage_error: 11.7273\n", "Epoch 835/1000\n", "13/13 - 0s - loss: 362.9039 - mean_absolute_error: 11.0348 - mean_absolute_percentage_error: 11.7526\n", "Epoch 836/1000\n", "13/13 - 0s - loss: 363.6945 - mean_absolute_error: 10.9831 - mean_absolute_percentage_error: 11.6951\n", "Epoch 837/1000\n", "13/13 - 0s - loss: 362.8734 - mean_absolute_error: 10.9861 - mean_absolute_percentage_error: 11.6766\n", "Epoch 838/1000\n", "13/13 - 0s - loss: 362.9106 - mean_absolute_error: 11.0094 - mean_absolute_percentage_error: 11.7194\n", "Epoch 839/1000\n", "13/13 - 0s - loss: 362.2561 - mean_absolute_error: 10.9820 - mean_absolute_percentage_error: 11.6877\n", "Epoch 840/1000\n", "13/13 - 0s - loss: 363.1133 - mean_absolute_error: 10.9953 - mean_absolute_percentage_error: 11.6882\n", "Epoch 841/1000\n", "13/13 - 0s - loss: 362.5060 - mean_absolute_error: 11.0101 - mean_absolute_percentage_error: 11.7312\n", "Epoch 842/1000\n", "13/13 - 0s - loss: 362.6739 - mean_absolute_error: 10.9584 - mean_absolute_percentage_error: 11.6548\n", "Epoch 843/1000\n", "13/13 - 0s - loss: 362.8027 - mean_absolute_error: 10.9789 - mean_absolute_percentage_error: 11.6824\n", "Epoch 844/1000\n", "13/13 - 0s - loss: 361.9265 - mean_absolute_error: 10.9779 - mean_absolute_percentage_error: 11.6912\n", "Epoch 845/1000\n", "13/13 - 0s - loss: 363.3677 - mean_absolute_error: 11.0299 - mean_absolute_percentage_error: 11.7302\n", "Epoch 846/1000\n", "13/13 - 0s - loss: 361.8686 - mean_absolute_error: 10.9707 - mean_absolute_percentage_error: 11.6722\n", "Epoch 847/1000\n", "13/13 - 0s - loss: 362.8099 - mean_absolute_error: 10.9933 - mean_absolute_percentage_error: 11.7230\n", "Epoch 848/1000\n", "13/13 - 0s - loss: 363.3952 - mean_absolute_error: 10.9724 - mean_absolute_percentage_error: 11.6841\n", "Epoch 849/1000\n", "13/13 - 0s - loss: 361.3366 - mean_absolute_error: 10.9454 - mean_absolute_percentage_error: 11.6661\n", "Epoch 850/1000\n", "13/13 - 0s - loss: 363.6161 - mean_absolute_error: 10.9987 - mean_absolute_percentage_error: 11.6839\n", "Epoch 851/1000\n", "13/13 - 0s - loss: 361.4877 - mean_absolute_error: 10.9662 - mean_absolute_percentage_error: 11.6580\n", "Epoch 852/1000\n", "13/13 - 0s - loss: 362.9521 - mean_absolute_error: 11.0560 - mean_absolute_percentage_error: 11.8141\n", "Epoch 853/1000\n", "13/13 - 0s - loss: 362.3478 - mean_absolute_error: 11.0164 - mean_absolute_percentage_error: 11.7473\n", "Epoch 854/1000\n", "13/13 - 0s - loss: 361.5774 - mean_absolute_error: 10.9640 - mean_absolute_percentage_error: 11.6829\n", "Epoch 855/1000\n", "13/13 - 0s - loss: 362.7791 - mean_absolute_error: 11.0304 - mean_absolute_percentage_error: 11.7408\n", "Epoch 856/1000\n", "13/13 - 0s - loss: 361.2239 - mean_absolute_error: 10.9728 - mean_absolute_percentage_error: 11.7005\n", "Epoch 857/1000\n", "13/13 - 0s - loss: 362.0762 - mean_absolute_error: 10.9991 - mean_absolute_percentage_error: 11.7212\n", "Epoch 858/1000\n", "13/13 - 0s - loss: 362.0472 - mean_absolute_error: 10.9889 - mean_absolute_percentage_error: 11.7064\n", "Epoch 859/1000\n", "13/13 - 0s - loss: 361.9554 - mean_absolute_error: 10.9571 - mean_absolute_percentage_error: 11.6619\n", "Epoch 860/1000\n", "13/13 - 0s - loss: 362.3833 - mean_absolute_error: 10.9836 - mean_absolute_percentage_error: 11.6943\n", "Epoch 861/1000\n", "13/13 - 0s - loss: 361.7067 - mean_absolute_error: 10.9738 - mean_absolute_percentage_error: 11.6800\n", "Epoch 862/1000\n", "13/13 - 0s - loss: 361.3456 - mean_absolute_error: 10.9604 - mean_absolute_percentage_error: 11.6669\n", "Epoch 863/1000\n", "13/13 - 0s - loss: 362.8429 - mean_absolute_error: 11.0341 - mean_absolute_percentage_error: 11.7593\n", "Epoch 864/1000\n", "13/13 - 0s - loss: 363.1541 - mean_absolute_error: 11.0009 - mean_absolute_percentage_error: 11.7156\n", "Epoch 865/1000\n", "13/13 - 0s - loss: 361.4579 - mean_absolute_error: 10.9623 - mean_absolute_percentage_error: 11.6905\n", "Epoch 866/1000\n", "13/13 - 0s - loss: 363.5745 - mean_absolute_error: 11.0885 - mean_absolute_percentage_error: 11.8064\n", "Epoch 867/1000\n", "13/13 - 0s - loss: 362.2609 - mean_absolute_error: 11.0244 - mean_absolute_percentage_error: 11.7401\n", "Epoch 868/1000\n", "13/13 - 0s - loss: 362.1525 - mean_absolute_error: 10.9747 - mean_absolute_percentage_error: 11.6708\n", "Epoch 869/1000\n", "13/13 - 0s - loss: 361.8820 - mean_absolute_error: 10.9662 - mean_absolute_percentage_error: 11.6739\n", "Epoch 870/1000\n", "13/13 - 0s - loss: 362.0499 - mean_absolute_error: 11.0147 - mean_absolute_percentage_error: 11.6893\n", "Epoch 871/1000\n", "13/13 - 0s - loss: 363.6740 - mean_absolute_error: 11.0595 - mean_absolute_percentage_error: 11.7882\n", "Epoch 872/1000\n", "13/13 - 0s - loss: 360.8512 - mean_absolute_error: 10.9686 - mean_absolute_percentage_error: 11.7208\n", "Epoch 873/1000\n", "13/13 - 0s - loss: 363.6986 - mean_absolute_error: 11.0428 - mean_absolute_percentage_error: 11.7228\n", "Epoch 874/1000\n", "13/13 - 0s - loss: 364.7222 - mean_absolute_error: 11.1087 - mean_absolute_percentage_error: 11.8158\n", "Epoch 875/1000\n", "13/13 - 0s - loss: 361.2634 - mean_absolute_error: 10.9826 - mean_absolute_percentage_error: 11.6953\n", "Epoch 876/1000\n", "13/13 - 0s - loss: 360.8488 - mean_absolute_error: 10.9688 - mean_absolute_percentage_error: 11.6967\n", "Epoch 877/1000\n", "13/13 - 0s - loss: 360.0605 - mean_absolute_error: 10.9356 - mean_absolute_percentage_error: 11.6814\n", "Epoch 878/1000\n", "13/13 - 0s - loss: 361.2625 - mean_absolute_error: 11.0027 - mean_absolute_percentage_error: 11.7452\n", "Epoch 879/1000\n", "13/13 - 0s - loss: 361.7350 - mean_absolute_error: 10.9800 - mean_absolute_percentage_error: 11.6859\n", "Epoch 880/1000\n", "13/13 - 0s - loss: 361.3577 - mean_absolute_error: 10.9421 - mean_absolute_percentage_error: 11.6561\n", "Epoch 881/1000\n", "13/13 - 0s - loss: 361.1337 - mean_absolute_error: 10.9487 - mean_absolute_percentage_error: 11.6746\n", "Epoch 882/1000\n", "13/13 - 0s - loss: 360.3943 - mean_absolute_error: 10.9156 - mean_absolute_percentage_error: 11.6235\n", "Epoch 883/1000\n", "13/13 - 0s - loss: 360.5350 - mean_absolute_error: 10.9811 - mean_absolute_percentage_error: 11.7343\n", "Epoch 884/1000\n", "13/13 - 0s - loss: 359.6118 - mean_absolute_error: 10.9565 - mean_absolute_percentage_error: 11.7038\n", "Epoch 885/1000\n", "13/13 - 0s - loss: 361.2971 - mean_absolute_error: 10.9548 - mean_absolute_percentage_error: 11.6423\n", "Epoch 886/1000\n", "13/13 - 0s - loss: 360.4844 - mean_absolute_error: 10.9249 - mean_absolute_percentage_error: 11.6376\n", "Epoch 887/1000\n", "13/13 - 0s - loss: 360.5295 - mean_absolute_error: 10.9429 - mean_absolute_percentage_error: 11.7029\n", "Epoch 888/1000\n", "13/13 - 0s - loss: 360.5405 - mean_absolute_error: 10.9203 - mean_absolute_percentage_error: 11.6760\n", "Epoch 889/1000\n", "13/13 - 0s - loss: 360.1896 - mean_absolute_error: 10.9362 - mean_absolute_percentage_error: 11.6771\n", "Epoch 890/1000\n", "13/13 - 0s - loss: 359.9330 - mean_absolute_error: 10.9581 - mean_absolute_percentage_error: 11.7060\n", "Epoch 891/1000\n", "13/13 - 0s - loss: 360.8105 - mean_absolute_error: 10.9504 - mean_absolute_percentage_error: 11.6603\n", "Epoch 892/1000\n", "13/13 - 0s - loss: 360.1457 - mean_absolute_error: 10.9324 - mean_absolute_percentage_error: 11.6720\n", "Epoch 893/1000\n", "13/13 - 0s - loss: 360.8714 - mean_absolute_error: 10.9951 - mean_absolute_percentage_error: 11.7591\n", "Epoch 894/1000\n", "13/13 - 0s - loss: 360.9545 - mean_absolute_error: 10.9555 - mean_absolute_percentage_error: 11.6602\n", "Epoch 895/1000\n", "13/13 - 0s - loss: 359.1262 - mean_absolute_error: 10.9182 - mean_absolute_percentage_error: 11.6503\n", "Epoch 896/1000\n", "13/13 - 0s - loss: 360.3568 - mean_absolute_error: 10.9508 - mean_absolute_percentage_error: 11.7031\n", "Epoch 897/1000\n", "13/13 - 0s - loss: 360.4228 - mean_absolute_error: 10.9055 - mean_absolute_percentage_error: 11.6461\n", "Epoch 898/1000\n", "13/13 - 0s - loss: 360.0052 - mean_absolute_error: 10.9390 - mean_absolute_percentage_error: 11.6550\n", "Epoch 899/1000\n", "13/13 - 0s - loss: 359.1019 - mean_absolute_error: 10.9446 - mean_absolute_percentage_error: 11.6791\n", "Epoch 900/1000\n", "13/13 - 0s - loss: 360.3772 - mean_absolute_error: 10.9193 - mean_absolute_percentage_error: 11.6564\n", "Epoch 901/1000\n", "13/13 - 0s - loss: 359.3429 - mean_absolute_error: 10.8880 - mean_absolute_percentage_error: 11.6028\n", "Epoch 902/1000\n", "13/13 - 0s - loss: 359.8271 - mean_absolute_error: 10.9725 - mean_absolute_percentage_error: 11.7269\n", "Epoch 903/1000\n", "13/13 - 0s - loss: 359.6360 - mean_absolute_error: 10.9420 - mean_absolute_percentage_error: 11.6779\n", "Epoch 904/1000\n", "13/13 - 0s - loss: 360.6356 - mean_absolute_error: 10.9659 - mean_absolute_percentage_error: 11.7284\n", "Epoch 905/1000\n", "13/13 - 0s - loss: 359.8135 - mean_absolute_error: 10.9367 - mean_absolute_percentage_error: 11.6622\n", "Epoch 906/1000\n", "13/13 - 0s - loss: 358.9601 - mean_absolute_error: 10.8896 - mean_absolute_percentage_error: 11.6110\n", "Epoch 907/1000\n", "13/13 - 0s - loss: 359.8470 - mean_absolute_error: 10.9238 - mean_absolute_percentage_error: 11.6732\n", "Epoch 908/1000\n", "13/13 - 0s - loss: 359.5624 - mean_absolute_error: 10.9322 - mean_absolute_percentage_error: 11.6573\n", "Epoch 909/1000\n", "13/13 - 0s - loss: 359.5858 - mean_absolute_error: 10.9008 - mean_absolute_percentage_error: 11.6209\n", "Epoch 910/1000\n", "13/13 - 0s - loss: 360.0644 - mean_absolute_error: 10.9238 - mean_absolute_percentage_error: 11.6547\n", "Epoch 911/1000\n", "13/13 - 0s - loss: 358.8327 - mean_absolute_error: 10.9304 - mean_absolute_percentage_error: 11.6875\n", "Epoch 912/1000\n", "13/13 - 0s - loss: 358.8769 - mean_absolute_error: 10.9203 - mean_absolute_percentage_error: 11.6754\n", "Epoch 913/1000\n", "13/13 - 0s - loss: 359.2025 - mean_absolute_error: 10.8956 - mean_absolute_percentage_error: 11.6141\n", "Epoch 914/1000\n", "13/13 - 0s - loss: 359.6066 - mean_absolute_error: 10.9288 - mean_absolute_percentage_error: 11.6624\n", "Epoch 915/1000\n", "13/13 - 0s - loss: 358.8140 - mean_absolute_error: 10.9209 - mean_absolute_percentage_error: 11.6667\n", "Epoch 916/1000\n", "13/13 - 0s - loss: 359.5836 - mean_absolute_error: 10.9138 - mean_absolute_percentage_error: 11.6678\n", "Epoch 917/1000\n", "13/13 - 0s - loss: 359.0354 - mean_absolute_error: 10.9001 - mean_absolute_percentage_error: 11.6552\n", "Epoch 918/1000\n", "13/13 - 0s - loss: 358.5438 - mean_absolute_error: 10.8836 - mean_absolute_percentage_error: 11.6060\n", "Epoch 919/1000\n", "13/13 - 0s - loss: 358.6361 - mean_absolute_error: 10.9057 - mean_absolute_percentage_error: 11.6463\n", "Epoch 920/1000\n", "13/13 - 0s - loss: 358.4125 - mean_absolute_error: 10.9000 - mean_absolute_percentage_error: 11.6707\n", "Epoch 921/1000\n", "13/13 - 0s - loss: 359.1986 - mean_absolute_error: 10.9601 - mean_absolute_percentage_error: 11.7181\n", "Epoch 922/1000\n", "13/13 - 0s - loss: 358.6715 - mean_absolute_error: 10.9304 - mean_absolute_percentage_error: 11.6685\n", "Epoch 923/1000\n", "13/13 - 0s - loss: 359.0026 - mean_absolute_error: 10.9098 - mean_absolute_percentage_error: 11.6186\n", "Epoch 924/1000\n", "13/13 - 0s - loss: 358.7620 - mean_absolute_error: 10.8771 - mean_absolute_percentage_error: 11.5984\n", "Epoch 925/1000\n", "13/13 - 0s - loss: 359.8625 - mean_absolute_error: 10.9519 - mean_absolute_percentage_error: 11.7147\n", "Epoch 926/1000\n", "13/13 - 0s - loss: 358.8908 - mean_absolute_error: 10.9282 - mean_absolute_percentage_error: 11.7015\n", "Epoch 927/1000\n", "13/13 - 0s - loss: 358.9396 - mean_absolute_error: 10.9007 - mean_absolute_percentage_error: 11.6472\n", "Epoch 928/1000\n", "13/13 - 0s - loss: 359.0703 - mean_absolute_error: 10.9344 - mean_absolute_percentage_error: 11.6693\n", "Epoch 929/1000\n", "13/13 - 0s - loss: 359.4099 - mean_absolute_error: 10.8869 - mean_absolute_percentage_error: 11.6109\n", "Epoch 930/1000\n", "13/13 - 0s - loss: 358.4764 - mean_absolute_error: 10.8854 - mean_absolute_percentage_error: 11.6550\n", "Epoch 931/1000\n", "13/13 - 0s - loss: 358.4770 - mean_absolute_error: 10.9281 - mean_absolute_percentage_error: 11.6997\n", "Epoch 932/1000\n", "13/13 - 0s - loss: 358.2290 - mean_absolute_error: 10.8792 - mean_absolute_percentage_error: 11.6236\n", "Epoch 933/1000\n", "13/13 - 0s - loss: 357.3207 - mean_absolute_error: 10.8278 - mean_absolute_percentage_error: 11.5820\n", "Epoch 934/1000\n", "13/13 - 0s - loss: 358.0677 - mean_absolute_error: 10.8675 - mean_absolute_percentage_error: 11.6158\n", "Epoch 935/1000\n", "13/13 - 0s - loss: 358.7471 - mean_absolute_error: 10.9333 - mean_absolute_percentage_error: 11.6835\n", "Epoch 936/1000\n", "13/13 - 0s - loss: 360.0219 - mean_absolute_error: 11.0256 - mean_absolute_percentage_error: 11.8041\n", "Epoch 937/1000\n", "13/13 - 0s - loss: 358.4253 - mean_absolute_error: 10.9146 - mean_absolute_percentage_error: 11.6859\n", "Epoch 938/1000\n", "13/13 - 0s - loss: 358.1751 - mean_absolute_error: 10.8914 - mean_absolute_percentage_error: 11.6423\n", "Epoch 939/1000\n", "13/13 - 0s - loss: 357.7491 - mean_absolute_error: 10.8923 - mean_absolute_percentage_error: 11.6770\n", "Epoch 940/1000\n", "13/13 - 0s - loss: 358.0549 - mean_absolute_error: 10.8942 - mean_absolute_percentage_error: 11.6501\n", "Epoch 941/1000\n", "13/13 - 0s - loss: 357.8682 - mean_absolute_error: 10.8676 - mean_absolute_percentage_error: 11.6175\n", "Epoch 942/1000\n", "13/13 - 0s - loss: 357.2732 - mean_absolute_error: 10.8503 - mean_absolute_percentage_error: 11.5939\n", "Epoch 943/1000\n", "13/13 - 0s - loss: 359.3735 - mean_absolute_error: 10.9742 - mean_absolute_percentage_error: 11.7651\n", "Epoch 944/1000\n", "13/13 - 0s - loss: 357.6915 - mean_absolute_error: 10.8808 - mean_absolute_percentage_error: 11.6644\n", "Epoch 945/1000\n", "13/13 - 0s - loss: 357.5881 - mean_absolute_error: 10.8490 - mean_absolute_percentage_error: 11.6106\n", "Epoch 946/1000\n", "13/13 - 0s - loss: 359.0262 - mean_absolute_error: 10.8950 - mean_absolute_percentage_error: 11.6436\n", "Epoch 947/1000\n", "13/13 - 0s - loss: 358.1843 - mean_absolute_error: 10.9107 - mean_absolute_percentage_error: 11.6766\n", "Epoch 948/1000\n", "13/13 - 0s - loss: 357.4335 - mean_absolute_error: 10.8962 - mean_absolute_percentage_error: 11.6705\n", "Epoch 949/1000\n", "13/13 - 0s - loss: 358.2029 - mean_absolute_error: 10.9350 - mean_absolute_percentage_error: 11.6831\n", "Epoch 950/1000\n", "13/13 - 0s - loss: 356.9236 - mean_absolute_error: 10.8944 - mean_absolute_percentage_error: 11.6578\n", "Epoch 951/1000\n", "13/13 - 0s - loss: 357.2163 - mean_absolute_error: 10.8775 - mean_absolute_percentage_error: 11.6620\n", "Epoch 952/1000\n", "13/13 - 0s - loss: 356.8792 - mean_absolute_error: 10.8516 - mean_absolute_percentage_error: 11.6100\n", "Epoch 953/1000\n", "13/13 - 0s - loss: 358.9135 - mean_absolute_error: 10.9249 - mean_absolute_percentage_error: 11.7055\n", "Epoch 954/1000\n", "13/13 - 0s - loss: 357.2684 - mean_absolute_error: 10.8972 - mean_absolute_percentage_error: 11.6656\n", "Epoch 955/1000\n", "13/13 - 0s - loss: 357.1189 - mean_absolute_error: 10.8566 - mean_absolute_percentage_error: 11.6269\n", "Epoch 956/1000\n", "13/13 - 0s - loss: 356.9467 - mean_absolute_error: 10.8641 - mean_absolute_percentage_error: 11.6328\n", "Epoch 957/1000\n", "13/13 - 0s - loss: 357.0959 - mean_absolute_error: 10.9018 - mean_absolute_percentage_error: 11.6807\n", "Epoch 958/1000\n", "13/13 - 0s - loss: 357.2349 - mean_absolute_error: 10.8934 - mean_absolute_percentage_error: 11.6964\n", "Epoch 959/1000\n", "13/13 - 0s - loss: 357.0507 - mean_absolute_error: 10.8785 - mean_absolute_percentage_error: 11.6530\n", "Epoch 960/1000\n", "13/13 - 0s - loss: 356.2551 - mean_absolute_error: 10.8815 - mean_absolute_percentage_error: 11.6584\n", "Epoch 961/1000\n", "13/13 - 0s - loss: 356.3413 - mean_absolute_error: 10.8455 - mean_absolute_percentage_error: 11.6045\n", "Epoch 962/1000\n", "13/13 - 0s - loss: 356.7593 - mean_absolute_error: 10.8643 - mean_absolute_percentage_error: 11.6147\n", "Epoch 963/1000\n", "13/13 - 0s - loss: 357.0826 - mean_absolute_error: 10.8890 - mean_absolute_percentage_error: 11.6692\n", "Epoch 964/1000\n", "13/13 - 0s - loss: 356.4886 - mean_absolute_error: 10.8306 - mean_absolute_percentage_error: 11.6055\n", "Epoch 965/1000\n", "13/13 - 0s - loss: 356.6687 - mean_absolute_error: 10.8663 - mean_absolute_percentage_error: 11.6292\n", "Epoch 966/1000\n", "13/13 - 0s - loss: 356.4235 - mean_absolute_error: 10.8695 - mean_absolute_percentage_error: 11.6518\n", "Epoch 967/1000\n", "13/13 - 0s - loss: 356.7948 - mean_absolute_error: 10.8860 - mean_absolute_percentage_error: 11.6867\n", "Epoch 968/1000\n", "13/13 - 0s - loss: 357.8003 - mean_absolute_error: 10.8806 - mean_absolute_percentage_error: 11.6684\n", "Epoch 969/1000\n", "13/13 - 0s - loss: 355.9895 - mean_absolute_error: 10.7973 - mean_absolute_percentage_error: 11.5434\n", "Epoch 970/1000\n", "13/13 - 0s - loss: 356.8697 - mean_absolute_error: 10.9086 - mean_absolute_percentage_error: 11.6930\n", "Epoch 971/1000\n", "13/13 - 0s - loss: 356.8324 - mean_absolute_error: 10.9110 - mean_absolute_percentage_error: 11.7261\n", "Epoch 972/1000\n", "13/13 - 0s - loss: 357.1703 - mean_absolute_error: 10.8456 - mean_absolute_percentage_error: 11.6026\n", "Epoch 973/1000\n", "13/13 - 0s - loss: 357.3972 - mean_absolute_error: 10.8801 - mean_absolute_percentage_error: 11.6858\n", "Epoch 974/1000\n", "13/13 - 0s - loss: 356.5416 - mean_absolute_error: 10.8884 - mean_absolute_percentage_error: 11.6608\n", "Epoch 975/1000\n", "13/13 - 0s - loss: 356.1200 - mean_absolute_error: 10.8433 - mean_absolute_percentage_error: 11.6117\n", "Epoch 976/1000\n", "13/13 - 0s - loss: 356.1103 - mean_absolute_error: 10.8448 - mean_absolute_percentage_error: 11.6276\n", "Epoch 977/1000\n", "13/13 - 0s - loss: 355.8486 - mean_absolute_error: 10.8641 - mean_absolute_percentage_error: 11.6435\n", "Epoch 978/1000\n", "13/13 - 0s - loss: 356.0387 - mean_absolute_error: 10.8523 - mean_absolute_percentage_error: 11.6412\n", "Epoch 979/1000\n", "13/13 - 0s - loss: 356.1306 - mean_absolute_error: 10.8564 - mean_absolute_percentage_error: 11.6364\n", "Epoch 980/1000\n", "13/13 - 0s - loss: 356.7067 - mean_absolute_error: 10.8359 - mean_absolute_percentage_error: 11.6223\n", "Epoch 981/1000\n", "13/13 - 0s - loss: 355.5711 - mean_absolute_error: 10.8191 - mean_absolute_percentage_error: 11.6185\n", "Epoch 982/1000\n", "13/13 - 0s - loss: 355.6092 - mean_absolute_error: 10.8626 - mean_absolute_percentage_error: 11.6611\n", "Epoch 983/1000\n", "13/13 - 0s - loss: 356.3069 - mean_absolute_error: 10.8788 - mean_absolute_percentage_error: 11.6623\n", "Epoch 984/1000\n", "13/13 - 0s - loss: 355.9139 - mean_absolute_error: 10.8668 - mean_absolute_percentage_error: 11.6574\n", "Epoch 985/1000\n", "13/13 - 0s - loss: 355.7265 - mean_absolute_error: 10.8340 - mean_absolute_percentage_error: 11.6252\n", "Epoch 986/1000\n", "13/13 - 0s - loss: 356.0768 - mean_absolute_error: 10.8677 - mean_absolute_percentage_error: 11.6770\n", "Epoch 987/1000\n", "13/13 - 0s - loss: 356.3044 - mean_absolute_error: 10.8800 - mean_absolute_percentage_error: 11.6389\n", "Epoch 988/1000\n", "13/13 - 0s - loss: 357.0689 - mean_absolute_error: 10.8845 - mean_absolute_percentage_error: 11.6820\n", "Epoch 989/1000\n", "13/13 - 0s - loss: 356.3220 - mean_absolute_error: 10.9042 - mean_absolute_percentage_error: 11.6911\n", "Epoch 990/1000\n", "13/13 - 0s - loss: 356.4705 - mean_absolute_error: 10.8880 - mean_absolute_percentage_error: 11.6565\n", "Epoch 991/1000\n", "13/13 - 0s - loss: 356.8312 - mean_absolute_error: 10.8948 - mean_absolute_percentage_error: 11.6949\n", "Epoch 992/1000\n", "13/13 - 0s - loss: 355.2910 - mean_absolute_error: 10.8170 - mean_absolute_percentage_error: 11.6040\n", "Epoch 993/1000\n", "13/13 - 0s - loss: 355.3376 - mean_absolute_error: 10.8442 - mean_absolute_percentage_error: 11.6634\n", "Epoch 994/1000\n", "13/13 - 0s - loss: 355.8164 - mean_absolute_error: 10.8805 - mean_absolute_percentage_error: 11.6889\n", "Epoch 995/1000\n", "13/13 - 0s - loss: 355.6302 - mean_absolute_error: 10.8555 - mean_absolute_percentage_error: 11.6493\n", "Epoch 996/1000\n", "13/13 - 0s - loss: 355.4963 - mean_absolute_error: 10.8317 - mean_absolute_percentage_error: 11.6445\n", "Epoch 997/1000\n", "13/13 - 0s - loss: 355.0049 - mean_absolute_error: 10.8341 - mean_absolute_percentage_error: 11.6238\n", "Epoch 998/1000\n", "13/13 - 0s - loss: 355.6286 - mean_absolute_error: 10.8725 - mean_absolute_percentage_error: 11.6699\n", "Epoch 999/1000\n", "13/13 - 0s - loss: 356.0137 - mean_absolute_error: 10.8292 - mean_absolute_percentage_error: 11.6339\n", "Epoch 1000/1000\n", "13/13 - 0s - loss: 355.1129 - mean_absolute_error: 10.8537 - mean_absolute_percentage_error: 11.6639\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "QO0FiEfit3cR" }, "source": [ "#### Saving the training process\n", "\n", "If the training process is saved, it is possible to graph the loss function, allowing a more detailed analysis of the process. For this we use:\n", "\n", "\n", "```\n", "history_MODEL = model.fit (x_train, y_train, epochs = 1000)\n", "```\n", "In this training command the values of the cost function and the metric according to the seasons are saved in the `history_MODEL` object.\n", "\n", "The `history_MODEL` object contains a dictionary with the values of the loss function and metrics for each epoch, which can be accessed using the following comment:\n", "```\n", "history_dict = history_MODEL.history\n", "history_dict.keys ()\n", "``` \n", "The `history_dict.keys` command displays the dictionary contents saved during training." ] }, { "cell_type": "code", "metadata": { "id": "CLhZwedGmrCi", "outputId": "5fd8705d-60e9-4d24-a6b4-64016cde0fb5", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "history_with_minibatch.history.keys()" ], "execution_count": 23, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "dict_keys(['loss', 'mean_absolute_error', 'mean_absolute_percentage_error'])" ] }, "metadata": { "tags": [] }, "execution_count": 23 } ] }, { "cell_type": "code", "metadata": { "id": "tePZj3exmtJi", "outputId": "8f7cffe3-00da-461e-d413-d55864138ea2", "colab": { "base_uri": "https://localhost:8080/", "height": 328 } }, "source": [ "plt.plot(history_with_minibatch.history['loss'],linewidth=2.0)\n", "plt.title('Training Mean Squared Error (MSE)\\n with architecture (10-20-2) using mini-batch', fontsize=12)\n", "plt.xlabel('epochs')\n", "plt.ylabel('Loss')\n", "#plt.plot(test_history_with_minibatch.losses.T[0])" ], "execution_count": 24, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Text(0, 0.5, 'Loss')" ] }, "metadata": { "tags": [] }, "execution_count": 24 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "bNYOJKRCnMk-" }, "source": [ "The same training is performed using BGD, that means, the size of the batch is the length of the dataset." ] }, { "cell_type": "code", "metadata": { "id": "G_Icyvw8nLGp" }, "source": [ "# Redefining the model \n", "model2 = models.Sequential()\n", "model2.add(layers.Dense(20, activation='sigmoid', input_shape=(10,)))\n", "model2.add(layers.Dense(2))\n", "\n", "\n", "model2.compile(optimizer=sgd,\n", " loss='mean_squared_error',\n", " metrics=['mean_absolute_error', 'mean_absolute_percentage_error'])" ], "execution_count": 25, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "InVA8JFhnQ6J" }, "source": [ "history_without_minibatch = model2.fit(x_train_norm, y_train, epochs=1000, batch_size=x_train.shape[0], verbose = 0)\n", "\n", " \n", "# To use the test loss history, comment the lines above and uncomment the lines below\n", "#test_history_without_minibatch = TestLossHistory(x_test, y_test)\n", "#history_without_minibatch = model2.fit(x_train_norm, y_train, epochs=10000, batch_size=x_train.shape[0],\n", "# callbacks=[test_history_without_minibatch])" ], "execution_count": 26, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "BQArKHdSF5G7" }, "source": [ "### ANN performance\n", "\n", "After training the ANN it is important to evaluate its performance with new data, that is, not used in the training.\n", "\n", "The evaluation of the ANN with the test data set can be done using the `evaluate` method." ] }, { "cell_type": "code", "metadata": { "id": "dJiTro25nYVS", "outputId": "3b1c7a13-a2f5-4017-cab4-bca318dd4875", "colab": { "base_uri": "https://localhost:8080/", "height": 146 } }, "source": [ "model2_metric_train = model2.evaluate(x_train_norm, y_train)\n", "print('Training performance')\n", "print(model2_metric_train)\n", "model2_metric_test = model2.evaluate(x_test_norm, y_test)\n", "print('Test performance')\n", "print(model2_metric_test)" ], "execution_count": 27, "outputs": [ { "output_type": "stream", "text": [ "13/13 [==============================] - 0s 1ms/step - loss: 663.8547 - mean_absolute_error: 15.9340 - mean_absolute_percentage_error: 15.9206\n", "Training performance\n", "[663.854736328125, 15.934011459350586, 15.920571327209473]\n", "4/4 [==============================] - 0s 2ms/step - loss: 1302.4758 - mean_absolute_error: 21.5155 - mean_absolute_percentage_error: 21.6412\n", "Test performance\n", "[1302.475830078125, 21.515531539916992, 21.641185760498047]\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "p9DGbxa8na-9", "outputId": "7823033b-8911-4d9f-99fe-bf0019d167b4", "colab": { "base_uri": "https://localhost:8080/", "height": 328 } }, "source": [ "plt.plot(history_with_minibatch.history['loss'], label='With minibatch',linewidth=1.5)\n", "plt.title('Training Mean Squared Error (MSE)\\nwith neural network architecture (10-20-2)', fontsize=12)\n", "plt.xlabel('epochs')\n", "plt.ylabel('Loss')\n", "plt.plot(history_without_minibatch.history['loss'], label='Without minibatch',linewidth=1.5)\n", "plt.legend()\n", "plt.xlim([-10, 1000])\n", "#plt.plot(test_history_without_minibatch.losses.T[0])" ], "execution_count": 28, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(-10.0, 1000.0)" ] }, "metadata": { "tags": [] }, "execution_count": 28 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "eykmk_nXne_g" }, "source": [ "As can be seen above, with the use of minibatches, the training converged much faster." ] }, { "cell_type": "markdown", "metadata": { "id": "sgR5sU6ROCof" }, "source": [ "The ANN can also be evaluated by calculating the expected outputs from the test set examples using the `predict` method, as follows:\n", "\n", "```\n", "y_prev = model.predict(x_test)\n", "```\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "rfQ3g7qLjWrC" }, "source": [ "Initially, let's define a function to plot target in blue and prediction in red." ] }, { "cell_type": "code", "metadata": { "id": "TJBJTUglOBlB" }, "source": [ "# Graph of actual and predicted classes\n", "def Target_vs_Predic(y_test,y_pred):\n", " plt.figure(figsize=(16, 6))\n", " plt.plot(y_test[:,0], 'o', color = 'darkslateblue', label='Target')\n", " plt.plot(y_pred[:,0], 'o', color = 'crimson', label='ANN prediction')\n", " plt.title('Target vs prediction of the ANN')\n", " plt.xlabel('Example')\n", " plt.ylabel(r'$d_{4} [mm]$')\n", " plt.legend()\n", " plt.show" ], "execution_count": 29, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "MxXKu_X4OzYr", "outputId": "2b01ff77-e96d-4969-a312-1a52d0e76541", "colab": { "base_uri": "https://localhost:8080/", "height": 313 } }, "source": [ "y_pred = model2.predict(x_test)\n", "Target_vs_Predic(y_test,y_pred)" ], "execution_count": 30, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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KjpZAQAAAAAAwlPRw0BK7dVXX9UxxxwjSXrllVc0duxYTZ48WZK0ePHiWHt9vPbaa1q4cKE+97nPxbZMAAAAAABGA8mKEpo0aZJaWlokSZdffrmqq6v1pS99Kefrent7NW5cYV9dZ2enrrnmGpIVAAAAAIDgkawoQEtzm5oal2l1R5cm11SrvqFOM2dPj/U9fvWrX+naa69VT0+Pdt55Z/3kJz/RhAkT9IUvfEETJkzQI488ov33319nnHGGzjjjDK1du1ZHHXWUfv7zn+uFF16QJP30pz/VzTffrO7ubh199NG64IIL9O1vf1vPPfecZs6cqUMOOUSXXnpprHEDAAAAABAXkhV5amlu07y5S9XT3StJ6mjv0ry5SyUp1oTFRz/6UZ1yyimSpO9+97v67W9/qzlz5kiSXnzxRd1xxx0aO3asTjzxRJ111lk64YQTNH/+/P7XL168WM8884wWL14sd9dJJ52ke+65RxdffLGefPLJ/p4cAAAAAACEigk289TUuKw/UZHW092rpsZlsb7PE088oY985COaMWOGrr/+ej399NP9zx177LEaO3asJOnBBx/Uxz72MUnSCSec0F9n8eLFWrx4sWbNmqWDDz5YTz/9tJ555plYYwQAAAAAYDTRsyJPqzu6CirfWGeffbauu+467b333rruuut099139z+3+eab53y9u+vcc8/VqaeeOqD8+eefjzVOAAAAAABGCz0r8jS5prqg8o3V1dWlqVOnav369brhhhuGrFdXV6dFixZJkm666ab+8kMPPVS/+c1v1NWVSqK8+OKLam9v1xZbbKE33ngj1lgBAAAAABgNwSUrzOxSM3vEzFaY2R1m9s6ofLaZdUblK8zsWxmvOdLMnjKzNjP75mjEVd9Qp/FVAzuijK8ap/qGuljf58ILL9Shhx6qI444QrW1tUPWu/zyy3XVVVdpxowZevbZZ7XllltKkj70oQ/phBNO0OGHH64ZM2bolFNOUVdXlyZNmqQDDjhABx54oC666KJYYwYAAAAAIE7m7qWOYQAz29LdX4/+/2VJe7j7WWY2W9LX3P3oQfXHSnpa0mGSVklaJukkd38iXaezszPrSnZ2dmrixIl5x1aMu4EMtm7dOk2YMGGD8rVr12rTTTeVmenGG2/UwoULtWDBglGNJSSFfncondbW1mETb0DoaMNIMtovko42jKSjDedn4sSJNrgsuDkr0omKyOaScmVT9pPU5u7PSpKZNUk6VtITw75qI8ycPX3UkxP5WrFihc477zy5uyZOnKirrrqq1CEBAAAAABCL4JIVkmRml0lqkNQp6ZCMpw40s4clvahUL4vHJW0naWVGnVWS9i9WrKUyY8YM3XPPPaUOAwAAAACA2JVkGIiZ3SVpapanLnT3WzPqnS9pgrtfbGZbSupz9y4zO0rST9y91sxOkHSku38ues3JkvZ39znp5WQOA2ltbe1/swkTJmjKlClxrx6KoL29XevWrSt1GAAAAACAjZA5PCbbMJDg5qzIZGY7SLrN3ffK8tw/JH1AUq2kS9z9iKj8fEly98vTdeOas6IUhpqzotIl4btDCuP0kHS0YSQZ7RdJRxtG0tGG85MtWRHi3UAyv8ljJf09Kp9qZhb9fz+lYl+t1ISatWa2k5mNl1QvaVFxowYAAAAAAHEJcc6KK8zs3ZL6JD0v6ayo/ARJXzCzXklvSqr3VLeQXjObI+nPksZKmh/NZQEAAAAAABIouJ4V7n68u+/l7u9x94+6+wtR+Vx339Pd93H3A9z93ozX3Obuu7r7Lu5+Wemi3zh/+MMftNVWW+npp5/uL3v++ee11VZb6Ze//GV/2XnnnafrrrtOkvSFL3xBu+++u7q7uyVJq1ev1t577z3qsS5dulQnnniiJOm2227Tj3/84yHrvvbaawPif+mll9TQ0DDqMQIAAAAAki24ZEUluvHGG3XggQdq4cKFA8qnTJmiX/7yl+rp6cn6urFjx+o3v/lNLDG89dZbBb/mqKOO0le+8pUhn+/s7NQ111zT//e2226rxsbGjYqvEC3NbZpz2gKddMzVmnPaArU0t436ewIAAAAA4kOyogDrFv1Frx58qjpqP6pXDz5V6xb9ZcTL7Orq0v33368rr7xSN91004DnampqNGvWLC1YsCDra8866yz97Gc/U29v75DLf/7551VXV6czzjhD++23nxoaGrR27VpJ0t57762LL75YBx98sG655RYtXrxYhx12mA4++GCdcsop6urqkiTdddddqqur08EHH6zf//73/cu+7rrrdN5550mSXnnlFX3605/WQQcdpIMOOkgPPPCAvv3tb+u5557TzJkzddFFF+n555/XgQceKCk1cejZZ5+tGTNmaNasWVqyZEn/Mj/zmc/o+OOP1/vf/35961vfKujzbGlu07y5S9XR3iV3qaO9S/PmLiVhAQAAAAAJQrIiT+sW/UVdF8xV34vtkrv6XmxX1wVzR5ywuO2223TooYdq+vTpmjRpklasWDHg+Tlz5ujKK6/M2vNh++231wEHHKCmpqZh36O1tVWnn366HnzwQW2xxRYDejtMmjRJS5Ys0ezZs/X9739ft9xyi5YsWaL3ve99uuqqq7Ru3Tqdc845ampq0t13361XXnkl63t84xvf0EEHHaR77rlHS5Ys0W677aaLL75YO+20k1paWnTppZcOqH/11VfLzHTvvffqmmuu0dlnn91/K9JHH31U8+fP17333qubbrpJq1atyuuzlKSmxmXq6R6YvOnp7lVT47K8lwEAAAAAKC2SFXla+4NGaV33wMJ13anyEbjxxht1/PHHS5KOO+64DYaCvOtd79K+++6rG264IevrzrxdKgAACyZJREFUzz33XF155ZXq6+sb8j2mTZumAw44QJL0yU9+Uvfdd1//cx//+MclScuWLdNTTz2lI444QjNnztSCBQu0cuVKPf3009phhx20yy67yMz0yU9+Mut7LFmyRKeffrqk1PCUXLcVvf/++/uXteuuu2r77bdXW1uq98MHP/hBTZw4URMmTNBuu+2mlStXDrusTKs7ugoqBwAAAACEJ8S7gQSp76WOgsrzsWbNGi1ZskSPP/64zEx9fX0ysw16IXz1q1/VKaecooMOOmiDZeyyyy7ae++9dfPNN+f9vtEdYCVJm2++uSTJ3XXIIYcM6HUhSY888kghqxSLqqqq/v+PHTt22GEug02uqVZH+4aJick11bHEBgAAAAAYffSsyNOYbWsKKs/HrbfeqhNPPFGPPfaYHn30UT3++OPaYYcddO+99w6ot+uuu+rd7363/vSnP2Vdzle/+lVdeeWVQ77PqlWr9OCDD0qSFi5c2N/LIlNdXZ0eeOABPfv/27v/WLvr+o7jz9dtba/llkKtMwql6LhVyBaECLYdtOjGgltXXLJ1NdOyroxk0cmWMuJMiFmiCc2MdovAP0WmzvljxSmyzAQZ21g2iWPsh5OV1kK5VKAw7G2Bsg763h/nW3Z6vbc/b+/5nvb5SL655/M533O+73P7yTvf++7n8znbtgHwwgsvsHXrVhYuXMjIyAiPPvoo0JkJMp5ly5a9Wuh45ZVXGB0dZfbs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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "jRdi6FJ2QeRP" }, "source": [ "Can you see how terrible is the performance of your ANN?\n", "\n", " ![](https://drive.google.com/uc?export=view&id=1bvT1YG21h6etPlWSQ7-t8qFWu3wVqCms)" ] }, { "cell_type": "markdown", "metadata": { "id": "A2-kQZw4nwgS" }, "source": [ "## Changing number of neurons in the hidden layer\n", "\n", "Up to this point, the number os neurons in the hidden layer was chosen rather arbitrarily as 20. To experiment, with this, the architectures of (10−10−2), (10−20−2), (10−30−2), (10−40−2), and (10−50−2) will be considered, keeping the rest as before." ] }, { "cell_type": "code", "metadata": { "id": "33bvqFGNneeG" }, "source": [ "# Creates a model with the specific number of neurons num_neurons and specific activation g\n", "def make_model(num_neurons=20, g = 'sigmoid'):\n", " model = models.Sequential()\n", " model.add(layers.Dense(units=num_neurons, activation=g, input_shape=(10,)))\n", " model.add(layers.Dense(2))\n", "\n", " model.compile(optimizer=sgd,\n", " loss='mean_squared_error',\n", " metrics=['mean_absolute_error', 'mean_absolute_percentage_error'])\n", " return model" ], "execution_count": 31, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "McBJqYXF3lDa" }, "source": [ "model_10_neurons = make_model(num_neurons=10)\n", "model_20_neurons = make_model(num_neurons=20)\n", "model_30_neurons = make_model(num_neurons=30)\n", "model_40_neurons = make_model(num_neurons=40)\n", "model_50_neurons = make_model(num_neurons=50)" ], "execution_count": 32, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "TFN--Tlin3zu", "outputId": "352a4484-c012-41a0-b0eb-e794fde4691f", "colab": { "base_uri": "https://localhost:8080/", "height": 126 } }, "source": [ "# Training the models - output will be suppressed\n", "print('10 neurons')\n", "hist_10_neurons = model_10_neurons.fit(x_train_norm, y_train, epochs=1000, verbose=0)\n", "print('20 neurons')\n", "hist_20_neurons = model_20_neurons.fit(x_train_norm, y_train, epochs=1000, verbose=0)\n", "print('30 neurons')\n", "hist_30_neurons = model_30_neurons.fit(x_train_norm, y_train, epochs=1000, verbose=0)\n", "print('40 neurons')\n", "hist_40_neurons = model_40_neurons.fit(x_train_norm, y_train, epochs=1000, verbose=0)\n", "print('50 neurons')\n", "hist_50_neurons = model_50_neurons.fit(x_train_norm, y_train, epochs=1000, verbose=0)\n", "print('Done!')" ], "execution_count": 33, "outputs": [ { "output_type": "stream", "text": [ "10 neurons\n", "20 neurons\n", "30 neurons\n", "40 neurons\n", "50 neurons\n", "Done!\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "ed8Cl5j7n50I", "outputId": "ad1f2e8b-0515-4bb0-a875-c9a606f678bc", "colab": { "base_uri": "https://localhost:8080/", "height": 310 } }, "source": [ "plt.title('MSE for the models with\\nvarying number of neurons in hidden layers', fontsize=12)\n", "plt.xlabel('epochs')\n", "plt.ylabel('Loss')\n", "plt.plot(hist_10_neurons.history['loss'], label='10',linewidth=1.0)\n", "plt.plot(hist_20_neurons.history['loss'], label='20',linewidth=1.0)\n", "plt.plot(hist_30_neurons.history['loss'], label='30',linewidth=1.0)\n", "plt.plot(hist_40_neurons.history['loss'], label='40',linewidth=1.0)\n", "plt.plot(hist_50_neurons.history['loss'], label='50',linewidth=1.0)\n", "plt.ylim([0,2500])\n", "plt.legend();" ], "execution_count": 34, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "0sAmn-hyn8vQ" }, "source": [ "From the plot above, it can be seen that the learning gets faster as the number of neurons increases. However, from 40 to 50 neurons the difference is less significative than from 10 to 20 neurons." ] }, { "cell_type": "code", "metadata": { "id": "zgZXmwA2SJi-", "outputId": "c128b544-11c2-4a9b-cff8-b5bba590b5d7", "colab": { "base_uri": "https://localhost:8080/", "height": 313 } }, "source": [ "y_pred = model_50_neurons.predict(x_test)\n", "Target_vs_Predic(y_test,y_pred)" ], "execution_count": 35, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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HF1zzTUZez5st9122n///dXU1DTkZ7S2turMM8/UI488oi222GJAb4dJkyZp6dKlmjVrlr7//e/r9ttv19KlS/UP//APuvbaa7V27Vqde+65ampq0v3336833ngj42d885vf1EEHHaQHHnhAS5cu1W677aZLL71UO+64o1paWnTFFVcMqH/dddfJzPTggw/q+uuv1znnnNN/K9Inn3xS8+fP14MPPqhbb71Vq1atyuu7lKSmBcvV0z0wedPT3aumBcvzfg8AAAAAQGmRrMjTmh8skNZ2Dyxc250qH4FbbrlFn/nMZyRJJ5xwwkZDQT70oQ9p33331c0335zx9eedd56uueYabdiwIetnTJs2Tfvvv78k6bOf/aweeuih/uc+/elPS5KWL1+u5557TkceeaRmzJihhQsXauXKlXr++ee1/fbba+edd5aZ6bOf/WzGz1i6dKnOwc8RvwAACrtJREFUPPNMSanhKbluK/rwww/3v9cuu+yi7bbbTm1tqd4PhxxyiCZOnKgJEyZot91208qVK4d8r3SrO7oKKgcAAAAAhCfEu4EEacNrHQWV5+Ott97S0qVL9fTTT8vMtGHDBpnZRr0Qzj//fJ122mk66KCDNnqPnXfeWXvttZduu+22vD83ugOsJGnzzTeXJLm7Dj300AG9LiTpiSeeKGSRYlFVVdX//7Fjxw45zGWwyTXV6mjfODExuaY6ltgAAAAAAKOPnhV5GjO1pqDyfNxxxx06+eST9dRTT+nJJ5/U008/re23314PPvjggHq77LKLdt11V/3xj3/M+D7nn3++rrnmmqyfs2rVKj3yyCOSpEWLFvX3skhXX1+vP//5z3rxxRclSX//+9/V1tamXXbZRStXrtRLL70kKdUTJJNDDjmkP9Gxfv16dXZ2aostttC7776bsf4BBxzQ31ukra1NK1euVF1dXdZlyFdDY73GVw3MwY2vGqeGxvoRvzcAAAAAoDhIVuRps280ShOqBhZOqEqVD9OiRYt0zDHHDCg79thjMyYEzj//fL3yyisZ32f3/9/evcbYVZVxGH/+04ojTCnUUaNQCkpViAYhimWEghcMKoImWmu8YC2SGC9oUKImxJhoQqPRagS+FFDxLqhcjCaIqBiVKOIdSxEpoEBB7FSkWLGvH/auHsaZXqc9+7TPL9mZs9bZ5+z3TFfe7Hm71jqHHcYR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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "_w7CihwB6d7j" }, "source": [ "## Cross validation\n", "\n", "When the amount of input data is large enough, one can divide the data into *training, validation* and *test* set. The *training set*, as the name suggests, is used to train the model, that is, to adjust the internal parameters of the model such that the inputs match the outputs with the minimum error possible. The *validation set* is used to test the performance of the model before it is subject to the actual test set, and to tune its hyperparameters. The *test set*, which should be kept separate and untouched in the training process, is used to provide an unbiased evaluation of the performance of the final model.\n", "\n", " ![](https://drive.google.com/uc?export=view&id=19txDsk2QD64Y2zjh5c439e8U5KM7j_UZ)\n", "\n", "\n", "When there is no validation set, the most widely used approach is cross-validation (CV). In the well known K-fold CV the training set is split into $K$ parts - see figure below. The input data set is randomly divided into $K$ subsets (also known as folds). The ML model is trained with $K-1$ subsets, and evaluated in the subset that was not used for training. This process is repeated $K$ times with a different subset reserved for evaluation (and excluded from training) each time. For each training step, the average error is calculated. At the end, the model with the smallest error is selected. This can simulate training/validation, which is useful for hyperparameter tuning, without touching the test set. \n", "\n", " ![](https://drive.google.com/uc?export=view&id=15k96E0QY-QtKpELudeqMMpsApCxibAHJ)\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "vW-kekXooxAk" }, "source": [ "Applying cross-validation, seeking for the best model:" ] }, { "cell_type": "code", "metadata": { "id": "83p91hhQowE_" }, "source": [ "from sklearn.model_selection import cross_val_score, KFold" ], "execution_count": 36, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Yvoc-7Zzo_HE" }, "source": [ "def get_cross_val_score(model, x, y, cv=5, epochs=1000):\n", " cvs = np.zeros((cv, len(model.metrics)))\n", " \n", " k_folds = KFold(n_splits=cv)\n", " k_folds.split(x, y)\n", " for j, (train_idx, test_idx) in enumerate(k_folds.split(x, y)):\n", " model.fit(x_train_norm[train_idx], y_train[train_idx], epochs=100, verbose=0)\n", " cvs[j,:] = np.array(model.evaluate(x=x_train_norm[test_idx], y=y_train[test_idx], verbose=0))\n", " return cvs" ], "execution_count": 37, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "cPmqySCNpApW", "outputId": "f3abb477-9526-4aa3-d6cc-31f8e2aeb6a3", "colab": { "base_uri": "https://localhost:8080/", "height": 126 } }, "source": [ "print('10 neurons')\n", "cv_10_neurons = get_cross_val_score(model_10_neurons, x_train_norm, y_train, cv=5, epochs=1000)\n", "print('20 neurons')\n", "cv_20_neurons = get_cross_val_score(model_20_neurons, x_train_norm, y_train, cv=5, epochs=1000)\n", "print('30 neurons')\n", "cv_30_neurons = get_cross_val_score(model_30_neurons, x_train_norm, y_train, cv=5, epochs=1000)\n", "print('40 neurons')\n", "cv_40_neurons = get_cross_val_score(model_40_neurons, x_train_norm, y_train, cv=5, epochs=1000)\n", "print('50 neurons')\n", "cv_50_neurons = get_cross_val_score(model_50_neurons, x_train_norm, y_train, cv=5, epochs=1000)\n", "\n", "print('Done')" ], "execution_count": 38, "outputs": [ { "output_type": "stream", "text": [ "10 neurons\n", "20 neurons\n", "30 neurons\n", "40 neurons\n", "50 neurons\n", "Done\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "_2w8uisFpDJ0", "outputId": "21c158e3-14c6-4e05-fb21-97cfd8f89f70", "colab": { "base_uri": "https://localhost:8080/", "height": 312 } }, "source": [ "plt.style.use('bmh')\n", "fig, ax = plt.subplots()\n", "\n", "xi = np.arange(10,60,10)\n", "means = np.array([cv_10_neurons[:,0].mean(),\n", " cv_20_neurons[:,0].mean(),\n", " cv_30_neurons[:,0].mean(),\n", " cv_40_neurons[:,0].mean(),\n", " cv_50_neurons[:,0].mean()])\n", "\n", "stds = np.array([cv_10_neurons[:,0].std(),\n", " cv_20_neurons[:,0].std(),\n", " cv_30_neurons[:,0].std(),\n", " cv_40_neurons[:,0].std(),\n", " cv_50_neurons[:,0].std()])\n", "\n", "ax.errorbar(xi,\n", " means,\n", " yerr=stds);\n", "ax.set(xticks=(xi),\n", " title='MSE\\'s mean plus or minus one standard deviation\\nusing 5-fold cross-validation for different numbers of neurons',\n", " xlabel='Number of neurons',\n", " ylabel='MSE');" ], "execution_count": 39, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "E8wu7K0epGyY", "outputId": "5fd28891-7faa-4096-cf01-381b2c98b499", "colab": { "base_uri": "https://localhost:8080/", "height": 219 } }, "source": [ "predictions = np.zeros((5,3))\n", "predictions[0,:] = model_10_neurons.evaluate(x_test_norm, y_test)\n", "predictions[1,:] = model_20_neurons.evaluate(x_test_norm, y_test)\n", "predictions[2,:] = model_30_neurons.evaluate(x_test_norm, y_test)\n", "predictions[3,:] = model_40_neurons.evaluate(x_test_norm, y_test)\n", "predictions[4,:] = model_50_neurons.evaluate(x_test_norm, y_test)\n", "predictions" ], "execution_count": 40, "outputs": [ { "output_type": "stream", "text": [ "4/4 [==============================] - 0s 2ms/step - loss: 2008.9974 - mean_absolute_error: 28.6007 - mean_absolute_percentage_error: 30.0462\n", "4/4 [==============================] - 0s 2ms/step - loss: 1896.6908 - mean_absolute_error: 25.9838 - mean_absolute_percentage_error: 25.6469\n", "4/4 [==============================] - 0s 2ms/step - loss: 1694.8474 - mean_absolute_error: 28.8508 - mean_absolute_percentage_error: 31.5147\n", "4/4 [==============================] - 0s 2ms/step - loss: 1439.5546 - mean_absolute_error: 21.9037 - mean_absolute_percentage_error: 21.5177\n", "4/4 [==============================] - 0s 2ms/step - loss: 1355.3826 - mean_absolute_error: 21.5887 - mean_absolute_percentage_error: 20.9981\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "text/plain": [ "array([[2008.99743652, 28.60068893, 30.04624557],\n", " [1896.6907959 , 25.98376656, 25.64687729],\n", " [1694.84741211, 28.85078239, 31.51474953],\n", " [1439.55456543, 21.90367508, 21.51766586],\n", " [1355.38256836, 21.58868408, 20.9980545 ]])" ] }, "metadata": { "tags": [] }, "execution_count": 40 } ] }, { "cell_type": "code", "metadata": { "id": "h_ASEb1CpIjj", "outputId": "4a293e45-a17c-4553-cb4a-085de6445248", "colab": { "base_uri": "https://localhost:8080/", "height": 312 } }, "source": [ "fig, ax = plt.subplots()\n", "\n", "xi = np.arange(10,60,10)\n", "ax.plot(xi, predictions[:,0])\n", "ax.set(xticks=(xi),\n", " title='MSE for the test set\\nfor different numbers of neurons',\n", " xlabel='Number of neurons',\n", " ylabel='MSE');" ], "execution_count": 41, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "T7TtDgxQpVIu" }, "source": [ "## Activation functions\n", "\n", "Until now, the sigmoid or logistic function,\n", "$$g(z) = \\frac{1}{1+e^{-z}}$$\n", "was used to create activate the neurons.\n", "\n", "The purpose of the activation function is to introduce non-linearity into the output of a neuron. See the figure below for the most commonly used activation functions.\n", "\n", "![](https://drive.google.com/uc?export=view&id=1iZPDL1JuFLeH9uOc-SfbTfBWBnXwamRM)\n", "\n", "This non-linearity is one of the factors that affect our results and the accuracy of our model. When the NN has several hidden layers, a linear activation function will simply generate a series of related transformations so, this model is no more expressive than a simple standard logistic regression model. Unless we convey nonlinearity, we are not computing interesting models, even if we delve into neural networks.\n", "\n", "*Regarding the choice of activation functions in the last layer*, it imposes restrictions on the outputs of the ANN, therefore, its choice depends on the type of problem we want to solve.\n", "For example, the sigmoid function only generates positive values ​​between $0$ and $1$, while the hyperbolic tangent provides values ​​between $−1$ and $1$, and the ReLu function only generates positive values ​​between $0$ and $+\\infty$. \n", "\n", "In our case, we have a regression problem with arbitrary values for output (function adjustment), so, the linear activation function (default in keras) must be used.\n", "\n", "*Regarding the activation functions of the intermediate layers*, the choice is not so direct. But there are a few tips:\n", "* The sigmoid function can be used if both input and output data are in the range $0$ to $1$;\n", "* It is a general rule to use the hyperbolic tangent instead of the sigmoid if the input and output data are in the range of $−1$ to $1$;\n", "* Hyperbolic and sigmoid are very stable. It is observed, however, that the use of these functions in the intermediate layers increases the difficulty of training the ANN, since in general they cause saturation and vanishing gradients problems (some weights go to zero);\n", "* A better choice for the activation function of the intermediate layers is ReLu or leReLu, as they have no saturation problems or small gradients. But they have an opposite problem, gradient explosion (some weights increase a lot). ReLu or leReLu are the most used activation functions for middle layers.\n", "\n", "Some of these functions are plotted below." ] }, { "cell_type": "code", "metadata": { "id": "EsFGHTNtpaMu", "outputId": "1af58f7a-352a-4ace-a6ab-a94c8f9fb761", "colab": { "base_uri": "https://localhost:8080/", "height": 296 } }, "source": [ "x = np.linspace(-3, 3, 500)\n", "relu = np.maximum(0, x)\n", "sigmoid = 1/(1+np.exp(-x))\n", "tanh = np.tanh(x)\n", "softplus = np.log(1+np.exp(x))\n", "\n", "plt.plot(x, relu, label='ReLU',linewidth=1.5)\n", "plt.plot(x, sigmoid, label='sigmoid',linewidth=1.5)\n", "plt.plot(x, tanh, label='tanh',linewidth=1.5)\n", "plt.plot(x, softplus, label='softplus',linewidth=1.5)\n", "plt.legend(fancybox=True, framealpha=0.5, loc='upper right')\n", "plt.title('Some common activation functions', fontsize=12)" ], "execution_count": 42, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Text(0.5, 1.0, 'Some common activation functions')" ] }, "metadata": { "tags": [] }, "execution_count": 42 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "kTQIG5c0phTF" }, "source": [ "### Training again with other activations\n", "\n", "Now, other activations will be used in the model and its result will be evaluated. The functions that will be used are sigmoid, ReLU, tanh e softplus. Of course, we'll implement in the hidden layer (20 neurons), since the last must have linear activation function because we're implementing a regression problem. \n", "\n", "Other hyperparameters will be kept constant, with SGD as optimizer, MSE as loss and with (10-20-2) architecture." ] }, { "cell_type": "code", "metadata": { "id": "PcXbHtQipjTy" }, "source": [ "sigmoid_model = make_model(g = 'sigmoid')\n", "relu_model = make_model(g = 'relu')\n", "tanh_model = make_model(g = 'tanh')\n", "softplus_model = make_model(g = 'softplus')" ], "execution_count": 43, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "kBypJ2NRples", "outputId": "2e2b74f2-2575-4e1f-aeab-a33e45c7834a", "colab": { "base_uri": "https://localhost:8080/", "height": 108 } }, "source": [ "# Training the models\n", "print('Sigmoid')\n", "sigmoid_history = sigmoid_model.fit(x_train_norm, y_train, epochs=1000, batch_size=32, verbose = 0)\n", "print('ReLU')\n", "relu_history = relu_model.fit(x_train_norm, y_train, epochs=1000, batch_size=32, verbose = 0)\n", "print('Tanh')\n", "tanh_history = tanh_model.fit(x_train_norm, y_train, epochs=1000, batch_size=32, verbose = 0)\n", "print('Softplus')\n", "softplus_history = softplus_model.fit(x_train_norm, y_train, epochs=1000, batch_size=32, verbose = 0)\n", "print('Done!!!')" ], "execution_count": 44, "outputs": [ { "output_type": "stream", "text": [ "Sigmoid\n", "ReLU\n", "Tanh\n", "Softplus\n", "Done!!!\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "2ysGdmYKppJU", "outputId": "88a98be4-0307-47da-b8ee-f2dbc24c6ed9", "colab": { "base_uri": "https://localhost:8080/", "height": 338 } }, "source": [ "plt.style.use('fivethirtyeight')\n", "plt.title('Training MSE for the models with different activation functions', fontsize=12)\n", "plt.xlabel('epochs')\n", "plt.ylabel('Loss')\n", "plt.plot(sigmoid_history.history['loss'], label='sigmoid',linewidth=1.5)\n", "plt.plot(relu_history.history['loss'], label='relu',linewidth=1.5)\n", "plt.plot(tanh_history.history['loss'], label='tanh',linewidth=1.5)\n", "plt.plot(softplus_history.history['loss'], label='softplus',linewidth=1.5)\n", "plt.ylim([0,2500])\n", "plt.legend(fancybox=True, framealpha=0.5)" ], "execution_count": 45, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 45 }, { "output_type": "display_data", "data": { "image/png": "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LVu2EBMTw/fff8/mzZsBy4fV+++/z5IlSzh16hQtWrRg0KBBd419z5497Nmzh8WLFxMdHc17773Hjz/+yB9//MH333/P77//Dlg+6L/++mvWrFnD/v37SUtL0973Y8eO8eabb7Jw4UKOHTvGtWvX+Ouvv7RjLFy4kLVr17J27VqOHTuGl5cXo0aNyhdLWloaY8aMYeXKlVy4cIGff/6ZsLCwfOVcXV35+9//rsUWExNDYGCg9qERExNDq1atrJ7j4eHBihUrqFq1KgkJCSQkJGi/C+vXr6dnz56cO3eOLl26FPr7nJSUxEsvvcT48eM5deoU1atXt/qgut3+/fsJCAhg2bJlJCQk8N///pfevXszbNgwEhISePLJJ4t0XmJiYti1axerVq0q0vtb0O9GaGgo77//PuHh4SQkJBT6BcnHx4fly5cTHx/P/PnzGTt2LPv37wcsvydRUVFMmTKFc+fOsW7dOoKCgu76ewrw2GOP4e7uzq+//qptW7lypfalVK/XM23aNE6fPs3PP//M9u3bWbRokfa+gOVvKiEhgR49eljVXZS/se+++463336bs2fPUrNmTaZMmZLvdRf091sUly9f5saNGxw9epR58+YxevRokpOTAcvf7/79+/n55585c+YM77zzDjqdjrVr1wKWLzsJCQmEh4db1Xn9+nX69OnDkCFDOH36NK+++ip9+vTh2rVrVudv/vz5xMXFkZ2dzbx58wBLz1dKSgqHDx/mzJkzzJkzB1dX17u+BkmGxaDT6YiOjsbFxQU3NzcqVqxIt27dcHd3x9PTkzfffJOYmJhCnx8YGMg///lP9Ho9zz//PJcuXSr020phZePj49m7dy9jx47F2dmZFi1aaN8a76ZZs2Zcv36duLg4li1bRt++fa32V69enTVr1nDx4kUGDhxIrVq1iIqKskqK33//PUFBQdq/Z555pkjn7c8//yQtLY0RI0bg7OzMP/7xDzp16sTKlSu1Ml26dKF58+bodLp7/tLebvjw4Xh5eREYGMgTTzzBoUOHAFi8eDEjRowgNDQUg8HAm2++yaFDhwr98AMYPXo0rq6utGvXDnd3d3r16oWPjw/VqlWjRYsWHDx4EIAVK1bw6quvUr16dcqVK8ekSZNYtWoVRqORH3/8kU6dOtGqVStcXFwYN24cOt2tP7PFixczYcIE/P39cXFxYcyY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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "11NtQda9B1y2", "outputId": "f1086b1b-3585-4fba-f394-bda0a2ea64ff", "colab": { "base_uri": "https://localhost:8080/", "height": 335 } }, "source": [ "y_pred = softplus_model.predict(x_test)\n", "Target_vs_Predic(y_test,y_pred)" ], "execution_count": 46, "outputs": [ { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABDwAAAGoCAYAAACqpfURAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXgUVdr38V8MJCwBExJCgATZ8rDINmrCGmRxWERgZEc0g6IgkHFGBsHlUUFBBXkUBQQREaMIaBCEEWXMCEgUSXBjETCREUEiECBARBLAfv/g7ZY2naSTdLqrqr+f6+K6SPXp7ru6TlWduuucUwG5ubk2AQAAAAAAWMhVvg4AAAAAAADA00h4AAAAAAAAyyHhAQAAAAAALIeEBwAAAAAAsBwSHgAAAAAAwHJIeAAAAAAAAMsh4QEAAEwjNDRU/fr1c1r29NNPKzQ0VFu3bq2Q7zx48KBCQ0M1fvz4Cvl8b/r+++91++23q3nz5goLC1NoaGi5Pm/r1q2W+W0AANZDwgMA4FOhoaGl+rd8+XJfh1wq48ePr9CLcZSfPaHxx0SK1Vy6dEmjRo3S+++/r65du+qBBx7Q1KlTi32P2RIaCQkJCg0NVfv27YstZ98vQ0ND9f7777sss3TpUoWGhurpp592Wm5PsIWGhmrhwoUu35uammqq3w0ArKqSrwMAAPg3Vxdcb731lg4dOqSRI0eqQYMGTq+1bt3aW6HBJMaOHavBgwcrOjq6Qj6/Xr16Sk9PV82aNSvk873l4MGD2rdvn3r27KnFixf7OhyP++KLL7Rr1y4FBARo//79+uyzz9SpU6cS3/f444+rV69eqly5cqm/c/bs2Ro5cmS5e8oAACoGCQ8AgE899NBDhZalpaXp0KFDuu2225SQkOCDqGAm4eHhCg8Pr7DPr1y5sv7nf/6nwj7fW7KzsyVJkZGRPo6kYrz22muSpPvvv1/PPfecli1bVmLCo0mTJsrKytKrr76qe++9t1Tf16RJE33//feaPXu2nnrqqTLHDQCoOAxpAQCYxvLly3XHHXeobdu2ioqKUkxMjHr37q0VK1a4LN+vXz+Fhobqhx9+0MKFC9WxY0fVqVNHt912m6PMl19+qVtvvVXR0dGKiYnRwIEDlZ6eXuy8EAcOHNDf/vY3tWrVSpGRkWrSpIlGjRqlr7/+2qlc69atHbH179/faWhOcVavXq3Q0FA98MADLl+/ePGimjVrpvr16ysvL0+SVFBQoJdfflk33nijGjVqpKioKLVq1UpDhgzRunXriv0+O/s6L1++XB988IH+/Oc/q169emrYsKFGjx6t//73v4Xec+WQnZUrV6p79+6qV6+eunTp4ihz+vRpzZw5Ux07dlTdunUVHR2tPn36aO3atS7jKCgo0OzZs9WuXTtFRkaqTZs2mjFjhvLz84uN29W2yszMVFJSktq0aePYVr169dL8+fMlXa5Tbdu2lSR9+umnTtvIPpShuDk8jh07pilTpqht27aKjIxUo0aNNHz4cH366aeFyl45POTgwYO666671LhxY9WpU0fdunXThx9+6HL9irN161YNGzZMjRo1UmRkpNq2basHH3xQOTk5TuWuHLKzYsWKQuvoytNPP63+/fsXek9RQ8tKu07vvfeeBg4cqIYNGyoyMlLXXXedpk2bpjNnzpT6dzhz5ozWrFmjmJgYPfLII4qJidG6deuUm5tb7Pv++c9/qkaNGpo9e3aJZf9ozJgxio6O1pIlS1zuGwAA36OHBwDANP75z3+qefPm6tSpk6KionTy5El99NFHGj9+vDIzM/XYY4+5fN/UqVP1+eefq3fv3urVq5dCQkIkXb7AHTRokC5evKj+/furcePG2rNnj/r376+uXbu6/KwtW7Zo1KhROn/+vHr37q0mTZooOztb69evV2pqqt566y317NlT0uVkwFtvvaXdu3e7HJ5TlH79+unqq6/W6tWrNXPmTAUFBTm9/p///EdHjx7VyJEjHesyYcIEpaSkqHnz5ho6dKiqV6+u7Oxsffnll/rXv/6lAQMGuPXdkhzr0r9/fyUkJGjnzp1au3attm7dqn//+99q0qRJoffMnz9fW7ZsUd++fXXjjTeqoKBAknTkyBH1799f33//vTp27KjRo0fr3Llz+ve//63Ro0dr6tSpTr18bDabRo8erQ0bNqhhw4a65557dOHCBS1fvlx79uxxex0kaePGjRo9erTOnz+vnj17avDgwTpz5oy+/fZbzZkzR0lJSWrdurXuvfdeLVq0SDExMU7JsCuTNq78+OOP6tu3r3766Sd17txZgwYN0s8//6y1a9fqo48+0rx58zRq1KhC7zt06JB69uyphg0bavjw4Tp16pTWrFmj2267TWvXri2y7v1RcnKy/v73v6tq1aoaOHCgoqKitH37di1atEj/+te/tHHjRtWvX1/S5X3gxx9/1IoVK9SqVStH8qO4dezSpYvL90iFh5aVdp3++c9/6tVXX1X9+vV1yy23KDQ0VDt27NDcuXP173//Wxs3blSNGjXc+h0k6e2339Yvv/yiCRMmKDAwUCNHjtTs2bO1YsWKYufRiIyM1D/+8Q89+eSTmjNnjmbMmOH2d1apUkWPP/647rnnHj3++ONKTk52+70AAO8g4QEAMI1t27apUaNGTssKCgo0ZMgQvfDCCxozZozjAu9KO3fu1CeffKJrrrnGsey3337T3/72N+Xn52vFihXq27ev47WlS5dq0qRJhT7n9OnTuvPOO1W5cmWlpqaqefPmjtf279+vnj17auLEifrmm28UHBysCRMmaNeuXdq9e3ephudUqVJFgwcP1tKlS7Vx40bHXXY7e68R+8X56dOntXr1arVr106pqamqVMn59H7ixAm3vtfuww8/1KpVq9S7d2/Hsnnz5unRRx/VAw88oHfffbfQe+zJkDZt2jgtHz9+vA4cOKAlS5ZoyJAhjuVnzpzRLbfcotmzZ+uWW25xXECnpKRow4YNuu666/T++++ratWqkqSHH37YkUhyx4kTJxzJkrVr1+rGG290ev3w4cOSpDZt2ujqq6/WokWL1KBBA5dDrIoyadIk/fTTT3rwwQf14IMPOpYnJSXppptu0qRJk9StW7dCdTItLa3Qe4YOHarBgwdr3rx5biU8Dh8+rMmTJ6tatWpKTU1VixYtHK/NmDFDc+bM0aRJk7Rq1SpJl4eObd26VStWrFDr1q3dWk97fXXnPaVZp1WrVunVV1/VLbfcoldeecWxjSXp2Wef1cyZM/XMM89o5syZJcZot2zZMgUEBDgSTLfddpueffZZJScnlzhx6IQJE/Taa69p8eLFuvvuu9WwYUO3v3fIkCFatGiR1q1bp23btqljx45uvxcAUPEY0gIAMI0/JjskKSgoSHfffbcuXbqkTz75xOX77rvvPqdkhyRt375dBw4cUMeOHZ2SHZI0evRoNW3atNDnrFy5UidPntTUqVOdkh2S1KxZMyUmJurnn3/Wli1bSrtqhdiTGW+99ZbT8tzcXH3wwQe65pprHHfnAwICZLPZFBQUpMDAwEKfVdr5Lbp27eqU7JAuJy6io6P18ccf68iRI4Xe89e//rVQsmPPnj3asmWL+vXr55TskKSaNWvqwQcflM1m0zvvvONYbh8q8eijjzpdCIeGhmry5Mlur8Nbb72lM2fOaPTo0YWSHZLKPcHpkSNHlJqaqvr16xdKjl177bW66667lJ+f70g4XCkmJqbQcKWePXsqOjpaX3zxhVvfv3LlShUUFGjMmDFOyQ5Jmjx5surWrauNGzc65u2oaKVZp5deekmBgYGaN2+e0zaWLieRwsPD9fbbb7v93Tt27NDu3bvVsWNHR7KiYcOG6ty5s/bu3avPP/+82PdXrVpVjz32mAoKCvT444+7/b3S5X3P3ivkkUcekc1mK9X7AQAVix4eAADTOHTokF544QVt2bJFhw8f1q+//ur0elEXd9dff32hZTt37pQkl3dkr7rqKsXHxysrK8tp+fbt2yVdvpB3NfeBvfz+/fvVq1cvN9aoaDfccIOaNWum1NRU5eTkKCIiQtLl+T3y8/M1YsQIBQQESLqcPOjTp48+/PBDde7cWbfccos6duyouLg4x5CX0ujcuXOhZZUqVVL79u11+PBh7dy5U/Xq1XN63dVvbP+9zp496/L3svc82b9/v2PZN998o4CAAJeTTbqKqyg7duyQJN10001uv6c0vvnmG0lS+/btCw05kqRu3bppwYIFjnJXat26tcvEVHR0tNLT00v1/a56g1SpUkUdOnTQmjVrtHPnTtWtW9etzywPd9fp3Llz2rlzp8LCwrRo0SKXnxUUFKTs7GydPHlStWrVKvG7ly1bJkmFhg+NGjVKaWlpWrZsmTp06FDsZwwdOlQLFy7Ue++9p+3bt5f4WNsrdezYUQMGDNC6deuUkpKioUOHuv1eAEDFIuEBADCFH374QT169FBubq46duyo7t27q2bNmgoMDHTMM1DUpJaunkphnxixdu3abr/n5MmTkqQ33nij2Fh/+eWXYl9312233abHH39c77zzjqNb/ooVKxQQEKCRI0c6lX3ttdf04osvKiUlRbNnz5Z0+ekiffr00YwZMwr1cClOUU/xsP9WriaVLO732rJlS7G9Xq78vc6cOaOaNWsqODjY7bhcOX36tCRV2MW+/TcoKqY6deo4xXGlq6++2uV7AgMD9dtvv1X491cEd9cpNzdXNptNJ0+e1KxZs4r9zLy8vBITHqdPn9a7776r6tWra+DAgU6vDRw4UFOmTNF7772nZ555ptjJggMCAjRz5kzdfPPNeuSRR/TRRx8V+71/NH36dH344YeaPn16oSFoAADfIeEBADCFBQsW6OTJk1qwYEGhO7kpKSlFPqlFkqMnxJXsEyIeP37c5XuOHTtWaFnNmjUlSZs3b1a7du3cjr2shg8frieeeEJvvfWWxo8fr++++047duxQ586dC80zULVqVU2dOlVTp05Vdna2tm3bpnfeeUfr16/Xvn379Nlnn6ly5cpufa+rdZd+/63sv8OVXP3G9nIzZsxQUlKSW99ds2ZN5ebmKj8/v1DSo6i4XLFfgGdnZzuewuJJ9nUrKqajR486lbPa95eVPZ6WLVvqs88+K/fnvf322zp37pyk4ocprVq1SuPGjSv2szp16qT+/ftr/fr1Wr16daniaNSoke655x4tWLBAL730UqHhXQAA32AODwCAKRw4cECSXD5txNUjQEtivyDZtm1bodd+++03l0ML4uLiinxPUezd/N29c3+lqKgo9ejRwzHx6R8nKy1K3bp1NWjQIK1YsULx8fHKzMzUvn373P5eV7/nxYsXHUNU3L2Yi4+Pl1S636tt27ay2WwuL4ZLs51vuOEGSVJqamqJZcuyjey/wfbt2x1PpLmSvUdLRSXG7EkcV4/izc/Pd2yr8iZ77L/NpUuXyvU5diEhIWrZsqUyMzNLPZmuK/bhLH/5y190xx13FPpnH17y+uuvu/V506dPV+XKlTV9+vQie4wV5YEHHlBYWJief/75IhOpAADvIuEBADAF+yNd09LSnJb/5z//KdPjIDt06KBGjRpp27Zt+uCDD5xeW7ZsWaH5OyTp9ttvV2hoqJ599lmXCRGbzaZt27Y5XQDbu+QfOnSo1DFKv89L8Oabb+rtt9922XU/JydHu3fvLvTe/Px8x5CGatWquf2dn3zyiTZu3Oi0bOHChTp8+LC6d+9eaP6OorRr106dO3fWhg0b9Prrr7uc0DErK8vpt7Gv75NPPuk0R0tubq7mzJnj9jrcdtttqlmzppYtW+ZyMtuffvrJ8f/Q0FAFBAQ4ntzijvr166tnz5766aef9MILLzi9tnfvXi1dulTBwcEaNmyY259ZGsOGDVNQUJBeffVVfffdd06vPffcczpy5Ih69epV7iE99vpbmt+mJBMnTtSFCxc0YcIEnTp1qtDrZ8+edczBUpyMjAzt2bNHjRs31muvvaZ58+YV+vfKK6+oZcuW+vbbb92aH6Vx48a6++67dejQIS1ZsqRU6xUaGqopU6bo7NmzpaqrAICKw5AWAIApjBkzRsuXL9fo0aM1cOBARUVFae/evUpNTdWtt97q8lGpxbnqqqv04osvasiQIbr99ts1YMAANW7cWHv27NGmTZv05z//WR999JGuuur3ewNhYWFKTk7W7bffrl69eqlr165q3ry5KleurJ9++kk7duzQ4cOH9cMPPzgmsuzevbtefPFFPfHEE9q7d69jHoE/PtGiKH379lVYWJheffVVXbhwQSNHjiw0EemRI0fUtWtXtWzZUtdee63q16+vX375RR9//LG+//57DRgwQE2aNHH7t+ndu7dGjRqlAQMGqGHDhtq5c6dSU1NVq1atUl/ILVmyRAMHDtTf//53vfzyy4qLi1NYWJiOHDmiffv2aefOnXrzzTcVExMj6fJjPt9991198MEH6tixo/r166cLFy5o/fr1ateunb7//nu3vjc8PFyvvPKK/vrXv+ovf/mLevbsqVatWikvL0979+7V7t279cMPP0i63OsgPj5e27dv1/Dhw9W2bVtVrlxZnTp1Knai1Oeee059+vTRzJkz9cknnyguLk4///yz1q5dq/Pnz2vu3LnlfhpMURo0aKBZs2Zp0qRJ6t69u/7yl7+oTp062r59uz799FPVr19f//d//1fu74mNjVV0dLS2bdume+65R02aNFFgYKD69u2rVq1alekzR40apW+++UaLFy9Wu3bt1LNnTzVo0ECnT5/Wjz/+qM8++0zdu3cv9ISiP7L37khMTHQ5pMrujjvu0EMPPaRly5Y5eh0VZ+rUqVqxYoXbde1Kd999t5YsWVKm9wIAPI8eHgAAU2jVqpXWr1+v+Ph4bdy4UUuXLtXZs2f1xhtv6M477yzTZyYkJOj9999XQkKCPvroI7388sv69ddftX79esccGfa5Puy6du2qTz/9VOPGjdORI0eUnJys119/Xbt27VJ8fLyWLFniNG9C9+7d9cwzz6hWrVpasmSJZs6cqZkzZ7odY3BwsIYMGaILFy5Icj2cpUGDBnr44YcVHh6uTz/9VC+99JLWrl2riIgIvfjii1q6dGmpfpcBAwYoOTlZP/74oxYtWqSMjAwNHDhQqamppUqcSJeH12zatEnTpk1TcHCw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aNiwYZ6OEQAAACjSyuQMFeRfdFpWkH9RK5MzfBQRAMAIyjSkJSgoyPH/WrVqqV+/furXr5/HggIAAADcdSInr1TLAQD+oUw9PG688UYlJyd7OhYAAACPSducpaS7VmjkgFeUdNcKhjdYWHhESKmWAwD8Q5kSHrt379b06dPVu3dvPf/889q2bZsKCgo8HRsAAECZMKeDfxmRGKegYOeOy0HBlTQiMc5HEQEAjKBMCY+0tDQtWLBAvXv31meffabhw4erQYMG6t27txYsWODpGAEAAEqFOR38S5duTTU2KUERtUMUECBF1A7R2KQEntICAH6uTHN4/OlPf9L58+c1ZswYTZo0STabTTt37tTnn3+un376ydMxAgAAlApzOvifLt2akuAAADgpU8Jj/PjxOnDggP7zn/9o0KBBCggIUNu2bdW2bVtPxwcAAFBq4REhyjleOLnBnA4AAPiPMg1pkaTGjRtr0KBBjr8/+eQT5vEAAACGwJwOAACgzAmPvLw85eX9fuckIiJCc+fO1bZt2zwSGAAAQFkxpwMAACjTkJbnn39eTz75pCSpefPm6tevn4YPH64pU6bomWeeUceOHT0aJAAAQGkxpwMAAP6tTAmPI0eO6Mcff9SZM2eUlpam1atXa+7cuWratKnq1Knj6RgBAAAAAABKpUxDWmrXrq2QkBDVq1dPw4YN06pVq7R79249/PDDevXVVz0do5NTp07pgQceUFxcnKKionTttddq0qRJOnnypFO53NxcjR07Vg0aNFCDBg00duxY5ebmOpXZs2ePbr75ZkVFRalFixaaNWuWbDZbhcYPAAAAAAAqXpl6eERERGjnzp1q06aNY1mdOnXUv39/jwVWlOzsbGVnZ2v69Olq3ry5jhw5osmTJ2vMmDFas2aNo9zdd9+tw4cPKyUlRZJ03333ady4cVq1apUk6cyZM7r11lvVqVMnffzxx8rMzNTEiRNVrVo1/e1vf6vw9QCMKG1zllYmZ+hETp7CI0I0IjGO7uAAAAAATKlMCY/hw4dr1KhR6tatm3r37q0WLVp4Oq4itWzZUm+++abj78aNG+uJJ57Q8OHDdebMGdWsWVP79+9XamqqPvzwQ8XHx0u6PO9I3759lZmZqdjYWL3zzjv69ddftXDhQlWtWlUtW7bUd999p5deeklJSUkKCAjw2joBRpC2OUuL529V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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "MJr8jVESqQzS" }, "source": [ "## Diferent Optimizers with different activations\n", "A comparison with different optimizers and activation functions will be made. Models with (10-20-18) arquitecture will be made using these diffentent combinations and the results will be gathered and shown.\n", "\n", "The optimizers that will be used are:\n", "+ SGD\n", "+ AdaGrad\n", "+ Adadelta\n", "+ RMSprop\n", "+ Adam\n", "\n", "And the activation functions will be:\n", "+ sigmoid\n", "+ tanh\n", "+ softplus\n", "+ ReLU" ] }, { "cell_type": "code", "metadata": { "id": "R69b-_iHqTB5" }, "source": [ "# Makes a model with different optimizer and activation\n", "\n", "def make_model_2(activation, optimizer):\n", " model = models.Sequential()\n", " model.add(layers.Dense(20, activation=activation, input_shape=(10,))) \n", " model.add(layers.Dense(2))\n", " model.compile(optimizer=optimizer,\n", " loss='mean_squared_error',\n", " metrics=['mean_absolute_error', 'mean_absolute_percentage_error'])\n", " return model" ], "execution_count": 70, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Dieth96YqUXs" }, "source": [ "model_s = {'SGD': {}, 'AdaGrad': {}, 'Adadelta': {}, 'RMSprop': {}, 'Adam': {}}\n", "activation_s = ['sigmoid', 'tanh', 'softplus', 'relu']" ], "execution_count": 71, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "WEGP9DiLqWNz", "outputId": "fbb041f7-97fb-4696-aa99-bf9bf8a81c63", "colab": { "base_uri": "https://localhost:8080/", "height": 381 } }, "source": [ "i = 0\n", "for optimizer in model_s.keys():\n", " for activation in activation_s:\n", " print(f'Combination {i}: {optimizer} with {activation}')\n", " model = make_model_2(activation, optimizer)\n", " hist = model.fit(x_train_norm, y_train, epochs=1000, verbose=0)\n", " train_loss = hist.history['loss']\n", " test_loss = model.evaluate(x_test_norm, y_test, verbose=0)\n", " model_s[optimizer][activation] = {'model': model, 'train': train_loss, \n", " 'test': test_loss, 'hist': hist}\n", " i += 1" ], "execution_count": 72, "outputs": [ { "output_type": "stream", "text": [ "Combination 0: SGD with sigmoid\n", "Combination 1: SGD with tanh\n", "Combination 2: SGD with softplus\n", "Combination 3: SGD with relu\n", "Combination 4: AdaGrad with sigmoid\n", "Combination 5: AdaGrad with tanh\n", "Combination 6: AdaGrad with softplus\n", "Combination 7: AdaGrad with relu\n", "Combination 8: Adadelta with sigmoid\n", "Combination 9: Adadelta with tanh\n", "Combination 10: Adadelta with softplus\n", "Combination 11: Adadelta with relu\n", "Combination 12: RMSprop with sigmoid\n", "Combination 13: RMSprop with tanh\n", "Combination 14: RMSprop with softplus\n", "Combination 15: RMSprop with relu\n", "Combination 16: Adam with sigmoid\n", "Combination 17: Adam with tanh\n", "Combination 18: Adam with softplus\n", "Combination 19: Adam with relu\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "eY_TjbgjqX9R", "outputId": "13ff91b5-ddde-4ab6-e39e-dc3553012410", "colab": { "base_uri": "https://localhost:8080/", "height": 353 } }, "source": [ "plt.style.use('fivethirtyeight')\n", "plt.title('Train MSE for different optimizers\\nusing softplus as activation', fontsize=12)\n", "plt.xlabel('epochs')\n", "plt.ylabel('Loss')\n", "plt.plot(model_s['SGD']['softplus']['hist'].history['loss'], label='SGD',linewidth=1.5)\n", "plt.plot(model_s['AdaGrad']['softplus']['hist'].history['loss'], label='AdaGrad',linewidth=1.5)\n", "plt.plot(model_s['Adadelta']['softplus']['hist'].history['loss'], label='Adadelta',linewidth=1.5)\n", "plt.plot(model_s['RMSprop']['softplus']['hist'].history['loss'], label='RMSprop',linewidth=1.5)\n", "plt.plot(model_s['Adam']['softplus']['hist'].history['loss'], label='Adam',linewidth=1.5)\n", "plt.legend(fancybox=True, framealpha=0.5, fontsize=10)" ], "execution_count": 73, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 73 }, { "output_type": "display_data", "data": { "image/png": "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mF1o/PjxZGdn88wzzwTKhg8fzqRJk7j//vtD2LLOV1NTQ2pqKq+//joTJkzAMAwGDx7MrbfeyuzZswGor68nPT2dhx56iGnTprFz505GjhzJihUrGDVqFAAbN25kwoQJbNmypUfeP7OyspKxY8fyzDPPkJubS1ZWFk888cRZ2R8PPvgg69evZ+XKlW1uP9v65MYbb6RXr1788Y9/DJT96le/oqKigr///e9nXX/07duXBQsW8OMf/xjouL+HF198kQceeIBdu3YFQvmJJ57gpZdeYvv27SiK0naDkBFml/F6vXz11VeMGzcuqHzcuHFs3rw5RK3qOjU1Nei6jsvlAuDAgQMUFRUF9UdYWBhjxowJ9EdeXh6RkZFBt1gbNWoUERERPbbPZs6cyaRJk7jkkkuCys/G/li+fDkjRoxg2rRpDBo0iO9+97v86U9/CkyNnW19MmrUKNatW8euXbsA+Oabb1i7di1XXHEFcPb1x/E6av/z8vIYPXp00Ah2/PjxFBYWcuDAgZO2QS6+3kXKysrQNC1ougkgISGB4uLiELWq68ybN48hQ4aQk5MDQFFREUCb/VFYWAhAcXExcXFxQZ/4FEUhPj6+R/bZq6++yt69e/nTn/7UatvZ2B/79+/nxRdf5I477mDmzJls27aNuXPnAjB9+vSzrk9mzpxJTU0NI0eORFVV/H4/s2fPDtwQ4mzrj+N11P4XFxfTp0+fVs/RtG3AgAEnbIMEpuh09957L5s2bWLFihWoqhrq5oREQUEBDz74ICtWrMBms4W6Od2CrutccMEFgcMRw4YNY+/evSxZsoTp06eHuHVdb9myZbzxxhssWbKEwYMHs23bNubNm0dqaio//elPQ908gUzJdpm4uDhUVaWkpCSovKSkhMTExBC1qvPNnz+ft99+m3fffTfok1tSUhLASfsjMTGRsrKyoNVrhmFQWlra4/osLy+PsrIyRo0aRVxcHHFxcaxfv54lS5YQFxdHbGwscPb0B5h/A+eee25QWUZGBocPHw5sh7OnT377299y5513MnXqVLKzs7npppuYMWMGTz31FHD29cfxOmr/ExMT23yOpm0nI4HZRex2O+effz5r1qwJKl+zZk3QfPuZZO7cuYGwzMjICNrWv39/kpKSgvqjoaGBjRs3BvojJyeHmpoa8vLyAnXy8vKora3tcX02ceJENmzYwNq1awOPCy64gKlTp7J27VoGDRp0VvUHmMeWdu/eHVS2e/du+vXrB5x9fyN1dXWtZmBUVUXXdeDs64/jddT+5+TksHHjRhoaGgJ11qxZQ+/evenfv/9J26DOmzfvgQ7cJ3ESUVFRPPbYYyQnJ+N0OnniiSfYsGEDzz33HDExMaFuXoeaPXs2b7zxBq+88gopKSnU1tZSW1sLmB8eFEVB0zQWLVpEWloamqbxm9/8hqKiIhYtWoTD4SA+Pp7PPvuMpUuXMmTIEI4cOcKsWbMYPnx4j1km38TpdJKQkBD0eOutt0hNTeXHP/7xWdcfACkpKeTm5mKxWEhOTuaTTz7h4YcfZtasWYwYMeKs65OdO3fy97//nUGDBmGz2Vi7di0PPfQQU6ZMYfz48WdFf9TU1PDNN99QVFTEX//6V7KysoiOjsbr9RITE9Mh+5+WlsbLL7/Mtm3bSE9PZ+PGjfz2t79l5syZp/xQIaeVdLElS5bw9NNPU1RURGZmJo8++igXXXRRqJvV4ZpWwx5v7ty5zJ8/HzCnSh5//HFeeeUV3G43I0aM4MknnyQrKytQ3+12c8899/D+++8DMGHCBBYsWHDC5+9JJk6cGDitBM7O/li5ciUPPvggu3fvJiUlhVtvvZXbbrstsGjjbOqT6upqHnnkEd577z1KS0tJSkpi6tSp3HPPPTidTuDM74+1a9dyzTXXtCr/4Q9/yOLFizts//Pz85k9ezZffPEFLpeLadOmMXfu3JOeUgISmEIIIUS7yDFMIYQQoh0kMIUQQoh2kMAUQggh2kECUwghhGgHCUwhhBCiHSQwhRBCiHaQwBRCdJjXX38dl8vFli1bQt0UITqcBKYQQgjRDhKYQgghRDtIYAohhBDtIIEpRA907Ngx/ud//oeMjAwSExPJycnhxRdfDGxfu3YtLpeLN998k0cffZTBgwfTu3dvpkyZwp49e1o937p167j66qvp06cPqamp3HjjjWzfvr3N1505cyZZWVkkJiYyZMgQ7rrrLqqrq4PqeTwe7r33XtLS0ujTpw8//vGPKS0tDarz1VdfccMNN5CWlkZSUhLnnXce06dPp76+voN6SYiOJTeQFqKHKSkp4fLLL0fXdX75y1+SkJDAJ598wq9//WvKy8uZM2dOoO6iRYvQdZ0777wTt9vNCy+8wDXXXMP69evp1asXAJ9++ilTpkyhf//+zJs3j4aGBpYsWcL3vvc9Vq9ezaBBgwDzjvfjx4+nrKyMn/3sZ2RmZlJYWMh7771HeXk5UVFRgdedP38+vXr1Yu7cuRw8eJDFixczZ84cXn75ZQBKS0uZPHkycXFx3H333bhcLg4fPsz7779PXV0dYWFhXdijQrSPBKYQPczDDz+M1+tlw4YNxMfHA/CLX/yCu+66i4ULF3LrrbcG6paUlLBly5bAnRouvvhiJk2axPPPP899990HwH333Ud0dDQffvhh4EbWU6dOZdSoUTz44IP85S9/AeCBBx6gsLCQDz74gAsvvDDwGvPnzw+6YS9AbGws//jHPwJ3f9B1nRdeeIHKykpiYmLYvHkzFRUVLFu2jAsuuCDwe/fee29Hd5cQHUamZIXoQQzD4J///CdXXnkliqJQVlYWeIwbN476+no+//zzQP2bbrop6LZGY8eOJTMzkxUrVgDmFOvWrVv54Q9/GAhLMO8ZOGHCBD766CM0TUPXdZYvX84VV1wRFJZNjr8t0k9+8pOgstGjR6NpGocOHQIgOjoagBUrVuDz+TqgZ4TofBKYQvQgpaWluN1uXnvtNdLS0oIeP//5zwFzVNkkLS2t1XOkpaVx8OBBgECApaent6qXkZFBbW0tZWVllJaWUlVVRWZmZrvamZKSEvRzU2i73W4Avvvd7zJp0iRyc3M555xzuPHGG3n11VcDNxkXojuSKVkhehBd1wG4/vrrufnmm9usM3jwYAoKCrqyWa2oqtpmedPUraIovPrqq3z++eesWLGCjz/+mLvvvpuFCxeyatUqEhISurK5QrSLBKYQPUh8fDxRUVH4/X4uvfTSE9ZrCsy2VsTu2bOH1NRUAPr16xdU//jniIiIIC4uDkVRiI6OZseOHR2wF81GjBjBiBEj+M1vfsOHH37IDTfcwKuvvsrs2bM79HWE6AgyJStED6KqKtdeey3Lly9n27ZtrbYff+rGG2+8EZgGBfjkk0/YsWMHV111FQDJyckMGzaMN954g4qKikC9ffv28f7773P55ZejqioWi4WJEyfy4Ycf8tlnn7V63eMX/ZyK2+1u9TvDhg0DoLKy8rSeS4iuIiNMIXqYBx54gHXr1nHllVfy05/+lMzMTNxuN9u2beO9996jqKgoUDchIYHvfe973HzzzVRWVvLHP/6R5ORkZsyYEajz0EMPMWXKFK644gp+9rOfBU4rcTqd/O///m+g3v3338/HH3/M97//fX7+858zePBgiouL+de//sVrr71G//79270P//d//8eSJUv4/ve/z8CBA6mvr+f1119HVVUmTZrUMR0lRAeTwBSih0lISOCjjz5iwYIFLF++nJdeeolevXqRkZHBww8/HFR35syZFBQU8Oyzz1JZWcno0aNZsGBB0IrYSy65hHfeeYdHH32URx99FKvVyujRo7n//vsD52CCORpdtWoVjzzyCG+//TaVlZUkJyczbtw44uLiTmsfLrroIr788kveeecdiouLiYqKYujQoSxYsKDNVbhCdAeK2+0+vbkUIUS3t3btWq655hpefPFFpk6dGurmCHFGkGOYQgghRDtIYAohhBDtIIEphBBCtIMcwxRCCCHaQUaYQgghRDtIYAohhBDtIIEphBBCtIMEphBCCNEOEphCCCFEO0hgCiGEEO3w/wG9+RjQz8I5JQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "zsebV_dRqc6Z" }, "source": [ "Using the softplus as activation function, it can be seen that the training is faster using the SGD. RMSprop and Adam work well as optimizers.\n", "\n", "To show the resulting test and training data in a dataframe, a pandas MultiIndex will be used. To create it, [the user guide from pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html) was consulted." ] }, { "cell_type": "code", "metadata": { "id": "UkgWI0xnqfjV", "outputId": "be9a2e00-646e-4749-eef4-69b587c7c689", "colab": { "base_uri": "https://localhost:8080/", "height": 217 } }, "source": [ "arrays = [['SGD', 'AdaGrad', 'Adadelta', 'RMSprop', 'Adam'],\n", " ['Training', 'Test']]\n", "index = pd.MultiIndex.from_product(arrays, names=['Optimizer', 'Train/Test'])\n", "index" ], "execution_count": 74, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "MultiIndex([( 'SGD', 'Training'),\n", " ( 'SGD', 'Test'),\n", " ( 'AdaGrad', 'Training'),\n", " ( 'AdaGrad', 'Test'),\n", " ('Adadelta', 'Training'),\n", " ('Adadelta', 'Test'),\n", " ( 'RMSprop', 'Training'),\n", " ( 'RMSprop', 'Test'),\n", " ( 'Adam', 'Training'),\n", " ( 'Adam', 'Test')],\n", " names=['Optimizer', 'Train/Test'])" ] }, "metadata": { "tags": [] }, "execution_count": 74 } ] }, { "cell_type": "code", "metadata": { "id": "Hv_ZKlyvqiCV", "outputId": "1cb6dfa0-63b7-45e4-bcab-4bba169a14f9", "colab": { "base_uri": "https://localhost:8080/", "height": 235 } }, "source": [ "data = np.zeros((4,10))\n", "i = 0\n", "for optimizer in model_s.keys():\n", " j = 0\n", " isTest = False\n", " for activation in activations:\n", " data[j, i] = model_s[optimizer][activation]['train'][-1]\n", " j += 1\n", " j = 0\n", " i += 1\n", " for activation in activations:\n", " data[j, i] = model_s[optimizer][activation]['test'][0]\n", " j += 1\n", " i += 1\n", "data" ], "execution_count": 76, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[ 440.71972656, 1653.13269043, 12515.62402344, 11380.44628906,\n", " 12946.33984375, 11792.15820312, 1708.84899902, 1616.25256348,\n", " 1750.8861084 , 1586.29541016],\n", " [ 555.17071533, 2489.09228516, 12645.55371094, 11539.12988281,\n", " 13010.00488281, 11856.96191406, 1549.76635742, 1767.76379395,\n", " 1617.63012695, 1707.47241211],\n", " [ 26.52410126, 1058.44946289, 12231.09472656, 11092.37304688,\n", " 13017.96679688, 11868.60546875, 995.0680542 , 1470.08605957,\n", " 1007.78295898, 1472.74328613],\n", " [ 41.18244171, 752.5869751 , 12492.66796875, 11380.18554688,\n", " 12976.4375 , 11801.99511719, 939.48010254, 1438.69274902,\n", " 898.83074951, 1375.06140137]])" ] }, "metadata": { "tags": [] }, "execution_count": 76 } ] }, { "cell_type": "code", "metadata": { "id": "FcPEJO9eqjxX", "outputId": "5c221131-fc17-4a1c-b3a2-c7c2e4b532c7", "colab": { "base_uri": "https://localhost:8080/", "height": 218 } }, "source": [ "model_s_df = pd.DataFrame(data=data, columns=index, index=activations)\n", "model_s_df" ], "execution_count": 77, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OptimizerSGDAdaGradAdadeltaRMSpropAdam
Train/TestTrainingTestTrainingTestTrainingTestTrainingTestTrainingTest
sigmoid440.7197271653.13269012515.62402311380.44628912946.33984411792.1582031708.8489991616.2525631750.8861081586.295410
tanh555.1707152489.09228512645.55371111539.12988313010.00488311856.9619141549.7663571767.7637941617.6301271707.472412
softplus26.5241011058.44946312231.09472711092.37304713017.96679711868.605469995.0680541470.0860601007.7829591472.743286
relu41.182442752.58697512492.66796911380.18554712976.43750011801.995117939.4801031438.692749898.8307501375.061401
\n", "
" ], "text/plain": [ "Optimizer SGD AdaGrad Adadelta \\\n", "Train/Test Training Test Training Test Training \n", "sigmoid 440.719727 1653.132690 12515.624023 11380.446289 12946.339844 \n", "tanh 555.170715 2489.092285 12645.553711 11539.129883 13010.004883 \n", "softplus 26.524101 1058.449463 12231.094727 11092.373047 13017.966797 \n", "relu 41.182442 752.586975 12492.667969 11380.185547 12976.437500 \n", "\n", "Optimizer RMSprop Adam \n", "Train/Test Test Training Test Training Test \n", "sigmoid 11792.158203 1708.848999 1616.252563 1750.886108 1586.295410 \n", "tanh 11856.961914 1549.766357 1767.763794 1617.630127 1707.472412 \n", "softplus 11868.605469 995.068054 1470.086060 1007.782959 1472.743286 \n", "relu 11801.995117 939.480103 1438.692749 898.830750 1375.061401 " ] }, "metadata": { "tags": [] }, "execution_count": 77 } ] }, { "cell_type": "markdown", "metadata": { "id": "6SqAcQ9nqmzv" }, "source": [ "As can be seen, the best models were obtained with SGD optimizer, with ReLU or softplus as activation.\n", "\n", "For the next steps, let's initiate with SGD or Adam as optimizers, and ReLU as activation.\n", "\n", "Before to work adding new layers in our model, let's learn how to save our ANN." ] }, { "cell_type": "markdown", "metadata": { "id": "i3wMby352N3D" }, "source": [ "## Save a complete ANN\n", "\n", "To save an ANN developed with Keras to a file in hdf5 format we use the method `save(file_path_and_name)`. The saved file contains the following information:\n", "* ANN architecture;\n", "* ANN parameters;\n", "* optimizer parameters adopted to train the ANN;\n", "* The optimizer status to allow you to continue training exactly where you left off.\n", "\n", "Then, the method\n", "```\n", "load_model (file_path_and_name)\n", "```\n", "is applied to re-establish the ANN as it was when it was saved.\n" ] }, { "cell_type": "code", "metadata": { "id": "wsNiidse1WHz" }, "source": [ "# Import library to manipulate files in HDF5 format\n", "import h5py\n", "\n", "# Save the network in the format of an HDF5 dictionary\n", "model.save('/content/ANN.h5')" ], "execution_count": 78, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "5zzSZBVx2YlP" }, "source": [ "### Delete an ANN\n", "\n", "To delete an ANN from memory, use the `del` method. \n", "\n", "To load an ANN saved in a file, use the `load_model ()` method. \n", "\n", "Before using this method you have to load the `load_model` method from the `tensorflow.keras.models` class." ] }, { "cell_type": "code", "metadata": { "id": "3Y_TmHvK2u8t", "outputId": "61613be4-f0ed-45db-9a8b-d76f27945f3e", "colab": { "base_uri": "https://localhost:8080/", "height": 235 } }, "source": [ "from tensorflow.keras.models import load_model\n", "# Delet the model\n", "del model\n", "# Recover the ANN from ANN.h5 file\n", "model = load_model('/content/ANN.h5')\n", "model.summary()" ], "execution_count": 79, "outputs": [ { "output_type": "stream", "text": [ "Model: \"sequential_72\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense_144 (Dense) (None, 20) 220 \n", "_________________________________________________________________\n", "dense_145 (Dense) (None, 2) 42 \n", "=================================================================\n", "Total params: 262\n", "Trainable params: 262\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "XqKngBRv2v7K" }, "source": [ "### Save the parameters of an RNA\n", "\n", "If we want to save only the parameters of an ANN we use the method\n", "`save_weigths(file_path_and_name)`" ] }, { "cell_type": "code", "metadata": { "id": "zrnyZqeW23q0" }, "source": [ "model.save_weights('/content/ANN_parameters.h5', save_format='h5')\n" ], "execution_count": 80, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "n6wCdAMB24mu" }, "source": [ "Follow the code below, to load these parameters into another ANN (ann2) with the same architecture used to obtain these parameters, " ] }, { "cell_type": "code", "metadata": { "id": "mKF00DAA3BPr", "outputId": "8e0311bf-bf8d-4508-d024-58cd5aeb42c9", "colab": { "base_uri": "https://localhost:8080/", "height": 235 } }, "source": [ "from tensorflow.keras import models\n", "from tensorflow.keras import layers\n", "# Cria rna2 com mesma arquitetura da rna\n", "ann2 = make_model()\n", "ann2.summary()\n", "# Carrega parâmetros da rede rna na rede rna2\n", "ann2.load_weights('/content/ANN_parameters.h5')" ], "execution_count": 81, "outputs": [ { "output_type": "stream", "text": [ "Model: \"sequential_73\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense_146 (Dense) (None, 20) 220 \n", "_________________________________________________________________\n", "dense_147 (Dense) (None, 2) 42 \n", "=================================================================\n", "Total params: 262\n", "Trainable params: 262\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "o_YDVSVcdWhU" }, "source": [ "There are many situations where we want to develop a new ANN (`ann_new`) using as base another ANN (` ann_basic`) already trained. However, we only want to take advantage of the parameters of some layers of `ann_basic` in `ann_new`. This is possible to do using the methods `save_weights()` and `load_weights()` with small changes. If necessary, consult [here](https://machinelearningmastery.com/save-load-keras-deep-learning-models/), or [here](https://medium.com/swlh/saving-and-loading-of-keras-sequential-and-functional-models-73ce704561f4)." ] }, { "cell_type": "markdown", "metadata": { "id": "sI2M1sFipzXt" }, "source": [ "# Your Homework \n", "\n", " **Other architectures - Multilayer Neural Networks** \n", "\n", "\n", " Up to now, the models had only one hidden layer. We will now experiment with more hidden layers, more specifically with 2 and 3 layers. Since the training for these kind of networks is very computationally expensive, only the case for models with the Adam optimizer and softplus as activation will be shown, as they rendered good results in previous models. Hence, the architectures will be (10-20-18), (10-20-20-18), (10-20-20-20-18).\n", "\n", "Some important points:\n", "* There are not many rules for choosing the number of intermediate layers and the number of neurons in each of the intermediate layers in the first model The experience and intuition are the main factors that can help in this definition.\n", "* In general, the development process starts using a simple ANN with a single intermediate layer. That's what we did.\n", "* An indication to define the number of layers and neurons in an ANN is associated with the number of data in the training set. **The the number of parameters in an ANN must be less than the total number of data present in the training data.**\n", "* Another important rule to define the neuron number of the intermediate layers is not to create *information bottlenecks*, that is, an intermediate layer can *never* have fewer neurons than the output layer. In a set of layers, each layer has access only to the information in the output of the previous layer. If a layer has few neurons, it will lose some information, which will not be possible to be retrieved in the posterior layers.\n", "* The number of neurons in the middle layers depends a lot on the number of inputs and outputs of the training examples and in general we can do some quick initial tests to determine the appropriate minimum number.\n", "* Obviously, the number of neurons in the output layer is defined by the number of outputs in the training examples\n", "\n" ] } ] }