From 48e57d17bdd6aafaadb57a364ecf631ae36725ea Mon Sep 17 00:00:00 2001 From: Meghna Natraj Date: Wed, 6 May 2020 17:44:37 -0700 Subject: [PATCH] Update Hello World example. PiperOrigin-RevId: 310263402 Change-Id: I921176f6a8dc4c76bd45e6a508548d3b1936f89d --- .../g3doc/microcontrollers/build_convert.md | 2 +- .../g3doc/microcontrollers/get_started.md | 61 +- .../lite/micro/examples/hello_world/BUILD | 10 +- .../micro/examples/hello_world/Makefile.inc | 8 +- .../lite/micro/examples/hello_world/README.md | 40 +- .../hello_world/create_sine_model.ipynb | 1333 ------- .../examples/hello_world/hello_world_test.cc | 20 +- ...M32F746.gif => animation_on_STM32F746.gif} | Bin ...o.gif => animation_on_arduino_mkrzero.gif} | Bin ...dge.gif => animation_on_sparkfun_edge.gif} | Bin .../hello_world/images/model_architecture.png | Bin 0 -> 91424 bytes .../examples/hello_world/main_functions.cc | 6 +- .../lite/micro/examples/hello_world/model.cc | 250 ++ .../{sine_model_data.h => model.h} | 20 +- .../examples/hello_world/sine_model_data.cc | 255 -- .../examples/hello_world/train/README.md | 69 + .../train/train_hello_world_model.ipynb | 3530 +++++++++++++++++ .../micro/examples/micro_speech/README.md | 2 +- .../examples/micro_speech/train/README.md | 140 +- 19 files changed, 4008 insertions(+), 1738 deletions(-) delete mode 100644 tensorflow/lite/micro/examples/hello_world/create_sine_model.ipynb rename tensorflow/lite/micro/examples/hello_world/images/{STM32F746.gif => animation_on_STM32F746.gif} (100%) rename tensorflow/lite/micro/examples/hello_world/images/{arduino_mkrzero.gif => animation_on_arduino_mkrzero.gif} (100%) rename tensorflow/lite/micro/examples/hello_world/images/{sparkfun_edge.gif => animation_on_sparkfun_edge.gif} (100%) create mode 100644 tensorflow/lite/micro/examples/hello_world/images/model_architecture.png create mode 100644 tensorflow/lite/micro/examples/hello_world/model.cc rename tensorflow/lite/micro/examples/hello_world/{sine_model_data.h => model.h} (59%) delete mode 100644 tensorflow/lite/micro/examples/hello_world/sine_model_data.cc create mode 100644 tensorflow/lite/micro/examples/hello_world/train/README.md create mode 100644 tensorflow/lite/micro/examples/hello_world/train/train_hello_world_model.ipynb diff --git a/tensorflow/lite/g3doc/microcontrollers/build_convert.md b/tensorflow/lite/g3doc/microcontrollers/build_convert.md index b2bd2ce6ac8..cf18b782765 100644 --- a/tensorflow/lite/g3doc/microcontrollers/build_convert.md +++ b/tensorflow/lite/g3doc/microcontrollers/build_convert.md @@ -71,7 +71,7 @@ important to change the array declaration to `const` for better memory efficiency on embedded platforms. For an example of how to include and use a model in your program, see -[`sine_model_data.cc`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/sine_model_data.cc) +[`model.cc`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/model.cc) in the *Hello World* example. ## Model architecture and training diff --git a/tensorflow/lite/g3doc/microcontrollers/get_started.md b/tensorflow/lite/g3doc/microcontrollers/get_started.md index 5c46701d1fe..96fa336c2ef 100644 --- a/tensorflow/lite/g3doc/microcontrollers/get_started.md +++ b/tensorflow/lite/g3doc/microcontrollers/get_started.md @@ -86,12 +86,10 @@ World README.md The following section walks through the *Hello World* example's [`hello_world_test.cc`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/hello_world_test.cc), -which demonstrates how to run inference using TensorFlow Lite for -Microcontrollers. +unit test which demonstrates how to run inference using TensorFlow Lite for +Microcontrollers. It loads the model and runs inference several times. -The test loads the model and then uses it to run inference several times. - -### Include the library headers +### 1. Include the library headers To use the TensorFlow Lite for Microcontrollers library, we must include the following header files: @@ -116,22 +114,20 @@ following header files: - [`version.h`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/version.h) provides versioning information for the TensorFlow Lite schema. -### Include the model +### 2. Include the model header The TensorFlow Lite for Microcontrollers interpreter expects the model to be -provided as a C++ array. In the *Hello World* example, the model is defined in -`sine_model_data.h` and `sine_model_data.cc`. The header is included with the -following line: +provided as a C++ array. The model is defined in `model.h` and `model.cc` files. +The header is included with the following line: ```C++ -#include "tensorflow/lite/micro/examples/hello_world/sine_model_data.h" +#include "tensorflow/lite/micro/examples/hello_world/model.h" ``` -### Set up the unit test +### 3. Include the unit test framework header -The code we are walking through is a unit test that uses the TensorFlow Lite for -Microcontrollers unit test framework. To load the framework, we include the -following file: +In order to create a unit test, we include the TensorFlow Lite for +Microcontrollers unit test framework by including the following line: ```C++ #include "tensorflow/lite/micro/testing/micro_test.h" @@ -143,11 +139,16 @@ The test is defined using the following macros: TF_LITE_MICRO_TESTS_BEGIN TF_LITE_MICRO_TEST(LoadModelAndPerformInference) { + . // add code here + . +} + +TF_LITE_MICRO_TESTS_END ``` -The remainder of the code demonstrates how to load the model and run inference. +We now discuss the code included in the macro above. -### Set up logging +### 4. Set up logging To set up logging, a `tflite::ErrorReporter` pointer is created using a pointer to a `tflite::MicroErrorReporter` instance: @@ -162,14 +163,14 @@ logs. Since microcontrollers often have a variety of mechanisms for logging, the implementation of `tflite::MicroErrorReporter` is designed to be customized for your particular device. -### Load a model +### 5. Load a model In the following code, the model is instantiated using data from a `char` array, -`g_sine_model_data`, which is declared in `sine_model_data.h`. We then check the -model to ensure its schema version is compatible with the version we are using: +`g_model`, which is declared in `model.h`. We then check the model to ensure its +schema version is compatible with the version we are using: ```C++ -const tflite::Model* model = ::tflite::GetModel(g_sine_model_data); +const tflite::Model* model = ::tflite::GetModel(g_model); if (model->version() != TFLITE_SCHEMA_VERSION) { TF_LITE_REPORT_ERROR(error_reporter, "Model provided is schema version %d not equal " @@ -178,7 +179,7 @@ if (model->version() != TFLITE_SCHEMA_VERSION) { } ``` -### Instantiate operations resolver +### 6. Instantiate operations resolver An [`AllOpsResolver`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/kernels/all_ops_resolver.h) @@ -198,7 +199,7 @@ This is done using a different class, `MicroMutableOpResolver`. You can see how to use it in the *Micro speech* example's [`micro_speech_test.cc`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/micro_speech/micro_speech_test.cc). -### Allocate memory +### 7. Allocate memory We need to preallocate a certain amount of memory for input, output, and intermediate arrays. This is provided as a `uint8_t` array of size @@ -212,7 +213,7 @@ uint8_t tensor_arena[tensor_arena_size]; The size required will depend on the model you are using, and may need to be determined by experimentation. -### Instantiate interpreter +### 8. Instantiate interpreter We create a `tflite::MicroInterpreter` instance, passing in the variables created earlier: @@ -222,7 +223,7 @@ tflite::MicroInterpreter interpreter(model, resolver, tensor_arena, tensor_arena_size, error_reporter); ``` -### Allocate tensors +### 9. Allocate tensors We tell the interpreter to allocate memory from the `tensor_arena` for the model's tensors: @@ -231,7 +232,7 @@ model's tensors: interpreter.AllocateTensors(); ``` -### Validate input shape +### 10. Validate input shape The `MicroInterpreter` instance can provide us with a pointer to the model's input tensor by calling `.input(0)`, where `0` represents the first (and only) @@ -265,7 +266,7 @@ The enum value `kTfLiteFloat32` is a reference to one of the TensorFlow Lite data types, and is defined in [`common.h`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/c/common.h). -### Provide an input value +### 11. Provide an input value To provide an input to the model, we set the contents of the input tensor, as follows: @@ -276,7 +277,7 @@ input->data.f[0] = 0.; In this case, we input a floating point value representing `0`. -### Run the model +### 12. Run the model To run the model, we can call `Invoke()` on our `tflite::MicroInterpreter` instance: @@ -300,7 +301,7 @@ successfully run. TF_LITE_MICRO_EXPECT_EQ(kTfLiteOk, invoke_status); ``` -### Obtain the output +### 12. Obtain the output The model's output tensor can be obtained by calling `output(0)` on the `tflite::MicroInterpreter`, where `0` represents the first (and only) output @@ -327,7 +328,7 @@ float value = output->data.f[0]; TF_LITE_MICRO_EXPECT_NEAR(0., value, 0.05); ``` -### Run inference again +### 13. Run inference again The remainder of the code runs inference several more times. In each instance, we assign a value to the input tensor, invoke the interpreter, and read the @@ -350,7 +351,7 @@ value = output->data.f[0]; TF_LITE_MICRO_EXPECT_NEAR(-0.959, value, 0.05); ``` -### Read the application code +### 14. Read the application code Once you have walked through this unit test, you should be able to understand the example's application code, located in diff --git a/tensorflow/lite/micro/examples/hello_world/BUILD b/tensorflow/lite/micro/examples/hello_world/BUILD index c03069e4ecc..155aaafd98c 100644 --- a/tensorflow/lite/micro/examples/hello_world/BUILD +++ b/tensorflow/lite/micro/examples/hello_world/BUILD @@ -16,12 +16,12 @@ package(default_visibility = ["//visibility:public"]) licenses(["notice"]) # Apache 2.0 cc_library( - name = "sine_model_data", + name = "model", srcs = [ - "sine_model_data.cc", + "model.cc", ], hdrs = [ - "sine_model_data.h", + "model.h", ], build_for_embedded = True, copts = micro_copts(), @@ -33,9 +33,9 @@ tflite_micro_cc_test( "hello_world_test.cc", ], deps = [ + ":model", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/micro:micro_framework", - "//tensorflow/lite/micro/examples/hello_world:sine_model_data", "//tensorflow/lite/micro/kernels:all_ops_resolver", "//tensorflow/lite/micro/kernels:micro_ops", "//tensorflow/lite/micro/testing:micro_test", @@ -83,10 +83,10 @@ cc_binary( ], deps = [ ":constants", + ":model", ":output_handler", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/micro:micro_framework", - "//tensorflow/lite/micro/examples/hello_world:sine_model_data", "//tensorflow/lite/micro/kernels:all_ops_resolver", "//tensorflow/lite/schema:schema_fbs", ], diff --git a/tensorflow/lite/micro/examples/hello_world/Makefile.inc b/tensorflow/lite/micro/examples/hello_world/Makefile.inc index a4d2da7d891..f1c8859be80 100644 --- a/tensorflow/lite/micro/examples/hello_world/Makefile.inc +++ b/tensorflow/lite/micro/examples/hello_world/Makefile.inc @@ -1,9 +1,9 @@ HELLO_WORLD_TEST_SRCS := \ tensorflow/lite/micro/examples/hello_world/hello_world_test.cc \ -tensorflow/lite/micro/examples/hello_world/sine_model_data.cc +tensorflow/lite/micro/examples/hello_world/model.cc HELLO_WORLD_TEST_HDRS := \ -tensorflow/lite/micro/examples/hello_world/sine_model_data.h +tensorflow/lite/micro/examples/hello_world/model.h OUTPUT_HANDLER_TEST_SRCS := \ tensorflow/lite/micro/examples/hello_world/output_handler_test.cc \ @@ -16,12 +16,12 @@ tensorflow/lite/micro/examples/hello_world/constants.h HELLO_WORLD_SRCS := \ tensorflow/lite/micro/examples/hello_world/main.cc \ tensorflow/lite/micro/examples/hello_world/main_functions.cc \ -tensorflow/lite/micro/examples/hello_world/sine_model_data.cc \ +tensorflow/lite/micro/examples/hello_world/model.cc \ tensorflow/lite/micro/examples/hello_world/output_handler.cc \ tensorflow/lite/micro/examples/hello_world/constants.cc HELLO_WORLD_HDRS := \ -tensorflow/lite/micro/examples/hello_world/sine_model_data.h \ +tensorflow/lite/micro/examples/hello_world/model.h \ tensorflow/lite/micro/examples/hello_world/output_handler.h \ tensorflow/lite/micro/examples/hello_world/constants.h \ tensorflow/lite/micro/examples/hello_world/main_functions.h diff --git a/tensorflow/lite/micro/examples/hello_world/README.md b/tensorflow/lite/micro/examples/hello_world/README.md index 3f3fef67f28..020a7d49e88 100644 --- a/tensorflow/lite/micro/examples/hello_world/README.md +++ b/tensorflow/lite/micro/examples/hello_world/README.md @@ -1,41 +1,32 @@ -# Hello World example +# Hello World Example This example is designed to demonstrate the absolute basics of using [TensorFlow Lite for Microcontrollers](https://www.tensorflow.org/lite/microcontrollers). It includes the full end-to-end workflow of training a model, converting it for -use with TensorFlow Lite, and running inference on a microcontroller. +use with TensorFlow Lite for Microcontrollers for running inference on a +microcontroller. -The sample is built around a model trained to replicate a `sine` function. It -contains implementations for several platforms. In each case, the model is used -to generate a pattern of data that is used to either blink LEDs or control an -animation. +The model is trained to replicate a `sine` function and generates a pattern of +data to either blink LEDs or control an animation, depending on the capabilities +of the device. -![Animation of example running on STM32F746](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/images/STM32F746.gif) +![Animation on STM32F746](images/animation_on_STM32F746.gif) ## Table of contents -- [Understand the model](#understand-the-model) - [Deploy to Arduino](#deploy-to-arduino) - [Deploy to ESP32](#deploy-to-esp32) - [Deploy to SparkFun Edge](#deploy-to-sparkfun-edge) - [Deploy to STM32F746](#deploy-to-STM32F746) - [Run the tests on a development machine](#run-the-tests-on-a-development-machine) - -## Understand the model - -The sample comes with a pre-trained model. The code used to train and convert -the model is available as a tutorial in [create_sine_model.ipynb](https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/create_sine_model.ipynb). - -Walk through this tutorial to understand what the model does, -how it works, and how it was converted for use with TensorFlow Lite for -Microcontrollers. +- [Train your own model](#train-your-own-model) ## Deploy to Arduino The following instructions will help you build and deploy this sample to [Arduino](https://www.arduino.cc/) devices. -![Animation of example running on Arduino MKRZERO](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/images/arduino_mkrzero.gif) +![Animation on Arduino MKRZERO](images/animation_on_arduino_mkrzero.gif) The sample has been tested with the following devices: @@ -132,7 +123,7 @@ idf.py --port /dev/ttyUSB0 flash monitor The following instructions will help you build and deploy this sample on the [SparkFun Edge development board](https://sparkfun.com/products/15170). -![Animation of example running on SparkFun Edge](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/images/sparkfun_edge.gif) +![Animation on SparkFun Edge](images/animation_on_sparkfun_edge.gif) If you're new to using this board, we recommend walking through the [AI on a microcontroller with TensorFlow Lite and SparkFun Edge](https://codelabs.developers.google.com/codelabs/sparkfun-tensorflow) @@ -272,7 +263,7 @@ The following instructions will help you build and deploy the sample to the [STM32F7 discovery kit](https://os.mbed.com/platforms/ST-Discovery-F746NG/) using [ARM Mbed](https://github.com/ARMmbed/mbed-cli). -![Animation of example running on STM32F746](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/images/STM32F746.gif) +![Animation on STM32F746](images/animation_on_STM32F746.gif) Before we begin, you'll need the following: @@ -400,7 +391,14 @@ the trained TensorFlow model, runs some example inputs through it, and got the expected outputs. To understand how TensorFlow Lite does this, you can look at the source in -[hello_world_test.cc](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/micro/examples/hello_world/hello_world_test.cc). +[hello_world_test.cc](hello_world_test.cc). It's a fairly small amount of code that creates an interpreter, gets a handle to a model that's been compiled into the program, and then invokes the interpreter with the model and sample inputs. + +### Train your own model + +So far you have used an existing trained model to run inference on +microcontrollers. If you wish to train your own model, follow the instructions +given in the [train/](train/) directory. + diff --git a/tensorflow/lite/micro/examples/hello_world/create_sine_model.ipynb b/tensorflow/lite/micro/examples/hello_world/create_sine_model.ipynb deleted file mode 100644 index 614cb80b47e..00000000000 --- a/tensorflow/lite/micro/examples/hello_world/create_sine_model.ipynb +++ /dev/null @@ -1,1333 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "create_sine_model.ipynb", - "version": "0.3.2", - "provenance": [], - "collapsed_sections": [], - "toc_visible": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "sblS7n3zWCWV", - "colab_type": "text" - }, - "source": [ - "**Copyright 2019 The TensorFlow Authors.**" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "0rvUzWmoWMH5", - "colab_type": "code", - "colab": {} - }, - "source": [ - "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n", - "# you may not use this file except in compliance with the License.\n", - "# You may obtain a copy of the License at\n", - "#\n", - "# https://www.apache.org/licenses/LICENSE-2.0\n", - "#\n", - "# Unless required by applicable law or agreed to in writing, software\n", - "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", - "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", - "# See the License for the specific language governing permissions and\n", - "# limitations under the License." - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "aCZBFzjClURz", - "colab_type": "text" - }, - "source": [ - "# Create and convert a TensorFlow model\n", - "This notebook is designed to demonstrate the process of creating a TensorFlow model and converting it to use with TensorFlow Lite. The model created in this notebook is used in the [hello_world](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/micro/examples/hello_world) sample for [TensorFlow Lite for Microcontrollers](https://www.tensorflow.org/lite/microcontrollers/overview).\n", - "\n", - "\n", - " \n", - " \n", - "
\n", - " Run in Google Colab\n", - " \n", - " View source on GitHub\n", - "
\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "dh4AXGuHWeu1", - "colab_type": "text" - }, - "source": [ - "## Import dependencies\n", - "Our first task is to import the dependencies we need. Run the following cell to do so:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "53PBJBv1jEtJ", - "colab_type": "code", - "outputId": "9b035753-60e5-43db-a78d-284ea9de9513", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 479 - } - }, - "source": [ - "# TensorFlow is an open source machine learning library\n", - "import tensorflow as tf\n", - "# Numpy is a math library\n", - "import numpy as np\n", - "# Matplotlib is a graphing library\n", - "import matplotlib.pyplot as plt\n", - "# math is Python's math library\n", - "import math" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "p-PuBEb6CMeo", - "colab_type": "text" - }, - "source": [ - "## Generate data\n", - "Deep learning networks learn to model patterns in underlying data. In this notebook, we're going to train a network to model data generated by a [sine](https://en.wikipedia.org/wiki/Sine) function. This will result in a model that can take a value, `x`, and predict its sine, `y`.\n", - "\n", - "In a real world application, if you needed the sine of `x`, you could just calculate it directly. However, by training a model to do this, we can demonstrate the basic principles of machine learning.\n", - "\n", - "In the [hello_world](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/micro/examples/hello_world) sample for [TensorFlow Lite for Microcontrollers](https://www.tensorflow.org/lite/microcontrollers/overview), we'll use this model to control LEDs that light up in a sequence.\n", - "\n", - "The code in the following cell will generate a set of random `x` values, calculate their sine values, and display them on a graph:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "uKjg7QeMDsDx", - "colab_type": "code", - "outputId": "b17a43c6-eba1-4cc7-8807-14fcf5918d01", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 269 - } - }, - "source": [ - "# We'll generate this many sample datapoints\n", - "SAMPLES = 1000\n", - "\n", - "# Set a \"seed\" value, so we get the same random numbers each time we run this\n", - "# notebook\n", - "np.random.seed(1337)\n", - "\n", - "# Generate a uniformly distributed set of random numbers in the range from\n", - "# 0 to 2π, which covers a complete sine wave oscillation\n", - "x_values = np.random.uniform(low=0, high=2*math.pi, size=SAMPLES)\n", - "\n", - "# Shuffle the values to guarantee they're not in order\n", - "np.random.shuffle(x_values)\n", - "\n", - "# Calculate the corresponding sine values\n", - "y_values = np.sin(x_values)\n", - "\n", - "# Plot our data. The 'b.' argument tells the library to print blue dots.\n", - "plt.plot(x_values, y_values, 'b.')\n", - "plt.show()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nb+vxVQAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "iWOlC7W_FYvA", - "colab_type": "text" - }, - "source": [ - "## Add some noise\n", - "Since it was generated directly by the sine function, our data fits a nice, smooth curve.\n", - "\n", - "However, machine learning models are good at extracting underlying meaning from messy, real world data. To demonstrate this, we can add some noise to our data to approximate something more life-like.\n", - "\n", - "In the following cell, we'll add some random noise to each value, then draw a new graph:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "i0FJe3Y-Gkac", - "colab_type": "code", - "outputId": "60b19cdd-c69c-469e-9446-b738a79c1f51", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 269 - } - }, - "source": [ - "# Add a small random number to each y value\n", - "y_values += 0.1 * np.random.randn(*y_values.shape)\n", - "\n", - "# Plot our data\n", - "plt.plot(x_values, y_values, 'b.')\n", - "plt.show()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Up8Xk_pMH4Rt", - "colab_type": "text" - }, - "source": [ - "## Split our data\n", - "We now have a noisy dataset that approximates real world data. We'll be using this to train our model.\n", - "\n", - "To evaluate the accuracy of the model we train, we'll need to compare its predictions to real data and check how well they match up. This evaluation happens during training (where it is referred to as validation) and after training (referred to as testing) It's important in both cases that we use fresh data that was not already used to train the model.\n", - "\n", - "To ensure we have data to use for evaluation, we'll set some aside before we begin training. We'll reserve 20% of our data for validation, and another 20% for testing. The remaining 60% will be used to train the model. This is a typical split used when training models.\n", - "\n", - "The following code will split our data and then plot each set as a different color:\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "nNYko5L1keqZ", - "colab_type": "code", - "outputId": "b9f9c57b-b6aa-4817-8ab4-4a2201732b9a", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 269 - } - }, - "source": [ - "# We'll use 60% of our data for training and 20% for testing. The remaining 20%\n", - "# will be used for validation. Calculate the indices of each section.\n", - "TRAIN_SPLIT = int(0.6 * SAMPLES)\n", - "TEST_SPLIT = int(0.2 * SAMPLES + TRAIN_SPLIT)\n", - "\n", - "# Use np.split to chop our data into three parts.\n", - "# The second argument to np.split is an array of indices where the data will be\n", - "# split. We provide two indices, so the data will be divided into three chunks.\n", - "x_train, x_test, x_validate = np.split(x_values, [TRAIN_SPLIT, TEST_SPLIT])\n", - "y_train, y_test, y_validate = np.split(y_values, [TRAIN_SPLIT, TEST_SPLIT])\n", - "\n", - "# Double check that our splits add up correctly\n", - "assert (x_train.size + x_validate.size + x_test.size) == SAMPLES\n", - "\n", - "# Plot the data in each partition in different colors:\n", - "plt.plot(x_train, y_train, 'b.', label=\"Train\")\n", - "plt.plot(x_test, y_test, 'r.', label=\"Test\")\n", - "plt.plot(x_validate, y_validate, 'y.', label=\"Validate\")\n", - "plt.legend()\n", - "plt.show()\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nDFi6aXY5AAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "t5McVnHmNiDw", - "colab_type": "text" - }, - "source": [ - "## Design a model\n", - "We're going to build a model that will take an input value (in this case, `x`) and use it to predict a numeric output value (the sine of `x`). This type of problem is called a _regression_.\n", - "\n", - "To achieve this, we're going to create a simple neural network. It will use _layers_ of _neurons_ to attempt to learn any patterns underlying the training data, so it can make predictions.\n", - "\n", - "To begin with, we'll define two layers. The first layer takes a single input (our `x` value) and runs it through 16 neurons. Based on this input, each neuron will become _activated_ to a certain degree based on its internal state (its _weight_ and _bias_ values). A neuron's degree of activation is expressed as a number.\n", - "\n", - "The activation numbers from our first layer will be fed as inputs to our second layer, which is a single neuron. It will apply its own weights and bias to these inputs and calculate its own activation, which will be output as our `y` value.\n", - "\n", - "**Note:** To learn more about how neural networks function, you can explore the [Learn TensorFlow](https://codelabs.developers.google.com/codelabs/tensorflow-lab1-helloworld) codelabs.\n", - "\n", - "The code in the following cell defines our model using [Keras](https://www.tensorflow.org/guide/keras), TensorFlow's high-level API for creating deep learning networks. Once the network is defined, we _compile_ it, specifying parameters that determine how it will be trained:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "gD60bE8cXQId", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# We'll use Keras to create a simple model architecture\n", - "from tensorflow.keras import layers\n", - "model_1 = tf.keras.Sequential()\n", - "\n", - "# First layer takes a scalar input and feeds it through 16 \"neurons\". The\n", - "# neurons decide whether to activate based on the 'relu' activation function.\n", - "model_1.add(layers.Dense(16, activation='relu', input_shape=(1,)))\n", - "\n", - "# Final layer is a single neuron, since we want to output a single value\n", - "model_1.add(layers.Dense(1))\n", - "\n", - "# Compile the model using a standard optimizer and loss function for regression\n", - "model_1.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "O0idLyRLQeGj", - "colab_type": "text" - }, - "source": [ - "## Train the model\n", - "Once we've defined the model, we can use our data to _train_ it. Training involves passing an `x` value into the neural network, checking how far the network's output deviates from the expected `y` value, and adjusting the neurons' weights and biases so that the output is more likely to be correct the next time.\n", - "\n", - "Training runs this process on the full dataset multiple times, and each full run-through is known as an _epoch_. The number of epochs to run during training is a parameter we can set.\n", - "\n", - "During each epoch, data is run through the network in multiple _batches_. Each batch, several pieces of data are passed into the network, producing output values. These outputs' correctness is measured in aggregate and the network's weights and biases are adjusted accordingly, once per batch. The _batch size_ is also a parameter we can set.\n", - "\n", - "The code in the following cell uses the `x` and `y` values from our training data to train the model. It runs for 1000 _epochs_, with 16 pieces of data in each _batch_. We also pass in some data to use for _validation_. As you will see when you run the cell, training can take a while to complete:\n", - "\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "p8hQKr4cVOdE", - "colab_type": "code", - "outputId": "3f1a7904-ffcd-4bb7-8bbb-bcd85a132128", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "# Train the model on our training data while validating on our validation set\n", - "history_1 = model_1.fit(x_train, y_train, epochs=1000, batch_size=16,\n", - " validation_data=(x_validate, y_validate))" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Train on 600 samples, validate on 200 samples\n", - "Epoch 1/1000\n", - "600/600 [==============================] - 0s 412us/sample - loss: 0.5016 - mae: 0.6297 - val_loss: 0.4922 - val_mae: 0.6235\n", - "Epoch 2/1000\n", - "600/600 [==============================] - 0s 105us/sample - loss: 0.3905 - mae: 0.5436 - val_loss: 0.4262 - val_mae: 0.5641\n", - "...\n", - "Epoch 998/1000\n", - "600/600 [==============================] - 0s 109us/sample - loss: 0.1535 - mae: 0.3068 - val_loss: 0.1507 - val_mae: 0.3113\n", - "Epoch 999/1000\n", - "600/600 [==============================] - 0s 100us/sample - loss: 0.1545 - mae: 0.3077 - val_loss: 0.1499 - val_mae: 0.3103\n", - "Epoch 1000/1000\n", - "600/600 [==============================] - 0s 132us/sample - loss: 0.1530 - mae: 0.3045 - val_loss: 0.1542 - val_mae: 0.3143\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "cRE8KpEqVfaS", - "colab_type": "text" - }, - "source": [ - "## Check the training metrics\n", - "During training, the model's performance is constantly being measured against both our training data and the validation data that we set aside earlier. Training produces a log of data that tells us how the model's performance changed over the course of the training process.\n", - "\n", - "The following cells will display some of that data in a graphical form:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "CmvA-ksoln8r", - "colab_type": "code", - "outputId": "1b834831-81e8-4548-dd8c-f5edf2c3ff43", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 295 - } - }, - "source": [ - "# Draw a graph of the loss, which is the distance between\n", - "# the predicted and actual values during training and validation.\n", - "loss = history_1.history['loss']\n", - "val_loss = history_1.history['val_loss']\n", - "\n", - "epochs = range(1, len(loss) + 1)\n", - "\n", - "plt.plot(epochs, loss, 'g.', label='Training loss')\n", - "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n", - "plt.title('Training and validation loss')\n", - "plt.xlabel('Epochs')\n", - "plt.ylabel('Loss')\n", - "plt.legend()\n", - "plt.show()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nWBhjjAno/wGVkooxFkdVNgAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "iOFBSbPcYCN4", - "colab_type": "text" - }, - "source": [ - "## Look closer at the data\n", - "The graph shows the _loss_ (or the difference between the model's predictions and the actual data) for each epoch. There are several ways to calculate loss, and the method we have used is _mean squared error_. There is a distinct loss value given for the training and the validation data.\n", - "\n", - "As we can see, the amount of loss rapidly decreases over the first 25 epochs, before flattening out. This means that the model is improving and producing more accurate predictions!\n", - "\n", - "Our goal is to stop training when either the model is no longer improving, or when the _training loss_ is less than the _validation loss_, which would mean that the model has learned to predict the training data so well that it can no longer generalize to new data.\n", - "\n", - "To make the flatter part of the graph more readable, let's skip the first 50 epochs:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Zo0RYroFZYIV", - "colab_type": "code", - "outputId": "e6841332-0541-44bb-a186-ae5b46781e51", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 295 - } - }, - "source": [ - "# Exclude the first few epochs so the graph is easier to read\n", - "SKIP = 50\n", - "\n", - "plt.plot(epochs[SKIP:], loss[SKIP:], 'g.', label='Training loss')\n", - "plt.plot(epochs[SKIP:], val_loss[SKIP:], 'b.', label='Validation loss')\n", - "plt.title('Training and validation loss')\n", - "plt.xlabel('Epochs')\n", - "plt.ylabel('Loss')\n", - "plt.legend()\n", - "plt.show()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "W4EQD-Bb8hLM", - "colab_type": "text" - }, - "source": [ - "## Further metrics\n", - "From the plot, we can see that loss continues to reduce until around 600 epochs, at which point it is mostly stable. This means that there's no need to train our network beyond 600 epochs.\n", - "\n", - "However, we can also see that the lowest loss value is still around 0.155. This means that our network's predictions are off by an average of ~15%. In addition, the validation loss values jump around a lot, and is sometimes even higher.\n", - "\n", - "To gain more insight into our model's performance we can plot some more data. This time, we'll plot the _mean absolute error_, which is another way of measuring how far the network's predictions are from the actual numbers:\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Md9E_azmpkZU", - "colab_type": "code", - "outputId": "39b97561-b01d-49f2-c35c-fbd8db663806", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 295 - } - }, - "source": [ - "plt.clf()\n", - "\n", - "# Draw a graph of mean absolute error, which is another way of\n", - "# measuring the amount of error in the prediction.\n", - "mae = history_1.history['mae']\n", - "val_mae = history_1.history['val_mae']\n", - "\n", - "plt.plot(epochs[SKIP:], mae[SKIP:], 'g.', label='Training MAE')\n", - "plt.plot(epochs[SKIP:], val_mae[SKIP:], 'b.', label='Validation MAE')\n", - "plt.title('Training and validation mean absolute error')\n", - "plt.xlabel('Epochs')\n", - "plt.ylabel('MAE')\n", - "plt.legend()\n", - "plt.show()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nc8stt3DXXXcVY8gcddRRGbaCE088kX79+qXtu/7669lll1349NNPU/sef/xx9thjj9Q9Dh8+nCVL\nlhRlXIXAShYeRKNaojCSRTTa2SOysLBwo7KyktWrVwNQW1vLbrvtxk9/ml64TymFUopQyH89PGfO\nnJzXmTJlSvsH68Luu+/Os88+yxFHHMFHH33E+++/n9Fm3rx5HH744SxcuJD/+Z//Se0fM2YMCxcu\nLOp4CoWVLDyIRLTq6de/tiooC4tiIbYpxvSl04ltKp0h8I033mDYsGGceeaZHHzwwbz33ntMnDiR\nUaNGcfDBB/OrX/0q1faoo45i9erVtLa20q9fPy6//HIOO+wwIpEI//73vwG48sormTlzZqr95Zdf\nzujRo/n617/OM888A8Dnn3/OhAkTGDZsGKeddhqjRo1KMTIvTj/9dObPnw/AP//5T0477bS046+/\n/jqtra3U1tYyb968os9Pe2GZhQ8iEbjiCssoLCyKgdimGGPrxnLVkqsYWze2pAzj1Vdf5aKLLmLd\nunUMGDCAa6+9lhUrVrBmzRoee+wx1q1bl3HOJ598wre+9S3WrFlDJBLhzjvv9O1bKcXy5cv53e9+\nl2I8N910E/3792fdunVcddVVrFq1KnBs3/nOd3jiiSdIJBLcfffd/Pd//3fa8Xnz5nH66acTjUZ5\n6aWX+PDDD1PHlixZkqaGamhoaMPstA+WWXhgPaEsLIqL+oZ6muPNxFWc5ngz9Q31JbvW0KFDGTVq\nVGp73rx5jBw5kpEjR/LKK6/4Mos+ffpw/PHHA3D44YcHEuJTTz01o83TTz/N6aefDsBhhx3GwQcf\nHDi28vJyjjjiCObPn088HmfgwIFpx+fPn8/pp59OOBzm5JNP5p//dErVjxkzhtWrV6c+nZFh29os\nXLCeUBYWxUd0SJSKcAXN8WYqwhVEh0RLdq1dd9019Xv9+vX84Q9/YPny5fTr148f/vCHvnEGFRUV\nqd/hcJjW1lbfvnv16pWzTS6cfvrp/Od//ifXXHNN2v5Vq1bx5ptvMmbMGACampr42te+xgUXXNCm\n65QCVrJwwXpCWVgUH5GqCItrFvPrMb9mcc1iIlUdswLbtm0bu+++O3379uW9997jkUceKfo1jjzy\nSP7+978DsHbtWl/JxY1oNMrll1/uq4K65ppraGhooKGhgXfffZe33nqLzZs3F33MbYWVLFywnlAW\n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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ctawd0CXAVEw", - "colab_type": "text" - }, - "source": [ - "This graph of _mean absolute error_ tells another story. We can see that training data shows consistently lower error than validation data, which means that the network may have _overfit_, or learned the training data so rigidly that it can't make effective predictions about new data.\n", - "\n", - "In addition, the mean absolute error values are quite high, ~0.305 at best, which means some of the model's predictions are at least 30% off. A 30% error means we are very far from accurately modelling the sine wave function.\n", - "\n", - "To get more insight into what is happening, we can plot our network's predictions for the training data against the expected values:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "i13eVIT3B9Mj", - "colab_type": "code", - "outputId": "afc103e2-0beb-4a26-fe18-c0cccc6d3d2a", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 281 - } - }, - "source": [ - "# Use the model to make predictions from our validation data\n", - "predictions = model_1.predict(x_train)\n", - "\n", - "# Plot the predictions along with to the test data\n", - "plt.clf()\n", - "plt.title('Training data predicted vs actual values')\n", - "plt.plot(x_test, y_test, 'b.', label='Actual')\n", - "plt.plot(x_train, predictions, 'r.', label='Predicted')\n", - "plt.legend()\n", - "plt.show()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n/oZhGGXI/w++6U8tCYD1ygAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Wokallj1D21L", - "colab_type": "text" - }, - "source": [ - "Oh dear! The graph makes it clear that our network has learned to approximate the sine function in a very limited way. From `0 <= x <= 1.1` the line mostly fits, but for the rest of our `x` values it is a rough approximation at best.\n", - "\n", - "The rigidity of this fit suggests that the model does not have enough capacity to learn the full complexity of the sine wave function, so it's only able to approximate it in an overly simplistic way. By making our model bigger, we should be able to improve its performance.\n", - "\n", - "## Change our model\n", - "To make our model bigger, let's add an additional layer of neurons. The following cell redefines our model in the same way as earlier, but with an additional layer of 16 neurons in the middle:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "oW0xus6AF-4o", - "colab_type": "code", - "colab": {} - }, - "source": [ - "model_2 = tf.keras.Sequential()\n", - "\n", - "# First layer takes a scalar input and feeds it through 16 \"neurons\". The\n", - "# neurons decide whether to activate based on the 'relu' activation function.\n", - "model_2.add(layers.Dense(16, activation='relu', input_shape=(1,)))\n", - "\n", - "# The new second layer may help the network learn more complex representations\n", - "model_2.add(layers.Dense(16, activation='relu'))\n", - "\n", - "# Final layer is a single neuron, since we want to output a single value\n", - "model_2.add(layers.Dense(1))\n", - "\n", - "# Compile the model using a standard optimizer and loss function for regression\n", - "model_2.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Dv2SC409Grap", - "colab_type": "text" - }, - "source": [ - "We'll now train the new model. To save time, we'll train for only 600 epochs:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "DPAUrdkmGq1M", - "colab_type": "code", - "outputId": "34ad91e0-229b-479c-bd65-12ad1ed1c660", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "history_2 = model_2.fit(x_train, y_train, epochs=600, batch_size=16,\n", - " validation_data=(x_validate, y_validate))" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Train on 600 samples, validate on 200 samples\n", - "Epoch 1/600\n", - "600/600 [==============================] - 0s 422us/sample - loss: 0.5655 - mae: 0.6259 - val_loss: 0.4104 - val_mae: 0.5509\n", - "Epoch 2/600\n", - "600/600 [==============================] - 0s 111us/sample - loss: 0.3195 - mae: 0.4902 - val_loss: 0.3341 - val_mae: 0.4927\n", - "...\n", - "Epoch 598/600\n", - "600/600 [==============================] - 0s 116us/sample - loss: 0.0124 - mae: 0.0886 - val_loss: 0.0096 - val_mae: 0.0771\n", - "Epoch 599/600\n", - "600/600 [==============================] - 0s 130us/sample - loss: 0.0125 - mae: 0.0900 - val_loss: 0.0107 - val_mae: 0.0824\n", - "Epoch 600/600\n", - "600/600 [==============================] - 0s 109us/sample - loss: 0.0124 - mae: 0.0892 - val_loss: 0.0116 - val_mae: 0.0845\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Mc_CQu2_IvOP", - "colab_type": "text" - }, - "source": [ - "## Evaluate our new model\n", - "Each training epoch, the model prints out its loss and mean absolute error for training and validation. You can read this in the output above (note that your exact numbers may differ): \n", - "\n", - "```\n", - "Epoch 600/600\n", - "600/600 [==============================] - 0s 109us/sample - loss: 0.0124 - mae: 0.0892 - val_loss: 0.0116 - val_mae: 0.0845\n", - "```\n", - "\n", - "You can see that we've already got a huge improvement - validation loss has dropped from 0.15 to 0.015, and validation MAE has dropped from 0.31 to 0.1.\n", - "\n", - "The following cell will print the same graphs we used to evaluate our original model, but showing our new training history:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "SYHGswAJJgrC", - "colab_type": "code", - "outputId": "efcc51f6-f1f1-490a-ffba-ed283586f83e", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 851 - } - }, - "source": [ - "# Draw a graph of the loss, which is the distance between\n", - "# the predicted and actual values during training and validation.\n", - "loss = history_2.history['loss']\n", - "val_loss = history_2.history['val_loss']\n", - "\n", - "epochs = range(1, len(loss) + 1)\n", - "\n", - "plt.plot(epochs, loss, 'g.', label='Training loss')\n", - "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n", - "plt.title('Training and validation loss')\n", - "plt.xlabel('Epochs')\n", - "plt.ylabel('Loss')\n", - "plt.legend()\n", - "plt.show()\n", - "\n", - "# Exclude the first few epochs so the graph is easier to read\n", - "SKIP = 100\n", - "\n", - "plt.clf()\n", - "\n", - "plt.plot(epochs[SKIP:], loss[SKIP:], 'g.', label='Training loss')\n", - "plt.plot(epochs[SKIP:], val_loss[SKIP:], 'b.', label='Validation loss')\n", - "plt.title('Training and validation loss')\n", - "plt.xlabel('Epochs')\n", - "plt.ylabel('Loss')\n", - "plt.legend()\n", - "plt.show()\n", - "\n", - "plt.clf()\n", - "\n", - "# Draw a graph of mean absolute error, which is another way of\n", - "# measuring the amount of error in the prediction.\n", - "mae = history_2.history['mae']\n", - "val_mae = history_2.history['val_mae']\n", - "\n", - "plt.plot(epochs[SKIP:], mae[SKIP:], 'g.', label='Training MAE')\n", - "plt.plot(epochs[SKIP:], val_mae[SKIP:], 'b.', label='Validation MAE')\n", - "plt.title('Training and validation mean absolute error')\n", - "plt.xlabel('Epochs')\n", - "plt.ylabel('MAE')\n", - "plt.legend()\n", - "plt.show()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nMMYY4/H/AZN6yxQ6gTLNAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\ntueee45p06Yltf+RRx7JCy+80ODzT58+nauuuooDDjgAgNdfb9tdVot1thsMhv2LxlzS+ZJLLuG1\n114LL2JVUlLC1q1bGTx4cHheR//+/enduzf//ve/a+xfUlJCr169APjhhx+47LLL6N69OxdddBE/\n/PBDuNyECRPCKej/+Mc/AvDQQw+xdetWhg4dytChQwHIy8tjx44dAPzlL3+hV69e9OrVK5yCvqSk\nhO7du3PttdfSs2dPzjzzzKjzxGPt2rWceuqpnHTSSVx00UV8++234fN7aeW9ZJHvvfdeeGGvfv36\nsXv37ga3bVy8xV3a8t+AAQPUYDA0HR999FG9yi9dqtq+vaptu/8vXZp6Hc455xydO3euqqpOnTpV\nf/vb36qqalVVle7atUtVVbdv367HHHOMOo6jqqoHHnigqqp+8cUX2rNnT1VVfeCBB3T06NGqqrpu\n3Tq1bVtXrFihqqrl5eWqqhoIBHTIkCG6bt06VVXt2rWrbt++PVwX7/vKlSu1V69eumfPHt29e7f2\n6NFDV69erV988YXatq1r1qxRVdVf/OIX+tRTT9W4pj/+8Y/65z//WVVVe/furT6fT1VVJ0+erL/+\n9a9VVfWII47Qffv2qarqt99+q6qq5557ri5evFhVVXfv3q1VVVU1jh3vngErNYk+1mgkBoOh2UnH\nks6eeQtcs9bll18OuIPn22+/nZNOOokRI0bw5Zdf8vXXXyc8zsKFC8MLRp100kmcdNJJ4d+ef/55\n+vfvT79+/fjwww/rTMi4ePFiLrroIg488EAOOuggfv7zn7No0SIAunXrRt++fYHaU9WDuz7Kzp07\nGTJkCACjRo1i4cKF4TpeeeWVPP300+EZ9IMGDeKWW27hoYceYufOnY0+s94IEoPB0Ox4SzrbduMt\n6XzBBRcwf/58Vq9ezd69exkwYAAAzzzzDNu3b2fVqlWsXbuWn/zkJ3FTx9fFF198wf3338/8+fP5\n4IMPOOeccxp0HA8vBT2klob+tdde44YbbmD16tWcfPLJBAIBbrvtNp544gl++OEHBg0axCeffNLg\nesbDCBKDwdDspGNJ54MOOoihQ4cyZsyYsDYC7mj+sMMOIzMzkwULFrB58+Zaj3P66afz7LPPAvCf\n//yHDz74AHBT0B944IF07NiRr7/+mnnz5oX36dChQ1w/xODBg5k7dy579+7l+++/56WXXmLw4MH1\nvraOHTvyox/9KKzNPPXUUwwZMgTHcSgtLWXo0KHcd9997Nq1iz179vDZZ5/Ru3dvfv/733PyySc3\nuiBpW5nDDAZDqyUdSzpffvnlXHTRRWETF8CVV17JeeedR+/evcnPz+fEE0+s9RgTJkxg9OjRdO/e\nne7du4c1mz59+tCvXz9OPPFEcnNzo1LQjxs3jpEjR3LkkUeyYMGC8Pb+/ftz9dVXM3DgQACuueYa\n+vXrV6sZKxFz5sxh/Pjx7N27l6OPPprZs2cTDAa56qqr2LVrF6rKzTffTKdOnZg8eTILFizAsix6\n9uwZXu2xsUhrGvmWgkkjbzA0LSaNfOsjlTTyxrRlMBgMhpQwgsRgMBgMKWEEicFgSAv7g9m8rZDq\nvTKCxGAwNDrt2rWjvLzcCJNWgKpSXl5Ou3b1WqkjChO1ZTAYGp3OnTtTVlaGWQuoddCuXTs6d+7c\n4P2NIDEYDI1OZmYm3bp1a+5qGJoIY9oyGAwGQ0oYQWIwGAyGlDCCxGAwGAwpYQSJwWAwGFLCCBKD\nwWAwpIQRJAaDwWBICSNIDAaDwZASRpAYDAaDISWMIDEYDAZDShhBYjAYDIaUMILEYDAYDClhBInB\nYDAYUsIIEoPBYDCkhBEkdeD3w9Sp7v8Gg8FgqIlJI18Lfj8MHw6VlZCVBfPnQ0FBc9fKYDAYWhZG\nI6kFn88VIsGg+7/P19w1MhgMhpaHESS1UFjoaiK27f5fWNjcNTIkwpggDYbmw5i2aqGgwDVn+Xyu\nEDFmrZaJMUEaDM2LESR1UFBgOqWWTjwTpLlnBkPTYUxbhlaPMUEaDM2L0UgMrR5jgjQYmpe0aiQi\nMlJENojIJhG5Lc7v2SLyr9Dvy0UkL7T9DBFZJSLrQ/8Pi9jHFzrm2tDfYem8BkProKAAJk0yQsRg\naA7SppGIiA08CpwBlAErRORlVf0oothY4FtVPVZELgPuAy4FdgDnqepWEekFvAkcFbHflaq6Ml11\nNxjSgd9vtCZD2ySdpq2BwCZV/RxARJ4DLgAiBckFwJTQ5xeAR0REVHVNRJkPgfYikq2qFWmsb1KY\nzsDQEExkmaEtk05BchRQGvG9DDglURlVDYjILiAHVyPxuBhYHSNEZotIEHgRuFtVNfbkIjIOGAfQ\npUuXFC/FxXQGhoZiIssMbZkWHbUlIj1xzV3XRWy+UlV7A4NDf7+Kt6+qzlTVfFXNP/TQQxulPmam\nu6GhmMiy5DATS1sn6dRIvgRyI753Dm2LV6ZMRDKAjkA5gIh0Bl4CilT1M28HVf0y9P9uEXkW14RW\nnK6LiMTrDDyNxHQGhmQxkWV1YzT+1ks6BckK4DgR6YYrMC4Drogp8zIwCvADlwDvqqqKSCfgNeA2\nVV3iFQ4Jm06qukNEMoFzgXfSeA1RmM7AkApmcmvtGPNf6yVtgiTk87gRN+LKBmap6ociciewUlVf\nBp4EnhKRTcB/cYUNwI3AscAfROQPoW1nAt8Db4aEiI0rRB5P1zXEw3QGBkN6MBp/60Xi+KnbHPn5\n+bpypYkWNhhaOiYqsmUhIqtUNb+ucmZmu8FgaDEYjb910qKjtgwGg8HQ8jGCxGBoBkyYq6EtYUxb\nBkMTY8JcDW0No5EYDE2MmdhqaGsYQWIwNDFmlruhrWFMWwZDE2MmthraGkaQGAzNgAlzNbQljGnL\nYDAYDClhBInBYDAYUsIIEoPBYDCkhBEkBoPBYEgJI0gMcTEzrw0GQ7KYqC1DDczMa4PBUB+MRmKo\ngZl5bTAY6oMRJIYamJnXBoOhPhjTlqEGZua1wWCoD0aQGOJiZl4bDIZkMaYtg8FgMKSEESQGg8HQ\nBmjOkH1j2jIYDIZWTnOH7BuNxGAw1BszYbVl0dwh+0YjMRgM9aK5R7+Gmngh+949aeqQfaORGAyt\ngJakATT36NdQEy9k/667mkewG43EYGjhNLUG4PfXPoeouUe/hvg0Z8i+ESQGQyNTV0dcX+JpAOnq\nMJIRWmbCqiEWI0gMhkYkHdpDU2oAyQotM2G1cWjsQUdzYQSJwdCIpEN7aEoNwJitmo62FLRgBInB\n0IikqyNuKg3AmK2ajqY0WaYbI0gMhkakLXTExmzVNLQl7c8IklZGW7GptmVMR2xIhrYw6PBISpCI\nyDFAmapWiEghcBJQrKo701k5QzRtyaZqMBjazqAj2QmJLwJBETkWmAnkAs+mrVaGuJiJYAaDoSWS\nrCBxVDUAXAQ8rKr/AxyRvmoZ4mFWLjQYWi4tKftAU5OsIKkSkcuBUcCroW2Zde0kIiNFZIOIbBKR\n2+L8ni0i/wr9vlxE8kLbzxCRVSKyPvT/sIh9BoS2bxKRh0REkryGVk9zp0EwGAw18fthwgQYOhQm\nT3bNz/ubMEnW2T4aGA/8SVW/EJFuwFO17SAiNvAocAZQBqwQkZdV9aOIYmOBb1X1WBG5DLgPuBTY\nAZynqltFpBfwJnBUaJ/HgGuB5cDrwEhgXpLX0eppKzbV5sQELBgaC89vuW8fqLrbWnsob0NISpCE\nOv+bAUTkR0AHVb2vjt0GAptU9fPQfs8BFwCRguQCYEro8wvAIyIiqromosyHQHsRyQZ+DBysqstC\nxywGLmQ/EiSG1DABC4bGxPNbekJEZP80Oydl2hIRn4gcLCI/BlYDj4vIX+rY7SigNOJ7GdVaRY0y\nIR/MLiAnpszFwGpVrQiVL6vjmF6dx4nIShFZuX379jqqmhh/qZ8JjxUz4feb9zt1tS1iAhYMjUms\n3/K66/bPwUmypq2OqvqdiFyDG/b7RxH5IJ0VAxCRnrjmrjPru6+qzsSNMCM/P18bcn5/qZ/CuydR\nOet1CGYx+6EgC96197uHpC3RliaBGZqftjQXJBWSFSQZInIE8Evgf5Pc50vcMGGPzqFt8cqUiUgG\n0BEoBxCRzsBLQJGqfhZRvnMdx2w0fCU+qj4bBMEs0AwqKoJMmQJTpjTNA2Ns+Y2PefENjY3xWyYv\nSO7EdXgvUdUVInI0sLGOfVYAx4Uc818ClwFXxJR5GTcSzA9cAryrqioinYDXgNtUdYlXWFW/EpHv\nRORUXGd7EfBwktdQb3IOyMHq9jpBuxICgNq88w4sWtQ0a0IYW356aIsvvhl0GJqTpHwkqvr/VPUk\nVZ0Q+v65ql5cxz4B4EZcAfQx8Lyqfigid4rI+aFiTwI5IrIJuAXwQoRvBI4F/iAia0N/h4V+ux54\nAtgEfEaaHO3+Uj8T35iIdl6KffXP6HHqV1iW4DhNY1s3tvyWTUuaM+ANOvbX0FND85NsipTOuCP/\nQaFNi4Bfq2pZ4r1AVV/HDdGN3PaHiM/7gF/E2e9u4O4Ex1wJ9Eqm3qngK/FRGazEwcHO9XN6/wV8\nsa6oyWzrxpbfcmlp2mJbyiJraJ0ka9qajZsSxev0rwptOyMdlWoJFOYVkmVnURmsxLZsyPUz/dl+\nrPEfDHnvQefjgPS9rcaW33JpaR23GXQYmhtRrTugSUTWqmrfura1VPLz83XlypX13s9f6mfakmm8\n8ukrKEqGlYEgBJwAWXYW84vmU5Brevj9jZamkXh1aqpBh/HH7D+IyCpVza+rXLIaSbmIXAX8M/T9\nckLRVW2dVze+SlCDAFQFqwBQlMpgJb4SnxEk+yEtQVuM7cybKoCgJQpRQ/OTrCAZg+sjeRBQYClw\ndZrq1GLwlfgIOsHwd0XJtDJx1CHLzqIwr7D5KmdoVpoz8qs5O/OWYNYz2lfLI9kUKZuB8yO3ichE\nYHo6KtVSKMwrxLZsAk4AAEEY228sXTp2oTCv0GgjhmahOTvz5vbHNKUQNdpX8iSb/TcetzRaLVoo\nBbkFPHr2o2RamUjo38ItC8k5IKdZhUhLCj1tbvbHtmjO5QSaOwN1U4bFmxD85Ellqd39In37uAHj\nAJjw6gQcHD7a/hHXvXpd1G9NrWo3xiipLajs++uIsbl9NM1p1mtKjai5ta/WRCqCpEH5q1oj5XvL\ncXCitr340YuMGzCuyTuzxjBrtJUOuCXY65uLtjg7PxmaUog2t8BuTdQqSERkN/EFhgDt01KjFkhh\nXiEZVkbYVwJwcQ93Yn9Td2aNMUpqKx2wGTHunzSlEN1fBXZ9qVWQqGqHpqpIS6Ygt4CFVy9k2pJp\nbN29lbH9x4bNWk3dmTXGKKmtdMBmxGgwtAySmpDY2mnohMRE+Ev9+Ep84cit1uhvaI11Nhjqi3nO\nU6OxJyQaQvhL/QwvHs6+wD4ABncdzL3D72XSpNb1lBqV3dDWaSu+wNZAKuG/+yXF64r5IfADGvq3\ncPNChvxjCP7S/Sj+1LDf0JrDq034btNhNJJ64C/1M2vtrBrbq5wqky7F0OZo7SP6+voCjRms4RhB\nUg9iU6Z4WGKRc0DsUvMGQ+umtUf31ScYoyUJzdYo0IwgqQeRqeVFhKM6HEXpd6WoKje8fgNQPUnR\nYEgHTdnJtIXovmR9gS1FaLYkgVYfjCCpBwW5Bcwvmh+O2PKV+Ljj3TtQlIAT4PrXrmfNV2so6lPU\nYDNXaxyN1Jf94RpTJV4bNXUnsz+FV7cUodlSBFp9MYKknhTkFoSFxPpv1rtTM0MR1EENMmPVDOas\nm9OgtUpmzoQbb3Qfouzs1jMaqQ+tdcTVlCRqo+boZPaX6L6WIjRbikCrLyZqq4GE13SPmYejKBXB\nCnwlvvodzw833ABVVeA4UFHRNqNMTCRN3SRqo+ZM1rg/UFAAkyY1r+Bs7qSYDcVoJA3EW9NdUQRB\nPbWk9FTYPJyck86t3/F8rgDxsO222VG01hFXU5KojVrKqNmQXlqjFmgESQOJXdNdECpLBqBz3kad\ndkxcYtG7HiOKwkLXnFVRAZYFjzzS+h6mZDCdYd3U1katsZMxtH1MipQUiEyVAjDl7greeXIITlCw\nbbj2t5vpcu6z5JSfS/nHvZMKQTQdrCFZzPNiSDfJpkgxgqQR8ATKzk3deXDCOQQDGWRmOmjRcAJO\nAGfOW1hOe7KzpFXZPeNhOq+WQbqCFhJFizXHPTfPWnKks51Mrq0mwsu9VRGowMFBfvVT7M3DOWVw\nJYucheii30MgC0clLZE2rXFJ2+7WAAAgAElEQVRRrbZCc3Z0jbUuTWT9491faJ57bp615Ggp7WQE\nSR3U1ln4/TDlHxVUOP1xOi8BQDsvxem8jCUacsDn+cCuxFKbrCxpVOdya1xUq63Q3C9wqkEL8eqf\nKFqsOe65edaSo6W0kxEktVBbZ+H9VlE5BMd6Cyk6A81diiUWllg46oZgSe5yLpj6CIdvvxTy3oPO\nxwGNc6db46JabYXmfoFTCVrw+2HKFDeww3Gq65/o/jbHPTfPWnK0lHYygqQWaussvN+coGDRnhH2\nn7j43E9Z89Uatu3ZxrxN8wg4AWzLhs5+Zu/7A4HtAeYUZzVosmI8WuOiWm2FlvACNySCKzwACgkR\ny6quf6L72xz33DxrydFS2sk422shGY0kyp7c2c/QOUOpDFaSYWVwznHnMG/TvPB8EwBbbO4aeheT\nBk9qlGszDsnmozW2/dSpMHmyOziyLBgxwtVOWkv9DU2LcbY3EqNGuf8XFdWM548dCUx4tZiKYAXg\nppZfuXUlVU5VWIgIQpadFQ4X9ohdcbE+mHkFzUdrbPtYTaqlCJHWKJQN1RhBkoBIjcO2q7fXZ3JY\n2e6yqO8iwvSR06OEhRf1VRmsJMtuPLPX/ojpjOqmpZhCImnuwAVD6phcWwmI9Y/MmOE+7LWtFFfU\np4gsOyvh7446zNs4j6mLpoZXVPRSrQQ1SGWwst45uloSzbmantcZTZ5c932q7RitdTXA+tASckpF\nYvKvtX6MRpIAzwSwbx+oun+RDvd4o9+C3AIePuthrn/teoLqLoAVlYcLeOXTV3h5w8tYlsWjZz8a\nlWolntmrJVFXKHRzjipTjaJq7vrvz7SEwAVDahhBkgDPBFBcDLNnQyBQ/ZDX1umU7y2POk6kf0RE\nwgLGcRxufP1G3rv6vag1TlqqWauujra5w2FT7Yyau/77M8mY24zZsmWTVkEiIiOBvwI28ISq3hvz\nezZQDAwAyoFLVbVERHKAF4CTgX+o6o0R+/iAI4AfQpvOVNVv0lF/zwdSVBT9EE+dmrjT8TSMfYF9\nYSFiYZF/ZD5rtq0Jzy8Bd/0SX4mPSYMntVgB4lFXR5uoI2+qDiBV239jjIpNZ9dwavM37g/aYmt/\ndtImSETEBh4FzgDKgBUi8rKqfhRRbCzwraoeKyKXAfcBlwL7gMlAr9BfLFeqavqSZ8UQ+5DX1ul4\nqygWrytm9trZBJwAWXYW/Y/oz6qvVoXLCUKGlcGWXVvwl/pbrCDxHvCcnNo72ngdeVMv1JVKFFWq\nE/xiNde22Nk1F21dW2wLgjKdGslAYJOqfg4gIs8BFwCRguQCYEro8wvAIyIiqvo9sFhEjk1j/RpM\nXZ2Ot4piUZ+iqOzAc9bNoSLghgd36dSFsu/KmLFqBrPXzmbBqAUU5BakFArc2MQ+4NOnQ3l54o42\nsiP3FuoKBNzv3kJdqb4g6Ry51SWIalv+1vOlQfo7u9Y+eq0vbd2HUlxc/fy0VkGZTkFyFFAa8b0M\nOCVRGVUNiMguIAfYUcexZ4tIEHgRuFtb6KzKyGV5AaaPnO464recTMmiQjcPV+4yKoIVFK8rBuD0\nu35P4PPTyDj69yycfF/KwiSVTid2JOgJES+qprbj+XyNv1BXU43c6rNeus/nCsnIJ1DE1eDSQaJ6\ntGXh0hJDlhsLvx9mzap+fjIyWqegbI3O9itV9UsR6YArSH6F62eJQkTGAeMAunTp0qgVSKZDi/di\nl+8tJ7hlIMx5B4JZYFfCqOGQuwyAaf9aRGD2GxDMIvBeJdOOf4SXftfwtybVjjd2JJiTk/zx0rFQ\nV1OYOOq7XnpOTrTAtCz3+8SJ0Lt349cvUahsazeN1EVrnPyZDD6fey/BHYCMHt06rzOd80i+BHIj\nvncObYtbRkQygI64TveEqOqXof93A8/imtDilZupqvmqmn/ooYc26AISUVfce6I5DYV5hVgfjIJA\nNmgGBDOhpBBbbIr6FLF1/fGugAn9tnZZp6g5J7H4S/21/l48dzP7KpwGx+d7I0Fv/ejy8uTj/b19\n774bFi6EceNSn6eRzjXLvboVF9dvvfTycld4gNsRqEYnQmxs4tXDzMNovUTez3bt3MCe1kg6NZIV\nwHEi0g1XYFwGXBFT5mVgFOAHLgHerc1MFRI2nVR1h4hkAucC76Sj8rVRl8027ovd2U/xqxuRtWNx\n5beCFcTqtohBXQYxbck02h1zAthnQlDBrqKk02zuWPA+2XZ2eMa750PJOSCHiW9MTDgj3l/qZ9bO\nSaj1OmgmGZkWhYU29SV2JFgfW3WszyTVUXO6TByxWQwyQm9F5DUmOreneXn7ikSHijc2ierRkn0I\nbdnslioNfaZbWpumTZCEfB43Am/ihv/OUtUPReROYKWqvgw8CTwlIpuA/+IKGwBEpAQ4GMgSkQuB\nM4HNwJshIWLjCpHH03UNiajr5tcwCXVfz/Di4exb8Bs0ACCIKCeeuZxNXd5n4eaq6p1HLYSSQshb\nALnLcBT2BfaFfSheOhURwVEHR53wjPhIQeIr8RE8arFrOls3ij5HDgT6p/W6a6OxzFLpMHFE1g3g\n2muhS5fk1kuPbRPveOl8wWPr0ZI7o7YQkZRu6vtMt8Q2TauPRFVfB16P2faHiM/7gF8k2DcvwWEH\nNFb9UqG2mx/7YvsCr7oZgPPeBWsyOBaZmRZDztvMJ98EonfO9WN1WY5q9Xx4RXl89eNs+35bOJ2K\npRZS9lPki9Oxj1lSY0a8N5+lQmycdUWsXNOe4W+n/tA1tCNvyZE3sXXzzAvJBBXEzXBQUG0qa6oR\nY0vtjNp66G5z0BLbtDU621sMtY3ool7s0ohOHW+WOxy8axDW4tsJdp0fdrgDqGqN1CpBDfLKhlfI\nsDLQoLpC5Kn5UJWBLFHWn/URvpKp4bBhbz7LlLsreMdpjxNMz1K/ydKSI2/iaRXJdLK1RVC1tBGj\nV9/w4MbXNJ1RSx5ANCWNqf21xDY1gqQeRD4MkHxnEdWpk42jQlUVPPiHY1DnLix7Ms6ZN8EPOaGQ\n4OU4ODWO46hD90O688E3HxD8YjBUWqAWVVXKDX/7f+hp95BlZzF95HTK95ZTmFfIlKsLWfRU3Q9d\nU8xfiR01R052rG1+SlMQWbfaMhdEkqgzTuT8bk4hGm9OUFN0Ri15AFEbjdnxN/bAoiW2qREkSRL7\nMIwaVb8RXUFuAVOuJtypi7j7Oo5gaTbWG4/hBNVd3/3qn7lrv8cIE0VZ+/Va90veArArEUewMxyC\nXd/F0SA/BH7g+teuBwg74efPL4g7L6J47ma2OR/CD4fwetUkgkctbrJU9vFW6ktl9nsqL37svsmO\n+BKVSyVsOl3ECrfy8upccukm3aG7je3raWh4fyLSof21tHBoI0iSJPZhgPqP6CJHEjk57lwDT6g4\njg0K4ojrbO+8FFtsBnUZxJadWyjZVRJ9sNxlriO9ZCi/PP8ont/1fng+g5cYsjJYSfG6Yrp09LHz\n8O5M/DscueRTzjr2LG6+vAcV+44CuoAEwX4dRg2nssuKGo77dOC1p1fnyJDZhgiChnbUifZNZsSX\nqFzs9pYwczmR0Jszx902Z056BFy6Hfr1uffJ1qWujj82ym/MmJoL30XSEk1RjY0RJEmSk+OOmlWr\nF7qqK2VIPCJHEr171xQqVoZDMG8BDg6WWvhL/VQ5VfEPlrsMzV3GM9+6fpdYghrkiTVPENw8EJ3z\n6/AkyH/3fQqt6I57+zU0b0WRkqFkdVuXVCr7hnYQsbm74q0dnnDfBOa3VEZ8ifZNdsSXqJy3vaXM\nXI4n9JI14TWUpvAVJXvv61OX+oT3B4PuWkW1CeJkByYtLaS3PhhBkgR+v9vRB4PVk84efzz+Ou71\neRC8Mj5ftVDK6f4JEz9cTWXQjko7XxeRjvlIAk4ASk6PmOioKI47qz4AbhS1A1aQk3+6l+l1mLX8\npe58mNm3XEmgyiYjM8jovzxD0bnH1anFJMrdlYyPpLaVJBO9+Mn4fdI1WvTOveXVKwgGu4a39+nT\nOMdvCLFCryHX3twmnVi8a6ioqJmapqHBBcmG9ydaqyjRMeuK/mtu82cqGEGSBJFmGM+3AdGO1Mjs\nr8mouxDtJ7AsePRRGHdhb3oPmF9j0qFt2Zx97NkcftDh9DuiH/M2zmPuhrnJXUCezxUcoYmO9Cl2\n/9YVweox4LiPQWG3wvAKjfESSHqd+b4Fv0ErFBSCjsOMFz/h8e1jGNRlED0O6UFRn6IakyO9TrWy\nsmuUnX7SpCTvQYmvxkqS3jkKCmD6s+t58qXPOLL3p9B5MP5SogRPZACCt5+/1I8v4GP6s+dS/nHv\nxrOxRwg9e+ebZGTOR9XGcWDlSveez58PdE4+wCHZYIh6BU109jPqgY1QMoSiC7vWee317ezSbdLx\nBMVNN8GDD7rv3vXXw7x5cNZZ7uDPe7duuaXhk2nj/RZvraKcnIaHfDeF0E0nRpAkQeSoJzKvUkZG\ntSM1Mvurp+7OmlW7QPH5qo/pOG7KdTc/U3Wyx96H9Y7bMYwbMI7fv/N7pi2ZFt4mCIO7DGbxlsVR\njvrDTvycb0YND0109FWHGpcUgtqADao88OwqGDwV27I59ahTWVK6BEXDM+u9zlzz3gX7f8OCSfMW\nENQgCzcvZOHmheFsxkBUOn2vUwU7qZc5chb/ll1byLAywAHbssPp971zPLn+SaqOroLvYd6cbEb3\nHR0WPBWBCm58/UaCTjC8MmXvw3ozvHg4FSX9sTb/wKPXQ0FB77oehaSIFHoctZhr//IMn88t4p13\nqn1BxXM3M+fgmhpWPEFQmzYW217JlKtR9uAsijrPByKEf4zm4ffDlCnVz2tkZ5eozo0ppGsMaiKE\nmje4U3X/nzsXXnnFraeXsubBB918b40VHegJGm+tokjzdJ2+mjjtlVCrbiXmLiNIksAbgUyZQrgz\n8BKsefmnYhO7eOpubfbTwsLqJH/gvgSxI5HYDMKR3DfiPgDuX3o/KGTYGfQ4tAdXnnQl8zbOY0P5\nBjb9dxPbv98Oud9EzVUBOLzXBnYsdghUVoFVRbDdNlj4PwTzfCwMLgyX2xfYxxTfFC7ucTG2ZRMM\nO/oLowVTCM/JP2fdnKgFvrxOtcvOIvdF6exn6qL4o2evo6sIVODghNdvOe/485i3aR6Pr36cWWtn\nIYgr3CJMexXBCl759BUssVBVEMJ+Jm9lyrH9xlJR0h/nH2/hBLO4/j2HeX+axuEnfhHWqBoaEh27\nfHLRucdBX1i0qLqjIO89KrdHa1jrv1nvCjwNRqXFqU0biyTZcrFlvcwJYSEQxwTpje5j/VmR9ylW\nSLvXfxfTR07Ht7ccShO3Y21tHaXhWTZj+o6BRbeFtVvLqjY5e3jbIwd39dGAIwcxsZpsJJ5ASdbf\nlEjYxzOntSZzlxEkSVJQ4AqSyM7AmwHtjSRsG84+21WtPeGi6morxcU1H4KCAtecFbn4U33V//tG\n3MeFJ1wYHvk/vvrx8APqK/Fxx7t3RPtPSk8NC4BtuS8hvxoKXwyBfR3g9UdBrRpZiRXl7c/fZv4X\n8xEJOfVzlyG5y0O/R5NhZbD6q9VUBCuilhrOsrPoN3Af5XunMvf7nTww+wEcdci0M/GN8kWNZqf4\nplARrAhrVopS5VTxafmnYcERDCb2H325280PGhYmEXh+J2vzMJyQ7yhYVcXcN76F7//O7LWzeeis\nh6LMimP6joky2c1cNZMXP3qRvkf0pVN2p6iOJry42auu2YiyrtXmkLmbIe89+g3cR9Yb1cJmZ8VO\n7lhwR3gFzYpgRVgQxAqmRMEQyZbzytqWTTAYRFFmr50dvj432Wcu6lhUVsKLL1abdi0LRoxw34WC\nApjw2Eb2LZiI5i3AyV3G9a9dz4AjBrj3Tp244ehRWktJ3XnjIoVeMBhkxqoZZO78OEq7vekmeOAB\nCAbde52ZpfxmosWDDyb/bsXWxxvEWGKR8eVgxnSak9AEGKlRZGQG2dLpGfylNf2GdZloI4/dmsxd\n0kKX8mhU8vPzdeXKxllQMdFaFbEjieJiePJJqAoFXGVnw4IFiSNKEqmvyaq2UxdNZfKCyQQ1iC02\ndw29i8K8Qk7/x+muwx1cITJnfs0U9qWnwuz3wMkEBCQAwybD4HujBE+s5hGJhcVpXU/jx+1+zLxN\n86gKVkWZ17zfl5ctr/EbwPgB43ns3MeYuWomN75+IwEn4Aqh2s4f8ZvdZQXnHX8eS0uX8s3e+Csv\nW1gghEf761cdxI2XnUigykKtinB7CMIZR5/B/C/mRwU72GJz3gnncXzO8TVMiu0y2kV3kp7/q1Kx\nMwI88twn9B6wJ2pk7fm8Dm53MPcvvT9qGeZMK5P3rn6vRqdbHx8JEHefmXPX8+K8cvZ1foNFzjQU\njXpmCu+eROWs1yGYSXa2xUN/teOabfx+GDosSEWF1hh8xMMWm2v7X0uXjl2ihEdk3rjYMuV7y8Nl\nI7VbW2yuPXRWWLstKHCv6/p7lhHcfQh2h+387fYCev+kd+J3K6at4uWxA8LvjTjtaJdt1ZrpoHju\nZmbtHJVwTlZd5seGTnpOFyKySlXz6ypnNJJ6Es8JF7st8vuMGa5WEggkHlEkcuzVK2Qxzmi0ILeA\nR89+NGwusbacQdDJRtV2/Rslhe6LX1IIjgUIockskOfjoG1nsGfO3Lhrp8SiKCOPGcn7W9+nIlhR\n43cHh4WbF8bZ02X1V6uZuWomN7x+Q92CL85vwVEjOP6nx/PqxlejjmuLHSUMzj/hfG796a0hkyH0\nXuC+/E98+ysCR7nHzrAyuLjHxfg2+6K0nqAGmfvJ3Bqh1opSEahgim8KUwqnuOYonytEnKDgODDh\n0ec4/5qPokbW/97wbzLtTIJOMEqIWGLxm4LfRAU+JDJxxg40vHLxTE7jBoxj5tz1XPfLYyDQHeyB\nZI7243ReEn5mopJ9lhRyeJ8S1hzZienPXh/l6/CX+pn496+prDwvHA1IydDw/YlN8SMItmWH/WXg\nZmpQ3KANW2z3L1TGG2xYYpFtZzN95HTWfLUm/JuI0G/gPsYN8JZT8LElYwvaZz384y2CwSwmXBrg\nsX+tZ9Kkmr6v2PY59/hzo/LY2ZY7r8vBQUqGosEsVK2wf8sXeLaGgC4oAF/gWYILFsfVODzB5V1L\nvHsZ+77XMHeFoiaTDZBoKowgSZF42oj3vaioesJXQ6JW6hWyGDKnxI5Axw0YF3bY55x0LhMX21RU\nKmIrg05X/JJJVZ4PMkLhwJYDZ98IucvYs+i2qLDhsOCJpfRUKBnG3ODXvG8nGUkWw4qtK1ixdUW0\nGa6kMPH5a/w2hD8vuS/qmBeecCGHH3Q4f1/1d8DtFF779DVu/emt1e1WAAUFXTn4nQL+vGQxiuKo\nw2fffkbfn/Tl/a3v16hrvFBrB4e3P38b32YfY/qOoV/367EzTsQJCojitPsmnCvNCbodqKJUBaui\njmeJxe9++jseXv5wXLOav9QfzgTdL3A9E6/oHbqfVZz3p+mcNbQT5XvL2bJrS9g04zgOE16bAMCL\n8453hUio3Y777hquGjoy6pkJ+8Fyl7EZ+PsqyLajl4MunFNIZWZ/sM4EzQS7CqvbQmwr09UsLBtB\n3CALz68BPL768bgh7ZZYjO03lm3fb+Pfn/w73CZeduvyveU8du5j9DuiX3hgNPGNiQBRJkgpuTX8\nXDih1EG9B+yJa2KKbB/v3njBHJERkmsOa8fsJUKgyjVbzdo5iuCCmhqHv9QfDgrRoCIi5ByQE/7N\nE1wigiUWjjrMWTcnfAzXpNgZddx31OcTJk2C9VkzmfLRi/T9vi/T/9/ykLaYxeyHgix4146eLNlM\nS3UbQZICiZyStY0o6kN9wycTjVojt/eeDz6fUFiYRUHBvUx4dRcznBlohPPc6vI+qoLGhg3n+QB3\n9AjuS05pATrnbTSYxfvvVcKo5bWaNwA6ZXfiu8rvcNQJj1zjdc7SbSHqzXcRhfbVKzBLXui3iLpF\nHiPbzubWQa7AeGLNE+FRcFCDFK8rjjJpFK8r5vHVj4f3D2owynQVD1tsBhwxgONyjuPZ9c+Gr6Ey\nWMnfV/2dLHsWv/ztWzxzb4Hrd3rjrwR/8iEDTglyZIcjeW3ja1Q5VTWu+3c//R2dsjuFOznPJzBn\n3RxuOuUmHlj6QLWPZ3EOTkUPcGxwhLlvfMvc73+PIGTama4/K3R4R90gg9+c+jxvzaput40HP0Fh\n3r0ATHjVFTZnH3c2cz+JHhBELgc9xTeFqmBVdXaFddWrMY3tNzb8ud8R/cIj76I+RczdMDdK84rE\n2/76xtdraDIAcz+ZGzZ1eWanfYF9/HXZX8MmLw0qJwzYyob3AjgB9/qCXeYzxbecKYVTAKKiAGPb\nZ3Tf0Wzbs41XPn2Flz99mWw7m6I+RYybUEC/I9zw8m8OeZ7NBy9EVdkX2Bd+TrzAlqAT9CqOow4T\n35gYHsiFTXManX1i2pJpbN29lZX/zUStt0AzcaSKnO6fMXOVn+tevQ6Atz5/Cz6rHtxVVgajBpf+\nUj+Fd0+i6rNBZB4zCd8dU5tMmBgfSQpMnequghgMuo52b36A9/2uu6qjRFKdCZ6u8L/w3JAI+7OF\nq9o76uCUnoJ+cXqUj8IWOzxyZ9EkePdOd4QrVTDsD65vpbFYeU3cIABB0NJTXWd2rP+ktIAeeyZw\nfP5XHH7iFxzc7mAe9D/omi1CI0FVJcPKwBKrRtRXPAThqA5H8eXuL1Hc7MwXnHABW3dvjau1AHRe\n9yhf/vs61LHDbWOdPo0MK4OgE4w7Mr9n2D3srNgZV5DFmouqzXuuRhBp+hOELh27sGXXlur7Khbj\n+o/jvcWVfLzyJ5C3IOxbennDy2G/lS02llg1MirYYpNhZUS3V4yJse+tv2N99kwUt31V3SCJGnWP\nwMIiOyObUX1GRWks8fa5ddCtTF82ncpgZfxjiYVVNgj9Ykgoq7YbIp5hZWCLHa674GoFkffg1kG3\n8hf/X8KDDq+9AJ5c82TiDBO1YGGRf2Q+lcHK6jx5tRHh9xt4isPW3Vsp210W/XvEPb9w6iPceulg\nCnILmPBYMX+/+ZLwvbhw6iMMPCWYknaSrI/ECJIUiNVIvIlRXpRIY6YVT6cg8swlnv06cgJfPEen\nJ2iCWwbC2l/hrBnljopDnZnV5X3yj8hn5Vcrw2HJZx97Nlt3b61pvqqLRbfBu3e5gsoKYA/7Pxg8\nFREJrdnidlhnH3u26+TfnI/zj7ei/Cp2lxX89qe/5bt93zFz9cyQJpVcEIF3vdkZrp3+pnk3JezE\nauC99E4WYlehRcOqhWCcNsi2s3norIei/UTJnCOJ65DQP4Rwu1likWFlEHACNTQFzyz4xqY3auZ5\niyTFgYQgnHzkyRzZ4UiAuIEakZx59Jkc/aOjmbFqRsLnyBab844/L/GE3ThtJgjH/OgYPvv2syiH\nfg3B2UhEPQP1eBZjy0vucjLtTMb0HcNHL53PwtlnRNyLPyKD760RFVmvehpne/qJl4TRi1+fPj06\nBUoqYXyJUovUJVSSFWCe6auoT1Hc2Pneh/WuIWhuOvJZHvzTOQQDGWTaDv3OWUfhhVvodOz5FOb9\nJeHM+MI5heGOOFLz8SZBLlxSFa1lRJjXsrMsHrrhl6zJ2OE6XZ0qLMvi4bMeZtyAcW7Y8N0VvB0T\nUBDMXcaD/gcZ229stRCJ48S/8MQLOTDzQJ5Z/0xU+4w4ekTYiT5v07waZp+ERMy30YhOwouSCpuo\nQhFtPQ7pwbxN85IXIt45akSzFcTV1BycsClHEPKPyGdP5R4+2vFRaL/qDurTQz7l1kG3sm3PttoF\nSSgLdaz5Mxk8QbZm25qwVmdh0aVTF0p2xj9n3yP6cuEJF9acoxRDwtF/gnuvKJu+3RQuJgiH/vd8\nvv7PiWhotdLGQhC6durqXmNMfTqMu4g9h71du+CKuOcKYXOqWB+APSTiXiwIm1sj5wmlAyNIUiR2\nQpI3WXHNmup0CammiogURBUV7rwTx6kWDl6Z2JxV9RVg4Vm2ceyskYKmMK8Q39MFOAFwgqCOTf8j\n+3Pf6P7AhdUHLCuAxQXuU5brHt83yhe2tRf1cW3rxeuK2bZnG5QVkPH0RAKVrhnLvvpn/Payn/Ld\ngBciolR6M3VRF3cUjYOoUL63PFz/KVfDe8VBKiqqojo2r9POsrOojOPEl9zlHH7g4Xz+7edRbWKJ\n5UZwlfiYu2EuL7+zHb64LdxJe53hmL5jOLjdwbyy4RU+2fFJdUcQp6MXhGv7Xxv+3u+Ifkx8YyKL\nNy9OOBJPmtICrOJ3cQKuBke/2dDnKTRk4om8rjXb1lSba2I6tI8Yzmk7TqueN5SIOianxqPHIT34\n9am/DgcFzFg1I/ybg8PmnZsT7vvw8oc55kfH8LNjfsYrn74S1zwY1GBCQVRrAEcI12x6CtvmPA2B\nrFAAyg2Q/0S4zOldTmdJ6ZLEufDq0DLKviuLW5/dG/rDYW8lvP5ILKwo/6J2Xlrve9FYGEHSSEQK\nC9uOzsHjOd0buvZD5LGr1zEJpdoodiPD4q3r0RABVvzqxnBUSOV7lRT3fYGCCdUT7cKjmkL3Or3U\nFLNnR6eCiacNebmlIif2+Uv9zFo7y9VSFp2Iu1hXBuII1/74ae4b0RVGxLRHLRPvCgpgwbs2xXPL\n+OjAx1jCChQ3hLTfEf0Ywxjm7tjAtvdqOupnr53Nr0/9tevUDHF5r8urJ6eVDozqbE+ffCcjh3aM\nskF3yu4Uns+TiAzLfe28dpi6aCqVwcooIeL5YA4/6PCwfd7T4MJzbGIQBGvzMIKBjFDHZMPKcbB2\nVI3Q7UFdBrFo86LqneN0sE7uspqzTT28jrL9DvjhUKxuC9HOy8PFvYCMeOl2njj/iaiJnfGuJVJj\nizQDeRMcw6HDsfWpqwONE0Di+c08lJCACWQBGeCo66f7yX8gdxmZViY79u6oXYjE0Xq8wAFFcRx3\nkbq9fUrYsrAKDdSh0fxLaigAAB5fSURBVMWYs9zUq3EGHXEGLplWZnjQli6MIGkkIs1cW7a42YGD\nwepZ7ZGhwMmu/RDp34i3jklWllsu0boekyY1IGqsZEiNsNpE1ztmTOJ5MrHaUKLcUr4SnxsBBOGX\nXByhXbZN0YVd4587QahzZN0KCroC9+IvvaBmAsxDbOyrf0bwi8FIt/cg1AEGnACdsjsx49wZvPjR\ni1zc42LK95bz3H+ec1/amM62x/cTmDQ4uo6RQk5E6H94fwq7FfLdvu/Ytmcb//3hvywpXcLM1TPD\noZ/ePpEzqb2os1hNEKrzl0Xa7jOtTDd89sCDmeurhIAAFmC7jtmYkXePQ3qwrGxZ2MyYefRSWAxV\nlVW1dmiWWIzInMz8p24nWGWDWogodpaDjBoRnogXmyQzdvLf1EVTyTkghxc/erGGz8i2bG4puIVO\n2Z3IOSCHNV+tiXJ21+jAa5lvdHrX06OXYojRoCR3OadxK0sWZxJstw354VCk20KcPJ+riTiK61iy\nkJJhDD4tC3+pv9ocGAcpGYZGPCd5O0cz8sK+Yc3Tu88byjeQ/eMS/mfGmzzw7MoaS24nur5DJlzO\n9pyXE54/koFHDmT6yOlpj94ygqQRiV2DInK0DvUzM8Ub0XsRYN46Jp6GEamRiESn0052XQ2Pogu7\nMvuhIJWVQbKyrISdOUQLR9t2Bajf754vVhuKl1vKS/+RaWe6HVruMjJHn8XYHxXXOdmqthxk8cp5\no/6gBsGBay/oRZeOHcg5YBQT31hTYyLnuAFutI6/1F/dyUeMZjOzJG7bxBNyfj/4VkC/7uu5YWP/\ncEe4r6QfU+6uYMrVheF94uV2ir3W2vxZM4+YyVwvJHfNaAhm1AidzrQyAXj4rIerw3PHFMHoDIrn\nbo7S5DKsDPr+pC8rv1qJs2UgWjKMnQeeHxKo7vFUBSdgcW2nOXQZWnOiXuQ1hKMEv+iHlpwOebuB\nU5CSoVjdFkGuH0cdHl7+cI1Z34kc7FIyFHWy3QSkDmGhaWHRzm4XpW0IgoZG7YKQufV0lhf/iWCF\ngAoqQTQUfbbunJvQ1x4GtbAzHf5242WU5xwUrcnhdtZj+48Nt2W/Ppdx8xIJv0PP/nZc+FnufVhv\nJj7+L1YsPQAnbwGVXVbQ6diPWTTrHG6bHWDRwmEhn0y1KfLQb37J9gjBdOg3l0QLkhhtLDM0l8cT\n6E0RAmwESSMRGx0VO1qH+pmZaozoi+P7QaBa69i5szpq7KabXD9NXansY/FMQ8loMQUFruP/ySfd\ncz3+eLS2FalFrflsCPbO0yA0Yi3MKwy1WQEP91rJmoy/AW6HVpCbWHg1lBqJFCPMa4kyLEO0YMg5\nIIc1Uf6a+BPACnILoKwA39OwPmrRshMJXjUQcpdC6anonLd5R9uz6CmYP7+ASYOTv1GJBGn53nKs\n3Pdds9Tha7Dm/Q11Msh4+zEKug5hxw5l48FP8Lg+XjNFR25NTc7TIArvnkTlnNfRYBZrMoWMjOrM\nul4SR7dNJuH3w9Sn4z8/vhIfFSX90TmhyDrLfTlUM2FREC0ahtN5SY1Z4UV9iqpNoMQEahyzFFlC\naMKgoMf4CYpNlp3FxT0uZtGWRdUTFmMnSe69jcer7JBQ1HBnvX3ZWSDL4OwbkB8O49qLT2DchUX4\nS/dUD3wgPOs+Ns3J6KvdzzXev7IC1v15oLsMg12JPeZst43LClhxbwFUKCJBrHNuhgEzybKzuHvM\nCG5+u1ow/fqyvtyw3o22q6mNjUDyVnFtv2trLOeQVlS1zf8NGDBA08nSpart26vatvv/0qWJt91z\nj/t/fY6ZlaWana1qWW4aSMuqPmYk99zjlvfSRYrEL9fY1y1SfU7bdusR7zqy2wV0/N/m6NItS+O2\nT23nqavdlm5ZqvcsvEeXbklcKJky9Tn30i1Ltf3d7dX+P1vb390+fNzIa8vIiLhvtqMZZ0xWa4ql\n1ojbVaxgjTarzzOS6Bq9OmWcMVkt2wk/M5mZ6p4z43tl7Klq/5+t9yysvlm1nXv8rSVR9R0/3i07\nY0b0PnXd16VblmrGGZMVqQo9M4HQX3X7xLZnuA6vjFeZIsoU1P4/W8e/Mj58PyPrHnufI7/X+G2p\n+1wiAXXtWFWKVKqdEXDrmPG9Zo0bElWXpVuW6vhXxuv4V8bXqGNd1x/5jooV0PG3loS3e88JqNoZ\nwfC7Eu/eeHXocWmxYrnth1Qqw28L39dUnyVVVWClJtHHNnsn3xR/6RYkkQ9Ho3YKof3Hj48WEPE6\nbK98oo69MR6qWJIRXJEviGVV1zlRm8Vrg7oETqIOPVVmzHA734SCe+E9av+fHe7YvE458tq8Dtyr\n/4yXPtB7Ft6jM176IKnBh9cG9bl3XmcZeY5IgQYBJf+xhMIv9lqXLnWfwezsugV/Mvd1xksfaGZ2\npVp2UO3MKs3MCtZon6iOO3T9M176oNHv84yXPlD75Jkq+Y+pddp9atlVijjVz3REZx+P2HtT2/XX\n1o5Ll7r3yDtv5LtSG959s2xHyfxerWsGafu728d9vhqCESRNKEjqM7pO5fh1aSRe2QsvdOvilZsx\no3HqV2NUFKM1jR9f89gzZkQLwBkzau6baseUqENPhWRe7GQ0Eq/94wmCGTNUzzyzuk3iXWuqz1a4\nE57h3qOQQUrtzCqd8dIH4XK1DYbqusex50umvlEaRC2CskZbxhE0DWXpUtXM7Mqw5iH5j4W1rmQ0\n+mQtEbFla3tXahu4JGqnSEHrtU2yA7W6SFaQGB9JI1DXGs91Udfs81h/Q12TEd98030VvImR3uJb\nqaxrkGhyY13XXf7/2zv3WDuK84D/vvuwoaQCYiJABdegoEZUTgxxKW5pZdJgQagiSyARGhWKrKAL\nlFKpqgOKVKVVFbf80RTHNDWkvJSoiQIlINLyMtwKyVcG8zA4cdJA6xIQLuAGIqricn2nf8yOz5y5\ns7Ozu+dx77nfTzo65+zZszvf7O58M99j5mBn8a6xMfs9lCklS04Ic+46HDlLADimp7tXwxwfn3/u\nsuixHNlmZjq+k6eesgEUMVnbJrP6ASBr1sAzz1jnOHMTHNy3+kjaT1k9++cHWLmy2m8Wk90trXDg\nAJx0kvUd+ItMlS2f8Oqr3fIf3Lc6OptvE6anKUKlBQ4bxmSciWWG2Q/ylsuOXZuySMmcerz66u5A\nmq7JGBPJxZ2AmtXFC1jf32WO55GjbRb7q98jkia4Ye7GjXkmg1z60astO24OvTh3ro9k6u/uNlOb\n92f1bFO9R3//sTE7MnGjhl6Raw7tVf3ljGhj9dyr83dGQ/a1fHleT9/5B/sx2vfNQpPL/89sv//F\nxn7MHD9fm3ps8vypj2TEFEl4Qbdvn+/zaNJAxx76lA22rb+m6YPQD/9M3fLFHsTQl7Fhw/z6jDmU\nB1HecN8256+SM6esbc/v++2c2ajsXg+v1caN3SbAXuGelypzXdUx6iiepvVYdb/06xlTRbJAFEnY\ns928udv2nmOPzeml5thge6FM+q0Q6uLK5AckpAIRYnWW6qn30/81qOvRTxlyyrIQRySDqBP/XL14\nblI+kn7JoopkgSiSMKxvbGx+72xycn7D7/eGw5ukqned25BWMUjFUXWuKrNLToNTdowNGzrXKKy7\nrnBNsddpWPjlr3s9Q8d+nfNUmhUzyuJ6/xs35o0AcjsITemVM9ova5nc/VZY/YoaNUYVyYJRJDt3\ndo9ARDqRGW7YHl5oP3qjKw9hrNMY1LH3G1PvwUmZyPpB1WiqTLZQJpfbUHcklqq7sDed6kn3gtxe\nZ24DW/daNhkN9LJRTpXHv9fbNpC9auB7+dzFjt10xNkr+XIViUZt9Zl16+DWW+2MvW6dktQ08DMz\ncN11nWx4Y2CiuEpzc/D44zbKJzzGzAxceaXdLxZpkhP95CJr7rzT7meM3d400isXP6Ll8GE7I4Cf\nIT893ZkC5tChTllCmWJy50yln4qyqppTLEXdNWRSZQ0jhMDuc+hQ95Q4seO9/37+tfTP46LWjEn/\nL3Vv5dZB2X7htYH2a/v4x60zkWqsjFVRdU1n/q6zdEQY1RmLduvn8wvoiGRQ5PYuQlPY5GTHLBEz\nv9TpceYMwWNO0UGNSMoy5MtyUapkMqZ9tEvT0VmTHmHKRBErQ2XCpHe83Gvp+43Gx7uTKav+1zTi\nq05dtYkebBORVrZv1Wg2FayRundTSa2xc4SjkF75llDT1sJSJLn4D7IfdpoavqamKMkl1ug4M1Ps\nQei1/yTVYPvKtcpPEZYr1QCUJQm6xtmfmqbMDFl23qYKrE4QRR2/WE4yYVkdNI1qyq2DumbXJr6+\nHNNo6rypfZsoqTq/j493nvGwg5Eyd5aZeuuQq0j6atoSkQuBW4Bx4BvGmL8Kfl8O3AN8EjgIXGaM\n2S8iK4B7gV8D7jLG/KH3n08CdwFHA/8M3FAIPBK4iRDvuw8uucQmKbntofnlmmu6zRYizZOPwvVU\nXDIWRNYViWxrOmx25jSw57viivnmg/XrrXnPmdvCtU/8Y+UkTZbtF5oVP/igU7cA3/8+bN4clyE8\nXpVJI2YmqTJRQHciW9U5mibKHjxozVpzc/a8VUmIvizQKf+rr3bMsq58ZfvmmF3d/2LXsyyJL2Xm\nqWN2Su0bm2G7yuRV9btverv99s59ODERTxb1zZ0pU2/fyNE2TV5Y5fEKcDqwDNgDnBnscy3w98Xn\nzwHfKT4fA5wHTAHbgv88DZwLCPAvwEVVZVkMIxJ/GOz3MlLDYt8JHIv8aloG/xhNIsRyzzU1Zcud\n48iemor3ynxy8yXKyh+aFV1vsGr+o7Lz5jrOU7/HTBShOaNOhFUOTU0+sclF/RFNSq5Urk5qVJnK\nm8ox85SNJqpMUbGRbx1zaG4dT0117j+wo+LUMXptKWDYpi1gHfCI9/0m4KZgn0eAdcXnCeBtQLzf\n/8BXJMDJwI+875cD26vKstAViX9DhFFaZbbRqrDUOg9ITtl8U1sT80LsmHWS1HIeGr+sVRncKXu3\nL2uVH6LOeR1VijgVjdbEVt+E3HslvA/Da+qX3ze9+PvWMSu5e73KrFtVh23CdcN9/M7fxIR9LzML\n1lX8oSIpe877kTRrzMJQJJdizVnu++9HRhd7gVO8768AJ3jfQ0WyFnjc+/5bwEMl578a2A3sXrly\nZW9rt8eUOdZ8pRKzy6acfL1s/GONadXDmMoYDv0xuaG1/nE3b47b8XfuNOacc+Y3UmEeRU6vM7Ut\nVrZUPkq4b1P7ednIrJ8huClyRiSuZx76nMJOUuqahCHY4YzYYSBBU4Wb4wsJfREbNsTv57CD1+QZ\n3LnTyitS/nz0uhPhs+QVif9aTCMSf5hfNWtv2YMXi/zyb/6602TkNlI7d9qht3/u2M0fNj51ktT8\nnn8suqx7llt7/s2bu/ft9VQbMblyo5xSpstQGcca1F6MSKoUf87/w162kytsdDduLO8ApMrvK1AR\ne5yqQILY81FlIi0b+fqmqphZLjbCDq9RLyPOfPrZiVgIikRNWzWo00POOVY4BfrUVD3zS3i8nOF+\nOA2Gb64K5aiTae0oG8n4pg2/d+h6hBs2dO+3YUOezE1MBXX+FyrUUGmEo8oyc2Yb80ZKObUlbIBj\nkUWpEVWooMJy1g2rzZU1PG/MhBZGRPmylpnbUte7bT33y1eSq0j6GbX1DHCGiJwGvI51pv9esM+D\nwJXADHYE80RR+CjGmDdE5Ocici6wC7gC+Fo/Cj9oytZWr7vmuvtPmATpIqK+/GWb1Dg314kWgerp\n1auif1wESciyZTYqJ0yuCqdQz5Fx/XobUeYimMBOTT8+buVZtsxGuj31VCf6DOz06Y8+2vnPJZek\nz5OK6vIjzMqmPk9FSPn7pBIx/STMuTl7Lbdtmx+Vk5NwmWJ62kanOXKS16qipMLEwfFx+MIXOlGA\nd9/dHf00MzM/wiu8Z3bsmJ8Y6hL03D2cishzsrqIPBG46KLOf93vYeSWuw5+qzQx0ZHFP/e6dXa7\nS+qdne3IsmVLJ+LM/R4uTV2H8F7sR9JmLXK0TdMX8Bng37Amqy8V2/4C+Gzx+Sjgu8DL2Gis073/\n7gf+G3gPeI0i4gtr3tpbHHMb3gim7LUYRiS9JNVDdb0ylyfiTEHue46Zoeyc4WjhzDM7ZSmzKVeZ\nylKmCd/xWtY7dDJs3pw/AirrHfu92bGx7ryS3FFbzEnr92B9mWILa4Wy1s1vCH+LmQKrTHI5vofU\nFC6xHn/YSy+7zmVObleWVH2Eia3ORxPz4/jnCKc4ipWlbFRUt4xVuLpJRTv20tTFsE1bC+m1lBRJ\nzg3uO+82bux+uNyU3TlO4xA3Pb6bT6ws7LNqDRb/YfEVXI58jrJInxxfQOwcX/lK2gae8/D6viun\nGLZvn+/zmZy0x8xJDMxt2MPORNgg5/pIUqHTYZRU3etUprT9evaVUNl/Q5NgrP79qLGyz36ghh9s\nkpppIiTmk2nSUfOvW1W0Y9Pjx1BFskQVSd3Q0nPO6b4pXehiXT+KIzYaKHNYphrGsMEOo19yoqj8\nXtvkZH7OSuwcZT4g53PJWc44NtVLTEH5DUNZfabKakz6PmjbI46NIJoqpzKlHY5ucx3jrp5jIdth\n2WOjkLKck3CEkbvsdSo4InUPV13TmJL1/9t2nRVHriLRSRtHjKps3fD3TZtgzx77fWzM3ppuWdxP\nf9r6VOr4Atwki7Oz85cg9bdDd8a0n4V86FBaxly/kb9U7uxst527yhcQnsPJdfPN8OCD3ccum0gz\nJLbssMva9/0UExO2HmZmyuszLFvoq4hllTtyM7pT2fcxO7+fle98YM6Xkzp2zP/mJqR0dVUnc9/P\nzPfrKzYBZNXncDlbfzaJ1DPijuHudRG46qrY8rjxujn//E79PflkJxN/YsLKNTFht73/vn2G/efI\n94/E6r4fqCIZEaoeTEc4DcfBg7B1q30PG4AyJVLlyCtrqMq2+8cU6W6koRMsUIfp6W7FIdLdYIdO\n0BzFtG4d3H9/x9H53HOwe3enwTp4sHsd8pD1660sofwi9n1sDM47D3bt6m6g60zlcdttnSCLiQnr\n5D7rrPlO4XAqFvebo2qN8Jhyc+V6/vn09B+xY4frt4f3aNk1ijXIYX2tWGEVAHTWig+V5MxM+piu\n3Hfc0bmvJifLlUisHLn38D33dDpThw7Z7+4c7tzG2PtkdhZeeqkTsFI19Uq/UEUyAlQ9mCHuxoo1\nFKtX50Vn+Teq2+7+Uza/1fR0vNfuH9M1qmA/X3DB/Ic1JzrKn58LbOTQtm22kQPbuPpK080hVnVc\nV3+xCKGqOc5i9bJlS3ev9aij4qO5nDmzZmbg2ms7x3MRSqGcfkPpR1a5+dXKGiS/fmKNtX+sstGQ\nO0aVoqkT/VbVWbr++s59cOedtuPk14kfRZiKckqNMGI0ness5MCB7vMb04n0M6b5/GE9Jcf+tdhf\no+4jaWLzbpMcVRU5U/WflMO4avrrOo7EVPJZU+dwTLY28fqp+qybaxBOp+HkyvGVON+M79Oqus5l\njm+XMJiKGKvKn6kKxMidOyv0QYnMjxqsE0XY1omd69/zI8X8QIOc56RJjlYZqLN96SiSJjd4m4ei\nKnImJGcf30GYctTWUYCpiKbcRLlBEHPsN1kDJTbBX070ViqBLvc6pxzLMTnLZKwKZ64qb0zZxRIZ\n63aGyq5VFaHMuZ2Esk5QeLxYeH+vIraMUUWypBSJMc16xm170+4YbUck4T5Vs7XWeVBijXRO1FHb\nB7BOmWI0GTG6RjMWMp0aHeQorZz6SY0Aq6KzykJtU1FL4fxaZXUWi2KK3Re9yARP1VnV/GCp/+aW\nq5c5JMaoIllyimSY5A7XU/uEppGq+ZCaPvRNE/h6RW4D0bQhcTLUnS6lF9cwVeYcpeGH1oY5IOHx\ny2bWHURnIPc+KTOfxhJQ25wn/I+OSFSRLFlyRyS9PE+/Rx4x6prmmii2YcpYVuawTDGlkWsCrZt/\n0Uvq1G1M5qmpzsSVuTlNTcrYqzrIVSQataUsCFIx/r0MX+xVJE1T6kTVNJlnDYYXAgrpOeP8endl\nnJuzEVAukq+qbqrqpGmd5VKnbsPoMT8y7OKL4YEHrCqZne3tNep3HcRQRaIsGGJJgIM4zyAZhCIb\nWghoBWG9h2UctpLPoW7dOpm3bOlWQCedZEO9F9o1aorY0ctos3btWrN79+5hF0NRBkZOLsawWQxl\njNGk3LFcL1j48ovIs8aYtZX7qSJRFEXpP4tRceYqEjVtKYqiDIBhmlT7zdiwC6AoiqIsblSRKIqi\nKK1QRaIoiqK0QhWJoiiK0gpVJIqiKEorVJEoiqIorVgSeSQi8hbwnw3+egLwdo+Ls9BRmZcGKvPS\noK3Mv2yM+UjVTktCkTRFRHbnJOOMEirz0kBlXhoMSmY1bSmKoiitUEWiKIqitEIVSZrbhl2AIaAy\nLw1U5qXBQGRWH4miKIrSCh2RKIqiKK1QRaIoiqK0YkkrEhG5Q0TeFJG93rYPi8hjIvKT4v34YruI\nyFYReVlEXhSRs4dX8uaIyKki8qSI/FBEfiAiNxTbR1ZuETlKRJ4WkT2FzH9ebD9NRHYVsn1HRJYV\n25cX318ufl81zPI3RUTGReR5EXmo+D7S8gKIyH4ReUlEXhCR3cW2kb23AUTkOBG5V0R+JCL7RGTd\noGVe0ooEuAu4MNh2I7DDGHMGsKP4DnARcEbxuhr4+oDK2GtmgT8xxpwJnAtcJyJnMtpyHwI+ZYz5\nBLAGuFBEzgX+GviqMeajwM+ATcX+m4CfFdu/Wuy3GLkB2Od9H3V5HecbY9Z4+ROjfG8D3AI8bIz5\nGPAJ7DUfrMzGmCX9AlYBe73vPwZOLj6fDPy4+LwduDy232J+AQ8AFywVuYFfAJ4Dfh2b8TtRbF8H\nPFJ8fgRYV3yeKPaTYZe9ppynFA3Ip4CHABlleT259wMnBNtG9t4GjgX+I7xeg5Z5qY9IYpxojHmj\n+HwAOLH4/EvAT739Xiu2LVoKE8ZZwC5GXO7CzPMC8CbwGPAK8I4xZrbYxZfriMzF7+8CKwZb4tb8\nLbAZmCu+r2C05XUY4FEReVZEri62jfK9fRrwFnBnYcb8hogcw4BlVkWSwFiVPZLx0SLyIeA+4I+N\nMT/3fxtFuY0xh40xa7A99XOAjw25SH1DRH4XeNMY8+ywyzIEzjPGnI014VwnIr/t/ziC9/YEcDbw\ndWPMWcD/0DFjAYORWRXJfP5LRE4GKN7fLLa/Dpzq7XdKsW3RISKTWCXyLWPMPxWbR15uAGPMO8CT\nWNPOcSIyUfzky3VE5uL3Y4GDAy5qG34T+KyI7Ae+jTVv3cLoynsEY8zrxfubwP3YTsMo39uvAa8Z\nY3YV3+/FKpaByqyKZD4PAlcWn6/E+hDc9iuKqIdzgXe9oeOiQUQE+AdgnzHmb7yfRlZuEfmIiBxX\nfD4a6xPah1Uolxa7hTK7urgUeKLo1S0KjDE3GWNOMcasAj6HLf/nGVF5HSJyjIj8ovsMbAD2MsL3\ntjHmAPBTEfmVYtPvAD9k0DIP21k0ZEfVPwJvAB9gNfsmrG14B/AT4HHgw8W+AtyKta2/BKwddvkb\nynwedpj7IvBC8frMKMsNfBx4vpB5L/BnxfbTgaeBl4HvAsuL7UcV318ufj992DK0kH098NBSkLeQ\nb0/x+gHwpWL7yN7bhRxrgN3F/f094PhBy6xTpCiKoiitUNOWoiiK0gpVJIqiKEorVJEoiqIorVBF\noiiKorRCFYmiKIrSClUkitIQETlczDLrXjdW/yv72KvEm5VaURYyE9W7KIpSwv8aO+2KoixpdESi\nKD2mWBPj5mJdjKdF5KPF9lUi8kSxDsQOEVlZbD9RRO4Xu17KHhH5jeJQ4yJyu9g1VB4tsvIRkT8S\nu57MiyLy7SGJqShHUEWiKM05OjBtXeb99q4xZjWwDTsTL8DXgLuNMR8HvgVsLbZvBf7V2PVSzsZm\nZYNdM+JWY8yvAu8AlxTbbwTOKo4z1S/hFCUXzWxXlIaIyHvGmA9Ftu/HLqT178UEmQeMMStE5G3s\n2g8fFNvfMMacICJvAacYYw55x1gFPGbswkSIyBeBSWPMX4rIw8B72OkwvmeMea/PoipKEh2RKEp/\nMCWf63DI+3yYjk/zYux8SWcDz3gz+irKUFBFoij94TLvfab4vBM7Gy/A54Gnis87gGvgyAJcx5Yd\nVETGgFONMU8CX8RO+T5vVKQog0R7MorSnKOLVRcdDxtjXAjw8SLyInZUcXmx7XrsSnZ/il3V7qpi\n+w3AbSKyCTvyuAY7K3WMceCbhbIRYKuxa6woytBQH4mi9JjCR7LWGPP2sMuiKINATVuKoihKK3RE\noiiKorRCRySKoihKK1SRKIqiKK1QRaIoiqK0QhWJoiiK0gpVJIqiKEor/h+mPrdO7d3H3QAAAABJ\nRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\nQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "f86dWOyZKmN9", - "colab_type": "text" - }, - "source": [ - "Great results! From these graphs, we can see several exciting things:\n", - "\n", - "* Our network has reached its peak accuracy much more quickly (within 200 epochs instead of 600)\n", - "* The overall loss and MAE are much better than our previous network\n", - "* Metrics are better for validation than training, which means the network is not overfitting\n", - "\n", - "The reason the metrics for validation are better than those for training is that validation metrics are calculated at the end of each epoch, while training metrics are calculated throughout the epoch, so validation happens on a model that has been trained slightly longer.\n", - "\n", - "This all means our network seems to be performing well! To confirm, let's check its predictions against the test dataset we set aside earlier:\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "lZfztKKyhLxX", - "colab_type": "code", - "outputId": "b792a12e-713d-4b07-9f8e-de0d059d5cdb", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 298 - } - }, - "source": [ - "# Calculate and print the loss on our test dataset\n", - "loss = model_2.evaluate(x_test, y_test)\n", - "\n", - "# Make predictions based on our test dataset\n", - "predictions = model_2.predict(x_test)\n", - "\n", - "# Graph the predictions against the actual values\n", - "plt.clf()\n", - "plt.title('Comparison of predictions and actual values')\n", - "plt.plot(x_test, y_test, 'b.', label='Actual')\n", - "plt.plot(x_test, predictions, 'r.', label='Predicted')\n", - "plt.legend()\n", - "plt.show()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "200/200 [==============================] - 0s 146us/sample - loss: 0.0124 - mae: 0.0907\n" - ], - "name": "stdout" - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\nVxRFKUP+P5OxXtvr2werAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "3h7IcvuOOS4J", - "colab_type": "text" - }, - "source": [ - "Much better! The evaluation metrics we printed show that the model has a low loss and MAE on the test data, and the predictions line up visually with our data fairly well.\n", - "\n", - "The model isn't perfect; its predictions don't form a smooth sine curve. For instance, the line is almost straight when `x` is between 4.2 and 5.2. If we wanted to go further, we could try further increasing the capacity of the model, perhaps using some techniques to defend from overfitting.\n", - "\n", - "However, an important part of machine learning is knowing when to quit, and this model is good enough for our use case - which is to make some LEDs blink in a pleasing pattern.\n", - "\n", - "## Convert to TensorFlow Lite\n", - "We now have an acceptably accurate model in-memory. However, to use this with TensorFlow Lite for Microcontrollers, we'll need to convert it into the correct format and download it as a file. To do this, we'll use the [TensorFlow Lite Converter](https://www.tensorflow.org/lite/convert). The converter outputs a file in a special, space-efficient format for use on memory-constrained devices.\n", - "\n", - "Since this model is going to be deployed on a microcontroller, we want it to be as tiny as possible! One technique for reducing the size of models is called [quantization](https://www.tensorflow.org/lite/performance/post_training_quantization). It reduces the precision of the model's weights, which saves memory, often without much impact on accuracy. Quantized models also run faster, since the calculations required are simpler.\n", - "\n", - "The TensorFlow Lite Converter can apply quantization while it converts the model. In the following cell, we'll convert the model twice: once with quantization, once without:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "1muAoUm8lSXL", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# Convert the model to the TensorFlow Lite format without quantization\n", - "converter = tf.lite.TFLiteConverter.from_keras_model(model_2)\n", - "tflite_model = converter.convert()\n", - "\n", - "# Save the model to disk\n", - "open(\"sine_model.tflite\", \"wb\").write(tflite_model)\n", - "\n", - "# Convert the model to the TensorFlow Lite format with quantization\n", - "converter = tf.lite.TFLiteConverter.from_keras_model(model_2)\n", - "converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]\n", - "tflite_model = converter.convert()\n", - "\n", - "# Save the model to disk\n", - "open(\"sine_model_quantized.tflite\", \"wb\").write(tflite_model)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "L_vE-ZDkHVxe", - "colab_type": "text" - }, - "source": [ - "## Test the converted models\n", - "To prove these models are still accurate after conversion and quantization, we'll use both of them to make predictions and compare these against our test results:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "-J7IKlXiYVPz", - "colab_type": "code", - "outputId": "0c10f56c-dbd7-4cc3-e332-30ad673769e5", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 281 - } - }, - "source": [ - "# Instantiate an interpreter for each model\n", - "sine_model = tf.lite.Interpreter('sine_model.tflite')\n", - "sine_model_quantized = tf.lite.Interpreter('sine_model_quantized.tflite')\n", - "\n", - "# Allocate memory for each model\n", - "sine_model.allocate_tensors()\n", - "sine_model_quantized.allocate_tensors()\n", - "\n", - "# Get the input and output tensors so we can feed in values and get the results\n", - "sine_model_input = sine_model.tensor(sine_model.get_input_details()[0][\"index\"])\n", - "sine_model_output = sine_model.tensor(sine_model.get_output_details()[0][\"index\"])\n", - "sine_model_quantized_input = sine_model_quantized.tensor(sine_model_quantized.get_input_details()[0][\"index\"])\n", - "sine_model_quantized_output = sine_model_quantized.tensor(sine_model_quantized.get_output_details()[0][\"index\"])\n", - "\n", - "# Create arrays to store the results\n", - "sine_model_predictions = np.empty(x_test.size)\n", - "sine_model_quantized_predictions = np.empty(x_test.size)\n", - "\n", - "# Run each model's interpreter for each value and store the results in arrays\n", - "for i in range(x_test.size):\n", - " sine_model_input().fill(x_test[i])\n", - " sine_model.invoke()\n", - " sine_model_predictions[i] = sine_model_output()[0]\n", - "\n", - " sine_model_quantized_input().fill(x_test[i])\n", - " sine_model_quantized.invoke()\n", - " sine_model_quantized_predictions[i] = sine_model_quantized_output()[0]\n", - "\n", - "# See how they line up with the data\n", - "plt.clf()\n", - "plt.title('Comparison of various models against actual values')\n", - "plt.plot(x_test, y_test, 'bo', label='Actual')\n", - "plt.plot(x_test, predictions, 'ro', label='Original predictions')\n", - "plt.plot(x_test, sine_model_predictions, 'bx', label='Lite predictions')\n", - "plt.plot(x_test, sine_model_quantized_predictions, 'gx', label='Lite quantized predictions')\n", - "plt.legend()\n", - "plt.show()\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nETsI2utZSjVkezyWt5iKKG8Sml7fxNNS1kFezfT0dAYNGlRsWceOHXF1deX48eMA7N+/n3Xr1rFj\nx45i5f7+979z2223cfjwYd566y1rjJ+SHDt2jOeff5709HScnZ2tMYDGjx/Pnj17SE1NpX///vzz\nn/+ssL1Go5EffviBb775hlmzZlkDxtm28dtvv+XYsWP88MMPHDx4kH379rFz50727dvHqlWrrKP4\nPXv2lKo/Ly+PiRMn8v7775OamsqWLVto164db775JhMnTuTgwYNMnDix2DYvvPAC06dP59ChQ0yZ\nMoUXX3zRuu7cuXMkJyfz73//2/qmsGLFCkJCQjh48CCpqan4+vpWeNxNiUbl7dPSqJQsCIzGl3Si\n8r4B4UKEzGTsHa4kyIXE5v4FgJTuF+h2KqiYt4/OBJk9LtHrl84U4sAt5+549CvuwlkpXF2JE84k\n+6cRvGMEyf5p9G8XBDoHnvIMJCI9BYA4jwDevrsXN/wGwq4q7sMGJ6eyPYiajIdQXcV0roAHHnjA\nbkjn5ORkXnrpJQA8PT3x9va2u727u7tVwA0aNAij0QhAWloar732GtnZ2Vy7do2QkJAK2/Loo4+i\n0+no3bs3d955pzXtpG0bv/32W7799lv8/PwALVnNsWPHyMnJ4eGHH7aGqQ4LCytV/9GjR7njjjsY\nPHgwoD0IK+L7779n/fr1AEybNo25c4v66bhx49DpdAwYMIBff/0VgMGDBzNz5kzy8/MZN26cEv6K\n2qMyssD/nI59j3zDmKQBRIUfZunxADK8kwnbHETEuaXwdhQX3kskPt6+770l06ubGyR+VfU2xk2d\nTVTeYmLWuhBh3EFchg+REw+BvoDI/g5w3QeAyDFpINPwW+3PATv1VJRZTAjN1LBoUdlzCJrM1I+y\nsunU4AAGDBhQSod/9epVsrKyuPvuu9m/fz/t2rWrdv0ArVu3tv7W6/Xk5uYCWpC4DRs24OPjw+ef\nf8727dsrrEuUSChh+W/bRiklr776Ks8880yxsu+99151D6Ha2B67NHfU4cOHs3PnTr755htmzJhB\nREQEjz/+eL23ra5Qap96pKQNsKy8G0IUGU+3XVlKzFoXNgUfpsNvPcnwScH90DA27k6yPj0qo26p\n7qBzS1sTMa3mESGzQQgiZDax//ak36GBICByWjqR09JAFBC72p19xjn8xRBIh4cmQaCmlnJzg6++\n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\nlFJx6P8D4Obclx42P3sAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jWxvLGexKv0D", - "colab_type": "text" - }, - "source": [ - "We can see from the graph that the predictions for the original model, the converted model, and the quantized model are all close enough to be indistinguishable. This means that our quantized model is ready to use!\n", - "\n", - "We can print the difference in file size:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "6r42iBnULP4X", - "colab_type": "code", - "outputId": "afe526c9-498d-498e-d768-1edfbf21e870", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 68 - } - }, - "source": [ - "import os\n", - "basic_model_size = os.path.getsize(\"sine_model.tflite\")\n", - "print(\"Basic model is %d bytes\" % basic_model_size)\n", - "quantized_model_size = os.path.getsize(\"sine_model_quantized.tflite\")\n", - "print(\"Quantized model is %d bytes\" % quantized_model_size)\n", - "difference = basic_model_size - quantized_model_size\n", - "print(\"Difference is %d bytes\" % difference)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Basic model is 2656 bytes\n", - "Quantized model is 2640 bytes\n", - "Difference is 16 bytes\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "C2vpZE9ZshVH", - "colab_type": "text" - }, - "source": [ - "Our quantized model is only 16 bytes smaller than the original version, which only a tiny reduction in size! At around 2.6 kilobytes, this model is already so small that the weights make up only a small fraction of the overall size, meaning quantization has little effect.\n", - "\n", - "More complex models have many more weights, meaning the space saving from quantization will be much higher, approaching 4x for most sophisticated models.\n", - "\n", - "Regardless, our quantized model will take less time to execute than the original version, which is important on a tiny microcontroller!\n", - "\n", - "## Write to a C file\n", - "The final step in preparing our model for use with TensorFlow Lite for Microcontrollers is to convert it into a C source file. You can see an example of this format in [`hello_world/sine_model_data.cc`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/sine_model_data.cc).\n", - "\n", - "To do so, we can use a command line utility named [`xxd`](https://linux.die.net/man/1/xxd). The following cell runs `xxd` on our quantized model and prints the output:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "l4-WhtGpvb-E", - "colab_type": "code", - "outputId": "f975721f-bdd1-440a-93af-55f13c4c8690", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 3808 - } - }, - "source": [ - "# Install xxd if it is not available\n", - "!apt-get -qq install xxd\n", - "# Save the file as a C source file\n", - "!xxd -i sine_model_quantized.tflite > sine_model_quantized.cc\n", - "# Print the source file\n", - "!cat sine_model_quantized.cc" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "unsigned char sine_model_quantized_tflite[] = {\n", - " 0x18, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x0e, 0x00,\n", - " 0x18, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x14, 0x00,\n", - " 0x0e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x00, 0x00,\n", - " 0xb8, 0x05, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n", - " 0x0b, 0x00, 0x00, 0x00, 0x90, 0x05, 0x00, 0x00, 0x7c, 0x05, 0x00, 0x00,\n", - " 0x24, 0x05, 0x00, 0x00, 0xd4, 0x04, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00,\n", - " 0x74, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,\n", - " 0x14, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n", - " 0x54, 0xf6, 0xff, 0xff, 0x58, 0xf6, 0xff, 0xff, 0x5c, 0xf6, 0xff, 0xff,\n", - " 0x60, 0xf6, 0xff, 0xff, 0xc2, 0xfa, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00,\n", - " 0x40, 0x00, 0x00, 0x00, 0x7c, 0x19, 0xa7, 0x3e, 0x99, 0x81, 0xb9, 0x3e,\n", - " 0x56, 0x8b, 0x9f, 0x3e, 0x88, 0xd8, 0x12, 0xbf, 0x74, 0x10, 0x56, 0x3e,\n", - " 0xfe, 0xc6, 0xdf, 0xbe, 0xf2, 0x10, 0x5a, 0xbe, 0xf0, 0xe2, 0x0a, 0xbe,\n", - " 0x10, 0x5a, 0x98, 0xbe, 0xb9, 0x36, 0xce, 0x3d, 0x8f, 0x7f, 0x87, 0x3e,\n", - " 0x2c, 0xb1, 0xfd, 0xbd, 0xe6, 0xa6, 0x8a, 0xbe, 0xa5, 0x3e, 0xda, 0x3e,\n", - " 0x50, 0x34, 0xed, 0xbd, 0x90, 0x91, 0x69, 0xbe, 0x0e, 0xfb, 0xff, 0xff,\n", - " 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x67, 0x41, 0x48, 0xbf,\n", - " 0x24, 0xcd, 0xa0, 0xbe, 0xb7, 0x92, 0x0c, 0xbf, 0x00, 0x00, 0x00, 0x00,\n", - " 0x98, 0xfe, 0x3c, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", - " 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x17, 0x9a, 0xbe,\n", - " 0x41, 0xcb, 0xb6, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", - " 0x13, 0xd6, 0x1e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", - " 0x5a, 0xfb, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,\n", - " 0x4b, 0x98, 0xdd, 0xbd, 0x40, 0x6b, 0xcb, 0xbe, 0x36, 0x0c, 0xd4, 0x3c,\n", - " 0xbd, 0x44, 0xb5, 0x3e, 0x95, 0x70, 0xe3, 0x3e, 0xe7, 0xac, 0x86, 0x3e,\n", - " 0x00, 0xc4, 0x4e, 0x3d, 0x7e, 0xa6, 0x1d, 0x3e, 0xbd, 0x87, 0xbb, 0x3e,\n", - " 0xb4, 0xb8, 0x09, 0xbf, 0xa1, 0x1f, 0xf8, 0xbe, 0x8d, 0x90, 0xdd, 0x3e,\n", - " 0xde, 0xfa, 0x6f, 0xbe, 0xb2, 0x75, 0xe4, 0x3d, 0x6e, 0xfe, 0x36, 0x3e,\n", - " 0x20, 0x18, 0xc2, 0xbe, 0x39, 0xc7, 0xfb, 0xbe, 0xfe, 0xa4, 0x30, 0xbe,\n", - " 0xf7, 0x91, 0xde, 0xbe, 0xde, 0xab, 0x24, 0x3e, 0xfb, 0xbb, 0xce, 0x3e,\n", - " 0xeb, 0x23, 0x80, 0xbe, 0x7b, 0x58, 0x73, 0xbe, 0x9a, 0x2e, 0x03, 0x3e,\n", - " 0x10, 0x42, 0xa9, 0xbc, 0x10, 0x12, 0x64, 0xbd, 0xe3, 0x8d, 0x0c, 0x3d,\n", - " 0x9e, 0x48, 0x97, 0xbe, 0x34, 0x51, 0xd4, 0xbe, 0x02, 0x3b, 0x0d, 0x3e,\n", - " 0x62, 0x67, 0x89, 0xbe, 0x74, 0xdf, 0xa2, 0x3d, 0xf3, 0x25, 0xb3, 0xbe,\n", - " 0xef, 0x34, 0x7b, 0x3d, 0x61, 0x70, 0xe3, 0x3d, 0xba, 0x76, 0xc0, 0xbe,\n", - " 0x7d, 0xe9, 0xa7, 0x3e, 0xc3, 0xab, 0xd0, 0xbe, 0xcf, 0x7c, 0xdb, 0xbe,\n", - " 0x70, 0x27, 0x9a, 0xbe, 0x98, 0xf5, 0x3c, 0xbd, 0xff, 0x4b, 0x4b, 0x3e,\n", - " 0x7e, 0xa0, 0xf8, 0xbd, 0xd4, 0x6e, 0x86, 0x3d, 0x00, 0x4a, 0x07, 0x3a,\n", - " 0x4c, 0x24, 0x61, 0xbe, 0x54, 0x68, 0xf7, 0xbd, 0x02, 0x3f, 0x77, 0xbe,\n", - " 0x23, 0x79, 0xb3, 0x3e, 0x1c, 0x83, 0xad, 0xbd, 0xc8, 0x92, 0x8d, 0x3e,\n", - " 0xa8, 0xf3, 0x15, 0xbd, 0xe6, 0x4d, 0x6c, 0x3d, 0xac, 0xe7, 0x98, 0xbe,\n", - " 0x81, 0xec, 0xbd, 0x3e, 0xe2, 0x55, 0x73, 0x3e, 0xc1, 0x77, 0xc7, 0x3e,\n", - " 0x6e, 0x1b, 0x5e, 0x3d, 0x27, 0x78, 0x02, 0x3f, 0xd4, 0x21, 0x90, 0x3d,\n", - " 0x52, 0xdc, 0x1f, 0x3e, 0xbf, 0xda, 0x88, 0x3e, 0x80, 0x79, 0xe3, 0xbd,\n", - " 0x40, 0x6f, 0x10, 0xbe, 0x20, 0x43, 0x2e, 0xbd, 0xf0, 0x76, 0xc5, 0xbd,\n", - " 0xcc, 0xa0, 0x04, 0xbe, 0xf0, 0x69, 0xd7, 0xbe, 0xb1, 0xfe, 0x64, 0xbe,\n", - " 0x20, 0x41, 0x84, 0xbe, 0xb2, 0xc3, 0x26, 0xbe, 0xd8, 0xf4, 0x09, 0xbe,\n", - " 0x64, 0x44, 0xd1, 0x3d, 0xd5, 0xe1, 0xc8, 0xbe, 0x35, 0xbc, 0x3f, 0xbe,\n", - " 0xc0, 0x94, 0x82, 0x3d, 0xdc, 0x2b, 0xb1, 0xbd, 0x02, 0xdb, 0xbf, 0xbe,\n", - " 0xa5, 0x7f, 0x8a, 0x3e, 0x21, 0xb4, 0xa2, 0x3e, 0xcd, 0x86, 0x56, 0xbf,\n", - " 0x9c, 0x3b, 0x76, 0xbc, 0x85, 0x6d, 0x60, 0xbf, 0x86, 0x00, 0x3c, 0xbe,\n", - " 0xc1, 0x23, 0x7e, 0x3e, 0x96, 0xcd, 0x3f, 0x3e, 0x86, 0x91, 0x2d, 0x3e,\n", - " 0x55, 0xef, 0x87, 0x3e, 0x7e, 0x97, 0x03, 0xbe, 0x2a, 0xcd, 0x01, 0x3e,\n", - " 0x32, 0xc9, 0x8e, 0xbe, 0x72, 0x77, 0x3b, 0xbe, 0xe0, 0xa1, 0xbc, 0xbe,\n", - " 0x8d, 0xb7, 0xa7, 0x3e, 0x1c, 0x05, 0x95, 0xbe, 0xf7, 0x1f, 0xbb, 0x3e,\n", - " 0xc9, 0x3e, 0xd6, 0x3e, 0x80, 0x42, 0xe9, 0xbd, 0x27, 0x0c, 0xd2, 0xbe,\n", - " 0x5c, 0x32, 0x34, 0xbe, 0x14, 0xcb, 0xca, 0xbd, 0xdd, 0x3a, 0x67, 0xbe,\n", - " 0x1c, 0xbb, 0x8d, 0xbe, 0x91, 0xac, 0x5c, 0xbe, 0x52, 0x40, 0x6f, 0xbe,\n", - " 0xd7, 0x71, 0x94, 0x3e, 0x18, 0x71, 0x09, 0xbe, 0x9b, 0x29, 0xd9, 0xbe,\n", - " 0x7d, 0x66, 0xd2, 0xbe, 0x98, 0xd6, 0xb2, 0xbe, 0x00, 0xc9, 0x84, 0x3a,\n", - " 0xbc, 0xda, 0xc2, 0xbd, 0x1d, 0xc2, 0x1b, 0xbf, 0xd4, 0xdd, 0x92, 0x3e,\n", - " 0x07, 0x87, 0x6c, 0xbe, 0x40, 0xc2, 0x3b, 0xbe, 0xbd, 0xe2, 0x9c, 0x3e,\n", - " 0x0a, 0xb5, 0xa0, 0xbe, 0xe2, 0xd5, 0x9c, 0xbe, 0x3e, 0xbb, 0x7c, 0x3e,\n", - " 0x17, 0xb4, 0xcf, 0x3e, 0xd5, 0x8e, 0xc8, 0xbe, 0x7c, 0xf9, 0x5c, 0x3e,\n", - " 0x80, 0xfc, 0x0d, 0x3d, 0xc5, 0xd5, 0x8b, 0x3e, 0xf5, 0x17, 0xa2, 0x3e,\n", - " 0xc7, 0x60, 0x89, 0xbe, 0xec, 0x95, 0x87, 0x3d, 0x7a, 0xc2, 0x5d, 0xbf,\n", - " 0x77, 0x94, 0x98, 0x3e, 0x77, 0x39, 0x07, 0xbc, 0x42, 0x29, 0x00, 0x3e,\n", - " 0xaf, 0xd0, 0xa9, 0x3e, 0x31, 0x23, 0xc4, 0xbe, 0x95, 0x36, 0x5b, 0xbe,\n", - " 0xc7, 0xdc, 0x83, 0xbe, 0x1e, 0x6b, 0x47, 0x3e, 0x5b, 0x24, 0x99, 0x3e,\n", - " 0x99, 0x27, 0x54, 0x3e, 0xc8, 0x20, 0xdd, 0xbd, 0x5a, 0x86, 0x2f, 0x3e,\n", - " 0x80, 0xf0, 0x69, 0xbe, 0x44, 0xfc, 0x84, 0xbd, 0x82, 0xa0, 0x2a, 0xbe,\n", - " 0x87, 0xe6, 0x2a, 0x3e, 0xd8, 0x34, 0xae, 0x3d, 0x50, 0xbd, 0xb5, 0x3e,\n", - " 0xc4, 0x8c, 0x88, 0xbe, 0xe3, 0xbc, 0xa5, 0x3e, 0xa9, 0xda, 0x9e, 0x3e,\n", - " 0x3e, 0xb8, 0x23, 0xbe, 0x80, 0x90, 0x15, 0x3d, 0x97, 0x3f, 0xc3, 0x3e,\n", - " 0xca, 0x5c, 0x9d, 0x3e, 0x21, 0xe8, 0xe1, 0x3e, 0xc0, 0x49, 0x01, 0xbc,\n", - " 0x00, 0x0b, 0x88, 0xbd, 0x3f, 0xf7, 0xca, 0x3c, 0xfb, 0x5a, 0xb1, 0x3e,\n", - " 0x60, 0xd2, 0x0d, 0x3c, 0xce, 0x23, 0x78, 0xbf, 0x8f, 0x4f, 0xb9, 0xbe,\n", - " 0x69, 0x6a, 0x34, 0xbf, 0x4b, 0x5e, 0xa9, 0x3e, 0x64, 0x8c, 0xd9, 0x3e,\n", - " 0x52, 0x77, 0x36, 0x3e, 0xeb, 0xaf, 0xbe, 0x3e, 0x40, 0xbe, 0x36, 0x3c,\n", - " 0x08, 0x65, 0x3b, 0xbd, 0x55, 0xe0, 0x66, 0xbd, 0xd2, 0xe8, 0x9b, 0xbe,\n", - " 0x86, 0xe3, 0x09, 0xbe, 0x93, 0x3d, 0xdd, 0x3e, 0x0f, 0x66, 0x18, 0x3f,\n", - " 0x18, 0x05, 0x33, 0xbd, 0xde, 0x15, 0xd7, 0xbe, 0xaa, 0xcf, 0x49, 0xbe,\n", - " 0xa2, 0xa5, 0x64, 0x3e, 0xe6, 0x9c, 0x42, 0xbe, 0x54, 0x42, 0xcc, 0x3d,\n", - " 0xa0, 0xbd, 0x9d, 0xbe, 0xc2, 0x69, 0x48, 0x3e, 0x5b, 0x8b, 0xa2, 0xbe,\n", - " 0xc0, 0x13, 0x87, 0x3d, 0x36, 0xfd, 0x69, 0x3e, 0x05, 0x86, 0x40, 0xbe,\n", - " 0x1e, 0x7a, 0xce, 0xbe, 0x46, 0x13, 0xa7, 0xbe, 0x68, 0x52, 0x86, 0xbe,\n", - " 0x04, 0x9e, 0x86, 0xbd, 0x8c, 0x54, 0xc1, 0x3d, 0xe0, 0x3b, 0xad, 0x3c,\n", - " 0x42, 0x67, 0x85, 0xbd, 0xea, 0x97, 0x42, 0x3e, 0x6e, 0x13, 0x3b, 0xbf,\n", - " 0x56, 0x5b, 0x16, 0x3e, 0xaa, 0xab, 0xdf, 0x3e, 0xc8, 0x41, 0x36, 0x3d,\n", - " 0x24, 0x2d, 0x47, 0xbe, 0x77, 0xa5, 0xae, 0x3e, 0xc0, 0xc2, 0x5b, 0x3c,\n", - " 0xac, 0xac, 0x4e, 0x3e, 0x99, 0xec, 0x13, 0xbe, 0xf2, 0xab, 0x73, 0x3e,\n", - " 0xaa, 0xa1, 0x48, 0xbe, 0xe8, 0xd3, 0x01, 0xbe, 0x60, 0xb7, 0xc7, 0xbd,\n", - " 0x64, 0x72, 0xd3, 0x3d, 0x83, 0xd3, 0x99, 0x3e, 0x0c, 0x76, 0x34, 0xbe,\n", - " 0x42, 0xda, 0x0d, 0x3e, 0xfb, 0x47, 0x9a, 0x3e, 0x8b, 0xdc, 0x92, 0xbe,\n", - " 0x56, 0x7f, 0x6b, 0x3e, 0x04, 0xd4, 0x88, 0xbd, 0x11, 0x9e, 0x80, 0x3e,\n", - " 0x3c, 0x89, 0xff, 0x3d, 0xb3, 0x3e, 0x88, 0x3e, 0xf7, 0xf0, 0x88, 0x3e,\n", - " 0x28, 0xfb, 0xc9, 0xbe, 0x53, 0x3e, 0xcf, 0x3e, 0xac, 0x75, 0xdc, 0xbe,\n", - " 0xdd, 0xca, 0xd7, 0x3e, 0x01, 0x58, 0xa7, 0x3e, 0x29, 0xb8, 0x13, 0xbf,\n", - " 0x76, 0x81, 0x12, 0xbc, 0x28, 0x8b, 0x16, 0xbf, 0x0e, 0xec, 0x0e, 0x3e,\n", - " 0x40, 0x0a, 0xdb, 0xbd, 0x98, 0xec, 0xbf, 0xbd, 0x32, 0x55, 0x0c, 0xbe,\n", - " 0xfb, 0xf9, 0xc9, 0x3e, 0x83, 0x4a, 0x6d, 0xbe, 0x76, 0x59, 0xe2, 0xbe,\n", - " 0x54, 0x7d, 0x9f, 0xbb, 0x9d, 0xe8, 0x95, 0x3e, 0x5c, 0xd3, 0xd0, 0x3d,\n", - " 0x19, 0x8a, 0xb0, 0x3e, 0xde, 0x6f, 0x2e, 0xbe, 0xd0, 0x16, 0x83, 0x3d,\n", - " 0x9c, 0x7d, 0x11, 0xbf, 0x2b, 0xcc, 0x25, 0x3c, 0x2a, 0xa5, 0x27, 0xbe,\n", - " 0x22, 0x14, 0xc7, 0xbe, 0x5e, 0x7a, 0xac, 0x3e, 0x4e, 0x41, 0x94, 0xbe,\n", - " 0x5a, 0x68, 0x7b, 0x3e, 0x86, 0xfd, 0x4e, 0x3e, 0xa2, 0x56, 0x6a, 0xbe,\n", - " 0xca, 0xfe, 0x81, 0xbe, 0x43, 0xc3, 0xb1, 0xbd, 0xc5, 0xb8, 0xa7, 0x3e,\n", - " 0x55, 0x23, 0xcd, 0x3e, 0xaf, 0x2e, 0x76, 0x3e, 0x69, 0xa8, 0x90, 0xbe,\n", - " 0x0d, 0xba, 0xb9, 0x3e, 0x66, 0xff, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00,\n", - " 0x40, 0x00, 0x00, 0x00, 0x53, 0xd6, 0xe2, 0x3d, 0x66, 0xb6, 0xcc, 0x3e,\n", - " 0x03, 0xe7, 0xf6, 0x3e, 0xe0, 0x28, 0x10, 0xbf, 0x00, 0x00, 0x00, 0x00,\n", - " 0x3e, 0x3d, 0xb0, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x62, 0xf0, 0x77, 0x3e,\n", - " 0xa6, 0x9d, 0xa4, 0x3e, 0x3a, 0x4b, 0xf3, 0xbe, 0x71, 0x9e, 0xa7, 0x3e,\n", - " 0x00, 0x00, 0x00, 0x00, 0x34, 0x39, 0xa2, 0x3e, 0x00, 0x00, 0x00, 0x00,\n", - " 0xcc, 0x9c, 0x4a, 0x3e, 0xab, 0x40, 0xa3, 0x3e, 0xb2, 0xff, 0xff, 0xff,\n", - " 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xb3, 0x71, 0x67, 0x3f,\n", - " 0x9a, 0x7a, 0x95, 0xbf, 0xe1, 0x48, 0xe8, 0xbe, 0x8a, 0x72, 0x96, 0x3e,\n", - " 0x00, 0xd2, 0xd3, 0xbb, 0x1a, 0xc5, 0xd7, 0x3f, 0xac, 0x7e, 0xc8, 0xbe,\n", - " 0x90, 0xa7, 0x95, 0xbe, 0x3b, 0xd7, 0xdc, 0xbe, 0x41, 0xa8, 0x16, 0x3f,\n", - " 0x50, 0x5b, 0xcb, 0x3f, 0x52, 0xb9, 0xed, 0xbe, 0x2e, 0xa7, 0xc6, 0xbe,\n", - " 0xaf, 0x0f, 0x14, 0xbf, 0xb3, 0xda, 0x59, 0x3f, 0x02, 0xec, 0xd7, 0xbe,\n", - " 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,\n", - " 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x66, 0x11, 0x1f, 0xbf,\n", - " 0xb8, 0xfb, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x54, 0x4f, 0x43, 0x4f,\n", - " 0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x2e, 0x00,\n", - " 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x14, 0x00,\n", - " 0x04, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00,\n", - " 0xf0, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00,\n", - " 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,\n", - " 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xce, 0xff, 0xff, 0xff,\n", - " 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,\n", - " 0x04, 0x00, 0x00, 0x00, 0x1c, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,\n", - " 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,\n", - " 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00,\n", - " 0x14, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x10, 0x00,\n", - " 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x00, 0x00,\n", - " 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xba, 0xff, 0xff, 0xff,\n", - " 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,\n", - " 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,\n", - " 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x00, 0x00,\n", - " 0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x00, 0x00,\n", - " 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,\n", - " 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00,\n", - " 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,\n", - " 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", - " 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", - " 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", - " 0x0a, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00,\n", - " 0x40, 0x02, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00,\n", - " 0x48, 0x01, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00,\n", - " 0x50, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x26, 0xfd, 0xff, 0xff,\n", - " 0x3c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,\n", - " 0x04, 0x00, 0x00, 0x00, 0x18, 0xfd, 0xff, 0xff, 0x20, 0x00, 0x00, 0x00,\n", - " 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31,\n", - " 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x34, 0x2f, 0x4d, 0x61, 0x74,\n", - " 0x4d, 0x75, 0x6c, 0x5f, 0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00,\n", - " 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6e, 0xfd, 0xff, 0xff,\n", - " 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,\n", - " 0x04, 0x00, 0x00, 0x00, 0x60, 0xfd, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00,\n", - " 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31,\n", - " 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x34, 0x2f, 0x4d, 0x61, 0x74,\n", - " 0x4d, 0x75, 0x6c, 0x2f, 0x52, 0x65, 0x61, 0x64, 0x56, 0x61, 0x72, 0x69,\n", - " 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73,\n", - " 0x70, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n", - " 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xce, 0xfd, 0xff, 0xff,\n", - " 0x34, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,\n", - " 0x04, 0x00, 0x00, 0x00, 0xc0, 0xfd, 0xff, 0xff, 0x19, 0x00, 0x00, 0x00,\n", - " 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31,\n", - " 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x33, 0x2f, 0x52, 0x65, 0x6c,\n", - " 0x75, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", - " 0x10, 0x00, 0x00, 0x00, 0x12, 0xfe, 0xff, 0xff, 0x3c, 0x00, 0x00, 0x00,\n", - " 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n", - " 0x04, 0xfe, 0xff, 0xff, 0x20, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,\n", - " 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e,\n", - " 0x73, 0x65, 0x5f, 0x33, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x5f,\n", - " 0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", - " 0x10, 0x00, 0x00, 0x00, 0x5a, 0xfe, 0xff, 0xff, 0x50, 0x00, 0x00, 0x00,\n", - " 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n", - " 0x4c, 0xfe, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,\n", - " 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e,\n", - " 0x73, 0x65, 0x5f, 0x33, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f,\n", - " 0x52, 0x65, 0x61, 0x64, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,\n", - " 0x4f, 0x70, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65,\n", - " 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n", - " 0x10, 0x00, 0x00, 0x00, 0xba, 0xfe, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00,\n", - " 0x0a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n", - " 0xac, 0xfe, 0xff, 0xff, 0x19, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,\n", - " 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e,\n", - " 0x73, 0x65, 0x5f, 0x32, 0x2f, 0x52, 0x65, 0x6c, 0x75, 0x00, 0x00, 0x00,\n", - " 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n", - " 0xfe, 0xfe, 0xff, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,\n", - " 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xf0, 0xfe, 0xff, 0xff,\n", - " 0x20, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,\n", - " 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32,\n", - " 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x5f, 0x62, 0x69, 0x61, 0x73,\n", - " 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n", - " 0x46, 0xff, 0xff, 0xff, 0x50, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,\n", - " 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x38, 0xff, 0xff, 0xff,\n", - " 0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,\n", - " 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32,\n", - " 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f, 0x52, 0x65, 0x61, 0x64,\n", - " 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x2f, 0x74,\n", - " 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00,\n", - " 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", - " 0xa6, 0xff, 0xff, 0xff, 0x48, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,\n", - " 0x2c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00,\n", - " 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n", - " 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x43,\n", - " 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,\n", - " 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, 0x5f, 0x69, 0x6e, 0x70, 0x75,\n", - " 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", - " 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x04, 0x00,\n", - " 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x00, 0x00,\n", - " 0x28, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n", - " 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,\n", - " 0x08, 0x00, 0x00, 0x00, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,\n", - " 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", - " 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n", - " 0x00, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00,\n", - " 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x03, 0x00, 0x00, 0x00\n", - "};\n", - "unsigned int sine_model_quantized_tflite_len = 2640;\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "1sqrhBLXwILt", - "colab_type": "text" - }, - "source": [ - "We can either copy and paste this output into our project's source code, or download the file using the collapsible menu on the left hand side of this Colab.\n", - "\n" - ] - } - ] -} \ No newline at end of file diff --git a/tensorflow/lite/micro/examples/hello_world/hello_world_test.cc b/tensorflow/lite/micro/examples/hello_world/hello_world_test.cc index 3d1155ef41e..46976f30ecb 100644 --- a/tensorflow/lite/micro/examples/hello_world/hello_world_test.cc +++ b/tensorflow/lite/micro/examples/hello_world/hello_world_test.cc @@ -14,7 +14,7 @@ limitations under the License. ==============================================================================*/ // #include "tensorflow/lite/c/common.h" -#include "tensorflow/lite/micro/examples/hello_world/sine_model_data.h" +#include "tensorflow/lite/micro/examples/hello_world/model.h" #include "tensorflow/lite/micro/kernels/all_ops_resolver.h" #include "tensorflow/lite/micro/micro_error_reporter.h" #include "tensorflow/lite/micro/micro_interpreter.h" @@ -31,7 +31,7 @@ TF_LITE_MICRO_TEST(LoadModelAndPerformInference) { // Map the model into a usable data structure. This doesn't involve any // copying or parsing, it's a very lightweight operation. - const tflite::Model* model = ::tflite::GetModel(g_sine_model_data); + const tflite::Model* model = ::tflite::GetModel(g_model); if (model->version() != TFLITE_SCHEMA_VERSION) { TF_LITE_REPORT_ERROR(error_reporter, "Model provided is schema version %d not equal " @@ -43,8 +43,13 @@ TF_LITE_MICRO_TEST(LoadModelAndPerformInference) { tflite::ops::micro::AllOpsResolver resolver; // Create an area of memory to use for input, output, and intermediate arrays. - // `arena_used_bytes` can be used to retrieve the optimal size. - const int tensor_arena_size = 2208 + 16 + 100 /* some reserved space */; + + // Minimum arena size, at the time of writing. After allocating tensors + // you can retrieve this value by invoking interpreter.arena_used_bytes(). + const int model_arena_size = 2352; + /* Extra headroom for model + alignment + future interpreter changes */ + const int extra_arena_size = 560 + 16 + 100; + const int tensor_arena_size = model_arena_size + extra_arena_size; uint8_t tensor_arena[tensor_arena_size]; // Build an interpreter to run the model with @@ -53,11 +58,10 @@ TF_LITE_MICRO_TEST(LoadModelAndPerformInference) { // Allocate memory from the tensor_arena for the model's tensors TF_LITE_MICRO_EXPECT_EQ(interpreter.AllocateTensors(), kTfLiteOk); - // At the time of writing, the hello world model uses 2208 bytes, we leave - // 100 bytes head room here to make the test less fragile and in the same - // time, alert for substantial increase. - TF_LITE_MICRO_EXPECT_LE(interpreter.arena_used_bytes(), 2208 + 100); + // Alert for substantial increase in arena size usage. + TF_LITE_MICRO_EXPECT_LE(interpreter.arena_used_bytes(), + model_arena_size + 100); // Obtain a pointer to the model's input tensor TfLiteTensor* input = interpreter.input(0); diff --git a/tensorflow/lite/micro/examples/hello_world/images/STM32F746.gif b/tensorflow/lite/micro/examples/hello_world/images/animation_on_STM32F746.gif similarity index 100% rename from tensorflow/lite/micro/examples/hello_world/images/STM32F746.gif rename to tensorflow/lite/micro/examples/hello_world/images/animation_on_STM32F746.gif diff --git a/tensorflow/lite/micro/examples/hello_world/images/arduino_mkrzero.gif b/tensorflow/lite/micro/examples/hello_world/images/animation_on_arduino_mkrzero.gif similarity index 100% rename from tensorflow/lite/micro/examples/hello_world/images/arduino_mkrzero.gif rename to tensorflow/lite/micro/examples/hello_world/images/animation_on_arduino_mkrzero.gif diff --git a/tensorflow/lite/micro/examples/hello_world/images/sparkfun_edge.gif b/tensorflow/lite/micro/examples/hello_world/images/animation_on_sparkfun_edge.gif similarity index 100% rename from tensorflow/lite/micro/examples/hello_world/images/sparkfun_edge.gif rename to tensorflow/lite/micro/examples/hello_world/images/animation_on_sparkfun_edge.gif diff --git a/tensorflow/lite/micro/examples/hello_world/images/model_architecture.png b/tensorflow/lite/micro/examples/hello_world/images/model_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..792d18fab4b25113b2de9a2819b683213220058d GIT binary patch literal 91424 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�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

klG}!`4F{@jg57VGDxfPB`j;#uHD{uic=6$ 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 MQ_@nblShaBAAP&m%>V!Z literal 0 HcmV?d00001 diff --git a/tensorflow/lite/micro/examples/hello_world/main_functions.cc b/tensorflow/lite/micro/examples/hello_world/main_functions.cc index 33180d4554c..404c8542432 100644 --- a/tensorflow/lite/micro/examples/hello_world/main_functions.cc +++ b/tensorflow/lite/micro/examples/hello_world/main_functions.cc @@ -1,4 +1,4 @@ -/* Copyright 2019 The TensorFlow Authors. All Rights Reserved. +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,8 +16,8 @@ limitations under the License. #include "tensorflow/lite/micro/examples/hello_world/main_functions.h" #include "tensorflow/lite/micro/examples/hello_world/constants.h" +#include "tensorflow/lite/micro/examples/hello_world/model.h" #include "tensorflow/lite/micro/examples/hello_world/output_handler.h" -#include "tensorflow/lite/micro/examples/hello_world/sine_model_data.h" #include "tensorflow/lite/micro/kernels/all_ops_resolver.h" #include "tensorflow/lite/micro/micro_error_reporter.h" #include "tensorflow/lite/micro/micro_interpreter.h" @@ -49,7 +49,7 @@ void setup() { // Map the model into a usable data structure. This doesn't involve any // copying or parsing, it's a very lightweight operation. - model = tflite::GetModel(g_sine_model_data); + model = tflite::GetModel(g_model); if (model->version() != TFLITE_SCHEMA_VERSION) { TF_LITE_REPORT_ERROR(error_reporter, "Model provided is schema version %d not equal " diff --git a/tensorflow/lite/micro/examples/hello_world/model.cc b/tensorflow/lite/micro/examples/hello_world/model.cc new file mode 100644 index 00000000000..232e4a14115 --- /dev/null +++ b/tensorflow/lite/micro/examples/hello_world/model.cc @@ -0,0 +1,250 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +// Automatically created from a TensorFlow Lite flatbuffer using the command: +// xxd -i model.tflite > model.cc + +// This is a standard TensorFlow Lite model file that has been converted into a +// C data array, so it can be easily compiled into a binary for devices that +// don't have a file system. + +// See train/README.md for a full description of the creation process. + +#include "tensorflow/lite/micro/examples/hello_world/model.h" + +// We need to keep the data array aligned on some architectures. +#ifdef __has_attribute +#define HAVE_ATTRIBUTE(x) __has_attribute(x) +#else +#define HAVE_ATTRIBUTE(x) 0 +#endif +#if HAVE_ATTRIBUTE(aligned) || (defined(__GNUC__) && !defined(__clang__)) +#define DATA_ALIGN_ATTRIBUTE __attribute__((aligned(4))) +#else +#define DATA_ALIGN_ATTRIBUTE +#endif + +const unsigned char g_model[] DATA_ALIGN_ATTRIBUTE = { + 0x1c, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x12, 0x00, + 0x1c, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x14, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x12, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x60, 0x09, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, + 0x0c, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xfe, 0xfd, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x31, 0x2e, 0x35, 0x2e, 0x30, 0x00, 0x00, 0x00, + 0x7c, 0xfd, 0xff, 0xff, 0x80, 0xfd, 0xff, 0xff, 0x84, 0xfd, 0xff, 0xff, + 0x88, 0xfd, 0xff, 0xff, 0x22, 0xfe, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, + 0x9f, 0x0a, 0x00, 0x00, 0x65, 0x06, 0x00, 0x00, 0x3d, 0xf8, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xeb, 0x0a, 0x00, 0x00, 0x2f, 0xf8, 0xff, 0xff, + 0xe8, 0x04, 0x00, 0x00, 0x21, 0x0a, 0x00, 0x00, 0x46, 0xfe, 0xff, 0xff, + 0xc8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xf7, 0xff, 0xff, + 0x28, 0xf9, 0xff, 0xff, 0x9a, 0x05, 0x00, 0x00, 0x6e, 0xfe, 0xff, 0xff, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x73, 0x1c, 0x11, 0xe1, + 0x0c, 0x81, 0xa5, 0x43, 0xfe, 0xd5, 0xd5, 0xb2, 0x60, 0x77, 0x19, 0xdf, + 0x8a, 0xfe, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x51, 0x0b, 0x00, 0x00, 0x47, 0xf6, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x9b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x92, 0x07, 0x00, 0x00, 0xf4, 0xf4, 0xff, 0xff, 0x55, 0xf0, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xd6, 0xfe, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0xee, 0xfc, 0x00, 0xec, 0x05, 0x16, 0xef, 0xec, + 0xe6, 0xf8, 0x03, 0x01, 0x00, 0xfa, 0xf8, 0xf5, 0xda, 0xeb, 0x27, 0x14, + 0xef, 0xde, 0xe2, 0xda, 0xf0, 0xdf, 0x32, 0x06, 0x01, 0xe6, 0xee, 0xf9, + 0x00, 0x16, 0x07, 0xe0, 0xfe, 0xff, 0xe9, 0x05, 0xe7, 0xef, 0x81, 0x1b, + 0x18, 0xea, 0xca, 0x01, 0x0f, 0x00, 0xdb, 0xf7, 0x0e, 0xec, 0x12, 0x1e, + 0x04, 0x13, 0xb2, 0xe7, 0xfd, 0x06, 0xbb, 0xe0, 0x0c, 0xec, 0xf0, 0xdf, + 0xeb, 0xf7, 0x05, 0x26, 0x19, 0xe4, 0x70, 0x1a, 0xea, 0x1e, 0x34, 0xdf, + 0x19, 0xf3, 0xf1, 0x19, 0x0e, 0x03, 0x1b, 0xe1, 0xde, 0x13, 0xf6, 0x19, + 0xff, 0xf6, 0x1a, 0x17, 0xf1, 0x1c, 0xdb, 0x1a, 0x1a, 0x20, 0xe6, 0x19, + 0xf5, 0xff, 0x97, 0x0b, 0x00, 0x00, 0xce, 0xdf, 0x0d, 0xf7, 0x15, 0xe4, + 0xed, 0xfc, 0x0d, 0xe9, 0xfb, 0xec, 0x5c, 0xfc, 0x1d, 0x02, 0x58, 0xe3, + 0xe0, 0xf4, 0x15, 0xec, 0xf9, 0x00, 0x13, 0x05, 0xec, 0x0c, 0x1c, 0x14, + 0x0c, 0xe9, 0x0a, 0xf4, 0x18, 0x00, 0xd7, 0x05, 0x27, 0x02, 0x15, 0xea, + 0xea, 0x02, 0x9b, 0x00, 0x0c, 0xfa, 0xe9, 0xea, 0xfe, 0x01, 0x14, 0xfd, + 0x0b, 0x02, 0xf0, 0xef, 0x06, 0xee, 0x01, 0x0d, 0x06, 0xe7, 0xf7, 0x11, + 0xf5, 0x0a, 0xf9, 0xf1, 0x23, 0xff, 0x0d, 0xf2, 0xec, 0x11, 0x26, 0x1d, + 0xf2, 0xea, 0x28, 0x18, 0xe0, 0xfb, 0xf3, 0xf4, 0x05, 0x1c, 0x1d, 0xfb, + 0xfd, 0x1e, 0xfc, 0x11, 0xe8, 0x06, 0x09, 0x03, 0x12, 0xf2, 0x35, 0xfb, + 0xdd, 0x1b, 0xf9, 0xef, 0xf3, 0xe7, 0x6f, 0x0c, 0x1d, 0x00, 0x43, 0xfd, + 0x0d, 0xf1, 0x0a, 0x19, 0x1a, 0xfa, 0xe0, 0x18, 0x1e, 0x13, 0x37, 0x1c, + 0x12, 0xec, 0x3a, 0x0c, 0xb6, 0xcb, 0xe6, 0x13, 0xf7, 0xeb, 0xf1, 0x05, + 0x1b, 0xfa, 0x19, 0xe5, 0xec, 0xcf, 0x0c, 0xf4, 0xe2, 0xff, 0xff, 0xff, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0xa2, 0x8c, 0xc9, + 0x5f, 0x1d, 0xce, 0x41, 0x9f, 0xcd, 0x20, 0xb1, 0xdf, 0x53, 0x2f, 0x81, + 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe2, 0xee, 0xff, 0xff, + 0x80, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x54, 0x4f, 0x43, 0x4f, + 0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x2e, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xbc, 0xf9, 0xff, 0xff, + 0x48, 0x01, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xca, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xba, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, + 0x07, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x24, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x04, 0x00, + 0x08, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xdc, 0x04, 0x00, 0x00, + 0x54, 0x04, 0x00, 0x00, 0xc4, 0x03, 0x00, 0x00, 0x54, 0x03, 0x00, 0x00, + 0xd0, 0x02, 0x00, 0x00, 0x4c, 0x02, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, + 0x5c, 0x01, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xff, 0xff, + 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, 0x5f, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xc2, 0xfb, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x02, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xff, 0xff, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xba, 0x2b, 0x4f, 0x38, 0x20, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, + 0x73, 0x65, 0x5f, 0x34, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x5f, + 0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09, + 0x6c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2c, 0xfd, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb9, 0x36, 0x0b, 0x3c, + 0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x34, + 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f, 0x52, 0x65, 0x61, 0x64, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x2f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xaa, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09, 0x6c, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x9c, 0xfc, 0xff, 0xff, 0x30, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xaa, 0x7b, 0xbe, 0x3b, 0x01, 0x00, 0x00, 0x00, + 0x2e, 0xbd, 0xbd, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x33, + 0x2f, 0x52, 0x65, 0x6c, 0x75, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x2a, 0xfd, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x02, 0x58, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2c, 0xfe, 0xff, 0xff, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xe3, 0x04, 0x20, 0x39, 0x20, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, + 0x73, 0x65, 0x5f, 0x33, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x5f, + 0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x92, 0xfd, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09, + 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x94, 0xfe, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe8, 0x76, 0x51, 0x3c, + 0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x33, + 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f, 0x52, 0x65, 0x61, 0x64, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x2f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x12, 0xfe, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09, 0x6c, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0xfe, 0xff, 0xff, 0x30, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xd2, 0x91, 0x43, 0x3c, 0x01, 0x00, 0x00, 0x00, + 0x40, 0xce, 0x42, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, + 0x2f, 0x52, 0x65, 0x6c, 0x75, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x92, 0xfe, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x02, 0x5c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x94, 0xff, 0xff, 0xff, + 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0xb3, 0xd9, 0x38, 0x20, 0x00, 0x00, 0x00, + 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, + 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, 0x2f, 0x4d, 0x61, 0x74, + 0x4d, 0x75, 0x6c, 0x5f, 0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x09, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xd5, 0x6b, 0x8a, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, + 0x73, 0x65, 0x5f, 0x32, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f, + 0x52, 0x65, 0x61, 0x64, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x4f, 0x70, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x8a, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09, + 0x60, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x7c, 0xff, 0xff, 0xff, 0x2c, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x5d, 0x4f, 0xc9, 0x3c, 0x01, 0x00, 0x00, 0x00, + 0x0e, 0x86, 0xc8, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, 0x5f, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x38, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x08, 0x00, 0x07, 0x00, 0x0c, 0x00, + 0x10, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, + 0x6c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xde, 0x0a, 0x3c, + 0x01, 0x00, 0x00, 0x00, 0x66, 0x64, 0x87, 0x3f, 0x01, 0x00, 0x00, 0x00, + 0x13, 0x42, 0x8d, 0xbf, 0x0d, 0x00, 0x00, 0x00, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x38, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x72, 0x0a, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, + 0x04, 0x00, 0x00, 0x00}; +const int g_model_len = 2512; diff --git a/tensorflow/lite/micro/examples/hello_world/sine_model_data.h b/tensorflow/lite/micro/examples/hello_world/model.h similarity index 59% rename from tensorflow/lite/micro/examples/hello_world/sine_model_data.h rename to tensorflow/lite/micro/examples/hello_world/model.h index b7087c6bd9e..488f47b3afd 100644 --- a/tensorflow/lite/micro/examples/hello_world/sine_model_data.h +++ b/tensorflow/lite/micro/examples/hello_world/model.h @@ -1,4 +1,4 @@ -/* Copyright 2019 The TensorFlow Authors. All Rights Reserved. +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -13,15 +13,19 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ +// Automatically created from a TensorFlow Lite flatbuffer using the command: +// xxd -i model.tflite > model.cc + // This is a standard TensorFlow Lite model file that has been converted into a // C data array, so it can be easily compiled into a binary for devices that -// don't have a file system. It was created using the command: -// xxd -i sine_model.tflite > sine_model_data.cc +// don't have a file system. -#ifndef TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_SINE_MODEL_DATA_H_ -#define TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_SINE_MODEL_DATA_H_ +// See train/README.md for a full description of the creation process. -extern const unsigned char g_sine_model_data[]; -extern const int g_sine_model_data_len; +#ifndef TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_MODEL_H_ +#define TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_MODEL_H_ -#endif // TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_SINE_MODEL_DATA_H_ +extern const unsigned char g_model[]; +extern const int g_model_len; + +#endif // TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_MODEL_H_ diff --git a/tensorflow/lite/micro/examples/hello_world/sine_model_data.cc b/tensorflow/lite/micro/examples/hello_world/sine_model_data.cc deleted file mode 100644 index 7252479fecd..00000000000 --- a/tensorflow/lite/micro/examples/hello_world/sine_model_data.cc +++ /dev/null @@ -1,255 +0,0 @@ -/* Copyright 2019 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -==============================================================================*/ - -// Automatically created from a TensorFlow Lite flatbuffer using the command: -// xxd -i sine_model.tflite > sine_model_data.cc -// See the README for a full description of the creation process. - -#include "tensorflow/lite/micro/examples/hello_world/sine_model_data.h" - -// We need to keep the data array aligned on some architectures. -#ifdef __has_attribute -#define HAVE_ATTRIBUTE(x) __has_attribute(x) -#else -#define HAVE_ATTRIBUTE(x) 0 -#endif -#if HAVE_ATTRIBUTE(aligned) || (defined(__GNUC__) && !defined(__clang__)) -#define DATA_ALIGN_ATTRIBUTE __attribute__((aligned(4))) -#else -#define DATA_ALIGN_ATTRIBUTE -#endif - -const unsigned char g_sine_model_data[] DATA_ALIGN_ATTRIBUTE = { - 0x18, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x0e, 0x00, - 0x18, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x14, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x00, 0x00, - 0xb8, 0x05, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x90, 0x05, 0x00, 0x00, 0x7c, 0x05, 0x00, 0x00, - 0x24, 0x05, 0x00, 0x00, 0xd4, 0x04, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x54, 0xf6, 0xff, 0xff, 0x58, 0xf6, 0xff, 0xff, 0x5c, 0xf6, 0xff, 0xff, - 0x60, 0xf6, 0xff, 0xff, 0xc2, 0xfa, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x7c, 0x19, 0xa7, 0x3e, 0x99, 0x81, 0xb9, 0x3e, - 0x56, 0x8b, 0x9f, 0x3e, 0x88, 0xd8, 0x12, 0xbf, 0x74, 0x10, 0x56, 0x3e, - 0xfe, 0xc6, 0xdf, 0xbe, 0xf2, 0x10, 0x5a, 0xbe, 0xf0, 0xe2, 0x0a, 0xbe, - 0x10, 0x5a, 0x98, 0xbe, 0xb9, 0x36, 0xce, 0x3d, 0x8f, 0x7f, 0x87, 0x3e, - 0x2c, 0xb1, 0xfd, 0xbd, 0xe6, 0xa6, 0x8a, 0xbe, 0xa5, 0x3e, 0xda, 0x3e, - 0x50, 0x34, 0xed, 0xbd, 0x90, 0x91, 0x69, 0xbe, 0x0e, 0xfb, 0xff, 0xff, - 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x67, 0x41, 0x48, 0xbf, - 0x24, 0xcd, 0xa0, 0xbe, 0xb7, 0x92, 0x0c, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x98, 0xfe, 0x3c, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x17, 0x9a, 0xbe, - 0x41, 0xcb, 0xb6, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x13, 0xd6, 0x1e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5a, 0xfb, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, - 0x4b, 0x98, 0xdd, 0xbd, 0x40, 0x6b, 0xcb, 0xbe, 0x36, 0x0c, 0xd4, 0x3c, - 0xbd, 0x44, 0xb5, 0x3e, 0x95, 0x70, 0xe3, 0x3e, 0xe7, 0xac, 0x86, 0x3e, - 0x00, 0xc4, 0x4e, 0x3d, 0x7e, 0xa6, 0x1d, 0x3e, 0xbd, 0x87, 0xbb, 0x3e, - 0xb4, 0xb8, 0x09, 0xbf, 0xa1, 0x1f, 0xf8, 0xbe, 0x8d, 0x90, 0xdd, 0x3e, - 0xde, 0xfa, 0x6f, 0xbe, 0xb2, 0x75, 0xe4, 0x3d, 0x6e, 0xfe, 0x36, 0x3e, - 0x20, 0x18, 0xc2, 0xbe, 0x39, 0xc7, 0xfb, 0xbe, 0xfe, 0xa4, 0x30, 0xbe, - 0xf7, 0x91, 0xde, 0xbe, 0xde, 0xab, 0x24, 0x3e, 0xfb, 0xbb, 0xce, 0x3e, - 0xeb, 0x23, 0x80, 0xbe, 0x7b, 0x58, 0x73, 0xbe, 0x9a, 0x2e, 0x03, 0x3e, - 0x10, 0x42, 0xa9, 0xbc, 0x10, 0x12, 0x64, 0xbd, 0xe3, 0x8d, 0x0c, 0x3d, - 0x9e, 0x48, 0x97, 0xbe, 0x34, 0x51, 0xd4, 0xbe, 0x02, 0x3b, 0x0d, 0x3e, - 0x62, 0x67, 0x89, 0xbe, 0x74, 0xdf, 0xa2, 0x3d, 0xf3, 0x25, 0xb3, 0xbe, - 0xef, 0x34, 0x7b, 0x3d, 0x61, 0x70, 0xe3, 0x3d, 0xba, 0x76, 0xc0, 0xbe, - 0x7d, 0xe9, 0xa7, 0x3e, 0xc3, 0xab, 0xd0, 0xbe, 0xcf, 0x7c, 0xdb, 0xbe, - 0x70, 0x27, 0x9a, 0xbe, 0x98, 0xf5, 0x3c, 0xbd, 0xff, 0x4b, 0x4b, 0x3e, - 0x7e, 0xa0, 0xf8, 0xbd, 0xd4, 0x6e, 0x86, 0x3d, 0x00, 0x4a, 0x07, 0x3a, - 0x4c, 0x24, 0x61, 0xbe, 0x54, 0x68, 0xf7, 0xbd, 0x02, 0x3f, 0x77, 0xbe, - 0x23, 0x79, 0xb3, 0x3e, 0x1c, 0x83, 0xad, 0xbd, 0xc8, 0x92, 0x8d, 0x3e, - 0xa8, 0xf3, 0x15, 0xbd, 0xe6, 0x4d, 0x6c, 0x3d, 0xac, 0xe7, 0x98, 0xbe, - 0x81, 0xec, 0xbd, 0x3e, 0xe2, 0x55, 0x73, 0x3e, 0xc1, 0x77, 0xc7, 0x3e, - 0x6e, 0x1b, 0x5e, 0x3d, 0x27, 0x78, 0x02, 0x3f, 0xd4, 0x21, 0x90, 0x3d, - 0x52, 0xdc, 0x1f, 0x3e, 0xbf, 0xda, 0x88, 0x3e, 0x80, 0x79, 0xe3, 0xbd, - 0x40, 0x6f, 0x10, 0xbe, 0x20, 0x43, 0x2e, 0xbd, 0xf0, 0x76, 0xc5, 0xbd, - 0xcc, 0xa0, 0x04, 0xbe, 0xf0, 0x69, 0xd7, 0xbe, 0xb1, 0xfe, 0x64, 0xbe, - 0x20, 0x41, 0x84, 0xbe, 0xb2, 0xc3, 0x26, 0xbe, 0xd8, 0xf4, 0x09, 0xbe, - 0x64, 0x44, 0xd1, 0x3d, 0xd5, 0xe1, 0xc8, 0xbe, 0x35, 0xbc, 0x3f, 0xbe, - 0xc0, 0x94, 0x82, 0x3d, 0xdc, 0x2b, 0xb1, 0xbd, 0x02, 0xdb, 0xbf, 0xbe, - 0xa5, 0x7f, 0x8a, 0x3e, 0x21, 0xb4, 0xa2, 0x3e, 0xcd, 0x86, 0x56, 0xbf, - 0x9c, 0x3b, 0x76, 0xbc, 0x85, 0x6d, 0x60, 0xbf, 0x86, 0x00, 0x3c, 0xbe, - 0xc1, 0x23, 0x7e, 0x3e, 0x96, 0xcd, 0x3f, 0x3e, 0x86, 0x91, 0x2d, 0x3e, - 0x55, 0xef, 0x87, 0x3e, 0x7e, 0x97, 0x03, 0xbe, 0x2a, 0xcd, 0x01, 0x3e, - 0x32, 0xc9, 0x8e, 0xbe, 0x72, 0x77, 0x3b, 0xbe, 0xe0, 0xa1, 0xbc, 0xbe, - 0x8d, 0xb7, 0xa7, 0x3e, 0x1c, 0x05, 0x95, 0xbe, 0xf7, 0x1f, 0xbb, 0x3e, - 0xc9, 0x3e, 0xd6, 0x3e, 0x80, 0x42, 0xe9, 0xbd, 0x27, 0x0c, 0xd2, 0xbe, - 0x5c, 0x32, 0x34, 0xbe, 0x14, 0xcb, 0xca, 0xbd, 0xdd, 0x3a, 0x67, 0xbe, - 0x1c, 0xbb, 0x8d, 0xbe, 0x91, 0xac, 0x5c, 0xbe, 0x52, 0x40, 0x6f, 0xbe, - 0xd7, 0x71, 0x94, 0x3e, 0x18, 0x71, 0x09, 0xbe, 0x9b, 0x29, 0xd9, 0xbe, - 0x7d, 0x66, 0xd2, 0xbe, 0x98, 0xd6, 0xb2, 0xbe, 0x00, 0xc9, 0x84, 0x3a, - 0xbc, 0xda, 0xc2, 0xbd, 0x1d, 0xc2, 0x1b, 0xbf, 0xd4, 0xdd, 0x92, 0x3e, - 0x07, 0x87, 0x6c, 0xbe, 0x40, 0xc2, 0x3b, 0xbe, 0xbd, 0xe2, 0x9c, 0x3e, - 0x0a, 0xb5, 0xa0, 0xbe, 0xe2, 0xd5, 0x9c, 0xbe, 0x3e, 0xbb, 0x7c, 0x3e, - 0x17, 0xb4, 0xcf, 0x3e, 0xd5, 0x8e, 0xc8, 0xbe, 0x7c, 0xf9, 0x5c, 0x3e, - 0x80, 0xfc, 0x0d, 0x3d, 0xc5, 0xd5, 0x8b, 0x3e, 0xf5, 0x17, 0xa2, 0x3e, - 0xc7, 0x60, 0x89, 0xbe, 0xec, 0x95, 0x87, 0x3d, 0x7a, 0xc2, 0x5d, 0xbf, - 0x77, 0x94, 0x98, 0x3e, 0x77, 0x39, 0x07, 0xbc, 0x42, 0x29, 0x00, 0x3e, - 0xaf, 0xd0, 0xa9, 0x3e, 0x31, 0x23, 0xc4, 0xbe, 0x95, 0x36, 0x5b, 0xbe, - 0xc7, 0xdc, 0x83, 0xbe, 0x1e, 0x6b, 0x47, 0x3e, 0x5b, 0x24, 0x99, 0x3e, - 0x99, 0x27, 0x54, 0x3e, 0xc8, 0x20, 0xdd, 0xbd, 0x5a, 0x86, 0x2f, 0x3e, - 0x80, 0xf0, 0x69, 0xbe, 0x44, 0xfc, 0x84, 0xbd, 0x82, 0xa0, 0x2a, 0xbe, - 0x87, 0xe6, 0x2a, 0x3e, 0xd8, 0x34, 0xae, 0x3d, 0x50, 0xbd, 0xb5, 0x3e, - 0xc4, 0x8c, 0x88, 0xbe, 0xe3, 0xbc, 0xa5, 0x3e, 0xa9, 0xda, 0x9e, 0x3e, - 0x3e, 0xb8, 0x23, 0xbe, 0x80, 0x90, 0x15, 0x3d, 0x97, 0x3f, 0xc3, 0x3e, - 0xca, 0x5c, 0x9d, 0x3e, 0x21, 0xe8, 0xe1, 0x3e, 0xc0, 0x49, 0x01, 0xbc, - 0x00, 0x0b, 0x88, 0xbd, 0x3f, 0xf7, 0xca, 0x3c, 0xfb, 0x5a, 0xb1, 0x3e, - 0x60, 0xd2, 0x0d, 0x3c, 0xce, 0x23, 0x78, 0xbf, 0x8f, 0x4f, 0xb9, 0xbe, - 0x69, 0x6a, 0x34, 0xbf, 0x4b, 0x5e, 0xa9, 0x3e, 0x64, 0x8c, 0xd9, 0x3e, - 0x52, 0x77, 0x36, 0x3e, 0xeb, 0xaf, 0xbe, 0x3e, 0x40, 0xbe, 0x36, 0x3c, - 0x08, 0x65, 0x3b, 0xbd, 0x55, 0xe0, 0x66, 0xbd, 0xd2, 0xe8, 0x9b, 0xbe, - 0x86, 0xe3, 0x09, 0xbe, 0x93, 0x3d, 0xdd, 0x3e, 0x0f, 0x66, 0x18, 0x3f, - 0x18, 0x05, 0x33, 0xbd, 0xde, 0x15, 0xd7, 0xbe, 0xaa, 0xcf, 0x49, 0xbe, - 0xa2, 0xa5, 0x64, 0x3e, 0xe6, 0x9c, 0x42, 0xbe, 0x54, 0x42, 0xcc, 0x3d, - 0xa0, 0xbd, 0x9d, 0xbe, 0xc2, 0x69, 0x48, 0x3e, 0x5b, 0x8b, 0xa2, 0xbe, - 0xc0, 0x13, 0x87, 0x3d, 0x36, 0xfd, 0x69, 0x3e, 0x05, 0x86, 0x40, 0xbe, - 0x1e, 0x7a, 0xce, 0xbe, 0x46, 0x13, 0xa7, 0xbe, 0x68, 0x52, 0x86, 0xbe, - 0x04, 0x9e, 0x86, 0xbd, 0x8c, 0x54, 0xc1, 0x3d, 0xe0, 0x3b, 0xad, 0x3c, - 0x42, 0x67, 0x85, 0xbd, 0xea, 0x97, 0x42, 0x3e, 0x6e, 0x13, 0x3b, 0xbf, - 0x56, 0x5b, 0x16, 0x3e, 0xaa, 0xab, 0xdf, 0x3e, 0xc8, 0x41, 0x36, 0x3d, - 0x24, 0x2d, 0x47, 0xbe, 0x77, 0xa5, 0xae, 0x3e, 0xc0, 0xc2, 0x5b, 0x3c, - 0xac, 0xac, 0x4e, 0x3e, 0x99, 0xec, 0x13, 0xbe, 0xf2, 0xab, 0x73, 0x3e, - 0xaa, 0xa1, 0x48, 0xbe, 0xe8, 0xd3, 0x01, 0xbe, 0x60, 0xb7, 0xc7, 0xbd, - 0x64, 0x72, 0xd3, 0x3d, 0x83, 0xd3, 0x99, 0x3e, 0x0c, 0x76, 0x34, 0xbe, - 0x42, 0xda, 0x0d, 0x3e, 0xfb, 0x47, 0x9a, 0x3e, 0x8b, 0xdc, 0x92, 0xbe, - 0x56, 0x7f, 0x6b, 0x3e, 0x04, 0xd4, 0x88, 0xbd, 0x11, 0x9e, 0x80, 0x3e, - 0x3c, 0x89, 0xff, 0x3d, 0xb3, 0x3e, 0x88, 0x3e, 0xf7, 0xf0, 0x88, 0x3e, - 0x28, 0xfb, 0xc9, 0xbe, 0x53, 0x3e, 0xcf, 0x3e, 0xac, 0x75, 0xdc, 0xbe, - 0xdd, 0xca, 0xd7, 0x3e, 0x01, 0x58, 0xa7, 0x3e, 0x29, 0xb8, 0x13, 0xbf, - 0x76, 0x81, 0x12, 0xbc, 0x28, 0x8b, 0x16, 0xbf, 0x0e, 0xec, 0x0e, 0x3e, - 0x40, 0x0a, 0xdb, 0xbd, 0x98, 0xec, 0xbf, 0xbd, 0x32, 0x55, 0x0c, 0xbe, - 0xfb, 0xf9, 0xc9, 0x3e, 0x83, 0x4a, 0x6d, 0xbe, 0x76, 0x59, 0xe2, 0xbe, - 0x54, 0x7d, 0x9f, 0xbb, 0x9d, 0xe8, 0x95, 0x3e, 0x5c, 0xd3, 0xd0, 0x3d, - 0x19, 0x8a, 0xb0, 0x3e, 0xde, 0x6f, 0x2e, 0xbe, 0xd0, 0x16, 0x83, 0x3d, - 0x9c, 0x7d, 0x11, 0xbf, 0x2b, 0xcc, 0x25, 0x3c, 0x2a, 0xa5, 0x27, 0xbe, - 0x22, 0x14, 0xc7, 0xbe, 0x5e, 0x7a, 0xac, 0x3e, 0x4e, 0x41, 0x94, 0xbe, - 0x5a, 0x68, 0x7b, 0x3e, 0x86, 0xfd, 0x4e, 0x3e, 0xa2, 0x56, 0x6a, 0xbe, - 0xca, 0xfe, 0x81, 0xbe, 0x43, 0xc3, 0xb1, 0xbd, 0xc5, 0xb8, 0xa7, 0x3e, - 0x55, 0x23, 0xcd, 0x3e, 0xaf, 0x2e, 0x76, 0x3e, 0x69, 0xa8, 0x90, 0xbe, - 0x0d, 0xba, 0xb9, 0x3e, 0x66, 0xff, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x53, 0xd6, 0xe2, 0x3d, 0x66, 0xb6, 0xcc, 0x3e, - 0x03, 0xe7, 0xf6, 0x3e, 0xe0, 0x28, 0x10, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x3e, 0x3d, 0xb0, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x62, 0xf0, 0x77, 0x3e, - 0xa6, 0x9d, 0xa4, 0x3e, 0x3a, 0x4b, 0xf3, 0xbe, 0x71, 0x9e, 0xa7, 0x3e, - 0x00, 0x00, 0x00, 0x00, 0x34, 0x39, 0xa2, 0x3e, 0x00, 0x00, 0x00, 0x00, - 0xcc, 0x9c, 0x4a, 0x3e, 0xab, 0x40, 0xa3, 0x3e, 0xb2, 0xff, 0xff, 0xff, - 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xb3, 0x71, 0x67, 0x3f, - 0x9a, 0x7a, 0x95, 0xbf, 0xe1, 0x48, 0xe8, 0xbe, 0x8a, 0x72, 0x96, 0x3e, - 0x00, 0xd2, 0xd3, 0xbb, 0x1a, 0xc5, 0xd7, 0x3f, 0xac, 0x7e, 0xc8, 0xbe, - 0x90, 0xa7, 0x95, 0xbe, 0x3b, 0xd7, 0xdc, 0xbe, 0x41, 0xa8, 0x16, 0x3f, - 0x50, 0x5b, 0xcb, 0x3f, 0x52, 0xb9, 0xed, 0xbe, 0x2e, 0xa7, 0xc6, 0xbe, - 0xaf, 0x0f, 0x14, 0xbf, 0xb3, 0xda, 0x59, 0x3f, 0x02, 0xec, 0xd7, 0xbe, - 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x66, 0x11, 0x1f, 0xbf, - 0xb8, 0xfb, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x54, 0x4f, 0x43, 0x4f, - 0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x2e, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x14, 0x00, - 0x04, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xce, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x1c, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x10, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xba, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00, - 0x40, 0x02, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, - 0x48, 0x01, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x26, 0xfd, 0xff, 0xff, - 0x3c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x18, 0xfd, 0xff, 0xff, 0x20, 0x00, 0x00, 0x00, - 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, - 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x34, 0x2f, 0x4d, 0x61, 0x74, - 0x4d, 0x75, 0x6c, 0x5f, 0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6e, 0xfd, 0xff, 0xff, - 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x60, 0xfd, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00, - 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, - 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x34, 0x2f, 0x4d, 0x61, 0x74, - 0x4d, 0x75, 0x6c, 0x2f, 0x52, 0x65, 0x61, 0x64, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xce, 0xfd, 0xff, 0xff, - 0x34, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0xc0, 0xfd, 0xff, 0xff, 0x19, 0x00, 0x00, 0x00, - 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, - 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x33, 0x2f, 0x52, 0x65, 0x6c, - 0x75, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x12, 0xfe, 0xff, 0xff, 0x3c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x04, 0xfe, 0xff, 0xff, 0x20, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, - 0x73, 0x65, 0x5f, 0x33, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x5f, - 0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x5a, 0xfe, 0xff, 0xff, 0x50, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x4c, 0xfe, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, - 0x73, 0x65, 0x5f, 0x33, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f, - 0x52, 0x65, 0x61, 0x64, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x4f, 0x70, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0xba, 0xfe, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0xac, 0xfe, 0xff, 0xff, 0x19, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, - 0x73, 0x65, 0x5f, 0x32, 0x2f, 0x52, 0x65, 0x6c, 0x75, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0xfe, 0xfe, 0xff, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xf0, 0xfe, 0xff, 0xff, - 0x20, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, - 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x5f, 0x62, 0x69, 0x61, 0x73, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x46, 0xff, 0xff, 0xff, 0x50, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x38, 0xff, 0xff, 0xff, - 0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, - 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f, 0x52, 0x65, 0x61, 0x64, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x2f, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0xa6, 0xff, 0xff, 0xff, 0x48, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, - 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x43, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, 0x5f, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x03, 0x00, 0x00, 0x00}; -const int g_sine_model_data_len = 2640; diff --git a/tensorflow/lite/micro/examples/hello_world/train/README.md b/tensorflow/lite/micro/examples/hello_world/train/README.md new file mode 100644 index 00000000000..93d8c0af0a6 --- /dev/null +++ b/tensorflow/lite/micro/examples/hello_world/train/README.md @@ -0,0 +1,69 @@ +# Hello World Training + +This example shows how to train a 2.5 kB model to generate a `sine` wave. + +## Table of contents + +- [Overview](#overview) +- [Training](#training) +- [Trained Models](#trained-models) +- [Model Architecture](#model-architecture) + +## Overview + +1. Dataset: Data is generated locally in the Jupyter Notebook. +2. Dataset Type: **Structured Data** +3. Deep Learning Framework: **TensorFlow 2** +4. Language: **Python 3.7** +5. Model Size: **2.5 kB** +6. Model Category: **Regression** + +## Training + +Train the model in the cloud using Google Colaboratory or locally using a +Jupyter Notebook. + + + + +
+ Google Colaboratory + + Jupyter Notebook +
+ +*Estimated Training Time: 10 minutes.* + + +## Trained Models + +| Download Link | [hello_world.zip](https://storage.googleapis.com/download.tensorflow.org/models/tflite/micro/hello_world_2020_04_13.zip) | +| ------------- |-------------| + + +The `models` directory in the above zip file can be generated by following the +instructions in the [Training](#training) section above. It +includes the following 3 model files: + +| Name | Format | Target Framework | Target Device | +| :------------- |:-------------|:-------------|-----| +| `model.pb` | Keras SavedModel | TensorFlow | Large-Scale/Cloud/Servers | +| `model.tflite` *(2.5 kB)* | Fully Quantized* TFLite Model | TensorFlow Lite | Mobile Devices| +| `model.cc` | C Source File | TensorFlow Lite for Microcontrollers | Microcontrollers | + +**Fully quantized implies that the model is **strictly int8** quantized +**excluding** the input(s) and output(s).* + + + +## Model Architecture + +The final model used to simulate a sine wave is displayed below. It is a +simple feed forward deep neural network with 2 fully connected layers with +ReLu activations and a final fully connected output layer with as shown below. + +![model_architecture.png](../images/model_architecture.png) + +*This image was derived from visualizing the 'model.tflite' file in [Netron](https://github.com/lutzroeder/netron)* + diff --git a/tensorflow/lite/micro/examples/hello_world/train/train_hello_world_model.ipynb b/tensorflow/lite/micro/examples/hello_world/train/train_hello_world_model.ipynb new file mode 100644 index 00000000000..129e278f540 --- /dev/null +++ b/tensorflow/lite/micro/examples/hello_world/train/train_hello_world_model.ipynb @@ -0,0 +1,3530 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "train_hello_world_model.ipynb", + "provenance": [], + "collapsed_sections": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "aCZBFzjClURz", + "colab_type": "text" + }, + "source": [ + "# Train a basic TensorFlow Lite for Microcontrollers model\n", + "\n", + "This notebook demonstrates the process of training a 2.5 kB model using TensorFlow and converting it for use with TensorFlow Lite for Microcontrollers. \n", + "\n", + "Deep learning networks learn to model patterns in underlying data. Here, we're going to train a network to model data generated by a [sine](https://en.wikipedia.org/wiki/Sine) function. This will result in a model that can take a value, `x`, and predict its sine, `y`.\n", + "\n", + "The model created in this notebook is used in the [hello_world](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/micro/examples/hello_world) example for [TensorFlow Lite for MicroControllers](https://www.tensorflow.org/lite/microcontrollers/overview).\n", + "\n", + "\n", + " \n", + " \n", + "
\n", + " Run in Google Colab\n", + " \n", + " View source on GitHub\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0Cz6uV1zU_hV", + "colab_type": "text" + }, + "source": [ + "**Training is much faster using GPU acceleration.** Before you proceed, ensure you are using a GPU runtime by going to **Runtime -> Change runtime type** and set **Hardware accelerator: GPU**." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_UQblnrLd_ET", + "colab_type": "text" + }, + "source": [ + "## Configure Defaults" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "5PYwRFppd-WB", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Define paths to model files\n", + "import os\n", + "MODELS_DIR = 'models/'\n", + "os.mkdir(MODELS_DIR)\n", + "MODEL_TF = MODELS_DIR + 'model.pb'\n", + "MODEL_NO_QUANT_TFLITE = MODELS_DIR + 'model_no_quant.tflite'\n", + "MODEL_TFLITE = MODELS_DIR + 'model.tflite'\n", + "MODEL_TFLITE_MICRO = MODELS_DIR + 'model.cc'" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dh4AXGuHWeu1", + "colab_type": "text" + }, + "source": [ + "## Setup Environment\n", + "\n", + "Install Dependencies" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "e5cbcfca-b6a5-4a61-ac95-1a8d3fd5411b", + "id": "cr1VLfotanf6", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 85 + } + }, + "source": [ + "! pip install -q tensorflow==2" + ], + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\u001b[K |████████████████████████████████| 86.3MB 52kB/s \n", + "\u001b[K |████████████████████████████████| 450kB 46.2MB/s \n", + "\u001b[K |████████████████████████████████| 3.8MB 50.3MB/s \n", + "\u001b[?25h Building wheel for gast (setup.py) ... \u001b[?25l\u001b[?25hdone\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6rLYpvtg9P4o", + "colab_type": "text" + }, + "source": [ + "Set Seed for Repeatable Results" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EIH9NN1c9PJn", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Set a \"seed\" value, so we get the same random numbers each time we run this\n", + "# notebook for reproducible results.\n", + "# Numpy is a math library\n", + "import numpy as np\n", + "np.random.seed(1) # numpy seed\n", + "# TensorFlow is an open source machine learning library\n", + "import tensorflow as tf\n", + "tf.random.set_seed(1) # tensorflow global random seed" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tx9lOPWh9grN", + "colab_type": "text" + }, + "source": [ + "Import Dependencies" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "53PBJBv1jEtJ", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Keras is TensorFlow's high-level API for deep learning\n", + "from tensorflow import keras\n", + "# Matplotlib is a graphing library\n", + "import matplotlib.pyplot as plt\n", + "# Math is Python's math library\n", + "import math" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "p-PuBEb6CMeo", + "colab_type": "text" + }, + "source": [ + "## Dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7gB0-dlNmLT-", + "colab_type": "text" + }, + "source": [ + "### 1. Generate Data\n", + "\n", + "The code in the following cell will generate a set of random `x` values, calculate their sine values, and display them on a graph." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "uKjg7QeMDsDx", + "colab_type": "code", + "outputId": "0afa45df-3766-467c-c92f-2428aa04f22b", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + } + }, + "source": [ + "# Number of sample datapoints\n", + "SAMPLES = 1000\n", + "\n", + "# Generate a uniformly distributed set of random numbers in the range from\n", + "# 0 to 2π, which covers a complete sine wave oscillation\n", + "x_values = np.random.uniform(\n", + " low=0, high=2*math.pi, size=SAMPLES).astype(np.float32)\n", + "\n", + "# Shuffle the values to guarantee they're not in order\n", + "np.random.shuffle(x_values)\n", + "\n", + "# Calculate the corresponding sine values\n", + "y_values = np.sin(x_values).astype(np.float32)\n", + "\n", + "# Plot our data. The 'b.' argument tells the library to print blue dots.\n", + "plt.plot(x_values, y_values, 'b.')\n", + "plt.show()" + ], + "execution_count": 5, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "

" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iWOlC7W_FYvA", + "colab_type": "text" + }, + "source": [ + "### 2. Add Noise\n", + "Since it was generated directly by the sine function, our data fits a nice, smooth curve.\n", + "\n", + "However, machine learning models are good at extracting underlying meaning from messy, real world data. To demonstrate this, we can add some noise to our data to approximate something more life-like.\n", + "\n", + "In the following cell, we'll add some random noise to each value, then draw a new graph:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "i0FJe3Y-Gkac", + "colab_type": "code", + "outputId": "38886dba-5757-4c7e-bcd6-32c1eb82863e", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + } + }, + "source": [ + "# Add a small random number to each y value\n", + "y_values += 0.1 * np.random.randn(*y_values.shape)\n", + "\n", + "# Plot our data\n", + "plt.plot(x_values, y_values, 'b.')\n", + "plt.show()" + ], + "execution_count": 6, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Up8Xk_pMH4Rt", + "colab_type": "text" + }, + "source": [ + "### 3. Split the Data\n", + "We now have a noisy dataset that approximates real world data. We'll be using this to train our model.\n", + "\n", + "To evaluate the accuracy of the model we train, we'll need to compare its predictions to real data and check how well they match up. This evaluation happens during training (where it is referred to as validation) and after training (referred to as testing) It's important in both cases that we use fresh data that was not already used to train the model.\n", + "\n", + "The data is split as follows:\n", + " 1. Training: 60%\n", + " 2. Validation: 20%\n", + " 3. Testing: 20% \n", + "\n", + "The following code will split our data and then plots each set as a different color:\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "nNYko5L1keqZ", + "colab_type": "code", + "outputId": "a016bf4f-60a9-4c3f-9954-71218f7f4a25", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + } + }, + "source": [ + "# We'll use 60% of our data for training and 20% for testing. The remaining 20%\n", + "# will be used for validation. Calculate the indices of each section.\n", + "TRAIN_SPLIT = int(0.6 * SAMPLES)\n", + "TEST_SPLIT = int(0.2 * SAMPLES + TRAIN_SPLIT)\n", + "\n", + "# Use np.split to chop our data into three parts.\n", + "# The second argument to np.split is an array of indices where the data will be\n", + "# split. We provide two indices, so the data will be divided into three chunks.\n", + "x_train, x_test, x_validate = np.split(x_values, [TRAIN_SPLIT, TEST_SPLIT])\n", + "y_train, y_test, y_validate = np.split(y_values, [TRAIN_SPLIT, TEST_SPLIT])\n", + "\n", + "# Double check that our splits add up correctly\n", + "assert (x_train.size + x_validate.size + x_test.size) == SAMPLES\n", + "\n", + "# Plot the data in each partition in different colors:\n", + "plt.plot(x_train, y_train, 'b.', label=\"Train\")\n", + "plt.plot(x_test, y_test, 'r.', label=\"Test\")\n", + "plt.plot(x_validate, y_validate, 'y.', label=\"Validate\")\n", + "plt.legend()\n", + "plt.show()\n" + ], + "execution_count": 7, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Wfdelu1TmgPk", + "colab_type": "text" + }, + "source": [ + "## Training" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "t5McVnHmNiDw", + "colab_type": "text" + }, + "source": [ + "### 1. Design the Model\n", + "We're going to build a simple neural network model that will take an input value (in this case, `x`) and use it to predict a numeric output value (the sine of `x`). This type of problem is called a _regression_. It will use _layers_ of _neurons_ to attempt to learn any patterns underlying the training data, so it can make predictions.\n", + "\n", + "To begin with, we'll define two layers. The first layer takes a single input (our `x` value) and runs it through 8 neurons. Based on this input, each neuron will become _activated_ to a certain degree based on its internal state (its _weight_ and _bias_ values). A neuron's degree of activation is expressed as a number.\n", + "\n", + "The activation numbers from our first layer will be fed as inputs to our second layer, which is a single neuron. It will apply its own weights and bias to these inputs and calculate its own activation, which will be output as our `y` value.\n", + "\n", + "**Note:** To learn more about how neural networks function, you can explore the [Learn TensorFlow](https://codelabs.developers.google.com/codelabs/tensorflow-lab1-helloworld) codelabs.\n", + "\n", + "The code in the following cell defines our model using [Keras](https://www.tensorflow.org/guide/keras), TensorFlow's high-level API for creating deep learning networks. Once the network is defined, we _compile_ it, specifying parameters that determine how it will be trained:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "gD60bE8cXQId", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# We'll use Keras to create a simple model architecture\n", + "model_1 = tf.keras.Sequential()\n", + "\n", + "# First layer takes a scalar input and feeds it through 8 \"neurons\". The\n", + "# neurons decide whether to activate based on the 'relu' activation function.\n", + "model_1.add(keras.layers.Dense(8, activation='relu', input_shape=(1,)))\n", + "\n", + "# Final layer is a single neuron, since we want to output a single value\n", + "model_1.add(keras.layers.Dense(1))\n", + "\n", + "# Compile the model using a standard optimizer and loss function for regression\n", + "model_1.compile(optimizer='adam', loss='mse', metrics=['mae'])" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "O0idLyRLQeGj", + "colab_type": "text" + }, + "source": [ + "### 2. Train the Model\n", + "Once we've defined the model, we can use our data to _train_ it. Training involves passing an `x` value into the neural network, checking how far the network's output deviates from the expected `y` value, and adjusting the neurons' weights and biases so that the output is more likely to be correct the next time.\n", + "\n", + "Training runs this process on the full dataset multiple times, and each full run-through is known as an _epoch_. The number of epochs to run during training is a parameter we can set.\n", + "\n", + "During each epoch, data is run through the network in multiple _batches_. Each batch, several pieces of data are passed into the network, producing output values. These outputs' correctness is measured in aggregate and the network's weights and biases are adjusted accordingly, once per batch. The _batch size_ is also a parameter we can set.\n", + "\n", + "The code in the following cell uses the `x` and `y` values from our training data to train the model. It runs for 500 _epochs_, with 64 pieces of data in each _batch_. We also pass in some data for _validation_. As you will see when you run the cell, training can take a while to complete:\n", + "\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "p8hQKr4cVOdE", + "colab_type": "code", + "outputId": "5e9fcc84-1733-4786-8fde-ce47a510cde6", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + } + }, + "source": [ + "# Train the model on our training data while validating on our validation set\n", + "history_1 = model_1.fit(x_train, y_train, epochs=500, batch_size=64,\n", + " validation_data=(x_validate, y_validate))" + ], + "execution_count": 9, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Train on 600 samples, validate on 200 samples\n", + "Epoch 1/500\n", + "600/600 [==============================] - 1s 971us/sample - loss: 0.6936 - mae: 0.6897 - val_loss: 0.6396 - val_mae: 0.6501\n", + "Epoch 2/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.5965 - mae: 0.6254 - val_loss: 0.5594 - val_mae: 0.6035\n", + "Epoch 3/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.5240 - mae: 0.5830 - val_loss: 0.5021 - val_mae: 0.5765\n", + "Epoch 4/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.4724 - mae: 0.5549 - val_loss: 0.4634 - val_mae: 0.5615\n", + "Epoch 5/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.4392 - mae: 0.5390 - val_loss: 0.4375 - val_mae: 0.5533\n", + "Epoch 6/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.4174 - mae: 0.5305 - val_loss: 0.4215 - val_mae: 0.5487\n", + "Epoch 7/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.4026 - mae: 0.5244 - val_loss: 0.4119 - val_mae: 0.5464\n", + "Epoch 8/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.3939 - mae: 0.5225 - val_loss: 0.4057 - val_mae: 0.5452\n", + "Epoch 9/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.3880 - mae: 0.5216 - val_loss: 0.4015 - val_mae: 0.5439\n", + "Epoch 10/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.3836 - mae: 0.5210 - val_loss: 0.3981 - val_mae: 0.5425\n", + "Epoch 11/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.3802 - mae: 0.5205 - val_loss: 0.3950 - val_mae: 0.5412\n", + "Epoch 12/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.3770 - mae: 0.5200 - val_loss: 0.3922 - val_mae: 0.5400\n", + "Epoch 13/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.3741 - mae: 0.5189 - val_loss: 0.3894 - val_mae: 0.5385\n", + "Epoch 14/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.3712 - mae: 0.5173 - val_loss: 0.3866 - val_mae: 0.5368\n", + "Epoch 15/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.3686 - mae: 0.5162 - val_loss: 0.3837 - val_mae: 0.5354\n", + "Epoch 16/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.3655 - mae: 0.5143 - val_loss: 0.3808 - val_mae: 0.5335\n", + "Epoch 17/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.3627 - mae: 0.5122 - val_loss: 0.3777 - val_mae: 0.5314\n", + "Epoch 18/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.3597 - mae: 0.5101 - val_loss: 0.3748 - val_mae: 0.5296\n", + "Epoch 19/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.3567 - mae: 0.5080 - val_loss: 0.3717 - val_mae: 0.5276\n", + "Epoch 20/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.3538 - mae: 0.5059 - val_loss: 0.3686 - val_mae: 0.5256\n", + "Epoch 21/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.3507 - mae: 0.5037 - val_loss: 0.3654 - val_mae: 0.5234\n", + "Epoch 22/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.3477 - mae: 0.5012 - val_loss: 0.3622 - val_mae: 0.5211\n", + "Epoch 23/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.3447 - mae: 0.4993 - val_loss: 0.3591 - val_mae: 0.5195\n", + "Epoch 24/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.3414 - mae: 0.4970 - val_loss: 0.3558 - val_mae: 0.5172\n", + "Epoch 25/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.3385 - mae: 0.4949 - val_loss: 0.3526 - val_mae: 0.5153\n", + "Epoch 26/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.3352 - mae: 0.4926 - val_loss: 0.3493 - val_mae: 0.5130\n", + "Epoch 27/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.3321 - mae: 0.4904 - val_loss: 0.3461 - val_mae: 0.5110\n", + "Epoch 28/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.3288 - mae: 0.4880 - val_loss: 0.3429 - val_mae: 0.5087\n", + "Epoch 29/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.3257 - mae: 0.4854 - val_loss: 0.3395 - val_mae: 0.5064\n", + "Epoch 30/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.3227 - mae: 0.4831 - val_loss: 0.3362 - val_mae: 0.5041\n", + "Epoch 31/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.3195 - mae: 0.4806 - val_loss: 0.3330 - val_mae: 0.5018\n", + "Epoch 32/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.3165 - mae: 0.4782 - val_loss: 0.3298 - val_mae: 0.4996\n", + "Epoch 33/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.3133 - mae: 0.4760 - val_loss: 0.3267 - val_mae: 0.4976\n", + "Epoch 34/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.3103 - mae: 0.4738 - val_loss: 0.3235 - val_mae: 0.4952\n", + "Epoch 35/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.3072 - mae: 0.4713 - val_loss: 0.3203 - val_mae: 0.4930\n", + "Epoch 36/500\n", + "600/600 [==============================] - 0s 100us/sample - loss: 0.3042 - mae: 0.4694 - val_loss: 0.3173 - val_mae: 0.4913\n", + "Epoch 37/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.3012 - mae: 0.4673 - val_loss: 0.3141 - val_mae: 0.4890\n", + "Epoch 38/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.2981 - mae: 0.4651 - val_loss: 0.3111 - val_mae: 0.4869\n", + "Epoch 39/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.2952 - mae: 0.4625 - val_loss: 0.3078 - val_mae: 0.4841\n", + "Epoch 40/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.2921 - mae: 0.4602 - val_loss: 0.3049 - val_mae: 0.4822\n", + "Epoch 41/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.2891 - mae: 0.4585 - val_loss: 0.3021 - val_mae: 0.4810\n", + "Epoch 42/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.2861 - mae: 0.4568 - val_loss: 0.2991 - val_mae: 0.4790\n", + "Epoch 43/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.2832 - mae: 0.4546 - val_loss: 0.2961 - val_mae: 0.4767\n", + "Epoch 44/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.2803 - mae: 0.4523 - val_loss: 0.2931 - val_mae: 0.4741\n", + "Epoch 45/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.2775 - mae: 0.4503 - val_loss: 0.2902 - val_mae: 0.4723\n", + "Epoch 46/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.2746 - mae: 0.4482 - val_loss: 0.2873 - val_mae: 0.4701\n", + "Epoch 47/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.2719 - mae: 0.4464 - val_loss: 0.2846 - val_mae: 0.4685\n", + "Epoch 48/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.2691 - mae: 0.4444 - val_loss: 0.2818 - val_mae: 0.4666\n", + "Epoch 49/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.2663 - mae: 0.4425 - val_loss: 0.2791 - val_mae: 0.4646\n", + "Epoch 50/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.2636 - mae: 0.4404 - val_loss: 0.2764 - val_mae: 0.4625\n", + "Epoch 51/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.2610 - mae: 0.4382 - val_loss: 0.2736 - val_mae: 0.4599\n", + "Epoch 52/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.2583 - mae: 0.4361 - val_loss: 0.2711 - val_mae: 0.4580\n", + "Epoch 53/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.2558 - mae: 0.4344 - val_loss: 0.2685 - val_mae: 0.4561\n", + "Epoch 54/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.2532 - mae: 0.4326 - val_loss: 0.2659 - val_mae: 0.4539\n", + "Epoch 55/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.2508 - mae: 0.4307 - val_loss: 0.2634 - val_mae: 0.4518\n", + "Epoch 56/500\n", + "600/600 [==============================] - 0s 65us/sample - loss: 0.2483 - mae: 0.4288 - val_loss: 0.2609 - val_mae: 0.4499\n", + "Epoch 57/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.2459 - mae: 0.4271 - val_loss: 0.2586 - val_mae: 0.4485\n", + "Epoch 58/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.2436 - mae: 0.4255 - val_loss: 0.2561 - val_mae: 0.4464\n", + "Epoch 59/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.2411 - mae: 0.4239 - val_loss: 0.2540 - val_mae: 0.4451\n", + "Epoch 60/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.2387 - mae: 0.4220 - val_loss: 0.2516 - val_mae: 0.4431\n", + "Epoch 61/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.2365 - mae: 0.4202 - val_loss: 0.2493 - val_mae: 0.4411\n", + "Epoch 62/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.2343 - mae: 0.4186 - val_loss: 0.2472 - val_mae: 0.4395\n", + "Epoch 63/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.2322 - mae: 0.4169 - val_loss: 0.2450 - val_mae: 0.4375\n", + "Epoch 64/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.2301 - mae: 0.4151 - val_loss: 0.2428 - val_mae: 0.4355\n", + "Epoch 65/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.2280 - mae: 0.4134 - val_loss: 0.2408 - val_mae: 0.4338\n", + "Epoch 66/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.2260 - mae: 0.4118 - val_loss: 0.2388 - val_mae: 0.4323\n", + "Epoch 67/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.2241 - mae: 0.4104 - val_loss: 0.2369 - val_mae: 0.4308\n", + "Epoch 68/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.2222 - mae: 0.4089 - val_loss: 0.2351 - val_mae: 0.4293\n", + "Epoch 69/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.2204 - mae: 0.4076 - val_loss: 0.2334 - val_mae: 0.4280\n", + "Epoch 70/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.2188 - mae: 0.4062 - val_loss: 0.2314 - val_mae: 0.4255\n", + "Epoch 71/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.2168 - mae: 0.4043 - val_loss: 0.2297 - val_mae: 0.4246\n", + "Epoch 72/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.2151 - mae: 0.4031 - val_loss: 0.2280 - val_mae: 0.4231\n", + "Epoch 73/500\n", + "600/600 [==============================] - 0s 40us/sample - loss: 0.2135 - mae: 0.4019 - val_loss: 0.2265 - val_mae: 0.4224\n", + "Epoch 74/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.2120 - mae: 0.4007 - val_loss: 0.2247 - val_mae: 0.4203\n", + "Epoch 75/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.2102 - mae: 0.3992 - val_loss: 0.2233 - val_mae: 0.4194\n", + "Epoch 76/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.2087 - mae: 0.3980 - val_loss: 0.2216 - val_mae: 0.4178\n", + "Epoch 77/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.2071 - mae: 0.3965 - val_loss: 0.2199 - val_mae: 0.4158\n", + "Epoch 78/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.2056 - mae: 0.3951 - val_loss: 0.2185 - val_mae: 0.4144\n", + "Epoch 79/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.2044 - mae: 0.3938 - val_loss: 0.2170 - val_mae: 0.4122\n", + "Epoch 80/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.2029 - mae: 0.3926 - val_loss: 0.2159 - val_mae: 0.4123\n", + "Epoch 81/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.2015 - mae: 0.3915 - val_loss: 0.2145 - val_mae: 0.4108\n", + "Epoch 82/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.2002 - mae: 0.3902 - val_loss: 0.2131 - val_mae: 0.4091\n", + "Epoch 83/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1989 - mae: 0.3890 - val_loss: 0.2119 - val_mae: 0.4081\n", + "Epoch 84/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1977 - mae: 0.3878 - val_loss: 0.2107 - val_mae: 0.4071\n", + "Epoch 85/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1965 - mae: 0.3867 - val_loss: 0.2095 - val_mae: 0.4057\n", + "Epoch 86/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1953 - mae: 0.3857 - val_loss: 0.2082 - val_mae: 0.4044\n", + "Epoch 87/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1941 - mae: 0.3843 - val_loss: 0.2072 - val_mae: 0.4032\n", + "Epoch 88/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.1930 - mae: 0.3834 - val_loss: 0.2062 - val_mae: 0.4028\n", + "Epoch 89/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1920 - mae: 0.3825 - val_loss: 0.2053 - val_mae: 0.4018\n", + "Epoch 90/500\n", + "600/600 [==============================] - 0s 60us/sample - loss: 0.1913 - mae: 0.3819 - val_loss: 0.2046 - val_mae: 0.4018\n", + "Epoch 91/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1902 - mae: 0.3808 - val_loss: 0.2033 - val_mae: 0.3994\n", + "Epoch 92/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1892 - mae: 0.3796 - val_loss: 0.2025 - val_mae: 0.3989\n", + "Epoch 93/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1882 - mae: 0.3786 - val_loss: 0.2015 - val_mae: 0.3970\n", + "Epoch 94/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1875 - mae: 0.3776 - val_loss: 0.2006 - val_mae: 0.3959\n", + "Epoch 95/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.1870 - mae: 0.3768 - val_loss: 0.1998 - val_mae: 0.3941\n", + "Epoch 96/500\n", + "600/600 [==============================] - 0s 67us/sample - loss: 0.1861 - mae: 0.3760 - val_loss: 0.1992 - val_mae: 0.3947\n", + "Epoch 97/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1852 - mae: 0.3751 - val_loss: 0.1984 - val_mae: 0.3937\n", + "Epoch 98/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1843 - mae: 0.3742 - val_loss: 0.1980 - val_mae: 0.3939\n", + "Epoch 99/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1837 - mae: 0.3737 - val_loss: 0.1976 - val_mae: 0.3940\n", + "Epoch 100/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1832 - mae: 0.3733 - val_loss: 0.1970 - val_mae: 0.3936\n", + "Epoch 101/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.1828 - mae: 0.3727 - val_loss: 0.1960 - val_mae: 0.3910\n", + "Epoch 102/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1820 - mae: 0.3717 - val_loss: 0.1956 - val_mae: 0.3913\n", + "Epoch 103/500\n", + "600/600 [==============================] - 0s 64us/sample - loss: 0.1812 - mae: 0.3708 - val_loss: 0.1950 - val_mae: 0.3903\n", + "Epoch 104/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1806 - mae: 0.3701 - val_loss: 0.1946 - val_mae: 0.3898\n", + "Epoch 105/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.1802 - mae: 0.3695 - val_loss: 0.1939 - val_mae: 0.3886\n", + "Epoch 106/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1795 - mae: 0.3686 - val_loss: 0.1932 - val_mae: 0.3871\n", + "Epoch 107/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1790 - mae: 0.3679 - val_loss: 0.1928 - val_mae: 0.3866\n", + "Epoch 108/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1786 - mae: 0.3674 - val_loss: 0.1924 - val_mae: 0.3864\n", + "Epoch 109/500\n", + "600/600 [==============================] - 0s 40us/sample - loss: 0.1783 - mae: 0.3667 - val_loss: 0.1919 - val_mae: 0.3849\n", + "Epoch 110/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1781 - mae: 0.3666 - val_loss: 0.1919 - val_mae: 0.3861\n", + "Epoch 111/500\n", + "600/600 [==============================] - 0s 68us/sample - loss: 0.1774 - mae: 0.3658 - val_loss: 0.1912 - val_mae: 0.3843\n", + "Epoch 112/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1770 - mae: 0.3653 - val_loss: 0.1911 - val_mae: 0.3846\n", + "Epoch 113/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1766 - mae: 0.3647 - val_loss: 0.1906 - val_mae: 0.3833\n", + "Epoch 114/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.1763 - mae: 0.3642 - val_loss: 0.1903 - val_mae: 0.3831\n", + "Epoch 115/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1758 - mae: 0.3636 - val_loss: 0.1898 - val_mae: 0.3817\n", + "Epoch 116/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.1755 - mae: 0.3630 - val_loss: 0.1897 - val_mae: 0.3821\n", + "Epoch 117/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1752 - mae: 0.3627 - val_loss: 0.1893 - val_mae: 0.3810\n", + "Epoch 118/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1749 - mae: 0.3621 - val_loss: 0.1890 - val_mae: 0.3805\n", + "Epoch 119/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1747 - mae: 0.3617 - val_loss: 0.1888 - val_mae: 0.3802\n", + "Epoch 120/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1743 - mae: 0.3612 - val_loss: 0.1885 - val_mae: 0.3794\n", + "Epoch 121/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1743 - mae: 0.3610 - val_loss: 0.1885 - val_mae: 0.3803\n", + "Epoch 122/500\n", + "600/600 [==============================] - 0s 60us/sample - loss: 0.1740 - mae: 0.3608 - val_loss: 0.1884 - val_mae: 0.3802\n", + "Epoch 123/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1736 - mae: 0.3602 - val_loss: 0.1879 - val_mae: 0.3786\n", + "Epoch 124/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1737 - mae: 0.3597 - val_loss: 0.1876 - val_mae: 0.3765\n", + "Epoch 125/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1738 - mae: 0.3597 - val_loss: 0.1876 - val_mae: 0.3780\n", + "Epoch 126/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1734 - mae: 0.3591 - val_loss: 0.1872 - val_mae: 0.3762\n", + "Epoch 127/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1727 - mae: 0.3583 - val_loss: 0.1873 - val_mae: 0.3775\n", + "Epoch 128/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1726 - mae: 0.3583 - val_loss: 0.1872 - val_mae: 0.3776\n", + "Epoch 129/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.1724 - mae: 0.3579 - val_loss: 0.1869 - val_mae: 0.3763\n", + "Epoch 130/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1723 - mae: 0.3575 - val_loss: 0.1867 - val_mae: 0.3757\n", + "Epoch 131/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1722 - mae: 0.3573 - val_loss: 0.1866 - val_mae: 0.3759\n", + "Epoch 132/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1720 - mae: 0.3572 - val_loss: 0.1868 - val_mae: 0.3770\n", + "Epoch 133/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.1721 - mae: 0.3570 - val_loss: 0.1864 - val_mae: 0.3754\n", + "Epoch 134/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1717 - mae: 0.3566 - val_loss: 0.1864 - val_mae: 0.3754\n", + "Epoch 135/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1717 - mae: 0.3563 - val_loss: 0.1861 - val_mae: 0.3741\n", + "Epoch 136/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1715 - mae: 0.3559 - val_loss: 0.1861 - val_mae: 0.3744\n", + "Epoch 137/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1714 - mae: 0.3558 - val_loss: 0.1861 - val_mae: 0.3748\n", + "Epoch 138/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1713 - mae: 0.3555 - val_loss: 0.1859 - val_mae: 0.3737\n", + "Epoch 139/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.1712 - mae: 0.3551 - val_loss: 0.1857 - val_mae: 0.3731\n", + "Epoch 140/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1712 - mae: 0.3551 - val_loss: 0.1857 - val_mae: 0.3732\n", + "Epoch 141/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1710 - mae: 0.3547 - val_loss: 0.1856 - val_mae: 0.3724\n", + "Epoch 142/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1713 - mae: 0.3546 - val_loss: 0.1855 - val_mae: 0.3718\n", + "Epoch 143/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1711 - mae: 0.3545 - val_loss: 0.1857 - val_mae: 0.3740\n", + "Epoch 144/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1708 - mae: 0.3545 - val_loss: 0.1856 - val_mae: 0.3733\n", + "Epoch 145/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.1708 - mae: 0.3541 - val_loss: 0.1854 - val_mae: 0.3717\n", + "Epoch 146/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1707 - mae: 0.3539 - val_loss: 0.1854 - val_mae: 0.3720\n", + "Epoch 147/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.1706 - mae: 0.3539 - val_loss: 0.1854 - val_mae: 0.3725\n", + "Epoch 148/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.1706 - mae: 0.3537 - val_loss: 0.1853 - val_mae: 0.3722\n", + "Epoch 149/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1705 - mae: 0.3536 - val_loss: 0.1853 - val_mae: 0.3725\n", + "Epoch 150/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.1707 - mae: 0.3537 - val_loss: 0.1853 - val_mae: 0.3720\n", + "Epoch 151/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1704 - mae: 0.3532 - val_loss: 0.1851 - val_mae: 0.3704\n", + "Epoch 152/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1705 - mae: 0.3530 - val_loss: 0.1851 - val_mae: 0.3709\n", + "Epoch 153/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1703 - mae: 0.3529 - val_loss: 0.1851 - val_mae: 0.3714\n", + "Epoch 154/500\n", + "600/600 [==============================] - 0s 63us/sample - loss: 0.1703 - mae: 0.3530 - val_loss: 0.1852 - val_mae: 0.3720\n", + "Epoch 155/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1703 - mae: 0.3529 - val_loss: 0.1851 - val_mae: 0.3713\n", + "Epoch 156/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1702 - mae: 0.3526 - val_loss: 0.1850 - val_mae: 0.3711\n", + "Epoch 157/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.1701 - mae: 0.3526 - val_loss: 0.1852 - val_mae: 0.3719\n", + "Epoch 158/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1701 - mae: 0.3528 - val_loss: 0.1852 - val_mae: 0.3721\n", + "Epoch 159/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1705 - mae: 0.3528 - val_loss: 0.1849 - val_mae: 0.3698\n", + "Epoch 160/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1701 - mae: 0.3525 - val_loss: 0.1852 - val_mae: 0.3723\n", + "Epoch 161/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1701 - mae: 0.3528 - val_loss: 0.1851 - val_mae: 0.3721\n", + "Epoch 162/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1701 - mae: 0.3527 - val_loss: 0.1851 - val_mae: 0.3717\n", + "Epoch 163/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1701 - mae: 0.3527 - val_loss: 0.1852 - val_mae: 0.3722\n", + "Epoch 164/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1704 - mae: 0.3531 - val_loss: 0.1852 - val_mae: 0.3722\n", + "Epoch 165/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1700 - mae: 0.3525 - val_loss: 0.1847 - val_mae: 0.3697\n", + "Epoch 166/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1702 - mae: 0.3518 - val_loss: 0.1847 - val_mae: 0.3694\n", + "Epoch 167/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1704 - mae: 0.3519 - val_loss: 0.1847 - val_mae: 0.3680\n", + "Epoch 168/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1699 - mae: 0.3516 - val_loss: 0.1848 - val_mae: 0.3704\n", + "Epoch 169/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1700 - mae: 0.3522 - val_loss: 0.1851 - val_mae: 0.3718\n", + "Epoch 170/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1700 - mae: 0.3524 - val_loss: 0.1851 - val_mae: 0.3720\n", + "Epoch 171/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1699 - mae: 0.3522 - val_loss: 0.1848 - val_mae: 0.3702\n", + "Epoch 172/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1698 - mae: 0.3518 - val_loss: 0.1849 - val_mae: 0.3711\n", + "Epoch 173/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1699 - mae: 0.3521 - val_loss: 0.1849 - val_mae: 0.3710\n", + "Epoch 174/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1699 - mae: 0.3521 - val_loss: 0.1849 - val_mae: 0.3711\n", + "Epoch 175/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1700 - mae: 0.3518 - val_loss: 0.1847 - val_mae: 0.3699\n", + "Epoch 176/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1699 - mae: 0.3517 - val_loss: 0.1847 - val_mae: 0.3701\n", + "Epoch 177/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1702 - mae: 0.3524 - val_loss: 0.1852 - val_mae: 0.3721\n", + "Epoch 178/500\n", + "600/600 [==============================] - 0s 62us/sample - loss: 0.1700 - mae: 0.3523 - val_loss: 0.1849 - val_mae: 0.3710\n", + "Epoch 179/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3517 - val_loss: 0.1847 - val_mae: 0.3701\n", + "Epoch 180/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1703 - mae: 0.3515 - val_loss: 0.1846 - val_mae: 0.3681\n", + "Epoch 181/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3515 - val_loss: 0.1849 - val_mae: 0.3708\n", + "Epoch 182/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1698 - mae: 0.3518 - val_loss: 0.1850 - val_mae: 0.3715\n", + "Epoch 183/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1698 - mae: 0.3520 - val_loss: 0.1848 - val_mae: 0.3708\n", + "Epoch 184/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1698 - mae: 0.3516 - val_loss: 0.1846 - val_mae: 0.3690\n", + "Epoch 185/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1699 - mae: 0.3514 - val_loss: 0.1846 - val_mae: 0.3698\n", + "Epoch 186/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1700 - mae: 0.3517 - val_loss: 0.1848 - val_mae: 0.3706\n", + "Epoch 187/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.1696 - mae: 0.3513 - val_loss: 0.1846 - val_mae: 0.3693\n", + "Epoch 188/500\n", + "600/600 [==============================] - 0s 63us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1845 - val_mae: 0.3687\n", + "Epoch 189/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1698 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3675\n", + "Epoch 190/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.1699 - mae: 0.3510 - val_loss: 0.1845 - val_mae: 0.3688\n", + "Epoch 191/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1698 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3693\n", + "Epoch 192/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1698 - mae: 0.3512 - val_loss: 0.1848 - val_mae: 0.3706\n", + "Epoch 193/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1700 - mae: 0.3520 - val_loss: 0.1850 - val_mae: 0.3714\n", + "Epoch 194/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1698 - mae: 0.3513 - val_loss: 0.1845 - val_mae: 0.3684\n", + "Epoch 195/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.1697 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3687\n", + "Epoch 196/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3691\n", + "Epoch 197/500\n", + "600/600 [==============================] - 0s 76us/sample - loss: 0.1697 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3684\n", + "Epoch 198/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3683\n", + "Epoch 199/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.1698 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3703\n", + "Epoch 200/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3511 - val_loss: 0.1846 - val_mae: 0.3690\n", + "Epoch 201/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3694\n", + "Epoch 202/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3512 - val_loss: 0.1847 - val_mae: 0.3696\n", + "Epoch 203/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1697 - mae: 0.3513 - val_loss: 0.1850 - val_mae: 0.3708\n", + "Epoch 204/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3513 - val_loss: 0.1847 - val_mae: 0.3697\n", + "Epoch 205/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3685\n", + "Epoch 206/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.1699 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3669\n", + "Epoch 207/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3500 - val_loss: 0.1845 - val_mae: 0.3680\n", + "Epoch 208/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1846 - val_mae: 0.3687\n", + "Epoch 209/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3690\n", + "Epoch 210/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1698 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3687\n", + "Epoch 211/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1699 - mae: 0.3513 - val_loss: 0.1849 - val_mae: 0.3703\n", + "Epoch 212/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3510 - val_loss: 0.1846 - val_mae: 0.3693\n", + "Epoch 213/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3677\n", + "Epoch 214/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3681\n", + "Epoch 215/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1847 - val_mae: 0.3698\n", + "Epoch 216/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3702\n", + "Epoch 217/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3512 - val_loss: 0.1846 - val_mae: 0.3694\n", + "Epoch 218/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1847 - val_mae: 0.3699\n", + "Epoch 219/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.1696 - mae: 0.3511 - val_loss: 0.1847 - val_mae: 0.3700\n", + "Epoch 220/500\n", + "600/600 [==============================] - 0s 60us/sample - loss: 0.1697 - mae: 0.3513 - val_loss: 0.1848 - val_mae: 0.3705\n", + "Epoch 221/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3513 - val_loss: 0.1847 - val_mae: 0.3699\n", + "Epoch 222/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1698 - mae: 0.3515 - val_loss: 0.1848 - val_mae: 0.3707\n", + "Epoch 223/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3514 - val_loss: 0.1845 - val_mae: 0.3695\n", + "Epoch 224/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3691\n", + "Epoch 225/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3511 - val_loss: 0.1846 - val_mae: 0.3695\n", + "Epoch 226/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.1697 - mae: 0.3510 - val_loss: 0.1845 - val_mae: 0.3691\n", + "Epoch 227/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1698 - mae: 0.3513 - val_loss: 0.1846 - val_mae: 0.3699\n", + "Epoch 228/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1699 - mae: 0.3510 - val_loss: 0.1844 - val_mae: 0.3685\n", + "Epoch 229/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3510 - val_loss: 0.1845 - val_mae: 0.3691\n", + "Epoch 230/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1846 - val_mae: 0.3696\n", + "Epoch 231/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3689\n", + "Epoch 232/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3512 - val_loss: 0.1846 - val_mae: 0.3697\n", + "Epoch 233/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1698 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3689\n", + "Epoch 234/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3694\n", + "Epoch 235/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3511 - val_loss: 0.1846 - val_mae: 0.3693\n", + "Epoch 236/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1700 - mae: 0.3506 - val_loss: 0.1844 - val_mae: 0.3673\n", + "Epoch 237/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1698 - mae: 0.3502 - val_loss: 0.1844 - val_mae: 0.3676\n", + "Epoch 238/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1845 - val_mae: 0.3690\n", + "Epoch 239/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.1697 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3691\n", + "Epoch 240/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1844 - val_mae: 0.3676\n", + "Epoch 241/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1698 - mae: 0.3502 - val_loss: 0.1844 - val_mae: 0.3674\n", + "Epoch 242/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3507 - val_loss: 0.1847 - val_mae: 0.3696\n", + "Epoch 243/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.1697 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3685\n", + "Epoch 244/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3689\n", + "Epoch 245/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.1701 - mae: 0.3519 - val_loss: 0.1856 - val_mae: 0.3727\n", + "Epoch 246/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1701 - mae: 0.3519 - val_loss: 0.1850 - val_mae: 0.3708\n", + "Epoch 247/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3516 - val_loss: 0.1848 - val_mae: 0.3702\n", + "Epoch 248/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3508 - val_loss: 0.1844 - val_mae: 0.3671\n", + "Epoch 249/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1700 - mae: 0.3506 - val_loss: 0.1844 - val_mae: 0.3682\n", + "Epoch 250/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1844 - val_mae: 0.3676\n", + "Epoch 251/500\n", + "600/600 [==============================] - 0s 61us/sample - loss: 0.1697 - mae: 0.3504 - val_loss: 0.1844 - val_mae: 0.3676\n", + "Epoch 252/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1695 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3687\n", + "Epoch 253/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3507 - val_loss: 0.1847 - val_mae: 0.3698\n", + "Epoch 254/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3512 - val_loss: 0.1849 - val_mae: 0.3704\n", + "Epoch 255/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1698 - mae: 0.3514 - val_loss: 0.1848 - val_mae: 0.3700\n", + "Epoch 256/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3680\n", + "Epoch 257/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1844 - val_mae: 0.3679\n", + "Epoch 258/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3685\n", + "Epoch 259/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3689\n", + "Epoch 260/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1847 - val_mae: 0.3698\n", + "Epoch 261/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1847 - val_mae: 0.3698\n", + "Epoch 262/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1699 - mae: 0.3510 - val_loss: 0.1845 - val_mae: 0.3684\n", + "Epoch 263/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3685\n", + "Epoch 264/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3692\n", + "Epoch 265/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1698 - mae: 0.3513 - val_loss: 0.1848 - val_mae: 0.3700\n", + "Epoch 266/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3691\n", + "Epoch 267/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1847 - val_mae: 0.3696\n", + "Epoch 268/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.1697 - mae: 0.3507 - val_loss: 0.1845 - val_mae: 0.3681\n", + "Epoch 269/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3686\n", + "Epoch 270/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3699\n", + "Epoch 271/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.1699 - mae: 0.3516 - val_loss: 0.1848 - val_mae: 0.3701\n", + "Epoch 272/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1698 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3683\n", + "Epoch 273/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1848 - val_mae: 0.3699\n", + "Epoch 274/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1847 - val_mae: 0.3697\n", + "Epoch 275/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3690\n", + "Epoch 276/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1847 - val_mae: 0.3693\n", + "Epoch 277/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3679\n", + "Epoch 278/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3678\n", + "Epoch 279/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3687\n", + "Epoch 280/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3688\n", + "Epoch 281/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1698 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3700\n", + "Epoch 282/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1847 - val_mae: 0.3694\n", + "Epoch 283/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3688\n", + "Epoch 284/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1847 - val_mae: 0.3692\n", + "Epoch 285/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3682\n", + "Epoch 286/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1699 - mae: 0.3501 - val_loss: 0.1846 - val_mae: 0.3664\n", + "Epoch 287/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1698 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3682\n", + "Epoch 288/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3683\n", + "Epoch 289/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1695 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3690\n", + "Epoch 290/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3689\n", + "Epoch 291/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3694\n", + "Epoch 292/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1698 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3683\n", + "Epoch 293/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1701 - mae: 0.3513 - val_loss: 0.1850 - val_mae: 0.3705\n", + "Epoch 294/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1702 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3678\n", + "Epoch 295/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1849 - val_mae: 0.3702\n", + "Epoch 296/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3699\n", + "Epoch 297/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3509 - val_loss: 0.1847 - val_mae: 0.3691\n", + "Epoch 298/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1848 - val_mae: 0.3695\n", + "Epoch 299/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1847 - val_mae: 0.3690\n", + "Epoch 300/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3684\n", + "Epoch 301/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3685\n", + "Epoch 302/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1698 - mae: 0.3507 - val_loss: 0.1848 - val_mae: 0.3696\n", + "Epoch 303/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.1695 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3684\n", + "Epoch 304/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.1700 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3667\n", + "Epoch 305/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3498 - val_loss: 0.1845 - val_mae: 0.3679\n", + "Epoch 306/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.1699 - mae: 0.3509 - val_loss: 0.1850 - val_mae: 0.3706\n", + "Epoch 307/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3513 - val_loss: 0.1847 - val_mae: 0.3694\n", + "Epoch 308/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3682\n", + "Epoch 309/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3691\n", + "Epoch 310/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3680\n", + "Epoch 311/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1699 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3677\n", + "Epoch 312/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1694 - mae: 0.3502 - val_loss: 0.1847 - val_mae: 0.3692\n", + "Epoch 313/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1698 - mae: 0.3512 - val_loss: 0.1850 - val_mae: 0.3706\n", + "Epoch 314/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1698 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3678\n", + "Epoch 315/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3674\n", + "Epoch 316/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3680\n", + "Epoch 317/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3675\n", + "Epoch 318/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.1697 - mae: 0.3500 - val_loss: 0.1845 - val_mae: 0.3674\n", + "Epoch 319/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3499 - val_loss: 0.1845 - val_mae: 0.3672\n", + "Epoch 320/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3503 - val_loss: 0.1846 - val_mae: 0.3685\n", + "Epoch 321/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3507 - val_loss: 0.1847 - val_mae: 0.3695\n", + "Epoch 322/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1845 - val_mae: 0.3677\n", + "Epoch 323/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3676\n", + "Epoch 324/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3680\n", + "Epoch 325/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3690\n", + "Epoch 326/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3682\n", + "Epoch 327/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3682\n", + "Epoch 328/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3682\n", + "Epoch 329/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1695 - mae: 0.3503 - val_loss: 0.1846 - val_mae: 0.3684\n", + "Epoch 330/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3691\n", + "Epoch 331/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1699 - mae: 0.3512 - val_loss: 0.1847 - val_mae: 0.3697\n", + "Epoch 332/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3688\n", + "Epoch 333/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1702 - mae: 0.3514 - val_loss: 0.1847 - val_mae: 0.3696\n", + "Epoch 334/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1845 - val_mae: 0.3678\n", + "Epoch 335/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3680\n", + "Epoch 336/500\n", + "600/600 [==============================] - 0s 40us/sample - loss: 0.1697 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3675\n", + "Epoch 337/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3688\n", + "Epoch 338/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3688\n", + "Epoch 339/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1700 - mae: 0.3513 - val_loss: 0.1851 - val_mae: 0.3711\n", + "Epoch 340/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1846 - val_mae: 0.3689\n", + "Epoch 341/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1845 - val_mae: 0.3677\n", + "Epoch 342/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1701 - mae: 0.3509 - val_loss: 0.1848 - val_mae: 0.3700\n", + "Epoch 343/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1847 - val_mae: 0.3692\n", + "Epoch 344/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3682\n", + "Epoch 345/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1847 - val_mae: 0.3690\n", + "Epoch 346/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3511 - val_loss: 0.1851 - val_mae: 0.3711\n", + "Epoch 347/500\n", + "600/600 [==============================] - 0s 65us/sample - loss: 0.1697 - mae: 0.3513 - val_loss: 0.1849 - val_mae: 0.3701\n", + "Epoch 348/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1694 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3683\n", + "Epoch 349/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1696 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3672\n", + "Epoch 350/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.1698 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3684\n", + "Epoch 351/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3679\n", + "Epoch 352/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1695 - mae: 0.3504 - val_loss: 0.1847 - val_mae: 0.3692\n", + "Epoch 353/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1697 - mae: 0.3509 - val_loss: 0.1849 - val_mae: 0.3701\n", + "Epoch 354/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1847 - val_mae: 0.3689\n", + "Epoch 355/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3685\n", + "Epoch 356/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1701 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3664\n", + "Epoch 357/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1699 - mae: 0.3503 - val_loss: 0.1847 - val_mae: 0.3689\n", + "Epoch 358/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3684\n", + "Epoch 359/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1695 - mae: 0.3503 - val_loss: 0.1846 - val_mae: 0.3683\n", + "Epoch 360/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3681\n", + "Epoch 361/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3685\n", + "Epoch 362/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3676\n", + "Epoch 363/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1848 - val_mae: 0.3695\n", + "Epoch 364/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3688\n", + "Epoch 365/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1849 - val_mae: 0.3699\n", + "Epoch 366/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1849 - val_mae: 0.3701\n", + "Epoch 367/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3688\n", + "Epoch 368/500\n", + "600/600 [==============================] - 0s 39us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3688\n", + "Epoch 369/500\n", + "600/600 [==============================] - 0s 40us/sample - loss: 0.1698 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3678\n", + "Epoch 370/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1697 - mae: 0.3507 - val_loss: 0.1848 - val_mae: 0.3697\n", + "Epoch 371/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1698 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3683\n", + "Epoch 372/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3692\n", + "Epoch 373/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3689\n", + "Epoch 374/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3677\n", + "Epoch 375/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3691\n", + "Epoch 376/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3684\n", + "Epoch 377/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3678\n", + "Epoch 378/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1700 - mae: 0.3507 - val_loss: 0.1847 - val_mae: 0.3690\n", + "Epoch 379/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1695 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3670\n", + "Epoch 380/500\n", + "600/600 [==============================] - 0s 60us/sample - loss: 0.1696 - mae: 0.3501 - val_loss: 0.1846 - val_mae: 0.3683\n", + "Epoch 381/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1847 - val_mae: 0.3691\n", + "Epoch 382/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3690\n", + "Epoch 383/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3693\n", + "Epoch 384/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1850 - val_mae: 0.3703\n", + "Epoch 385/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.1699 - mae: 0.3510 - val_loss: 0.1847 - val_mae: 0.3689\n", + "Epoch 386/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1851 - val_mae: 0.3709\n", + "Epoch 387/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1698 - mae: 0.3512 - val_loss: 0.1846 - val_mae: 0.3688\n", + "Epoch 388/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3687\n", + "Epoch 389/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1697 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3700\n", + "Epoch 390/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1847 - val_mae: 0.3694\n", + "Epoch 391/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1701 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3666\n", + "Epoch 392/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3501 - val_loss: 0.1846 - val_mae: 0.3681\n", + "Epoch 393/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1848 - val_mae: 0.3698\n", + "Epoch 394/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1847 - val_mae: 0.3693\n", + "Epoch 395/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1699 - mae: 0.3507 - val_loss: 0.1845 - val_mae: 0.3675\n", + "Epoch 396/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1695 - mae: 0.3501 - val_loss: 0.1847 - val_mae: 0.3693\n", + "Epoch 397/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3698\n", + "Epoch 398/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3687\n", + "Epoch 399/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1695 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3673\n", + "Epoch 400/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1697 - mae: 0.3498 - val_loss: 0.1845 - val_mae: 0.3667\n", + "Epoch 401/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3498 - val_loss: 0.1845 - val_mae: 0.3681\n", + "Epoch 402/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1847 - val_mae: 0.3692\n", + "Epoch 403/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3687\n", + "Epoch 404/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1699 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3667\n", + "Epoch 405/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3500 - val_loss: 0.1846 - val_mae: 0.3683\n", + "Epoch 406/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1847 - val_mae: 0.3689\n", + "Epoch 407/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1695 - mae: 0.3504 - val_loss: 0.1847 - val_mae: 0.3684\n", + "Epoch 408/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3673\n", + "Epoch 409/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3499 - val_loss: 0.1846 - val_mae: 0.3678\n", + "Epoch 410/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3682\n", + "Epoch 411/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3499 - val_loss: 0.1846 - val_mae: 0.3668\n", + "Epoch 412/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3496 - val_loss: 0.1846 - val_mae: 0.3673\n", + "Epoch 413/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1698 - mae: 0.3508 - val_loss: 0.1852 - val_mae: 0.3710\n", + "Epoch 414/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1703 - mae: 0.3519 - val_loss: 0.1854 - val_mae: 0.3716\n", + "Epoch 415/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1695 - mae: 0.3511 - val_loss: 0.1846 - val_mae: 0.3686\n", + "Epoch 416/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.1696 - mae: 0.3499 - val_loss: 0.1845 - val_mae: 0.3666\n", + "Epoch 417/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1700 - mae: 0.3496 - val_loss: 0.1846 - val_mae: 0.3665\n", + "Epoch 418/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1694 - mae: 0.3497 - val_loss: 0.1847 - val_mae: 0.3687\n", + "Epoch 419/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1849 - val_mae: 0.3698\n", + "Epoch 420/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3509 - val_loss: 0.1850 - val_mae: 0.3702\n", + "Epoch 421/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1849 - val_mae: 0.3700\n", + "Epoch 422/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3686\n", + "Epoch 423/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3677\n", + "Epoch 424/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3498 - val_loss: 0.1845 - val_mae: 0.3668\n", + "Epoch 425/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3497 - val_loss: 0.1845 - val_mae: 0.3671\n", + "Epoch 426/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3497 - val_loss: 0.1846 - val_mae: 0.3676\n", + "Epoch 427/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3500 - val_loss: 0.1847 - val_mae: 0.3683\n", + "Epoch 428/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1847 - val_mae: 0.3686\n", + "Epoch 429/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1848 - val_mae: 0.3694\n", + "Epoch 430/500\n", + "600/600 [==============================] - 0s 40us/sample - loss: 0.1698 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3675\n", + "Epoch 431/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3498 - val_loss: 0.1846 - val_mae: 0.3675\n", + "Epoch 432/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1850 - val_mae: 0.3703\n", + "Epoch 433/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1699 - mae: 0.3514 - val_loss: 0.1853 - val_mae: 0.3713\n", + "Epoch 434/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1700 - mae: 0.3510 - val_loss: 0.1846 - val_mae: 0.3686\n", + "Epoch 435/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1699 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3689\n", + "Epoch 436/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1849 - val_mae: 0.3703\n", + "Epoch 437/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1847 - val_mae: 0.3696\n", + "Epoch 438/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3691\n", + "Epoch 439/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1695 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3682\n", + "Epoch 440/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1698 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3683\n", + "Epoch 441/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3670\n", + "Epoch 442/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3690\n", + "Epoch 443/500\n", + "600/600 [==============================] - 0s 82us/sample - loss: 0.1704 - mae: 0.3519 - val_loss: 0.1849 - val_mae: 0.3702\n", + "Epoch 444/500\n", + "600/600 [==============================] - 0s 62us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3685\n", + "Epoch 445/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1697 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3679\n", + "Epoch 446/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3673\n", + "Epoch 447/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1700 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3671\n", + "Epoch 448/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.1705 - mae: 0.3515 - val_loss: 0.1852 - val_mae: 0.3713\n", + "Epoch 449/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.1698 - mae: 0.3512 - val_loss: 0.1846 - val_mae: 0.3687\n", + "Epoch 450/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3682\n", + "Epoch 451/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1695 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3687\n", + "Epoch 452/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3681\n", + "Epoch 453/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3683\n", + "Epoch 454/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3686\n", + "Epoch 455/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1698 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3682\n", + "Epoch 456/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1698 - mae: 0.3508 - val_loss: 0.1847 - val_mae: 0.3695\n", + "Epoch 457/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1847 - val_mae: 0.3697\n", + "Epoch 458/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1695 - mae: 0.3507 - val_loss: 0.1845 - val_mae: 0.3684\n", + "Epoch 459/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3677\n", + "Epoch 460/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3692\n", + "Epoch 461/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1847 - val_mae: 0.3696\n", + "Epoch 462/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1846 - val_mae: 0.3692\n", + "Epoch 463/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1698 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3674\n", + "Epoch 464/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3685\n", + "Epoch 465/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3695\n", + "Epoch 466/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1698 - mae: 0.3513 - val_loss: 0.1850 - val_mae: 0.3706\n", + "Epoch 467/500\n", + "600/600 [==============================] - 0s 40us/sample - loss: 0.1698 - mae: 0.3512 - val_loss: 0.1847 - val_mae: 0.3698\n", + "Epoch 468/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1700 - mae: 0.3519 - val_loss: 0.1850 - val_mae: 0.3712\n", + "Epoch 469/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.1697 - mae: 0.3515 - val_loss: 0.1847 - val_mae: 0.3700\n", + "Epoch 470/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1695 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3683\n", + "Epoch 471/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.1697 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3675\n", + "Epoch 472/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3682\n", + "Epoch 473/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3689\n", + "Epoch 474/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1845 - val_mae: 0.3682\n", + "Epoch 475/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3683\n", + "Epoch 476/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.1695 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3697\n", + "Epoch 477/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3511 - val_loss: 0.1848 - val_mae: 0.3701\n", + "Epoch 478/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3512 - val_loss: 0.1848 - val_mae: 0.3702\n", + "Epoch 479/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3507 - val_loss: 0.1845 - val_mae: 0.3676\n", + "Epoch 480/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1699 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3669\n", + "Epoch 481/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3500 - val_loss: 0.1845 - val_mae: 0.3676\n", + "Epoch 482/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.1695 - mae: 0.3506 - val_loss: 0.1850 - val_mae: 0.3706\n", + "Epoch 483/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3516 - val_loss: 0.1853 - val_mae: 0.3716\n", + "Epoch 484/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1699 - mae: 0.3515 - val_loss: 0.1847 - val_mae: 0.3692\n", + "Epoch 485/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3687\n", + "Epoch 486/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1699 - mae: 0.3505 - val_loss: 0.1845 - val_mae: 0.3679\n", + "Epoch 487/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1695 - mae: 0.3506 - val_loss: 0.1848 - val_mae: 0.3698\n", + "Epoch 488/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1701 - mae: 0.3517 - val_loss: 0.1851 - val_mae: 0.3709\n", + "Epoch 489/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1698 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3678\n", + "Epoch 490/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3680\n", + "Epoch 491/500\n", + "600/600 [==============================] - 0s 42us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3683\n", + "Epoch 492/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1699 - mae: 0.3512 - val_loss: 0.1853 - val_mae: 0.3714\n", + "Epoch 493/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1698 - mae: 0.3513 - val_loss: 0.1848 - val_mae: 0.3697\n", + "Epoch 494/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1847 - val_mae: 0.3691\n", + "Epoch 495/500\n", + "600/600 [==============================] - 0s 41us/sample - loss: 0.1695 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3679\n", + "Epoch 496/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1846 - val_mae: 0.3684\n", + "Epoch 497/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1847 - val_mae: 0.3693\n", + "Epoch 498/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3699\n", + "Epoch 499/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1695 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3690\n", + "Epoch 500/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3681\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cRE8KpEqVfaS", + "colab_type": "text" + }, + "source": [ + "### 3. Plot Metrics" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SDsjqfjFm7Fz", + "colab_type": "text" + }, + "source": [ + "**1. Mean Squared Error**\n", + "\n", + "During training, the model's performance is constantly being measured against both our training data and the validation data that we set aside earlier. Training produces a log of data that tells us how the model's performance changed over the course of the training process.\n", + "\n", + "The following cells will display some of that data in a graphical form:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "CmvA-ksoln8r", + "colab_type": "code", + "outputId": "2796d3ca-deb7-4cf9-cc01-78df3cacf12a", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + } + }, + "source": [ + "# Draw a graph of the loss, which is the distance between\n", + "# the predicted and actual values during training and validation.\n", + "loss = history_1.history['loss']\n", + "val_loss = history_1.history['val_loss']\n", + "\n", + "epochs = range(1, len(loss) + 1)\n", + "\n", + "plt.plot(epochs, loss, 'g.', label='Training loss')\n", + "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n", + "plt.title('Training and validation loss')\n", + "plt.xlabel('Epochs')\n", + "plt.ylabel('Loss')\n", + "plt.legend()\n", + "plt.show()" + ], + "execution_count": 10, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\nEUlySgQiIklOiUBEJMlFOkYQnvjzcyAVuN/df1hv/s+Ak8LJ7sCh7t43yphEZP9VVFRQUlLCvn37\nWl5YEiorK4vs7GzS09NbvU5kiSC85O8cgptrlAArzGxheLVGANz9mrjlvw6MiSoeETlwJSUl9OrV\ni9zcXJq+r5Akmruzbds2SkpKGDJkSKvXi7JraDyw0d3fDC9INZ/gsgBNmUp4Qw8R6Vj27dtH//79\nlQQ6ODOjf//++91yizIRDKbuzTVKqHvzixpm9hFgCA2vshibf5mZFZlZ0ZYtWw4omOWbl3P7s7ez\nfPPylhcWkQaUBDqHA3mfOsp5BOcBj4S3KGzA3ecCcwHy8/P3+5oYyzcv5+TfnUx5VTkZqRksnraY\ngpyCllcUEUkCUbYI3qLuXZayafouSOcRYbfQ0uKllFeVU+VVlFeVs7R4aVS7EpEIbNu2jby8PPLy\n8hg0aBCDBw+umS4vL2923aKiIq6++uoW9zFx4sQ2iXXp0qWcccYZbbKt9hJli2AFMNTMhhAkgPOo\neyclAMI7Nx1CcFOKSBTmFpKRmlHTIijMLYxqVyISgf79+7NmzRoAZs+eTc+ePbnuuutq5ldWVpKW\n1vjXWX5+Pvn5+S3u44UXXmibYDuhyFoE7l4JXAUsAl4DHnb3dWZ2i5lNiVv0PGC+R3gZ1IKcAhZP\nW8ytJ92qbiGRdhL1uNz06dO54oormDBhAjNmzODFF1+koKCAMWPGMHHiRDZs2ADU/YU+e/ZsLrro\nIgoLCznqqKO4++67a7bXs2fPmuULCws599xzGT58OOeffz6xr6fHH3+c4cOHM3bsWK6++uoWf/l/\n8MEHnHXWWYwaNYrjjjuOtWvXAvDMM8/UtGjGjBnD7t27eeeddzjxxBPJy8vjE5/4BM8++2ybv2ZN\niXSMwN0fJ7hHanzZzfWmZ0cZQ0xBToESgEg7aa9xuZKSEl544QVSU1PZtWsXzz77LGlpaTz11FN8\n+9vf5i9/+UuDddavX8+SJUvYvXs3Rx99NFdeeWWDY+5Xr17NunXrOOKII5g0aRLPP/88+fn5XH75\n5SxbtowhQ4YwderUFuObNWsWY8aMYcGCBTz99NNMmzaNNWvWcOeddzJnzhwmTZrEnj17yMrKYu7c\nuXz2s5/lO9/5DlVVVZSWlrbZ69SSjjJYLCJdSGPjclEkgi984QukpqYCsHPnTi688EJef/11zIyK\niopG1zn99NPJzMwkMzOTQw89lPfee4/s7Ow6y4wfP76mLC8vj+LiYnr27MlRRx1Vc3z+1KlTmTt3\nbrPxPffcczXJ6FOf+hTbtm1j165dTJo0iWuvvZbzzz+fc845h+zsbMaNG8dFF11ERUUFZ511Fnl5\neQf12uwPXWJCRNpcbFwu1VIjHZfr0aNHzfObbrqJk046iVdeeYVHH320yWPpMzMza56npqZSWVl5\nQMscjJkzZ3L//fezd+9eJk2axPr16znxxBNZtmwZgwcPZvr06fzud79r0302Ry0CEWlzsXG5pcVL\nKcwtbJdu2Z07dzJ4cHCq0oMPPtjm2z/66KN58803KS4uJjc3l4ceeqjFdU444QTmzZvHTTfdxNKl\nSxkwYAC9e/fmjTfeYOTIkYwcOZIVK1awfv16unXrRnZ2NpdeeillZWWsWrWKadOmtXk9GqNEICKR\naO9xuRkzZnDhhRfy/e9/n9NPP73Nt9+tWzfuueceJk+eTI8ePRg3blyL68QGp0eNGkX37t357W9/\nC8Bdd93FkiVLSElJ4ZhjjuHUU09l/vz5/PjHPyY9PZ2ePXu2a4ug092zOD8/33VjGpH29dprr/Hx\nj3880WEk3J49e+jZsyfuzte+9jWGDh3KNddc0/KK7ayx98vMVrp7o8fRaoxARKSVfvWrX5GXl8cx\nxxzDzp07ufzyyxMdUptQ15CISCtdc801HbIFcLDUIhARSXJKBCIiSU6JQEQkySkRiIgkOSUCEenw\nTjrpJBYtWlSn7K677uLKK69scp3CwkJih5qfdtpp7Nixo8Eys2fP5s4772x23wsWLODVV2vusMvN\nN9/MU089tT/hN6ojXa5aiUBEOrypU6cyf/78OmXz589v1YXfILhqaN++fQ9o3/UTwS233MIpp5xy\nQNvqqJQIRKTDO/fcc3nsscdqbkJTXFzM22+/zQknnMCVV15Jfn4+xxxzDLNmzWp0/dzcXLZu3QrA\nbbfdxrBhwzj++ONrLlUNwTkC48aNY/To0Xz+85+ntLSUF154gYULF3L99deTl5fHG2+8wfTp03nk\nkUcAWLx4MWPGjGHkyJFcdNFFlJWV1exv1qxZHHvssYwcOZL169c3W79EX65a5xGIyH755jchvEdM\nm8nLg7vuanp+v379GD9+PE888QRnnnkm8+fP54tf/CJmxm233Ua/fv2oqqri5JNPZu3atYwaNarR\n7axcuZL58+ezZs0aKisrOfbYYxk7diwA55xzDpdeeikA3/3ud/n1r3/N17/+daZMmcIZZ5zBueee\nW2db+/btY/r06SxevJhhw4Yxbdo0fvnLX/LNb34TgAEDBrBq1Sruuece7rzzTu6///4m65foy1Un\nTYtgxw54/XWork50JCJyIOK7h+K7hR5++GGOPfZYxowZw7p16+p049T37LPPcvbZZ9O9e3d69+7N\nlCm198h65ZVXOOGEExg5ciTz5s1j3bp1zcazYcMGhgwZwrBhwwC48MILWbZsWc38c845B4CxY8dS\nXFzc7Laee+45LrjgAqDxy1Xffffd7Nixg7S0NMaNG8cDDzzA7Nmzefnll+nVq1ez226NpGkR3Hcf\nzJwJH34I3bsnOhqRzqu5X+5ROvPMM7nmmmtYtWoVpaWljB07lv/85z/ceeedrFixgkMOOYTp06c3\nefnplkyfPp0FCxYwevRoHnzwQZYuXXpQ8cYuZX0wl7GeOXMmp59+Oo8//jiTJk1i0aJFNZerfuyx\nx5g+fTrXXnvtQV+lNGlaBLEbEDVxrwoR6eB69uzJSSedxEUXXVTTGti1axc9evSgT58+vPfeezzx\nxBPNbuPEE09kwYIF7N27l927d/Poo4/WzNu9ezeHH344FRUVzJs3r6a8V69e7N69u8G2jj76aIqL\ni9m4cSMAv//97/nkJz95QHWLXa4aaPRy1TfccAPjxo1j/fr1bNq0icMOO4xLL72USy65hFWrVh3Q\nPuMlTYsgIyP4G441iUgnNHXqVM4+++yaLqLRo0czZswYhg8fTk5ODpMmTWp2/WOPPZYvfelLjB49\nmkMPPbTOpaRvvfVWJkyYwMCBA5kwYULNl/95553HpZdeyt13310zSAyQlZXFAw88wBe+8AUqKysZ\nN24cV1xxxQHVK9GXq06ay1Dfdx9ccQW89RYccUQEgYl0YboMdeeiy1A3QV1DIiKNUyIQEUlySgQi\n0iqdrRs5WR3I+6REICItysrKYtu2bUoGHZy7s23bNrKysvZrPR01JCItys7OpqSkhC1btiQ6FGlB\nVlYW2dnZ+7VO0iQCtQhEDlx6ejpDhgxJdBgSEXUNiYgkOSUCEZEkF2kiMLPJZrbBzDaa2cwmlvmi\nmb1qZuvM7I9RxaJEICLSuMjGCMwsFZgDfBooAVaY2UJ3fzVumaHAjcAkd99uZodGFY8SgYhI46Js\nEYwHNrr7m+5eDswHzqy3zKXAHHffDuDu70cVjI4aEhFpXJSJYDCwOW66JCyLNwwYZmbPm9k/zWxy\nVMHEWgR/fnkByzcvj2o3IiKdTqIHi9OAoUAhMBX4lZk1uLGomV1mZkVmVnSgxzG/snU1AA+//DdO\n/t3JSgYiIqEoE8FbQE7cdHZYFq8EWOjuFe7+H+DfBImhDnef6+757p4/cODAAwpmxbsvBNuqTKW8\nqpylxUsPaDsiIl1NlIlgBTDUzIaYWQZwHrCw3jILCFoDmNkAgq6iN6MI5vjcCQBYdSYZqRkU5hZG\nsRsRkU4nskTg7pXAVcAi4DXgYXdfZ2a3mFnsRqGLgG1m9iqwBLje3bdFEU9BbnAZ7jM+ejaLpy2m\nIKcgit2IiHQ6kV5iwt0fBx6vV3Zz3HMHrg0fkYodNVR45GcoyGl+WRGRZJLoweJ2o/MIREQap0Qg\nIpLkkiYRpIWdYEoEIiJ1JU0iMAuSgRKBiEhdSZMIIOgeUiIQEakrqRJBRoauNSQiUl9SJQK1CERE\nGlIiEBFJckoEIiJJLukSgcYIRETqSqpEkJmpRCAiUl/SJYKyskRHISLSsSgRiIgkOSUCEZEkl1SJ\nICsL9u1LdBQiIh1LUiUCtQhERBpSIhARSXJKBCIiSS7pEoHGCERE6kqqRJCVpRaBiEh9SZUI1DUk\nItJQ0iWCfWXV3P7s7SzfvDzR4YiIdAhJlQje37eZqsoUvrt4Fif/7mQlAxERkiwRlJRuBKC6Io3y\nqnKWFi9NbEAiIh1AUiWC4YflApBS3Z2M1AwKcwsTGo+ISEeQlugA2tPRg4YAcMOEm/nc2HEU5BQk\nOCIRkcRLqkSQmRn8vXzM1XwkJ7GxiIh0FEnVNRRLBDqpTESkVlIlgqys4K/OJRARqRVpIjCzyWa2\nwcw2mtnMRuZPN7MtZrYmfFwSZTyxFoESgYhIrcjGCMwsFZgDfBooAVaY2UJ3f7Xeog+5+1VRxRFP\niUBEpKEoWwTjgY3u/qa7lwPzgTMj3F+LYl1De/cmMgoRkY4lykQwGNgcN10SltX3eTNba2aPmFmj\nx/KY2WVmVmRmRVu2bDnggLp3D/4qEYiI1Er0YPGjQK67jwL+Afy2sYXcfa6757t7/sCBAw94Zz16\nBH8//PCANyEi0uVEmQjeAuJ/4WeHZTXcfZu7x3rs7wfGRhiPEoGISCOiTAQrgKFmNsTMMoDzgIXx\nC5jZ4XGTU4DXIoynpmuotDTKvYiIdC6RHTXk7pVmdhWwCEgFfuPu68zsFqDI3RcCV5vZFKAS+ACY\nHlU8oBaBiEhjIr3EhLs/Djxer+zmuOc3AjdGGUO8zExISVEiEBGJl+jB4nZlFrQKlAhERGolVSKA\nYJxAYwQiIrWSLhGoRSAiUlfSJQLL+JDV/92g21SKiISSKhEs37ycNz98hVff3qR7FouIhJIqESwt\nXoqnfQjl3XXPYhGRUFIlgsLcQlIy90JFD92zWEQklFSJoCCngE8Nm8CA9CNZPG2x7lksIkKSJQKA\nIYcNIK2iv5KAiEgo6RJB376wc2eioxAR6TiSMhHs3au7lImIxCRlIgC1CkREYlqVCMysh5mlhM+H\nmdkUM0uPNrRoxBLBjh2JjUNEpKNobYtgGZBlZoOBJ4ELgAejCipKSgQiInW1NhGYu5cC5wD3uPsX\ngGOiCys6sUSwfXti4xAR6ShanQjMrAA4H3gsLEuNJqRoxRLBg8sX6BITIiK0PhF8k+AGMn8L7zJ2\nFLAkurCis/HDIgAeWrlI1xsSEaGVicDdn3H3Ke5+RzhovNXdr444tkis3hHkL9/bR9cbEhGh9UcN\n/dHMeptZD+AV4FUzuz7a0KLx6aOPh4w9WOkgXW9IRITWdw2NcPddwFnAE8AQgiOHOp2JRxaQMziV\nT3T7jK43JCJC629enx6eN3AW8At3rzAzjzCuSB11ZDeqK0ZQkJPoSEREEq+1LYL7gGKgB7DMzD4C\n7IoqqKgdcQS8/XaioxAR6RhaO1h8t7sPdvfTPLAJOCni2CJz+OFBIvBO26YREWk7rR0s7mNmPzWz\novDxE4LWQadU3r2YvXvhyVdeTHQoIiIJ19quod8Au4Evho9dwANRBRWl5ZuXM/c/MwA4c871Oo9A\nRJJeaxPBR919lru/GT6+BxwVZWBRWVq8lMr+awEof3eoziMQkaTX2kSw18yOj02Y2SRgbzQhRasw\nt5CMASWQtpfUrZ/QeQQikvRae/joFcDvzKxPOL0duDCakKJVkFPA09P/wbl/2MHh/hUKcvq0vJKI\nSBfW2qOGXnL30cAoYJS7jwE+FWlkESrIKeALpx7OulV92Lcv0dGIiCTWft2hzN13hWcYA1zb0vJm\nNtnMNpjZRjOb2cxynzczN7P8/YnnYAwetZ59+2DuX19tr12KiHRIB3OrSmt2plkqMAc4FRgBTDWz\nEY0s1wv4BvCvg4hlvyzfvJybN02CzJ1ce+dKHTkkIkntYBJBS6djjQc2hkcZlQPzgTMbWe5W4A6g\n3TpplhYvpSJ1J3ziT1S9fC4Li1a0165FRDqcZhOBme02s12NPHYDR7Sw7cHA5rjpkrAsfvvHAjnu\n/hjNMLPLYiezbdmypYXdtqwwt5CM1Axs0k+gOp0Vf+60J0mLiBy0ZhOBu/dy996NPHq5e2uPOGpU\neF+DnwLfamlZd5/r7vnunj9w4MCD2S0QDBbfNfku0gZsgtG/Z/GfP8b/e3HlQW9XRKQzOpiuoZa8\nBcRf3zM7LIvpBXwCWGpmxcBxwML2GjDeVrqNquoqOPF74CncMiu9PXYrItLhRJkIVgBDzWyImWUA\n5wELYzPdfae7D3D3XHfPBf4JTHH3oghjqtG/e3+qqYZDNsFxd7F60UhWrWqPPYuIdCyRJQJ3rwSu\nAhYBrwEPh/c7vsXMpkS139baVrqNFAurf8LtZPbaw7e+pSuSikjyibJFgLs/7u7D3P2j7n5bWHaz\nuy9sZNnC9moNQDBgnJYSDnNk7aT8xBtZuhQWNohMRKRrizQRdGQFOQWc9rHTaqarx9zLITnvcP31\nUF6ewMBERNpZ0iYCgEE9B9VOpFYx/Mv38/rrcM89iYtJRKS9JXUimDZ6GukptUcL/avb9/j4hBJu\nvRV2ddobcYqI7J+kTgQFOQVcPObimulqqtiQdw4ffAA//WkCAxMRaUdJnQggaBWkWmrNdPXhKzhi\nwgv85CewdWsCAxMRaSdJnwgKcgr43NGfq1P2Tv6llJY6P/xhgoISEWlHSZ8IAGZMnEFK3EvhA18l\n+4Sn+cUvoKQkgYGJiLQDJQKCVsGU4XXPcftv3iVUVlXxgx8kKCgRkXaiRBCaMXFGnbECDimmOu9X\n/Or+ajZtSlxcIiJRUyIIFeQUcM/p92Bx99vxE75PtVdx660JDExEJGJKBHEuG3sZZw6Pu3dOn7fw\nsffy4IPOxo2Ji0tEJEpKBPXU7yLy42/HUiu55ZYEBiUiEiElgnoKcgr41sS4e+X0eocxU5Yzbx6s\nX5+4uEREoqJE0Ii+mX3rjBUUHfUF0jMr+N73EhiUiEhElAgaUZhbSGpKXPdQ9/cpz/8JDz3kvPJK\nAgMTEYmAEkEjCnIKmHPanLpHEBX8iNSsvcyalcDAREQioETQhAZHEHXfTuX4O/nrX2H16sTFJSLS\n1pQImtHgJLPjfgpZ27l6xgeJC0pEpI0pETQjdpJZzb2Nu+2EiT/huaf68eKLiY1NRKStKBG04LKx\nl3HdxOtqCyb8nG69P+TmmxMXk4hIW1IiaIU6h5Nm7mHfhFtYtAiefz6xcYmItAUlglYozC2s7R4C\nfNz/ktlnOzfdlMCgRETaiBJBKzS4eU3GXsqOu4UlS2DJksTFJSLSFpQIWqnBEUT5v4Reb3HNDbtw\nT1xcIiIHS4mglRpcpjq9DE64jZdW9OYf/0hsbCIiB0OJYD80OMns2F/TbcD73HQTahWISKelRLCf\nZkycQXpKejCRVk75pJt48UV47LHExiUicqCUCPZTQU4Bpw89vWa6atRv6H7ou9x8s1oFItI5KREc\ngEE9B9VOpFZSOnEmq1fDggWJi0lE5EBFmgjMbLKZbTCzjWY2s5H5V5jZy2a2xsyeM7MRUcbTVqaN\nnlb3CKKRf4D+G7juxlKqqxMXl4jIgYgsEZhZKjAHOBUYAUxt5Iv+j+4+0t3zgB8BP40qnrbU4Aii\n1CoonM2bG7rz8MOJjU1EZH9F2SIYD2x09zfdvRyYD5wZv4C774qb7AF0ml72BkcQHfMQHPYS35qx\nj7KyxMUlIrK/okwEg4HNcdMlYVkdZvY1M3uDoEVwdWMbMrPLzKzIzIq2bNkSSbAHYsbEGaTEXsIU\nh89cx9ubs5gzJ7FxiYjsj4QPFrv7HHf/KHAD8N0mlpnr7vnunj9w4MD2DbAZBTkFTBk+pbbgo09x\n6OhV3HorfKBbFohIJxFlIngLyImbzg7LmjIfOCvCeCJR57wCYOukr7BzVzXf/34CgxIR2Q9RJoIV\nwFAzG2JmGcB5wML4BcxsaNzk6cDrEcYTiYKcAi4ec3HNdPWhayHvAf73F9W8+WYCAxMRaaXIEoG7\nVwJXAYuA14CH3X2dmd1iZrH+lKvMbJ2ZrQGuBS6MKp4o1T+c1AtvwlPKufHGBAYlItJK5p3sdNj8\n/HwvKipKdBgNnP3Q2SxYH3dG2ZLZ8MwsnnkGTjwxYWGJiABgZivdPb+xeQkfLO4qGlymetId0LeY\n6ZeWUlGRuLhERFqiRNBGGpxklrEXJl/Nf/7dnZ//PLGxiYg0R4mgDTU4yWz4ozDsUW6eVUVJSeLi\nEhFpjhJBG6tzkhnAqVdTVlHJNdckLiYRkeYoEbSxBieZHVJM9Qm38sgjsGhR4uISEWmKEkEEGgwc\nT/wx9N/AJVfsZd++xMUlItIYJYIINBg4TiuH075GSXE3nXEsIh2OEkFEGgwcf3QxjP4tP/yhs2pV\n4uISEalPiSBCDQaOJ3+T9F7b+cpXoLw8cXGJiMRTIohQg4HjbjvYN/krrF0Lt9+euLhEROIpEUSs\nwcDx8IXYqD9w663Os88mLjsiRB8AAA89SURBVC4RkRglgog1GDgG/LSvkjXwHc47D95/P4HBiYig\nRNAuGgwcZ+2m9KzT2bqtmgsugKqqxMUmIqJE0E7qDxz7oDWMuOBennwSfvCDBAYmIklPiaCdNBg4\nBtYMvorxp77O7NmwZEli4hIRUSJoRw0Gjs0pGpNPzlGlTJ0K776buNhEJHkpEbSjxgaOqzN2MWDa\nV9m1C778ZY0XiEj7UyJoZw0GjoGV1b+l8Kt/ZskSuOoq6GQ3jRORTk6JIAFmTJxRp1UA8H+9vsTk\n6au591747ncTFJiIJCUlggQoyCng+knX1ylznCdzx3Hml9/jBz+An/wkQcGJSNJRIkiQO065gxmT\nZtQpq6aKfx93Cp86fSvXXQe/+U2CghORpKJEkEB3nHIHZw0/q07Zax+8wrKxH2H8iTu49FL4858T\nFJyIJA0lggRrcEgpUJlSSvrULzFxIpx3HjzwQIKCE5GkoESQYI0dUgrw/HtPkj/ju3z603DRRTBn\nToICFJEuT4mgA7hs7GXce8a9DcrvWnUbx1z9baZMCQ4rveYaqKxMQIAi0qUpEXQQl429rMHgMcBP\nV9zOsK/eyNVXw113wWc/C1u2JCBAEemylAg6kMaOJAK4858/5Jhpc3ngAXj+eRg7FlasSECAItIl\nKRF0ME0lg8v/fjmvZd/A889DSgocfzzcfbfOQhaRgxdpIjCzyWa2wcw2mtnMRuZfa2avmtlaM1ts\nZh+JMp7O4o5T7uDEj5zYoPxHz/+In236H4qK4NOfhm98I0gIah2IyMGILBGYWSowBzgVGAFMNbMR\n9RZbDeS7+yjgEeBHUcXT2fzw5B+SnpLeoHzey/P4/N8/ybfvWc6vfw0bN8L48XDBBVBSkoBARaTT\ni7JFMB7Y6O5vuns5MB+oc7U1d1/i7qXh5D+B7Ajj6VQKcgp4ZvoznHhkw5bBsk3LOOHB46kcPZfX\nX4eZM4MTz4YNg1mzYPv2BAQsIp1WlIlgMLA5brokLGvKxcATjc0ws8vMrMjMirYk0SEzBTkFPPOV\nZzh/5PkN5lV7NZf//XJue/EGbr8d1q+HKVPgllvg8MODS1o/9BDs25eAwEWkU+kQg8Vm9j9APvDj\nxua7+1x3z3f3/IEDB7ZvcB3AH875Q6MDyBCMG+Tdm8c7qcuZPx/WrIFLLoFFi4Kzko8+Ojj/4KWX\n2jloEek0okwEbwE5cdPZYVkdZnYK8B1giruXRRhPp3bHKXdw3xn31bnvccxL773ExN9M5JMPfpLS\nfsv5xS/g/fdh4UIYMSI4KzkvD0aPhm9/Gx55BP77Xx1xJCIB84i+DcwsDfg3cDJBAlgBfNnd18Ut\nM4ZgkHiyu7/emu3m5+d7UVFRBBF3Dss3L2fmUzNZ9t9lTS5z1vCzmDFxBgU5BQBs2wZ/+hM8/DAs\nX157dvKgQVBYCOPGwTHHBElj0CBIbzhGLSKdnJmtdPf8RudFlQjCHZ8G3AWkAr9x99vM7BagyN0X\nmtlTwEjgnXCV/7r7lCY2BygRxPzPX/+HeS/Pa3K+YVw/6XruOOWOOuW7dsFrrwUnpq1cCUuXwttv\n11134MDgpLWcHOjZE7Kzg+e9ekGfPnDoodCvH/TuDal1r5cnIh1UwhJBFJQIas1dOZcfPPsDNu3c\n1OQyg3oOYlj/YYwYMIJpo6fVtBLibdkCr74aPLZuhTfegLVrg+6jvXuhtLSRDYe6dQtOcKuuDhJF\nz56QlhY8UlNr/6amQvfusGcPZGZCVlbwyMyEiopgHwMHBoPbGRnw3ntBohk0CN55J1iuT59gn/36\nBa2aHTuCI6SGDQvK3YNHdXXt8/rT6enB361bg+cpKcHDLHg09TwzM3iUlQXr7dwZHLr71lswalQQ\ne1ZWUF5aGtS1Tx8oLw/qnJ5eu355ebBsaWlQVlkZ7KNbt2C5qqrg4V4bQ0xlZfB6pKUF01lZwXrV\n1cFrnJ4OmzbBkUcGr2NZWdBNmJMTbMs92HZpafBeZWQ0/r5WVwfvS1kZFBfDkCHB652REew/KyvY\n5t69QXl6OvTvXzdWs4bbjX1WqquD57E6xeoce93jHxC8zykpwX5ij5SUIMZYvGa1P0yKioLpsWOD\n7e7cGcR6+OHBuhUVtZ+HsrJgbG3IEBgwoPY9r/8Z+O9/g+0fdlhtWWVl8Jnt3TvYfmyb770X7KO6\nOthuamowr6IiqEtWFvTtG7y2778PI0fChx8Grfejjgp+rPXsGcSTlRWsl5YGX/wiTJzY9P9jc5QI\nurgbnrqBHz//Y5yW38u8QXkcN/i4JpNCY7ZsCT7Yu3YF/1Dvvx98mHftgt27g3+0tLRges+e2n/s\n+L/V1fDBB3DIIbX/PLFHamrwBbNzZ/Chj/1jlZfDu+/CEUcE/wg7dgTxbN8e7K9Xr2C9t9+u/YeN\n/8dtbDr2BTBwYG1c9ZNFY8/37QviycwM/vbpE8R9xBFBnbdsCZbp2zdIArt2BV+26enBP3R5eW0C\nSE8PvjS6dw/WiXXFxfYRS5xmtTHEf6n27h3UPyMj2E7syDD3YJ/Z2cHrVlkZxNuzZ/Cexb8esaTc\n1EUMzWq/cPv1CxLnIYcEr1/v3sH8zZuhR4+gvLw8eH9jGvtaidUlvm7udX8sQLBMLBHGkkbfvsG8\nioraR3V17WsXn+SqqoIfB/v2BefWpKYG62dmBp+V2Hqxz0NKCnzsY8EXfWy7jf2QiP3oKSurrV9q\navCe7toV/I3NP/TQYF5KSu14nFlQ10MOCb709+wJluvdO/hBkZER7GPr1iABxH5wxD4jFRXws5/B\nxRe36t+2kfdUiaDLW755OT96/kcs2LCg1esM7TeUtJQ0jh5wdJ0xBWlc7J9ZpDNSIkgirRlMbsqg\nnoPISsuib1ZfyirLGNhjYLNdSiLSeSgRJKFYC2H1u6ubHUNoraH9hlJeVY6Z0TerL9v3bq95XlZZ\nRmZaZk3ZkX2OVAIR6WCUCJJcWyeF/bE/CaT+/PZYVvvovPF0lX20dtmD/YGlRCA1Yklhw7YNVFZX\n8voHrTp9Q0Q6iMzUTJZcuGS/k0FziSCtTSKTTqMgp4C/nfe3munlm5fzu5d+x6tbXmXTzk11foW0\nd+tBRFpWXlXO0uKlbdrtqkSQ5ApyCpr8QMW3HpprusY3bcuqynh3z7vtXAuR5JGRmkFhbmGbblOJ\nQJpUv/XQWgeSQLpyH3BX2UdHi6er7KO9xgiao0Qgbe5AE4iIJEaHuAy1iIgkjhKBiEiSUyIQEUly\nSgQiIklOiUBEJMkpEYiIJLlOd4kJM9sCHOgprwOArW0YTmegOicH1Tk5HEydP+LuAxub0ekSwcEw\ns6KmrrXRVanOyUF1Tg5R1VldQyIiSU6JQEQkySVbIpib6AASQHVODqpzcoikzkk1RiAiIg0lW4tA\nRETqUSIQEUlySZEIzGyymW0ws41mNjPR8bQVM/uNmb1vZq/ElfUzs3+Y2evh30PCcjOzu8PXYK2Z\nHZu4yA+cmeWY2RIze9XM1pnZN8LyLltvM8sysxfN7KWwzt8Ly4eY2b/Cuj1kZhlheWY4vTGcn5vI\n+A+GmaWa2Woz+3s43aXrbGbFZvayma0xs6KwLPLPdpdPBGaWCswBTgVGAFPNbERio2ozDwKT65XN\nBBa7+1BgcTgNQf2Hho/LgF+2U4xtrRL4lruPAI4Dvha+n1253mXAp9x9NJAHTDaz44A7gJ+5+8eA\n7cDF4fIXA9vD8p+Fy3VW3wBei5tOhjqf5O55cecLRP/Zdvcu/QAKgEVx0zcCNyY6rjasXy7wStz0\nBuDw8PnhwIbw+X3A1MaW68wP4P8Bn06WegPdgVXABIIzTNPC8prPObAIKAifp4XLWaJjP4C6Zodf\nfJ8C/g5YEtS5GBhQryzyz3aXbxEAg4HNcdMlYVlXdZi7vxM+fxc4LHze5V6HsPk/BvgXXbzeYRfJ\nGuB94B/AG8AOd68MF4mvV02dw/k7gf7tG3GbuAuYAVSH0/3p+nV24EkzW2lml4VlkX+2davKLszd\n3cy65PHBZtYT+AvwTXffZWY187pivd29Csgzs77A34DhCQ4pUmZ2BvC+u680s8JEx9OOjnf3t8zs\nUOAfZrY+fmZUn+1kaBG8BeTETWeHZV3Ve2Z2OED49/2wvMu8DmaWTpAE5rn7X8PiLl9vAHffASwh\n6Bbpa2axH3Px9aqpczi/D7CtnUM9WJOAKWZWDMwn6B76OV27zrj7W+Hf9wkS/nja4bOdDIlgBTA0\nPNogAzgPWJjgmKK0ELgwfH4hQR96rHxaeKTBccDOuOZmp2HBT/9fA6+5+0/jZnXZepvZwLAlgJl1\nIxgTeY0gIZwbLla/zrHX4lzgaQ87kTsLd7/R3bPdPZfgf/Zpdz+fLlxnM+thZr1iz4HPAK/QHp/t\nRA+OtNMAzGnAvwn6Vb+T6HjasF5/At4BKgj6By8m6BddDLwOPAX0C5c1gqOn3gBeBvITHf8B1vl4\ngn7UtcCa8HFaV643MApYHdb5FeDmsPwo4EVgI/BnIDMszwqnN4bzj0p0HQ6y/oXA37t6ncO6vRQ+\n1sW+q9rjs61LTIiIJLlk6BoSEZFmKBGIiCQ5JQIRkSSnRCAikuSUCEREkpwSgUjIzKrCqz7GHm12\npVozy7W4q8SKdCS6xIRIrb3unpfoIETam1oEIi0IrxH/o/A68S+a2cfC8lwzezq8FvxiMzsyLD/M\nzP4W3j/gJTObGG4q1cx+Fd5T4MnwLGHM7GoL7q+w1szmJ6iaksSUCERqdavXNfSluHk73X0k8AuC\nq2IC/C/wW3cfBcwD7g7L7wae8eD+AccSnCUKwXXj57j7McAO4PNh+UxgTLidK6KqnEhTdGaxSMjM\n9rh7z0bKiwluDPNmeMG7d929v5ltJbj+e0VY/o67DzCzLUC2u5fFbSMX+IcHNxfBzG4A0t39+2b2\nf8AeYAGwwN33RFxVkTrUIhBpHW/i+f4oi3teRe0Y3ekE14w5FlgRd3VNkXahRCDSOl+K+7s8fP4C\nwZUxAc4Hng2fLwauhJobyvRpaqNmlgLkuPsS4AaCyyc3aJWIREm/PERqdQvvAhbzf+4eO4T0EDNb\nS/CrfmpY9nXgATO7HtgCfCUs/wYw18wuJvjlfyXBVWIbkwr8IUwWBtztwT0HRNqNxghEWhCOEeS7\n+9ZExyISBXUNiYgkObUIRESSnFoEIiJJTolARCTJKRGIiCQ5JQIRkSSnRCAikuT+P9hMeDL/0YJT\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iOFBSbPcYCN4", + "colab_type": "text" + }, + "source": [ + "The graph shows the _loss_ (or the difference between the model's predictions and the actual data) for each epoch. There are several ways to calculate loss, and the method we have used is _mean squared error_. There is a distinct loss value given for the training and the validation data.\n", + "\n", + "As we can see, the amount of loss rapidly decreases over the first 25 epochs, before flattening out. This means that the model is improving and producing more accurate predictions!\n", + "\n", + "Our goal is to stop training when either the model is no longer improving, or when the _training loss_ is less than the _validation loss_, which would mean that the model has learned to predict the training data so well that it can no longer generalize to new data.\n", + "\n", + "To make the flatter part of the graph more readable, let's skip the first 50 epochs:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Zo0RYroFZYIV", + "colab_type": "code", + "outputId": "5844429f-cb52-41e0-c41c-52485efcd0ac", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + } + }, + "source": [ + "# Exclude the first few epochs so the graph is easier to read\n", + "SKIP = 50\n", + "\n", + "plt.plot(epochs[SKIP:], loss[SKIP:], 'g.', label='Training loss')\n", + "plt.plot(epochs[SKIP:], val_loss[SKIP:], 'b.', label='Validation loss')\n", + "plt.title('Training and validation loss')\n", + "plt.xlabel('Epochs')\n", + "plt.ylabel('Loss')\n", + "plt.legend()\n", + "plt.show()" + ], + "execution_count": 11, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\ncuXKzi6GiEi3YmbxI+jrqIlJREQSUoAQEZGEFCBERCShHpODEJGOd/DgQbZv387+/fub3lk6VWZm\nJtnZ2fTu3bvZxyhAiEirbd++nX79+pGTk0PDz3uSzubuVFZWsn37dkaMGNHs49TEJCKttn//frKy\nshQcujgzIysrq8U1PQUIoKwMfvaz4LuItIyCQ/fQms8p5ZuYyspg4kSoqoKMDCgpgUik6eNERHq6\nlK9BlJYGwaGmJvheWtrZJRKR5qqsrCQvL4+8vDyGDBnCsGHD6parqqoaPXblypV897vfbfI9xo8f\n3y5lLS0t5ZJLLmmXc3WUlK9BFBYGNYdoDaKwsLNLJCLNlZWVRXl5OQB33nknffv25aabbqrbXl1d\nTa9eif/MFRQUUFBQ0OR7vPrqq+1T2G4o5WsQkUjQrPSjH6l5SaQjlG0r42fLf0bZtuQk/aZPn84N\nN9zAWWedxc0338xf//pXIpEI+fn5jB8/ns2bNwP1/6O/8847mTFjBoWFhZx44oncd999defr27dv\n3f6FhYVceeWVnHrqqVx99dVEZ8N+9tlnOfXUUxkzZgzf/e53m6wpfPzxx1x22WWcccYZnH322axb\ntw6Al156qa4GlJ+fz549e9ixYwfnnnsueXl5fOELX2D58uXtfs8akvI1CBHpOGXbypi4cCJVNVVk\npGdQUlRCZHj7/1e2fft2Xn31VdLT09m9ezfLly+nV69evPDCC/zbv/0bixcvPuyYTZs2sXTpUvbs\n2cMpp5zCrFmzDhszsGbNGjZs2MBxxx3HhAkTeOWVVygoKOD6669n2bJljBgxgqlTpzZZvjvuuIP8\n/HyWLFnCiy++SFFREeXl5dx7773MmzePCRMmsHfvXjIzMykuLubLX/4yt912GzU1Nezbt6/d7lNT\nUj5AKEkt0nFKK0qpqqmixmuoqqmitKI0KQHiK1/5Cunp6QB8+umnTJs2jTfffBMz4+DBgwmPufji\ni+nTpw99+vThmGOO4YMPPiA7O7vePuPGjatbl5eXR0VFBX379uXEE0+sG18wdepUiouLGy3fyy+/\nXBekvvSlL1FZWcnu3buZMGEC3//+97n66qu54ooryM7OZuzYscyYMYODBw9y2WWXkZeX16Z70xIp\n38SkJLVIxynMKSQjPYN0SycjPYPCnMKkvM9RRx1V9/r222/n/PPP5/XXX+epp55qcCxAnz596l6n\np6dTXV3dqn3a4tZbb+VXv/oVn332GRMmTGDTpk2ce+65LFu2jGHDhjF9+nQWLlzYru/ZmJSvQShJ\nLdJxIsMjlBSVUFpRSmFOYVJqD/E+/fRThg0bBsBvfvObdj//Kaecwttvv01FRQU5OTk89thjTR5z\nzjnn8Mgjj3D77bdTWlrKoEGD6N+/P2+99Ra5ubnk5uayYsUKNm3axBFHHEF2djbXXXcdBw4cYPXq\n1RQVFbX7dSSS8gEimqQuLQ2Cg5qXRJIrMjzSIYEh6uabb2batGn8+Mc/5uKLL2738x9xxBHcf//9\nXHjhhRx11FGMHTu2yWOiSfEzzjiDI488kgULFgAwd+5cli5dSlpaGqeffjqTJk1i0aJF3HPPPfTu\n3Zu+fft2aA2ixzyTuqCgwNvywKCyMgUJkZZ64403OO200zq7GJ1u79699O3bF3fnW9/6FiNHjuR7\n3/teZxfrMIk+LzNb5e4J+/umfA0ClKgWkbZ56KGHWLBgAVVVVeTn53P99dd3dpHahQIEiRPVChAi\n0lzf+973umSNoa1SvhcTHEpUp6crUS0iEqUaBEpUi4gkogARigaF6DgIBQkRSXUKECElqkVE6lMO\nIqQR1SLdz/nnn8/zzz9fb93cuXOZNWtWg8cUFhYS7RJ/0UUXsWvXrsP2ufPOO7n33nsbfe8lS5aw\ncePGuuUf/vCHvPDCCy0pfkJdaVpwBYiQEtUi3c/UqVNZtGhRvXWLFi1q1oR5EMzCOmDAgFa9d3yA\nuOuuu7jgggtada6uSgEipGm/RTpGez7i98orr+SZZ56pezhQRUUF7733Hueccw6zZs2ioKCA008/\nnTvuuCPh8Tk5OXz00UcA/OQnP+Hkk0/mi1/8Yt2U4BCMcRg7diyjR49mypQp7Nu3j1dffZUnn3yS\nH/zgB+Tl5fHWW28xffp0nnjiCQBKSkrIz88nNzeXGTNmcODAgbr3u+OOOzjzzDPJzc1l06ZNjV5f\nZ08LrgAhIh0mmuu7/fbge1uDxMCBAxk3bhzPPfccENQevvrVr2Jm/OQnP2HlypWsW7eOl156qe6P\nayKrVq1i0aJFlJeX8+yzz7JixYq6bVdccQUrVqxg7dq1nHbaaTz88MOMHz+eyZMnc88991BeXs7n\nP//5uv3379/P9OnTeeyxx1i/fj3V1dX88pe/rNs+aNAgVq9ezaxZs5psxopOC75u3Tp++tOf1s3B\nFJ0WvLy8nOXLl3PEEUfw6KOP8uUvf5ny8nLWrl3bLrO+KkCE2vsHV0QOl4xcX2wzU2zz0uOPP86Z\nZ55Jfn4+GzZsqNccFG/58uVcfvnlHHnkkfTv35/JkyfXbXv99dc555xzyM3N5ZFHHmHDhg2Nlmfz\n5s2MGDGCk08+GYBp06axbNmyuu1XXHEFAGPGjKGioqLRc7388st885vfBBJPC37fffexa9cuevXq\nxdixY5k/fz533nkn69evp1+/fo2euzkUIEJKUoskXzJyfZdeeiklJSWsXr2affv2MWbMGP7+979z\n7733UlJSwrp167j44osbnOa7KdOnT+cXv/gF69ev54477mj1eaKiU4a3ZbrwjpoWXAEipCS1SPIl\nI9fXt29fzj//fGbMmFFXe9i9ezdHHXUURx99NB988EFdE1RDzj33XJYsWcJnn33Gnj17eOqpp+q2\n7dmzh6FDh3Lw4EEeeeSRuvX9+vVjz549h53rlFNOoaKigi1btgDw29/+lvPOO69V1xadFhxIOC34\nLbfcwtixY9m0aRNbt27l2GOP5brrruPaa69l9erVrXrPWBoHQfAYxNLqUuY+eglrns/t7OKI9GiR\nSPt3Apk6dSqXX355XVPT6NGjyc/P59RTT2X48OFMmDCh0ePPPPNMvva1rzF69GiOOeaYelN2/+hH\nP+Kss85i8ODBnHXWWXVB4aqrruK6667jvvvuq0tOA2RmZjJ//ny+8pWvUF1dzdixY7nhhhtadV2d\nPS14Uqf7NrMLgf8E0oFfufv/i9v+feBaoBrYCcxw963htuOBXwHDAQcucveKht6rtdN9xz4jN/3d\nL2ILS6g+mK7BciLNoOm+u5eWTvedtCYmM0sH5gGTgFHAVDMbFbfbGqDA3c8AngDmxGxbCNzj7qcB\n44APk1HO2GfkHnxrAlVVpjyEiAjJzUGMA7a4+9vuXgUsAi6N3cHdl7r7vnDxNSAbIAwkvdz9z+F+\ne2P2a1exz8jt/flXyMhw5SFEREhuDmIYsC1meTtwViP7XwNEM0knA7vM7H+AEcALwK3uXhN7gJnN\nBGYCHH/88a0qZPwzcpmerlldRVrA3TGzzi6GNKE16YQu0YvJzL4BFAD3hKt6AecANwFjgROB6fHH\nuXuxuxe4e8HgwYPbpSyRSBAcSks1FkKkKZmZmVRWVrbqj490HHensrKSzMzMFh2XzBrEuwQJ5qjs\ncF09ZnYBcBtwnrsfCFdvB8rd/e1wnyXA2cDD7V3I2CR1RnoGc0//C7O/nqtZXUWaITs7m+3bt7Nz\n587OLoo0ITMzk+zs7BYdk8wAsQIYaWYjCALDVcDXY3cws3zgQeBCd/8w7tgBZjbY3XcCXwJa3kWp\nGWKT1FU1VSx+rlKPHxVppt69ezNixIjOLoYkSdKamNy9Gvg28DzwBvC4u28ws7vMLDqO/R6gL/A7\nMys3syfDY2sImpdKzGw9YMBDyShnbJI6Iz2DKZOyNGBORIQkj4PoSK0dBwHhQLkwSR0ZHqG4GBYv\nhilTYObMdi6oiEgX0tg4CI2kJujJBEFz0/pVfZk9O8hBLF8OublqYhKR1KQAQf1Etb38GbVVX6C2\nxpSDEJGU1iW6uXa22ER17Qkvkt6rWjkIEUl5qkFwKFFdVVNFRs5q5i7aROUbuRosJyIpTQGCw0dT\nR4bnUnbsobmYFCREJBUpQIQOS1RrsJyIpDgFiJAS1SIi9SlJHVKiWkSkPtUgQokS1Xq6nIikMo2k\njhE7oprtESZORHkIEenROuWJct1daSmHTdonIpJK1MQUSjTtd0bGoZ5MykOISKpRDSIUP+13ZdbT\nzJ0LEyfC3LlqXhKR1KMaRKhekjo9g6zKS5g9G03aJyIpSwEiFB1NvXDtQgDWLO+vBweJSEpTgIiz\nYO0CqmqqSN/1Br16lwDpykGISEpSgIgRm4dg2Mtc9x+PwLqizi6WiEinUJI6RvzjR/OH5rNgATz0\nUJCsLivr7BKKiHQc1SBixM/qWvpfucpDiEjKUoCIEzura9ZpfTUWQkRSlgJEnPoD5n7E3Ef/ojmZ\nRCQlKQcRJ37A3Joda5SHEJGUpAARJz5RTcV5mpNJRFKSAkScyPAIcy+cy8QRE5l74VyKLjuBjAz0\nbAgRSTnKQcQp21bG7D/OpqqmiuXvLKekKJeSkgilpUFwUC8mEUkVqkHEic9BlFaUdnaRREQ6hWoQ\ncRJN2jfx63pwkIikHgWIOBosJyISUIBIINFguQMHwAyysjq5cCIiHSSpOQgzu9DMNpvZFjO7NcH2\n75vZRjNbZ2YlZnZC3Pb+ZrbdzH6RzHLGiw6Wu33p7czecBbf+eFbpKdDbS3Mnq2xECKSGpIWIMws\nHZgHTAJGAVPNbFTcbmuAAnc/A3gCmBO3/UfAsmSVsSHxieryv2+jtjYIEBoLISKpIpk1iHHAFnd/\n292rgEXApbE7uPtSd98XLr4GZEe3mdkY4FjgT0ksY0Lxg+WmTMrSWAgRSTnJzEEMA7bFLG8Hzmpk\n/2uA5wDMLA34d+AbwAUNHWBmM4GZAMcff3wbi3tI/NPlckfvpaQEFi5st7cQEenyukSS2sy+ARQA\n54WrbgSedfftZtbgce5eDBQDFBQUeHuXK/p0uQVrFzD39L+wYEHQo2nBAnV3FZGeL5kB4l1geMxy\ndriuHjO7ALgNOM/dD4SrI8A5ZnYj0BfIMLO97n5YojtZ4vMQi5+rVHdXEUkpycxBrABGmtkIM8sA\nrgKejN3BzPKBB4HJ7v5hdL27X+3ux7t7DnATsLAjgwMoDyEikrQahLtXm9m3geeBdODX7r7BzO4C\nVrr7k8A9BDWE34VNSe+4++Rklakl4gfMRYbnkqs8hIikkKTmINz9WeDZuHU/jHndYAI6Zp/fAL9p\n77K11oIFKA8hIimhSySpu6L6T5bLCGoTpRHlIUQkZWg21wYkmtW1sDDIQZgF35WHEJGeTAGiAfFJ\n6sKcQiAIDrHfRUR6KjUxNSB+sBwETUrV1eAefFcTk4j0ZAoQTYgfLJeRkVv3bAg1MYlIT6YA0Yj4\nPERl1tOUlOSqq6uIpATlIBrRUB5iwQJ46CGYOFFTf4tIz6UaRCMaykOoq6uIpAIFiGZIlIfQE+ZE\npKdTE1MTEuUh5s5FT5gTkR5PAaIJifIQlZXoCXMi0uOpiakJkeER5l44l8UbFzNl1BQiwyNQGHRz\nVXdXEenJFCCaULatjNl/nE1VTRXL31lO7jG5RCIR5s6FxYthyhQlqUWkZ1KAaEKiOZnYHmH27KAG\nsXw55OYqSIhIz6McRBMS5SASdXUVEelpVINoQqKxEIWFQe5BXV1FpCdTDaKZFqxdwEOrH2LiwomQ\nXaauriLS4ylANEOiPIS6uopIT6cmpmaI5iGiT5crzCmEXmpmEpGeTTWIZojmIa478zqmjZ4WrIug\nZiYR6dEUIFogNg9Rtq1MzUwi0qM1K0CY2VFmlha+PtnMJptZ7+QWrWvRM6pFJNU0twaxDMg0s2HA\nn4BvAr9JVqG6omgeIo00zIysI4Okg55RLSI9VXMDhLn7PuAK4H53/wpwevKK1fVE52RKT0un1muZ\n/cfZLFyy9bBnVIuI9BTNDhBmFgGuBp4J16Unp0hdV+W+Smq9llqvpaqmCnJeIiMD0tLUk0lEep7m\nBojZwP8Bfu/uG8zsRGBp8orVNcVPu1F0yUj1ZBKRHqtZ4yDc/SXgJYAwWf2Ru383mQXrihJN/V2a\noCeTJu4TkZ6gWQHCzB4FbgBqgBVAfzP7T3e/J5mF62oSTf1dWBjRgDkR6ZGa28Q0yt13A5cBzwEj\nCHoypZREXV01YE5EeqrmBoje4biHy4An3f0g4E0dZGYXmtlmM9tiZrcm2P59M9toZuvMrMTMTgjX\n55lZmZltCLd9rSUXlSwNdXXVgDkR6YmaGyAeBCqAo4Bl4R/y3Y0dYGbpwDxgEjAKmGpmo+J2WwMU\nuPsZwBPAnHD9PqDI3U8HLgTmmtmAZpY1aRJ1dS3bVqYBcyLSIzUrQLj7fe4+zN0v8sBW4PwmDhsH\nbHH3t929ClgEXBp33qXh+AqA14DscP3f3P3N8PV7wIfA4GZfVRLFd3UtrSgFNGBORHqe5k61cbSZ\n/YeZrQy//p2gNtGYYcC2mOXt4bqGXEOQ34h/73FABvBWgm0zo2XauXNnk9fRHhI1M5WWogFzItLj\nNLeJ6dfAHuCr4dduYH57FcLMvgEUAPfErR8K/Bb4Z3evjT/O3YvdvcDdCwYP7pgKRqJmpqzT1mvA\nnIj0OM0NEJ939zvC5qK33f3/Aic2ccy7wPCY5exwXT1mdgFwGzDZ3Q/ErO9PMGr7Nnd/rZnl7BDx\nzUyVWU+rJ5OI9DjNDRCfmdkXowtmNgH4rIljVgAjzWyEmWUAVwFPxu5gZvkECfDJ7v5hzPoM4PfA\nQnd/opll7DDxI6oLcwrVk0lEepzmPlHuBmChmR0dLn8CTGvsAHevNrNvA88TzNv063CajruAle7+\nJEGTUl/gdxZkd99x98kEzVjnAllmNj085XR3L2/+pSVPohHVFOoJcyLSs5h7k8MZDu0cNPvg7rvN\nbLa7z01ayVqooKDAV65c2SHvVbatjIkLJ9Y9grSkqITI8AjFxfDtb0NNDfTpAyUlmnZDRLo2M1vl\n7gWJtrXoiXLuvjscUQ3w/TaXrJtKNKIaggFzNTVBM9OBA2pmEpHurS2PHE3ZHv8NjajOygqCAwTf\n1cwkIt1ZWwJE89umepiGRlRXVgZdXSHIQ6xZ07nlFBFpi0YDhJntMbPdCb72AMd1UBm7pEQjqgsL\noVeY9neH+fPV3VVEuq9GA4S793P3/gm++rl7c3tA9UiJmpkiEZgx49B0GxpVLSLdWVuamFJaQ81M\nRUWQmalR1SLS/SlAtEGiZiY9H0JEegoFiDYozCkkPS0dw0hPS6cwpxBQd1cR6RkUINrIwt6+FtPr\nV91dRaQnUIBog9KKUqprq3Gc6trqegPmot1d09KCZRGR7kYBog0STdoHwRPl+vQJgkNammoQItI9\nKUC0QWR4hJKiEq478zqmjT40d6ES1SLSEyhAtIMFaxfw0OqHmLhwImXbgkgQO/33/v2wcGEnF1JE\npIUUINooduK+/dX7Wbg2iASFhUENAjSqWkS6JwWINop2dQVwnPnl8ynbVlY3qjrq4EF1dxWR7kUB\noo0iwyPMyJtR1801tjdTfv6h/dTdVUS6GwWIdlA0uoje6b0TDpjT7K4i0l0pQLSTRAPmNLuriHRn\nChDtoKEBc/Gzu1ZVqTeTiHQfChDtoKEnzAEUFUHv3sFr1SJEpDtRgGgHDU39Dag3k4h0WwoQ7SR2\n6u/Y8RBweG+mXbs6oYAiIi2kANFOGhoPAUFvJjuUu+bnP1czk4h0fQoQ7aSx8RCxo6oheFaEmplE\npKtTgGhHDY2HiERg3rwgWW2mGV5FpHtQgGhnicZDAMycCb/4RRAcamrgO99RM5OIdG0KEO2oofEQ\nUWvWBMHBXWMiRKTrU4BoR42Nh0jk/fc7qGAiIq2gANGOGhsPAfUHzQE895yamUSk60pqgDCzC81s\ns5ltMbNbE2z/vpltNLN1ZlZiZifEbJtmZm+GX9Pij+2qGhsPEYnANddo6g0R6R6SFiDMLB2YB0wC\nRgFTzWxU3G5rgAJ3PwN4ApgTHjsQuAM4CxgH3GFmn0tWWdtTY+Mh4PCpNx5+WLUIEemaklmDGAds\ncfe33b0KWARcGruDuy91933h4mtAdvj6y8Cf3f1jd/8E+DNwYRLL2m4aGw8BQS3ioosO7X/wIMyZ\n08GFFBFphmQGiGHAtpjl7eG6hlwDPNeSY81sppmtNLOVO3fubGNx209D4yGihgypv/9TT6kWISJd\nT5dIUpvZN4AC4J6WHOfuxe5e4O4FgwcPTk7hWqmh8RAQNDPFjqyurVUuQkS6nmQGiHeB4THL2eG6\neszsAuA2YLK7H2jJsV1V7HiIqpqqeolqCJqZ7r//UJBwhwcfhFtu6YTCiog0IJkBYgUw0sxGmFkG\ncBXwZOwOZpYPPEgQHD6M2fQ88E9m9rkwOf1P4bpuoalENQQjq6+77tCye5CLUJAQka4iaQHC3auB\nbxP8YX8DeNzdN5jZXWY2OdztHqAv8DszKzezJ8NjPwZ+RBBkVgB3heu6haYS1VFFRYeeWR11773K\nR4hI15DUHIS7P+vuJ7v75939J+G6H7p7NBBc4O7Hunte+DU55thfu/tJ4df8ZJYzGYpGF5HZK7PR\nUdWRCNx00+HHaqZXEekKulUTuBQAABKJSURBVESSuidqalR11N13w803169J6IFCItIVKEAkUeW+\nSmpqa6j1Wg5UH0jYzARBkIjWJGprlYsQka5BASKJso7MopZaAGqpbXTyvvLy+sv33APFxcksnYhI\n4xQgkqhyXyVpFtxiw1izY02D+06ZUn/ZHW68UQlrEek8ChBJVJhTSK+0XkDD3V2jZs4MchGxamo0\ngE5EOo8CRBLFd3dNNGgu1t13w2WX1V+nZ0aISGdRgEiy6LxM0HQtAoJaROwzI/7wByWsRaRzKEAk\nWbQWEXWw5mCDvZng0DMjoqIjrM87T/kIEelYChAdIH9oft3rWmrZdaDxgQ6JRlgvWwbnn68gISId\nRwGiA1Tuq6w3q+vPy37eaDNTQyOsDxxQ0lpEOo4CRAeInbwPgrmZGktWw6ER1vE066uIdBQFiA4Q\nGR5h3kXzSLfGZ3iNd/fdcMMN9dcpJyEiHUUBooPMHDOT6848NL93U8nqqKIiyMg4fP2yZQoSIpJc\nChAdKD5Z3djUG1GRSDC767nnHr7t4EG49loFCRFJDgWIDtSSqTdiRSLw0kuJcxIbN8KECXD55QoU\nItK+FCA6UEum3kjk7ruDJLXFPebaHZYsUaAQkfalANGBWjr1RiIzZ8IDDxweJOBQoBg/XvkJEWk7\nBYgOFj/1xsNrHm5RLQIOBYn4wXSxli0LAkV+PsyapWAhIi2nANHBIsMjXHTSRXXLB2sPMueVOS0+\nz8yZ8PLLweR+iWoTUeXlQTAZPx5GjFATlIg0nwJEJxjSd0i95af+9lSLaxEQJK9//3t45ZVgvERe\nXuP7V1QcaoI6+WQYNSpoilIN45CyMvjZz3Q/RADM3Tu7DO2ioKDAV65c2dnFaJaybWWcM/8carwG\nCHo0XT/men55yS/bfO7iYvjpT2Hr1pYfm5MDAwYEU3r06RN8Hzw42LZ/P4wcCW++CVVVwdiMa64J\najLFxbB4cRCgdu8O9s/Ph8pKKCwMlktLg9eRyOHvW1bW8PbGtrW3sjKYODG47rQ0mDcvuL6OVlZ2\naEqVoqLm3bP2uk+JztOa92ppeaL7Z2Ud+rlp63XE3kMIBpi+996hn9umjmns/VtzfS05d3zZo+8V\n+7q9fh/MbJW7FyTcpgDROYpXFXPjMzfWBYk+6X1YOm0pkeHt86kXF8PcubBpU5C8TpZ+/WDPnsb3\nMQvKkJYGZ5xRPwBVV8NbbwXP4jaDk06CXr2C7Z98Au+8ExxrBiec0HAA27nz0LrWft+1C3bsqF/2\nkSMPlac152xp+T755PDgnqgM69YdumfHHgsffnhoOdF9ak75En0WVVX1P4Pmvlds+ZoqzyefwLZt\nwf6xPzOxx7XkPlZXw5Ytjf/cx9/TRMck+oepoZ/L449vuHytPXf870/s6/j7c8opQTf41gQNBYgu\natbTs3hw1YM43q61iFjR/0Y2boS//U0PIBLpqXr3DsZLtTRINBYglIPoRO3Ro6kpkQj88pfBD86O\nHcE4inHjguagE05oPMEtIt3HwYNB81N7Ug2ik12+6HKWbF5St3zZKZfx+6t+32HvH1vDSFQ9Hjw4\nyCvENhkMGwbbt3dYEUWkGZJRg+jVHgWT1ovv0fSHzX+geFUxM8d0THY0EmlZEjE2UTlnDmzeHLR/\nTpoEa8KZQ/r3D7rXDh4cJLUzM2HgwGDbxx8fHogyMuonwOMD1MCBiY9r7xxEtCzRJ/o9/PDh5Ul2\nDiJ6zKhRwX0sLW34nsTez6buU3PLl+iziD93cz6Txj7vhsoRPSbRcS29jxkZwc/q7t3BPz/79wef\na25uw/8QxR/T2HsluieNla8l5479fYqWPfqZRH+X4u9PW3IQjVENopPF92gCSLd0lv/z8nZLWIuI\nNEQ5iC4sMjzC/RffX++JczVe06rBcyIi7UkBoguYOWYml556ab11rR08JyLSXpIaIMzsQjPbbGZb\nzOzWBNvPNbPVZlZtZlfGbZtjZhvM7A0zu8+sZ/e3uXn8zXVPnAPVIkSk8yUtQJhZOjAPmASMAqaa\n2ai43d4BpgOPxh07HpgAnAF8ARgLnJessnYF0aamtJiPZMnmJRSvKu7EUolIKktmDWIcsMXd33b3\nKmARUK8dxd0r3H0dUBt3rAOZQAbQB+gNfJDEsnYJM8fMpOC4+rmih1c/3EmlEZFUl8wAMQzYFrO8\nPVzXJHcvA5YCO8Kv5939jfj9zGymma00s5U7d+5shyJ3vmvOvKbe8or3VnDLC7d0UmlEJJV1ySS1\nmZ0EnAZkEwSVL5nZOfH7uXuxuxe4e8HgaEfkbm7mmJlcdupldcuOM+eVOZz3m/OUtBaRDpXMAPEu\nMDxmOTtc1xyXA6+5+1533ws8B6TMoICbx99c9+zqqGVbl3H+gvMVJESkwyQzQKwARprZCDPLAK4C\nnmzmse8A55lZLzPrTZCgPqyJqaeKDI9w0/ibDlt/oOYApRWlHV8gEUlJSQsQ7l4NfBt4nuCP++Pu\nvsHM7jKzyQBmNtbMtgNfAR40sw3h4U8AbwHrgbXAWnd/Klll7YruvuBubp5w82Hr//jWH1WLEJEO\noak2urhZT8/igVUP1FvXO603L01/SVNxiEibaaqNbqxodBG90urPqXiw9iDXPnmtahIiklQKEF1c\nZHiEeRfNqzdXE8DGjzaqZ5OIJJUCRDcwc8xMHrjkgcOChGoSIpJMChDdRENBYuNHG5nw6wlc/tjl\nChQi0q70wKBuJPoQoRuevgHnUOcCx1myaQl/2PQHzjnhHEYNGkXR6CIlsUWkTVSD6GYaqklAECiW\nbV3GA6se0KA6EWkzBYhuKBok0hr5+A7UHOCrv/uqZoMVkVZTgOimZo6ZycszXuayUy5LWJsA2L5n\nO9c/fT1D/32ochQi0mIaKNcDlG0rY+HahSzbuoyNH21sdN+8IXmcPexs8ofmU7mvksKcQuUqRFJY\nYwPlFCB6kLJtZRQuKKSqpqrZxxjGCQNOIG9IHjePD6b2KK0oVeAQSREKECkkWpt4bftrlH9Q3uLj\nDcPxusBx/NHHM2rQKPKH5rNmxxqAutrHrgO7KN9RzpRRU+p6WMWWo7SilKwjs1RTaaHoveuIe9aR\n79XR2vPa4s/Vkz4jBYgUVbatjDmvzOG17a/x/j/eT+p7Dek7hCF9h3Cg+gDVtdW89fFb1MY8KNAw\nRg8ZTf+M/uzct5M+vfpwoPpAk98HHzWYUYNG0T+zP+U7yskbmsfu/bvZuHMjO/ft5JRBpzDppEl1\nAav076VU1VaRkZbByKyRvFn55mHLmb0zGZg5kI8/+zhhWQYfNRgcdu7bWff+0QD5/t736643f2g+\nz735HO/teY+RWSPZ+Y+d9cq3v3o/15x5DbnH5FJaUVoXUPOG5jGgzwCyjsyqO+eQvkMoGl3E+g/X\nc+MzN1LrtaRZGmOGjqk7x8K1C+v27Z/Zn9K/l9ZdS1T8NQ0+anDd9miZK/dV1r33/PL5VNdWk56W\nztnDzq675kTHRO9vZu/Mus+k9O+lHNf/OCadNInn3nyOzZWb646PHht7jdHPcfBRg+vuV+y9iN63\nwhGF9T7nhs4Z+/MXXb9x50a2frqVbbuD55X1SuvFjLwZde89ZdSUus+kMKcQgDmvzKn7HGN/RqKe\nefMZqmurSbM0svtn886n7wCQnpbOJSMvSfiZxJc1+tlEryV+OfZaYu/T4xser3vv3GNzyUjL4Joz\nr2HmmJl1/xACre7argAhFK8qZu5rc9n00aZ6Yygk+aK1Muk6esJnMvCIIMhE9Unvw9JpS1scJBoL\nEBoolyJmjplZ7z+O6H9fH3/2MX+r/FvSaxiprLv/IeqJesJnEhscAKpqqiitKG3XZigFiBQTGR5J\n+ANUvKqYh1c/fFjzS3VtNW9+/GYnlFREWiLN0uqazNqLAoQAh2oYiRSvKmbxxsV17euJ2uE3V26u\n15YfbfPf+Y+gjTXarhtt229ODuKTzz7hnU/fafC/vSF9h/DB3g8O257dL5v39rxHLbUYxrB+w+qW\n4fBE/IDMAQlzEFs/3crWT7c2ee+S0VyRZmnUem2T+8W/d+w1ffLZJ2zbva1Z54kaeMRAdu3f1aJj\nYkVzUWvfX9tu9yRnQA4DMge06JwN/Ww0JvZeNvaZGsZJA086LM+W6Dzx64/te2xdueKX2yLN0rj/\n4vvbPYmtHIR0abFJuNieVNGEXGyTWTTRm6iXSewyNL8rb/z5E/XgiiY8o4nWaPmAes15iRKs8cnV\n+MR21pFZdYnwwhGFdQndaM+w6LU01FsstjdZfGI3+v6xydtoM2SiY6L3N3pd0etc/+F6Fm9cXK83\nW6L7Ft8Lrrnnj15PQ59FomR//M9GQ/f/488+Puyex9/X+HLH/kzF/mzGfybxnRIa6gEV3+Mv9nui\n94YgqR7tENDWudeUpBYRkYT0RDkREWkxBQgREUlIAUJERBJSgBARkYQUIEREJCEFCBERSajHdHM1\ns51A06OaurZBwEedXYguRPfjEN2L+nQ/6mvL/TjB3Qcn2tBjAkRPYGYrG+qPnIp0Pw7RvahP96O+\nZN0PNTGJiEhCChAiIpKQAkTXUtzZBehidD8O0b2oT/ejvqTcD+UgREQkIdUgREQkIQUIERFJSAGi\nA5nZr83sQzN7PWbdQDP7s5m9GX7/XLjezOw+M9tiZuvM7MzOK3n7M7PhZrbUzDaa2QYz+5dwfare\nj0wz+6uZrQ3vx/8N148ws7+E1/2YmWWE6/uEy1vC7TmdWf5kMLN0M1tjZk+Hy6l8LyrMbL2ZlZvZ\nynBd0n9XFCA61m+AC+PW3QqUuPtIoCRcBpgEjAy/ZgK/7KAydpRq4F/dfRRwNvAtMxtF6t6PA8CX\n3H00kAdcaGZnA3cDP3f3k4BPgGvC/a8BPgnX/zzcr6f5F+CNmOVUvhcA57t7Xsx4h+T/rri7vjrw\nC8gBXo9Z3gwMDV8PBTaHrx8Epibaryd+AX8A/pfuhwMcCawGziIYHdsrXB8Bng9fPw9Ewte9wv2s\ns8vejvcgO/yj9yXgacBS9V6E11UBDIpbl/TfFdUgOt+x7r4jfP0+cGz4ehiwLWa/7eG6HidsEsgH\n/kIK34+wSaUc+BD4M/AWsMvdq8NdYq+57n6E2z8Fsjq2xEk1F7gZ6h76nEXq3gsAB/5kZqvMLPrw\n+KT/rvRqzUGSHO7uZpZS/Y7NrC+wGJjt7rvNrG5bqt0Pd68B8sxsAPB74NROLlKnMLNLgA/dfZWZ\nFXZ2ebqIL7r7u2Z2DPBnM9sUuzFZvyuqQXS+D8xsKED4/cNw/bvA8Jj9ssN1PYaZ9SYIDo+4+/+E\nq1P2fkS5+y5gKUEzygAzi/4jF3vNdfcj3H40UNnBRU2WCcBkM6sAFhE0M/0nqXkvAHD3d8PvHxL8\n8zCODvhdUYDofE8C08LX0wja4qPri8IeCWcDn8ZUJ7s9C6oKDwNvuPt/xGxK1fsxOKw5YGZHEORj\n3iAIFFeGu8Xfj+h9uhJ40cMG5+7O3f+Pu2e7ew5wFcG1XU0K3gsAMzvKzPpFXwP/BLxOR/yudHby\nJZW+gP8GdgAHCdoFryFoKy0B3gReAAaG+xowj6Adej1Q0Nnlb+d78UWCdtV1QHn4dVEK348zgDXh\n/Xgd+GG4/kTgr8AW4HdAn3B9Zri8Jdx+YmdfQ5LuSyHwdCrfi/C614ZfG4DbwvVJ/13RVBsiIpKQ\nmphERCQhBQgREUlIAUJERBJSgBARkYQUIEREJCEFCJEmmFlNOItm9OvWpo9q9rlzLGZ2X5GuRFNt\niDTtM3fP6+xCiHQ01SBEWimco39OOE//X83spHB9jpm9GM7FX2Jmx4frjzWz34fPfFhrZuPDU6Wb\n2UPhcyD+FI6kxsy+a8HzMtaZ2aJOukxJYQoQIk07Iq6J6Wsx2z5191zgFwQzkAL8f8ACdz8DeAS4\nL1x/H/CSB898OJNgVCwE8/bPc/fTgV3AlHD9rUB+eJ4bknVxIg3RSGqRJpjZXnfvm2B9BcFDft4O\nJx58392zzOwjgvn3D4brd7j7IDPbCWS7+4GYc+QAf/bgoS+Y2S1Ab3f/sZn9EdgLLAGWuPveJF+q\nSD2qQYi0jTfwuiUOxLyu4VBu8GKCOXXOBFbEzGQq0iEUIETa5msx38vC168SzEIKcDWwPHxdAsyC\nuocDHd3QSc0sDRju7kuBWwimsD6sFiOSTPqPRKRpR4RPeov6o7tHu7p+zszWEdQCpobrvgPMN7Mf\nADuBfw7X/wtQbGbXENQUZhHM7ptIOvBfYRAx4D4PnhMh0mGUgxBppTAHUeDuH3V2WUSSQU1MIiKS\nkGoQIiKSkGoQIiKSkAKEiIgkpAAhIiIJKUCIiEhCChAiIpLQ/w8rWrjKB6F2NQAAAABJRU5ErkJg\ngg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "W4EQD-Bb8hLM", + "colab_type": "text" + }, + "source": [ + "From the plot, we can see that loss continues to reduce until around 500 epochs, at which point it is mostly stable. This means that there's no need to train our network beyond 500 epochs.\n", + "\n", + "However, we can also see that the lowest loss value is still around 0.155. This means that our network's predictions are off by an average of ~15%. In addition, the validation loss values jump around a lot, and is sometimes even higher.\n", + "\n", + "**2. Mean Absolute Error**\n", + "\n", + "To gain more insight into our model's performance we can plot some more data. This time, we'll plot the _mean absolute error_, which is another way of measuring how far the network's predictions are from the actual numbers:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Md9E_azmpkZU", + "colab_type": "code", + "outputId": "90fff6f3-8dc1-42ec-a0e2-f2434c790a3d", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + } + }, + "source": [ + "plt.clf()\n", + "\n", + "# Draw a graph of mean absolute error, which is another way of\n", + "# measuring the amount of error in the prediction.\n", + "mae = history_1.history['mae']\n", + "val_mae = history_1.history['val_mae']\n", + "\n", + "plt.plot(epochs[SKIP:], mae[SKIP:], 'g.', label='Training MAE')\n", + "plt.plot(epochs[SKIP:], val_mae[SKIP:], 'b.', label='Validation MAE')\n", + "plt.title('Training and validation mean absolute error')\n", + "plt.xlabel('Epochs')\n", + "plt.ylabel('MAE')\n", + "plt.legend()\n", + "plt.show()" + ], + "execution_count": 12, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n8nJGjBjB0KFDufDCC+M9oYuKirj++usZOXIkQ4cO5Y033giVq70NC24KIkDYkBuGYew8/mgFv/yl\n+7+zz7XevXszZswYnnjiCcBZD9/97ncREW666SaWLl3KqlWreO6551i1alXK4yxbtoz58+ezcuVK\nFi1axMsvvxzfduaZZ/Lyyy/zyiuv8PWvf5377ruPI444gtNOO43f/va3rFy5kv322y9ef9u2bVxw\nwQU88MADrF69mtraWu6+++749r59+7J8+XImTZrUpBvLHxZ8yZIlKYcF/853vsO5557LvHnzEvYd\nP3583MV09dVXJx+62ZiCCGBuJsPIDbmI8QXdTEH30oMPPsjIkSMZMWIEa9asSXAHJbN48WLOOOMM\ndtllF3bbbTdOO61hJoJXX32Vo48+mqFDhzJ37tyUw4X7rF27lkGDBnHAAQcAcP755/P888/Ht595\n5pkAjBo1iqqqqpTHaU/DgpuCCGBuJsPIDbnoZ3T66adTXl7O8uXL+eKLLxg1ahTvvPMOt99+O+Xl\n5axatYpTTjkl5TDf6bjgggv4wx/+wOrVq7n++utbfBwf3xJIN1x4exoW3BREEuZmMozs4493duON\n2RvGpkePHhx33HFceOGF8Tftzz77jF133ZXdd9+dDz/8MO6CSsUxxxzDggUL+PLLL9m6dSuPPvpo\nfNvWrVvZc8892bFjB3Pnzo2X9+zZk61btzY61oEHHkhVVRXr1q0D4H//93859thjW3RuN9xwA7fe\nemvosODvvvsuVVVVVFVVMX369EZupmxi/SCSKC5usCCiUetRbRjZIhbLft+ic889lzPOOCPuaho2\nbBgjRozgoIMOYuDAgRx55JFN7j9y5Ei+973vMWzYMPbYY4+EIbtvvPFGDjvsMPr168dhhx0WVwrn\nnHMOP/zhD7nzzjsTMoW6devGrFmzOPvss6mtreXQQw9l4sSJLTqv9jIsuA33nURlJRx3XMPQ388+\nax3mDCMZG+67Y9Lc4b7NxZRERQXU1oKq+28uJsMwuiqmIJKwTCbDMAyHKYgkLJPJMDKjs7inuwot\nuV6mIEKwTCbDaJpu3bpRXV1tSqKDoKpUV1fTrVu3Zu1nWUwh+G6m7dvNzWQYYQwYMIANGzawadOm\nthbFyJBu3boxYMCAZu1jCiIE3800ebLr+Tllig3/bRhB8vPzGTRoUFuLYeQYczGlwNxMhmF0dUxB\n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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ctawd0CXAVEw", + "colab_type": "text" + }, + "source": [ + "This graph of _mean absolute error_ tells another story. We can see that training data shows consistently lower error than validation data, which means that the network may have _overfit_, or learned the training data so rigidly that it can't make effective predictions about new data.\n", + "\n", + "In addition, the mean absolute error values are quite high, ~0.305 at best, which means some of the model's predictions are at least 30% off. A 30% error means we are very far from accurately modelling the sine wave function.\n", + "\n", + "**3. Actual vs Predicted Outputs**\n", + "\n", + "To get more insight into what is happening, we can plot our network's predictions for the training data against the expected values:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "i13eVIT3B9Mj", + "colab_type": "code", + "outputId": "372e169f-f97d-47ee-e64c-162b8ba4e38c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + } + }, + "source": [ + "# Use the model to make predictions from our validation data\n", + "predictions = model_1.predict(x_train)\n", + "\n", + "# Plot the predictions along with to the test data\n", + "plt.clf()\n", + "plt.title('Training data predicted vs actual values')\n", + "plt.plot(x_test, y_test, 'b.', label='Actual')\n", + "plt.plot(x_train, predictions, 'r.', label='Predicted')\n", + "plt.legend()\n", + "plt.show()" + ], + "execution_count": 13, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\nAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Wokallj1D21L", + "colab_type": "text" + }, + "source": [ + "Oh dear! The graph makes it clear that our network has learned to approximate the sine function in a very limited way. From `0 <= x <= 1.1` the line mostly fits, but for the rest of our `x` values it is a rough approximation at best.\n", + "\n", + "The rigidity of this fit suggests that the model does not have enough capacity to learn the full complexity of the sine wave function, so it's only able to approximate it in an overly simplistic way. By making our model bigger, we should be able to improve its performance." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "T7sL-hWtoAZC", + "colab_type": "text" + }, + "source": [ + "## Training a Larger Model" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "aQd0JSdOoAbw", + "colab_type": "text" + }, + "source": [ + "### 1. Design the Model\n", + "To make our model bigger, let's add an additional layer of neurons. The following cell redefines our model in the same way as earlier, but with 16 neurons in the first layer and an additional layer of 16 neurons in the middle:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "oW0xus6AF-4o", + "colab_type": "code", + "colab": {} + }, + "source": [ + "model_2 = tf.keras.Sequential()\n", + "\n", + "# First layer takes a scalar input and feeds it through 16 \"neurons\". The\n", + "# neurons decide whether to activate based on the 'relu' activation function.\n", + "model_2.add(keras.layers.Dense(16, activation='relu', input_shape=(1,)))\n", + "\n", + "# The new second layer may help the network learn more complex representations\n", + "model_2.add(keras.layers.Dense(16, activation='relu'))\n", + "\n", + "# Final layer is a single neuron, since we want to output a single value\n", + "model_2.add(keras.layers.Dense(1))\n", + "\n", + "# Compile the model using a standard optimizer and loss function for regression\n", + "model_2.compile(optimizer='adam', loss='mse', metrics=['mae'])" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Dv2SC409Grap", + "colab_type": "text" + }, + "source": [ + "### 2. Train the Model ###\n", + "\n", + "We'll now train the new model." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "DPAUrdkmGq1M", + "colab_type": "code", + "outputId": "64730ff7-488e-4b74-d5a1-49a1b733e9e5", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + } + }, + "source": [ + "history_2 = model_2.fit(x_train, y_train, epochs=500, batch_size=64,\n", + " validation_data=(x_validate, y_validate))" + ], + "execution_count": 15, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Train on 600 samples, validate on 200 samples\n", + "Epoch 1/500\n", + "600/600 [==============================] - 0s 736us/sample - loss: 0.4245 - mae: 0.5529 - val_loss: 0.4310 - val_mae: 0.5678\n", + "Epoch 2/500\n", + "600/600 [==============================] - 0s 64us/sample - loss: 0.4056 - mae: 0.5462 - val_loss: 0.4138 - val_mae: 0.5548\n", + "Epoch 3/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.3897 - mae: 0.5302 - val_loss: 0.3974 - val_mae: 0.5437\n", + "Epoch 4/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.3743 - mae: 0.5181 - val_loss: 0.3815 - val_mae: 0.5336\n", + "Epoch 5/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.3602 - mae: 0.5128 - val_loss: 0.3677 - val_mae: 0.5276\n", + "Epoch 6/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.3436 - mae: 0.5010 - val_loss: 0.3504 - val_mae: 0.5140\n", + "Epoch 7/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.3281 - mae: 0.4859 - val_loss: 0.3340 - val_mae: 0.5021\n", + "Epoch 8/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.3127 - mae: 0.4748 - val_loss: 0.3177 - val_mae: 0.4921\n", + "Epoch 9/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.2961 - mae: 0.4626 - val_loss: 0.3012 - val_mae: 0.4794\n", + "Epoch 10/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.2797 - mae: 0.4502 - val_loss: 0.2851 - val_mae: 0.4687\n", + "Epoch 11/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.2635 - mae: 0.4391 - val_loss: 0.2699 - val_mae: 0.4589\n", + "Epoch 12/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.2467 - mae: 0.4251 - val_loss: 0.2523 - val_mae: 0.4414\n", + "Epoch 13/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.2312 - mae: 0.4107 - val_loss: 0.2369 - val_mae: 0.4293\n", + "Epoch 14/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.2149 - mae: 0.3971 - val_loss: 0.2225 - val_mae: 0.4168\n", + "Epoch 15/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.2031 - mae: 0.3861 - val_loss: 0.2085 - val_mae: 0.4023\n", + "Epoch 16/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1908 - mae: 0.3716 - val_loss: 0.1970 - val_mae: 0.3899\n", + "Epoch 17/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1777 - mae: 0.3590 - val_loss: 0.1881 - val_mae: 0.3810\n", + "Epoch 18/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1682 - mae: 0.3475 - val_loss: 0.1789 - val_mae: 0.3677\n", + "Epoch 19/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.1603 - mae: 0.3367 - val_loss: 0.1723 - val_mae: 0.3586\n", + "Epoch 20/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1536 - mae: 0.3276 - val_loss: 0.1668 - val_mae: 0.3500\n", + "Epoch 21/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1487 - mae: 0.3181 - val_loss: 0.1619 - val_mae: 0.3403\n", + "Epoch 22/500\n", + "600/600 [==============================] - 0s 74us/sample - loss: 0.1433 - mae: 0.3108 - val_loss: 0.1598 - val_mae: 0.3358\n", + "Epoch 23/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.1418 - mae: 0.3072 - val_loss: 0.1558 - val_mae: 0.3248\n", + "Epoch 24/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.1389 - mae: 0.2992 - val_loss: 0.1538 - val_mae: 0.3189\n", + "Epoch 25/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.1387 - mae: 0.2978 - val_loss: 0.1524 - val_mae: 0.3161\n", + "Epoch 26/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1346 - mae: 0.2904 - val_loss: 0.1510 - val_mae: 0.3112\n", + "Epoch 27/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1340 - mae: 0.2904 - val_loss: 0.1501 - val_mae: 0.3098\n", + "Epoch 28/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1313 - mae: 0.2849 - val_loss: 0.1489 - val_mae: 0.3042\n", + "Epoch 29/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1303 - mae: 0.2830 - val_loss: 0.1489 - val_mae: 0.3058\n", + "Epoch 30/500\n", + "600/600 [==============================] - 0s 63us/sample - loss: 0.1292 - mae: 0.2804 - val_loss: 0.1474 - val_mae: 0.2997\n", + "Epoch 31/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1286 - mae: 0.2781 - val_loss: 0.1467 - val_mae: 0.2998\n", + "Epoch 32/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.1274 - mae: 0.2774 - val_loss: 0.1463 - val_mae: 0.2990\n", + "Epoch 33/500\n", + "600/600 [==============================] - 0s 62us/sample - loss: 0.1268 - mae: 0.2758 - val_loss: 0.1451 - val_mae: 0.2945\n", + "Epoch 34/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1295 - mae: 0.2746 - val_loss: 0.1449 - val_mae: 0.2966\n", + "Epoch 35/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1278 - mae: 0.2760 - val_loss: 0.1438 - val_mae: 0.2937\n", + "Epoch 36/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1246 - mae: 0.2710 - val_loss: 0.1431 - val_mae: 0.2908\n", + "Epoch 37/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1247 - mae: 0.2693 - val_loss: 0.1434 - val_mae: 0.2939\n", + "Epoch 38/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1237 - mae: 0.2702 - val_loss: 0.1415 - val_mae: 0.2893\n", + "Epoch 39/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1263 - mae: 0.2691 - val_loss: 0.1411 - val_mae: 0.2891\n", + "Epoch 40/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1238 - mae: 0.2693 - val_loss: 0.1408 - val_mae: 0.2906\n", + "Epoch 41/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.1209 - mae: 0.2659 - val_loss: 0.1393 - val_mae: 0.2859\n", + "Epoch 42/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.1216 - mae: 0.2644 - val_loss: 0.1387 - val_mae: 0.2842\n", + "Epoch 43/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1200 - mae: 0.2642 - val_loss: 0.1386 - val_mae: 0.2869\n", + "Epoch 44/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1193 - mae: 0.2626 - val_loss: 0.1370 - val_mae: 0.2814\n", + "Epoch 45/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.1187 - mae: 0.2625 - val_loss: 0.1362 - val_mae: 0.2829\n", + "Epoch 46/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1177 - mae: 0.2593 - val_loss: 0.1353 - val_mae: 0.2796\n", + "Epoch 47/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.1172 - mae: 0.2598 - val_loss: 0.1346 - val_mae: 0.2789\n", + "Epoch 48/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.1158 - mae: 0.2569 - val_loss: 0.1337 - val_mae: 0.2769\n", + "Epoch 49/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1176 - mae: 0.2590 - val_loss: 0.1329 - val_mae: 0.2761\n", + "Epoch 50/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1141 - mae: 0.2544 - val_loss: 0.1320 - val_mae: 0.2759\n", + "Epoch 51/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1138 - mae: 0.2536 - val_loss: 0.1312 - val_mae: 0.2741\n", + "Epoch 52/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1127 - mae: 0.2535 - val_loss: 0.1313 - val_mae: 0.2776\n", + "Epoch 53/500\n", + "600/600 [==============================] - 0s 60us/sample - loss: 0.1124 - mae: 0.2518 - val_loss: 0.1294 - val_mae: 0.2708\n", + "Epoch 54/500\n", + "600/600 [==============================] - 0s 61us/sample - loss: 0.1115 - mae: 0.2508 - val_loss: 0.1287 - val_mae: 0.2722\n", + "Epoch 55/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.1103 - mae: 0.2487 - val_loss: 0.1278 - val_mae: 0.2709\n", + "Epoch 56/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1094 - mae: 0.2485 - val_loss: 0.1267 - val_mae: 0.2687\n", + "Epoch 57/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1090 - mae: 0.2479 - val_loss: 0.1259 - val_mae: 0.2684\n", + "Epoch 58/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1118 - mae: 0.2456 - val_loss: 0.1256 - val_mae: 0.2695\n", + "Epoch 59/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1106 - mae: 0.2500 - val_loss: 0.1243 - val_mae: 0.2670\n", + "Epoch 60/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.1071 - mae: 0.2429 - val_loss: 0.1231 - val_mae: 0.2626\n", + "Epoch 61/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.1059 - mae: 0.2436 - val_loss: 0.1226 - val_mae: 0.2653\n", + "Epoch 62/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.1048 - mae: 0.2419 - val_loss: 0.1213 - val_mae: 0.2607\n", + "Epoch 63/500\n", + "600/600 [==============================] - 0s 65us/sample - loss: 0.1038 - mae: 0.2394 - val_loss: 0.1204 - val_mae: 0.2604\n", + "Epoch 64/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.1029 - mae: 0.2383 - val_loss: 0.1196 - val_mae: 0.2593\n", + "Epoch 65/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.1021 - mae: 0.2376 - val_loss: 0.1186 - val_mae: 0.2576\n", + "Epoch 66/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.1012 - mae: 0.2353 - val_loss: 0.1179 - val_mae: 0.2585\n", + "Epoch 67/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.1006 - mae: 0.2358 - val_loss: 0.1169 - val_mae: 0.2568\n", + "Epoch 68/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0996 - mae: 0.2346 - val_loss: 0.1158 - val_mae: 0.2553\n", + "Epoch 69/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0996 - mae: 0.2349 - val_loss: 0.1148 - val_mae: 0.2534\n", + "Epoch 70/500\n", + "600/600 [==============================] - 0s 62us/sample - loss: 0.0985 - mae: 0.2316 - val_loss: 0.1142 - val_mae: 0.2490\n", + "Epoch 71/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0986 - mae: 0.2327 - val_loss: 0.1144 - val_mae: 0.2559\n", + "Epoch 72/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0981 - mae: 0.2306 - val_loss: 0.1121 - val_mae: 0.2494\n", + "Epoch 73/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0966 - mae: 0.2308 - val_loss: 0.1118 - val_mae: 0.2521\n", + "Epoch 74/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0972 - mae: 0.2281 - val_loss: 0.1104 - val_mae: 0.2456\n", + "Epoch 75/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0960 - mae: 0.2293 - val_loss: 0.1101 - val_mae: 0.2500\n", + "Epoch 76/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0933 - mae: 0.2247 - val_loss: 0.1087 - val_mae: 0.2424\n", + "Epoch 77/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0922 - mae: 0.2221 - val_loss: 0.1080 - val_mae: 0.2453\n", + "Epoch 78/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0917 - mae: 0.2235 - val_loss: 0.1069 - val_mae: 0.2432\n", + "Epoch 79/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0922 - mae: 0.2204 - val_loss: 0.1061 - val_mae: 0.2394\n", + "Epoch 80/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0918 - mae: 0.2239 - val_loss: 0.1062 - val_mae: 0.2456\n", + "Epoch 81/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0908 - mae: 0.2220 - val_loss: 0.1048 - val_mae: 0.2372\n", + "Epoch 82/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0889 - mae: 0.2193 - val_loss: 0.1046 - val_mae: 0.2421\n", + "Epoch 83/500\n", + "600/600 [==============================] - 0s 62us/sample - loss: 0.0883 - mae: 0.2175 - val_loss: 0.1029 - val_mae: 0.2339\n", + "Epoch 84/500\n", + "600/600 [==============================] - 0s 64us/sample - loss: 0.0872 - mae: 0.2143 - val_loss: 0.1022 - val_mae: 0.2372\n", + "Epoch 85/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0865 - mae: 0.2148 - val_loss: 0.1012 - val_mae: 0.2342\n", + "Epoch 86/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0856 - mae: 0.2124 - val_loss: 0.1004 - val_mae: 0.2317\n", + "Epoch 87/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0850 - mae: 0.2122 - val_loss: 0.0998 - val_mae: 0.2340\n", + "Epoch 88/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0843 - mae: 0.2121 - val_loss: 0.0987 - val_mae: 0.2312\n", + "Epoch 89/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0836 - mae: 0.2103 - val_loss: 0.0981 - val_mae: 0.2313\n", + "Epoch 90/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0832 - mae: 0.2113 - val_loss: 0.0971 - val_mae: 0.2288\n", + "Epoch 91/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.0830 - mae: 0.2066 - val_loss: 0.0970 - val_mae: 0.2238\n", + "Epoch 92/500\n", + "600/600 [==============================] - 0s 70us/sample - loss: 0.0829 - mae: 0.2111 - val_loss: 0.0965 - val_mae: 0.2311\n", + "Epoch 93/500\n", + "600/600 [==============================] - 0s 69us/sample - loss: 0.0813 - mae: 0.2068 - val_loss: 0.0959 - val_mae: 0.2234\n", + "Epoch 94/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0816 - mae: 0.2070 - val_loss: 0.0950 - val_mae: 0.2288\n", + "Epoch 95/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0817 - mae: 0.2036 - val_loss: 0.0940 - val_mae: 0.2189\n", + "Epoch 96/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0803 - mae: 0.2064 - val_loss: 0.0929 - val_mae: 0.2243\n", + "Epoch 97/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0795 - mae: 0.2018 - val_loss: 0.0919 - val_mae: 0.2201\n", + "Epoch 98/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0773 - mae: 0.2024 - val_loss: 0.0930 - val_mae: 0.2276\n", + "Epoch 99/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0780 - mae: 0.2015 - val_loss: 0.0905 - val_mae: 0.2205\n", + "Epoch 100/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.0770 - mae: 0.2025 - val_loss: 0.0900 - val_mae: 0.2220\n", + "Epoch 101/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0768 - mae: 0.1993 - val_loss: 0.0892 - val_mae: 0.2146\n", + "Epoch 102/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0783 - mae: 0.2039 - val_loss: 0.0885 - val_mae: 0.2191\n", + "Epoch 103/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0748 - mae: 0.1963 - val_loss: 0.0876 - val_mae: 0.2149\n", + "Epoch 104/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0743 - mae: 0.1978 - val_loss: 0.0873 - val_mae: 0.2179\n", + "Epoch 105/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0733 - mae: 0.1952 - val_loss: 0.0865 - val_mae: 0.2114\n", + "Epoch 106/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0733 - mae: 0.1943 - val_loss: 0.0862 - val_mae: 0.2131\n", + "Epoch 107/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0723 - mae: 0.1936 - val_loss: 0.0848 - val_mae: 0.2112\n", + "Epoch 108/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0715 - mae: 0.1927 - val_loss: 0.0843 - val_mae: 0.2125\n", + "Epoch 109/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.0714 - mae: 0.1903 - val_loss: 0.0836 - val_mae: 0.2100\n", + "Epoch 110/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0719 - mae: 0.1952 - val_loss: 0.0830 - val_mae: 0.2111\n", + "Epoch 111/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0714 - mae: 0.1895 - val_loss: 0.0824 - val_mae: 0.2072\n", + "Epoch 112/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0699 - mae: 0.1929 - val_loss: 0.0823 - val_mae: 0.2110\n", + "Epoch 113/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0699 - mae: 0.1891 - val_loss: 0.0810 - val_mae: 0.2053\n", + "Epoch 114/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0691 - mae: 0.1898 - val_loss: 0.0805 - val_mae: 0.2074\n", + "Epoch 115/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0678 - mae: 0.1859 - val_loss: 0.0798 - val_mae: 0.2025\n", + "Epoch 116/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0674 - mae: 0.1880 - val_loss: 0.0794 - val_mae: 0.2061\n", + "Epoch 117/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0672 - mae: 0.1844 - val_loss: 0.0785 - val_mae: 0.2008\n", + "Epoch 118/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0663 - mae: 0.1848 - val_loss: 0.0780 - val_mae: 0.2038\n", + "Epoch 119/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.0657 - mae: 0.1830 - val_loss: 0.0772 - val_mae: 0.2003\n", + "Epoch 120/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0649 - mae: 0.1813 - val_loss: 0.0767 - val_mae: 0.2002\n", + "Epoch 121/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0654 - mae: 0.1845 - val_loss: 0.0761 - val_mae: 0.1997\n", + "Epoch 122/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0642 - mae: 0.1815 - val_loss: 0.0755 - val_mae: 0.1991\n", + "Epoch 123/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0635 - mae: 0.1807 - val_loss: 0.0750 - val_mae: 0.1955\n", + "Epoch 124/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.0635 - mae: 0.1779 - val_loss: 0.0744 - val_mae: 0.1981\n", + "Epoch 125/500\n", + "600/600 [==============================] - 0s 60us/sample - loss: 0.0642 - mae: 0.1844 - val_loss: 0.0738 - val_mae: 0.1968\n", + "Epoch 126/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0659 - mae: 0.1780 - val_loss: 0.0739 - val_mae: 0.1973\n", + "Epoch 127/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0622 - mae: 0.1817 - val_loss: 0.0731 - val_mae: 0.1985\n", + "Epoch 128/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0619 - mae: 0.1772 - val_loss: 0.0722 - val_mae: 0.1936\n", + "Epoch 129/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0607 - mae: 0.1764 - val_loss: 0.0718 - val_mae: 0.1946\n", + "Epoch 130/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0602 - mae: 0.1747 - val_loss: 0.0710 - val_mae: 0.1925\n", + "Epoch 131/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0600 - mae: 0.1748 - val_loss: 0.0706 - val_mae: 0.1923\n", + "Epoch 132/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0592 - mae: 0.1743 - val_loss: 0.0699 - val_mae: 0.1913\n", + "Epoch 133/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0594 - mae: 0.1722 - val_loss: 0.0695 - val_mae: 0.1901\n", + "Epoch 134/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0589 - mae: 0.1753 - val_loss: 0.0690 - val_mae: 0.1903\n", + "Epoch 135/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0587 - mae: 0.1702 - val_loss: 0.0684 - val_mae: 0.1886\n", + "Epoch 136/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0575 - mae: 0.1725 - val_loss: 0.0682 - val_mae: 0.1908\n", + "Epoch 137/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0570 - mae: 0.1704 - val_loss: 0.0676 - val_mae: 0.1871\n", + "Epoch 138/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0567 - mae: 0.1692 - val_loss: 0.0671 - val_mae: 0.1879\n", + "Epoch 139/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0562 - mae: 0.1692 - val_loss: 0.0663 - val_mae: 0.1848\n", + "Epoch 140/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0558 - mae: 0.1676 - val_loss: 0.0658 - val_mae: 0.1847\n", + "Epoch 141/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0553 - mae: 0.1663 - val_loss: 0.0653 - val_mae: 0.1840\n", + "Epoch 142/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0552 - mae: 0.1665 - val_loss: 0.0650 - val_mae: 0.1850\n", + "Epoch 143/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.0550 - mae: 0.1688 - val_loss: 0.0642 - val_mae: 0.1831\n", + "Epoch 144/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.0542 - mae: 0.1647 - val_loss: 0.0640 - val_mae: 0.1820\n", + "Epoch 145/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0536 - mae: 0.1644 - val_loss: 0.0633 - val_mae: 0.1812\n", + "Epoch 146/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0533 - mae: 0.1646 - val_loss: 0.0628 - val_mae: 0.1820\n", + "Epoch 147/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0527 - mae: 0.1630 - val_loss: 0.0623 - val_mae: 0.1803\n", + "Epoch 148/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0524 - mae: 0.1620 - val_loss: 0.0620 - val_mae: 0.1809\n", + "Epoch 149/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0519 - mae: 0.1624 - val_loss: 0.0613 - val_mae: 0.1798\n", + "Epoch 150/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0527 - mae: 0.1629 - val_loss: 0.0610 - val_mae: 0.1798\n", + "Epoch 151/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0515 - mae: 0.1605 - val_loss: 0.0609 - val_mae: 0.1752\n", + "Epoch 152/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0511 - mae: 0.1609 - val_loss: 0.0602 - val_mae: 0.1788\n", + "Epoch 153/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.0506 - mae: 0.1594 - val_loss: 0.0594 - val_mae: 0.1786\n", + "Epoch 154/500\n", + "600/600 [==============================] - 0s 64us/sample - loss: 0.0501 - mae: 0.1607 - val_loss: 0.0589 - val_mae: 0.1763\n", + "Epoch 155/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0497 - mae: 0.1576 - val_loss: 0.0587 - val_mae: 0.1762\n", + "Epoch 156/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0493 - mae: 0.1585 - val_loss: 0.0581 - val_mae: 0.1756\n", + "Epoch 157/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0489 - mae: 0.1575 - val_loss: 0.0581 - val_mae: 0.1780\n", + "Epoch 158/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0486 - mae: 0.1582 - val_loss: 0.0574 - val_mae: 0.1728\n", + "Epoch 159/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0488 - mae: 0.1552 - val_loss: 0.0576 - val_mae: 0.1777\n", + "Epoch 160/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0501 - mae: 0.1633 - val_loss: 0.0567 - val_mae: 0.1750\n", + "Epoch 161/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.0481 - mae: 0.1568 - val_loss: 0.0562 - val_mae: 0.1750\n", + "Epoch 162/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0476 - mae: 0.1569 - val_loss: 0.0553 - val_mae: 0.1706\n", + "Epoch 163/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0464 - mae: 0.1533 - val_loss: 0.0549 - val_mae: 0.1717\n", + "Epoch 164/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0470 - mae: 0.1559 - val_loss: 0.0550 - val_mae: 0.1696\n", + "Epoch 165/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0463 - mae: 0.1526 - val_loss: 0.0543 - val_mae: 0.1669\n", + "Epoch 166/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0467 - mae: 0.1530 - val_loss: 0.0536 - val_mae: 0.1685\n", + "Epoch 167/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0465 - mae: 0.1521 - val_loss: 0.0536 - val_mae: 0.1691\n", + "Epoch 168/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0462 - mae: 0.1570 - val_loss: 0.0530 - val_mae: 0.1681\n", + "Epoch 169/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0448 - mae: 0.1514 - val_loss: 0.0523 - val_mae: 0.1679\n", + "Epoch 170/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0441 - mae: 0.1509 - val_loss: 0.0518 - val_mae: 0.1668\n", + "Epoch 171/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0438 - mae: 0.1488 - val_loss: 0.0516 - val_mae: 0.1668\n", + "Epoch 172/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0437 - mae: 0.1509 - val_loss: 0.0510 - val_mae: 0.1649\n", + "Epoch 173/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0431 - mae: 0.1479 - val_loss: 0.0507 - val_mae: 0.1658\n", + "Epoch 174/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0432 - mae: 0.1493 - val_loss: 0.0503 - val_mae: 0.1634\n", + "Epoch 175/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0427 - mae: 0.1467 - val_loss: 0.0502 - val_mae: 0.1667\n", + "Epoch 176/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0425 - mae: 0.1475 - val_loss: 0.0494 - val_mae: 0.1618\n", + "Epoch 177/500\n", + "600/600 [==============================] - 0s 43us/sample - loss: 0.0426 - mae: 0.1497 - val_loss: 0.0491 - val_mae: 0.1618\n", + "Epoch 178/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0416 - mae: 0.1454 - val_loss: 0.0489 - val_mae: 0.1635\n", + "Epoch 179/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0414 - mae: 0.1467 - val_loss: 0.0483 - val_mae: 0.1599\n", + "Epoch 180/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0411 - mae: 0.1439 - val_loss: 0.0489 - val_mae: 0.1651\n", + "Epoch 181/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0418 - mae: 0.1485 - val_loss: 0.0477 - val_mae: 0.1597\n", + "Epoch 182/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0405 - mae: 0.1445 - val_loss: 0.0473 - val_mae: 0.1612\n", + "Epoch 183/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0399 - mae: 0.1435 - val_loss: 0.0466 - val_mae: 0.1579\n", + "Epoch 184/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0399 - mae: 0.1432 - val_loss: 0.0465 - val_mae: 0.1561\n", + "Epoch 185/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0397 - mae: 0.1437 - val_loss: 0.0459 - val_mae: 0.1573\n", + "Epoch 186/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0394 - mae: 0.1424 - val_loss: 0.0455 - val_mae: 0.1582\n", + "Epoch 187/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0385 - mae: 0.1411 - val_loss: 0.0453 - val_mae: 0.1544\n", + "Epoch 188/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0385 - mae: 0.1403 - val_loss: 0.0447 - val_mae: 0.1545\n", + "Epoch 189/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0381 - mae: 0.1392 - val_loss: 0.0444 - val_mae: 0.1549\n", + "Epoch 190/500\n", + "600/600 [==============================] - 0s 61us/sample - loss: 0.0378 - mae: 0.1402 - val_loss: 0.0441 - val_mae: 0.1529\n", + "Epoch 191/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0376 - mae: 0.1390 - val_loss: 0.0441 - val_mae: 0.1574\n", + "Epoch 192/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0378 - mae: 0.1397 - val_loss: 0.0431 - val_mae: 0.1533\n", + "Epoch 193/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0376 - mae: 0.1401 - val_loss: 0.0430 - val_mae: 0.1538\n", + "Epoch 194/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0372 - mae: 0.1376 - val_loss: 0.0433 - val_mae: 0.1548\n", + "Epoch 195/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0376 - mae: 0.1412 - val_loss: 0.0429 - val_mae: 0.1508\n", + "Epoch 196/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0365 - mae: 0.1383 - val_loss: 0.0419 - val_mae: 0.1529\n", + "Epoch 197/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0361 - mae: 0.1353 - val_loss: 0.0416 - val_mae: 0.1485\n", + "Epoch 198/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0354 - mae: 0.1353 - val_loss: 0.0411 - val_mae: 0.1506\n", + "Epoch 199/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0354 - mae: 0.1363 - val_loss: 0.0410 - val_mae: 0.1504\n", + "Epoch 200/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0354 - mae: 0.1358 - val_loss: 0.0410 - val_mae: 0.1511\n", + "Epoch 201/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0348 - mae: 0.1349 - val_loss: 0.0399 - val_mae: 0.1475\n", + "Epoch 202/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0345 - mae: 0.1342 - val_loss: 0.0396 - val_mae: 0.1476\n", + "Epoch 203/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0342 - mae: 0.1345 - val_loss: 0.0395 - val_mae: 0.1455\n", + "Epoch 204/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0337 - mae: 0.1321 - val_loss: 0.0390 - val_mae: 0.1462\n", + "Epoch 205/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0336 - mae: 0.1328 - val_loss: 0.0389 - val_mae: 0.1445\n", + "Epoch 206/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0337 - mae: 0.1317 - val_loss: 0.0392 - val_mae: 0.1497\n", + "Epoch 207/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0335 - mae: 0.1326 - val_loss: 0.0384 - val_mae: 0.1436\n", + "Epoch 208/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0329 - mae: 0.1310 - val_loss: 0.0376 - val_mae: 0.1444\n", + "Epoch 209/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0328 - mae: 0.1298 - val_loss: 0.0375 - val_mae: 0.1454\n", + "Epoch 210/500\n", + "600/600 [==============================] - 0s 44us/sample - loss: 0.0328 - mae: 0.1328 - val_loss: 0.0370 - val_mae: 0.1432\n", + "Epoch 211/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0331 - mae: 0.1310 - val_loss: 0.0369 - val_mae: 0.1413\n", + "Epoch 212/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0317 - mae: 0.1290 - val_loss: 0.0367 - val_mae: 0.1449\n", + "Epoch 213/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0318 - mae: 0.1291 - val_loss: 0.0360 - val_mae: 0.1425\n", + "Epoch 214/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0312 - mae: 0.1284 - val_loss: 0.0356 - val_mae: 0.1413\n", + "Epoch 215/500\n", + "600/600 [==============================] - 0s 65us/sample - loss: 0.0309 - mae: 0.1273 - val_loss: 0.0356 - val_mae: 0.1423\n", + "Epoch 216/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0310 - mae: 0.1280 - val_loss: 0.0350 - val_mae: 0.1396\n", + "Epoch 217/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0303 - mae: 0.1263 - val_loss: 0.0346 - val_mae: 0.1400\n", + "Epoch 218/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.0302 - mae: 0.1267 - val_loss: 0.0343 - val_mae: 0.1390\n", + "Epoch 219/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0299 - mae: 0.1258 - val_loss: 0.0340 - val_mae: 0.1377\n", + "Epoch 220/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0299 - mae: 0.1262 - val_loss: 0.0338 - val_mae: 0.1374\n", + "Epoch 221/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0294 - mae: 0.1246 - val_loss: 0.0337 - val_mae: 0.1395\n", + "Epoch 222/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0299 - mae: 0.1275 - val_loss: 0.0340 - val_mae: 0.1394\n", + "Epoch 223/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0295 - mae: 0.1251 - val_loss: 0.0331 - val_mae: 0.1378\n", + "Epoch 224/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0290 - mae: 0.1228 - val_loss: 0.0325 - val_mae: 0.1361\n", + "Epoch 225/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0291 - mae: 0.1254 - val_loss: 0.0321 - val_mae: 0.1344\n", + "Epoch 226/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0286 - mae: 0.1237 - val_loss: 0.0318 - val_mae: 0.1340\n", + "Epoch 227/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0281 - mae: 0.1219 - val_loss: 0.0315 - val_mae: 0.1331\n", + "Epoch 228/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0280 - mae: 0.1221 - val_loss: 0.0313 - val_mae: 0.1345\n", + "Epoch 229/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0276 - mae: 0.1202 - val_loss: 0.0310 - val_mae: 0.1333\n", + "Epoch 230/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0276 - mae: 0.1215 - val_loss: 0.0308 - val_mae: 0.1313\n", + "Epoch 231/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0274 - mae: 0.1214 - val_loss: 0.0319 - val_mae: 0.1382\n", + "Epoch 232/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0281 - mae: 0.1242 - val_loss: 0.0304 - val_mae: 0.1305\n", + "Epoch 233/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0268 - mae: 0.1195 - val_loss: 0.0299 - val_mae: 0.1320\n", + "Epoch 234/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0264 - mae: 0.1187 - val_loss: 0.0296 - val_mae: 0.1302\n", + "Epoch 235/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0267 - mae: 0.1206 - val_loss: 0.0299 - val_mae: 0.1285\n", + "Epoch 236/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0272 - mae: 0.1182 - val_loss: 0.0309 - val_mae: 0.1363\n", + "Epoch 237/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0273 - mae: 0.1209 - val_loss: 0.0286 - val_mae: 0.1297\n", + "Epoch 238/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0260 - mae: 0.1191 - val_loss: 0.0286 - val_mae: 0.1276\n", + "Epoch 239/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0259 - mae: 0.1173 - val_loss: 0.0283 - val_mae: 0.1279\n", + "Epoch 240/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0255 - mae: 0.1157 - val_loss: 0.0279 - val_mae: 0.1281\n", + "Epoch 241/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0253 - mae: 0.1162 - val_loss: 0.0280 - val_mae: 0.1294\n", + "Epoch 242/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0256 - mae: 0.1178 - val_loss: 0.0273 - val_mae: 0.1259\n", + "Epoch 243/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0245 - mae: 0.1144 - val_loss: 0.0276 - val_mae: 0.1287\n", + "Epoch 244/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0252 - mae: 0.1163 - val_loss: 0.0268 - val_mae: 0.1263\n", + "Epoch 245/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0261 - mae: 0.1201 - val_loss: 0.0295 - val_mae: 0.1333\n", + "Epoch 246/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0268 - mae: 0.1231 - val_loss: 0.0279 - val_mae: 0.1302\n", + "Epoch 247/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0240 - mae: 0.1149 - val_loss: 0.0263 - val_mae: 0.1242\n", + "Epoch 248/500\n", + "600/600 [==============================] - 0s 66us/sample - loss: 0.0242 - mae: 0.1146 - val_loss: 0.0259 - val_mae: 0.1249\n", + "Epoch 249/500\n", + "600/600 [==============================] - 0s 69us/sample - loss: 0.0233 - mae: 0.1129 - val_loss: 0.0277 - val_mae: 0.1258\n", + "Epoch 250/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0246 - mae: 0.1158 - val_loss: 0.0255 - val_mae: 0.1237\n", + "Epoch 251/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0231 - mae: 0.1114 - val_loss: 0.0249 - val_mae: 0.1216\n", + "Epoch 252/500\n", + "600/600 [==============================] - 0s 63us/sample - loss: 0.0230 - mae: 0.1122 - val_loss: 0.0246 - val_mae: 0.1216\n", + "Epoch 253/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0229 - mae: 0.1109 - val_loss: 0.0247 - val_mae: 0.1228\n", + "Epoch 254/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0230 - mae: 0.1122 - val_loss: 0.0242 - val_mae: 0.1204\n", + "Epoch 255/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0233 - mae: 0.1139 - val_loss: 0.0252 - val_mae: 0.1209\n", + "Epoch 256/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0225 - mae: 0.1102 - val_loss: 0.0239 - val_mae: 0.1197\n", + "Epoch 257/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0219 - mae: 0.1086 - val_loss: 0.0235 - val_mae: 0.1197\n", + "Epoch 258/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0217 - mae: 0.1091 - val_loss: 0.0234 - val_mae: 0.1188\n", + "Epoch 259/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0215 - mae: 0.1082 - val_loss: 0.0231 - val_mae: 0.1184\n", + "Epoch 260/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0214 - mae: 0.1080 - val_loss: 0.0228 - val_mae: 0.1183\n", + "Epoch 261/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0214 - mae: 0.1081 - val_loss: 0.0226 - val_mae: 0.1175\n", + "Epoch 262/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0211 - mae: 0.1077 - val_loss: 0.0224 - val_mae: 0.1177\n", + "Epoch 263/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0210 - mae: 0.1075 - val_loss: 0.0223 - val_mae: 0.1176\n", + "Epoch 264/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0209 - mae: 0.1079 - val_loss: 0.0223 - val_mae: 0.1164\n", + "Epoch 265/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0208 - mae: 0.1073 - val_loss: 0.0219 - val_mae: 0.1165\n", + "Epoch 266/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0209 - mae: 0.1084 - val_loss: 0.0221 - val_mae: 0.1149\n", + "Epoch 267/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0206 - mae: 0.1075 - val_loss: 0.0215 - val_mae: 0.1148\n", + "Epoch 268/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0203 - mae: 0.1062 - val_loss: 0.0212 - val_mae: 0.1142\n", + "Epoch 269/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0201 - mae: 0.1055 - val_loss: 0.0212 - val_mae: 0.1141\n", + "Epoch 270/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0200 - mae: 0.1063 - val_loss: 0.0213 - val_mae: 0.1137\n", + "Epoch 271/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.0201 - mae: 0.1066 - val_loss: 0.0211 - val_mae: 0.1127\n", + "Epoch 272/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0205 - mae: 0.1074 - val_loss: 0.0203 - val_mae: 0.1131\n", + "Epoch 273/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0197 - mae: 0.1052 - val_loss: 0.0202 - val_mae: 0.1123\n", + "Epoch 274/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0194 - mae: 0.1043 - val_loss: 0.0201 - val_mae: 0.1119\n", + "Epoch 275/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0192 - mae: 0.1038 - val_loss: 0.0199 - val_mae: 0.1118\n", + "Epoch 276/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0191 - mae: 0.1040 - val_loss: 0.0200 - val_mae: 0.1113\n", + "Epoch 277/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0191 - mae: 0.1043 - val_loss: 0.0199 - val_mae: 0.1117\n", + "Epoch 278/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0194 - mae: 0.1051 - val_loss: 0.0195 - val_mae: 0.1111\n", + "Epoch 279/500\n", + "600/600 [==============================] - 0s 65us/sample - loss: 0.0186 - mae: 0.1031 - val_loss: 0.0197 - val_mae: 0.1098\n", + "Epoch 280/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0187 - mae: 0.1031 - val_loss: 0.0192 - val_mae: 0.1103\n", + "Epoch 281/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0186 - mae: 0.1031 - val_loss: 0.0192 - val_mae: 0.1098\n", + "Epoch 282/500\n", + "600/600 [==============================] - 0s 63us/sample - loss: 0.0185 - mae: 0.1031 - val_loss: 0.0190 - val_mae: 0.1092\n", + "Epoch 283/500\n", + "600/600 [==============================] - 0s 60us/sample - loss: 0.0183 - mae: 0.1022 - val_loss: 0.0188 - val_mae: 0.1097\n", + "Epoch 284/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0181 - mae: 0.1020 - val_loss: 0.0186 - val_mae: 0.1086\n", + "Epoch 285/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0183 - mae: 0.1025 - val_loss: 0.0192 - val_mae: 0.1085\n", + "Epoch 286/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0190 - mae: 0.1057 - val_loss: 0.0190 - val_mae: 0.1106\n", + "Epoch 287/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0181 - mae: 0.1022 - val_loss: 0.0181 - val_mae: 0.1077\n", + "Epoch 288/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0177 - mae: 0.1012 - val_loss: 0.0181 - val_mae: 0.1072\n", + "Epoch 289/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0175 - mae: 0.1003 - val_loss: 0.0182 - val_mae: 0.1082\n", + "Epoch 290/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0180 - mae: 0.1028 - val_loss: 0.0179 - val_mae: 0.1064\n", + "Epoch 291/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0175 - mae: 0.1013 - val_loss: 0.0179 - val_mae: 0.1063\n", + "Epoch 292/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0175 - mae: 0.1014 - val_loss: 0.0177 - val_mae: 0.1067\n", + "Epoch 293/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0176 - mae: 0.1018 - val_loss: 0.0171 - val_mae: 0.1051\n", + "Epoch 294/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0175 - mae: 0.1010 - val_loss: 0.0175 - val_mae: 0.1050\n", + "Epoch 295/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0176 - mae: 0.1015 - val_loss: 0.0174 - val_mae: 0.1056\n", + "Epoch 296/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.0173 - mae: 0.1017 - val_loss: 0.0172 - val_mae: 0.1040\n", + "Epoch 297/500\n", + "600/600 [==============================] - 0s 63us/sample - loss: 0.0168 - mae: 0.0999 - val_loss: 0.0169 - val_mae: 0.1046\n", + "Epoch 298/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0169 - mae: 0.1001 - val_loss: 0.0166 - val_mae: 0.1035\n", + "Epoch 299/500\n", + "600/600 [==============================] - 0s 141us/sample - loss: 0.0168 - mae: 0.0994 - val_loss: 0.0168 - val_mae: 0.1035\n", + "Epoch 300/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0166 - mae: 0.0999 - val_loss: 0.0162 - val_mae: 0.1026\n", + "Epoch 301/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0164 - mae: 0.0985 - val_loss: 0.0164 - val_mae: 0.1026\n", + "Epoch 302/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.0162 - mae: 0.0988 - val_loss: 0.0165 - val_mae: 0.1026\n", + "Epoch 303/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0164 - mae: 0.0989 - val_loss: 0.0161 - val_mae: 0.1022\n", + "Epoch 304/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0163 - mae: 0.0988 - val_loss: 0.0161 - val_mae: 0.1026\n", + "Epoch 305/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0163 - mae: 0.0993 - val_loss: 0.0158 - val_mae: 0.1015\n", + "Epoch 306/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0162 - mae: 0.0989 - val_loss: 0.0161 - val_mae: 0.1020\n", + "Epoch 307/500\n", + "600/600 [==============================] - 0s 76us/sample - loss: 0.0166 - mae: 0.1004 - val_loss: 0.0158 - val_mae: 0.1011\n", + "Epoch 308/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0160 - mae: 0.0984 - val_loss: 0.0158 - val_mae: 0.1004\n", + "Epoch 309/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0160 - mae: 0.0983 - val_loss: 0.0160 - val_mae: 0.1012\n", + "Epoch 310/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0170 - mae: 0.1013 - val_loss: 0.0159 - val_mae: 0.1016\n", + "Epoch 311/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0160 - mae: 0.0983 - val_loss: 0.0192 - val_mae: 0.1091\n", + "Epoch 312/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0185 - mae: 0.1053 - val_loss: 0.0153 - val_mae: 0.1004\n", + "Epoch 313/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0161 - mae: 0.0997 - val_loss: 0.0162 - val_mae: 0.1010\n", + "Epoch 314/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0153 - mae: 0.0966 - val_loss: 0.0154 - val_mae: 0.1006\n", + "Epoch 315/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0162 - mae: 0.1002 - val_loss: 0.0152 - val_mae: 0.0999\n", + "Epoch 316/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0162 - mae: 0.0999 - val_loss: 0.0158 - val_mae: 0.0996\n", + "Epoch 317/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0158 - mae: 0.0985 - val_loss: 0.0170 - val_mae: 0.1026\n", + "Epoch 318/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0167 - mae: 0.1021 - val_loss: 0.0148 - val_mae: 0.0981\n", + "Epoch 319/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0161 - mae: 0.0994 - val_loss: 0.0157 - val_mae: 0.1011\n", + "Epoch 320/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0148 - mae: 0.0950 - val_loss: 0.0144 - val_mae: 0.0973\n", + "Epoch 321/500\n", + "600/600 [==============================] - 0s 62us/sample - loss: 0.0147 - mae: 0.0954 - val_loss: 0.0152 - val_mae: 0.0983\n", + "Epoch 322/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0149 - mae: 0.0955 - val_loss: 0.0147 - val_mae: 0.0982\n", + "Epoch 323/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0149 - mae: 0.0956 - val_loss: 0.0145 - val_mae: 0.0977\n", + "Epoch 324/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0147 - mae: 0.0956 - val_loss: 0.0142 - val_mae: 0.0963\n", + "Epoch 325/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0145 - mae: 0.0950 - val_loss: 0.0144 - val_mae: 0.0974\n", + "Epoch 326/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.0147 - mae: 0.0957 - val_loss: 0.0141 - val_mae: 0.0965\n", + "Epoch 327/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0147 - mae: 0.0960 - val_loss: 0.0144 - val_mae: 0.0973\n", + "Epoch 328/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0145 - mae: 0.0944 - val_loss: 0.0141 - val_mae: 0.0959\n", + "Epoch 329/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0145 - mae: 0.0952 - val_loss: 0.0137 - val_mae: 0.0949\n", + "Epoch 330/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0143 - mae: 0.0944 - val_loss: 0.0139 - val_mae: 0.0952\n", + "Epoch 331/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0143 - mae: 0.0941 - val_loss: 0.0139 - val_mae: 0.0947\n", + "Epoch 332/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0141 - mae: 0.0941 - val_loss: 0.0139 - val_mae: 0.0949\n", + "Epoch 333/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0149 - mae: 0.0951 - val_loss: 0.0148 - val_mae: 0.0968\n", + "Epoch 334/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0148 - mae: 0.0957 - val_loss: 0.0151 - val_mae: 0.0979\n", + "Epoch 335/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.0151 - mae: 0.0966 - val_loss: 0.0139 - val_mae: 0.0945\n", + "Epoch 336/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.0141 - mae: 0.0932 - val_loss: 0.0140 - val_mae: 0.0954\n", + "Epoch 337/500\n", + "600/600 [==============================] - 0s 60us/sample - loss: 0.0141 - mae: 0.0936 - val_loss: 0.0133 - val_mae: 0.0934\n", + "Epoch 338/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0141 - mae: 0.0932 - val_loss: 0.0137 - val_mae: 0.0943\n", + "Epoch 339/500\n", + "600/600 [==============================] - 0s 62us/sample - loss: 0.0139 - mae: 0.0931 - val_loss: 0.0132 - val_mae: 0.0929\n", + "Epoch 340/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0136 - mae: 0.0923 - val_loss: 0.0132 - val_mae: 0.0929\n", + "Epoch 341/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0137 - mae: 0.0925 - val_loss: 0.0146 - val_mae: 0.0963\n", + "Epoch 342/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0140 - mae: 0.0947 - val_loss: 0.0139 - val_mae: 0.0946\n", + "Epoch 343/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0139 - mae: 0.0940 - val_loss: 0.0136 - val_mae: 0.0934\n", + "Epoch 344/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0135 - mae: 0.0920 - val_loss: 0.0132 - val_mae: 0.0925\n", + "Epoch 345/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0136 - mae: 0.0923 - val_loss: 0.0134 - val_mae: 0.0932\n", + "Epoch 346/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0134 - mae: 0.0922 - val_loss: 0.0130 - val_mae: 0.0919\n", + "Epoch 347/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0133 - mae: 0.0920 - val_loss: 0.0137 - val_mae: 0.0937\n", + "Epoch 348/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0134 - mae: 0.0926 - val_loss: 0.0133 - val_mae: 0.0926\n", + "Epoch 349/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0139 - mae: 0.0941 - val_loss: 0.0135 - val_mae: 0.0929\n", + "Epoch 350/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0133 - mae: 0.0904 - val_loss: 0.0126 - val_mae: 0.0907\n", + "Epoch 351/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0134 - mae: 0.0916 - val_loss: 0.0128 - val_mae: 0.0912\n", + "Epoch 352/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0137 - mae: 0.0928 - val_loss: 0.0131 - val_mae: 0.0916\n", + "Epoch 353/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0144 - mae: 0.0947 - val_loss: 0.0126 - val_mae: 0.0904\n", + "Epoch 354/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.0131 - mae: 0.0910 - val_loss: 0.0132 - val_mae: 0.0923\n", + "Epoch 355/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0138 - mae: 0.0930 - val_loss: 0.0131 - val_mae: 0.0919\n", + "Epoch 356/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0135 - mae: 0.0926 - val_loss: 0.0126 - val_mae: 0.0904\n", + "Epoch 357/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0131 - mae: 0.0907 - val_loss: 0.0138 - val_mae: 0.0940\n", + "Epoch 358/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0132 - mae: 0.0907 - val_loss: 0.0126 - val_mae: 0.0904\n", + "Epoch 359/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0129 - mae: 0.0903 - val_loss: 0.0127 - val_mae: 0.0907\n", + "Epoch 360/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0128 - mae: 0.0900 - val_loss: 0.0126 - val_mae: 0.0902\n", + "Epoch 361/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0133 - mae: 0.0909 - val_loss: 0.0126 - val_mae: 0.0905\n", + "Epoch 362/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0130 - mae: 0.0907 - val_loss: 0.0125 - val_mae: 0.0898\n", + "Epoch 363/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0129 - mae: 0.0899 - val_loss: 0.0124 - val_mae: 0.0896\n", + "Epoch 364/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0129 - mae: 0.0903 - val_loss: 0.0126 - val_mae: 0.0900\n", + "Epoch 365/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0129 - mae: 0.0898 - val_loss: 0.0125 - val_mae: 0.0901\n", + "Epoch 366/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0129 - mae: 0.0910 - val_loss: 0.0131 - val_mae: 0.0912\n", + "Epoch 367/500\n", + "600/600 [==============================] - 0s 72us/sample - loss: 0.0127 - mae: 0.0895 - val_loss: 0.0122 - val_mae: 0.0890\n", + "Epoch 368/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0129 - mae: 0.0905 - val_loss: 0.0126 - val_mae: 0.0905\n", + "Epoch 369/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0129 - mae: 0.0902 - val_loss: 0.0123 - val_mae: 0.0889\n", + "Epoch 370/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0127 - mae: 0.0899 - val_loss: 0.0125 - val_mae: 0.0894\n", + "Epoch 371/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0134 - mae: 0.0920 - val_loss: 0.0139 - val_mae: 0.0931\n", + "Epoch 372/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0134 - mae: 0.0916 - val_loss: 0.0129 - val_mae: 0.0905\n", + "Epoch 373/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0129 - mae: 0.0907 - val_loss: 0.0126 - val_mae: 0.0897\n", + "Epoch 374/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0128 - mae: 0.0899 - val_loss: 0.0121 - val_mae: 0.0879\n", + "Epoch 375/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0133 - mae: 0.0923 - val_loss: 0.0125 - val_mae: 0.0904\n", + "Epoch 376/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0129 - mae: 0.0908 - val_loss: 0.0130 - val_mae: 0.0915\n", + "Epoch 377/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0129 - mae: 0.0911 - val_loss: 0.0119 - val_mae: 0.0877\n", + "Epoch 378/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0138 - mae: 0.0941 - val_loss: 0.0121 - val_mae: 0.0881\n", + "Epoch 379/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0127 - mae: 0.0898 - val_loss: 0.0127 - val_mae: 0.0895\n", + "Epoch 380/500\n", + "600/600 [==============================] - 0s 46us/sample - loss: 0.0129 - mae: 0.0903 - val_loss: 0.0120 - val_mae: 0.0876\n", + "Epoch 381/500\n", + "600/600 [==============================] - 0s 45us/sample - loss: 0.0126 - mae: 0.0896 - val_loss: 0.0120 - val_mae: 0.0876\n", + "Epoch 382/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0130 - mae: 0.0917 - val_loss: 0.0121 - val_mae: 0.0880\n", + "Epoch 383/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0126 - mae: 0.0895 - val_loss: 0.0120 - val_mae: 0.0882\n", + "Epoch 384/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0128 - mae: 0.0910 - val_loss: 0.0150 - val_mae: 0.0983\n", + "Epoch 385/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0134 - mae: 0.0912 - val_loss: 0.0118 - val_mae: 0.0876\n", + "Epoch 386/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0124 - mae: 0.0892 - val_loss: 0.0123 - val_mae: 0.0886\n", + "Epoch 387/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0127 - mae: 0.0898 - val_loss: 0.0128 - val_mae: 0.0900\n", + "Epoch 388/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.0128 - mae: 0.0903 - val_loss: 0.0129 - val_mae: 0.0906\n", + "Epoch 389/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0148 - mae: 0.0984 - val_loss: 0.0121 - val_mae: 0.0880\n", + "Epoch 390/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0137 - mae: 0.0939 - val_loss: 0.0118 - val_mae: 0.0874\n", + "Epoch 391/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0127 - mae: 0.0896 - val_loss: 0.0122 - val_mae: 0.0893\n", + "Epoch 392/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0124 - mae: 0.0888 - val_loss: 0.0118 - val_mae: 0.0873\n", + "Epoch 393/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0124 - mae: 0.0887 - val_loss: 0.0119 - val_mae: 0.0879\n", + "Epoch 394/500\n", + "600/600 [==============================] - 0s 62us/sample - loss: 0.0124 - mae: 0.0885 - val_loss: 0.0117 - val_mae: 0.0865\n", + "Epoch 395/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0128 - mae: 0.0904 - val_loss: 0.0121 - val_mae: 0.0880\n", + "Epoch 396/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0126 - mae: 0.0895 - val_loss: 0.0119 - val_mae: 0.0874\n", + "Epoch 397/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0124 - mae: 0.0883 - val_loss: 0.0120 - val_mae: 0.0880\n", + "Epoch 398/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.0130 - mae: 0.0906 - val_loss: 0.0122 - val_mae: 0.0891\n", + "Epoch 399/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0136 - mae: 0.0935 - val_loss: 0.0128 - val_mae: 0.0917\n", + "Epoch 400/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0136 - mae: 0.0923 - val_loss: 0.0128 - val_mae: 0.0910\n", + "Epoch 401/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.0126 - mae: 0.0896 - val_loss: 0.0134 - val_mae: 0.0934\n", + "Epoch 402/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0135 - mae: 0.0925 - val_loss: 0.0127 - val_mae: 0.0910\n", + "Epoch 403/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0129 - mae: 0.0904 - val_loss: 0.0117 - val_mae: 0.0868\n", + "Epoch 404/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0126 - mae: 0.0898 - val_loss: 0.0140 - val_mae: 0.0928\n", + "Epoch 405/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0132 - mae: 0.0928 - val_loss: 0.0117 - val_mae: 0.0869\n", + "Epoch 406/500\n", + "600/600 [==============================] - 0s 47us/sample - loss: 0.0126 - mae: 0.0906 - val_loss: 0.0128 - val_mae: 0.0908\n", + "Epoch 407/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0122 - mae: 0.0880 - val_loss: 0.0117 - val_mae: 0.0870\n", + "Epoch 408/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0125 - mae: 0.0897 - val_loss: 0.0119 - val_mae: 0.0875\n", + "Epoch 409/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0124 - mae: 0.0889 - val_loss: 0.0118 - val_mae: 0.0869\n", + "Epoch 410/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0124 - mae: 0.0888 - val_loss: 0.0117 - val_mae: 0.0868\n", + "Epoch 411/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.0122 - mae: 0.0886 - val_loss: 0.0139 - val_mae: 0.0933\n", + "Epoch 412/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0132 - mae: 0.0923 - val_loss: 0.0125 - val_mae: 0.0891\n", + "Epoch 413/500\n", + "600/600 [==============================] - 0s 62us/sample - loss: 0.0140 - mae: 0.0938 - val_loss: 0.0119 - val_mae: 0.0875\n", + "Epoch 414/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0134 - mae: 0.0917 - val_loss: 0.0125 - val_mae: 0.0897\n", + "Epoch 415/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0131 - mae: 0.0917 - val_loss: 0.0126 - val_mae: 0.0904\n", + "Epoch 416/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0128 - mae: 0.0900 - val_loss: 0.0129 - val_mae: 0.0912\n", + "Epoch 417/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0124 - mae: 0.0890 - val_loss: 0.0118 - val_mae: 0.0874\n", + "Epoch 418/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0128 - mae: 0.0899 - val_loss: 0.0132 - val_mae: 0.0925\n", + "Epoch 419/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0131 - mae: 0.0917 - val_loss: 0.0120 - val_mae: 0.0882\n", + "Epoch 420/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0124 - mae: 0.0884 - val_loss: 0.0130 - val_mae: 0.0919\n", + "Epoch 421/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0131 - mae: 0.0914 - val_loss: 0.0130 - val_mae: 0.0916\n", + "Epoch 422/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0133 - mae: 0.0921 - val_loss: 0.0115 - val_mae: 0.0864\n", + "Epoch 423/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0123 - mae: 0.0886 - val_loss: 0.0120 - val_mae: 0.0876\n", + "Epoch 424/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0122 - mae: 0.0883 - val_loss: 0.0141 - val_mae: 0.0935\n", + "Epoch 425/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0136 - mae: 0.0936 - val_loss: 0.0117 - val_mae: 0.0869\n", + "Epoch 426/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0134 - mae: 0.0922 - val_loss: 0.0116 - val_mae: 0.0868\n", + "Epoch 427/500\n", + "600/600 [==============================] - 0s 66us/sample - loss: 0.0121 - mae: 0.0879 - val_loss: 0.0116 - val_mae: 0.0867\n", + "Epoch 428/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0121 - mae: 0.0882 - val_loss: 0.0121 - val_mae: 0.0881\n", + "Epoch 429/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0125 - mae: 0.0895 - val_loss: 0.0114 - val_mae: 0.0859\n", + "Epoch 430/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0123 - mae: 0.0883 - val_loss: 0.0129 - val_mae: 0.0901\n", + "Epoch 431/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0126 - mae: 0.0900 - val_loss: 0.0120 - val_mae: 0.0877\n", + "Epoch 432/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0123 - mae: 0.0882 - val_loss: 0.0118 - val_mae: 0.0870\n", + "Epoch 433/500\n", + "600/600 [==============================] - 0s 60us/sample - loss: 0.0120 - mae: 0.0879 - val_loss: 0.0120 - val_mae: 0.0878\n", + "Epoch 434/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0122 - mae: 0.0877 - val_loss: 0.0114 - val_mae: 0.0861\n", + "Epoch 435/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0120 - mae: 0.0877 - val_loss: 0.0120 - val_mae: 0.0876\n", + "Epoch 436/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0122 - mae: 0.0885 - val_loss: 0.0115 - val_mae: 0.0862\n", + "Epoch 437/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0120 - mae: 0.0882 - val_loss: 0.0117 - val_mae: 0.0867\n", + "Epoch 438/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0119 - mae: 0.0872 - val_loss: 0.0116 - val_mae: 0.0865\n", + "Epoch 439/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0122 - mae: 0.0885 - val_loss: 0.0116 - val_mae: 0.0864\n", + "Epoch 440/500\n", + "600/600 [==============================] - 0s 65us/sample - loss: 0.0122 - mae: 0.0888 - val_loss: 0.0123 - val_mae: 0.0889\n", + "Epoch 441/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0120 - mae: 0.0886 - val_loss: 0.0116 - val_mae: 0.0864\n", + "Epoch 442/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0124 - mae: 0.0880 - val_loss: 0.0120 - val_mae: 0.0880\n", + "Epoch 443/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0121 - mae: 0.0875 - val_loss: 0.0123 - val_mae: 0.0885\n", + "Epoch 444/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0124 - mae: 0.0895 - val_loss: 0.0118 - val_mae: 0.0875\n", + "Epoch 445/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0126 - mae: 0.0902 - val_loss: 0.0117 - val_mae: 0.0869\n", + "Epoch 446/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0121 - mae: 0.0873 - val_loss: 0.0132 - val_mae: 0.0925\n", + "Epoch 447/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0124 - mae: 0.0883 - val_loss: 0.0124 - val_mae: 0.0890\n", + "Epoch 448/500\n", + "600/600 [==============================] - 0s 69us/sample - loss: 0.0120 - mae: 0.0877 - val_loss: 0.0115 - val_mae: 0.0863\n", + "Epoch 449/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0122 - mae: 0.0885 - val_loss: 0.0115 - val_mae: 0.0865\n", + "Epoch 450/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0125 - mae: 0.0904 - val_loss: 0.0118 - val_mae: 0.0872\n", + "Epoch 451/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0119 - mae: 0.0869 - val_loss: 0.0126 - val_mae: 0.0895\n", + "Epoch 452/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0124 - mae: 0.0890 - val_loss: 0.0116 - val_mae: 0.0867\n", + "Epoch 453/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0119 - mae: 0.0872 - val_loss: 0.0117 - val_mae: 0.0868\n", + "Epoch 454/500\n", + "600/600 [==============================] - 0s 49us/sample - loss: 0.0120 - mae: 0.0878 - val_loss: 0.0116 - val_mae: 0.0863\n", + "Epoch 455/500\n", + "600/600 [==============================] - 0s 61us/sample - loss: 0.0120 - mae: 0.0878 - val_loss: 0.0117 - val_mae: 0.0870\n", + "Epoch 456/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0118 - mae: 0.0869 - val_loss: 0.0115 - val_mae: 0.0862\n", + "Epoch 457/500\n", + "600/600 [==============================] - 0s 66us/sample - loss: 0.0121 - mae: 0.0883 - val_loss: 0.0116 - val_mae: 0.0866\n", + "Epoch 458/500\n", + "600/600 [==============================] - 0s 60us/sample - loss: 0.0121 - mae: 0.0876 - val_loss: 0.0116 - val_mae: 0.0863\n", + "Epoch 459/500\n", + "600/600 [==============================] - 0s 60us/sample - loss: 0.0119 - mae: 0.0872 - val_loss: 0.0116 - val_mae: 0.0864\n", + "Epoch 460/500\n", + "600/600 [==============================] - 0s 48us/sample - loss: 0.0119 - mae: 0.0871 - val_loss: 0.0115 - val_mae: 0.0862\n", + "Epoch 461/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0120 - mae: 0.0880 - val_loss: 0.0120 - val_mae: 0.0881\n", + "Epoch 462/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0119 - mae: 0.0872 - val_loss: 0.0116 - val_mae: 0.0864\n", + "Epoch 463/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0119 - mae: 0.0873 - val_loss: 0.0117 - val_mae: 0.0866\n", + "Epoch 464/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0118 - mae: 0.0868 - val_loss: 0.0115 - val_mae: 0.0862\n", + "Epoch 465/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0120 - mae: 0.0875 - val_loss: 0.0124 - val_mae: 0.0896\n", + "Epoch 466/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0117 - mae: 0.0875 - val_loss: 0.0129 - val_mae: 0.0901\n", + "Epoch 467/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0126 - mae: 0.0907 - val_loss: 0.0127 - val_mae: 0.0898\n", + "Epoch 468/500\n", + "600/600 [==============================] - 0s 58us/sample - loss: 0.0125 - mae: 0.0893 - val_loss: 0.0118 - val_mae: 0.0874\n", + "Epoch 469/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0122 - mae: 0.0887 - val_loss: 0.0115 - val_mae: 0.0864\n", + "Epoch 470/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0119 - mae: 0.0874 - val_loss: 0.0119 - val_mae: 0.0876\n", + "Epoch 471/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0118 - mae: 0.0866 - val_loss: 0.0116 - val_mae: 0.0867\n", + "Epoch 472/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0120 - mae: 0.0873 - val_loss: 0.0118 - val_mae: 0.0872\n", + "Epoch 473/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0121 - mae: 0.0882 - val_loss: 0.0115 - val_mae: 0.0863\n", + "Epoch 474/500\n", + "600/600 [==============================] - 0s 55us/sample - loss: 0.0118 - mae: 0.0871 - val_loss: 0.0117 - val_mae: 0.0867\n", + "Epoch 475/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0120 - mae: 0.0877 - val_loss: 0.0121 - val_mae: 0.0884\n", + "Epoch 476/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0127 - mae: 0.0902 - val_loss: 0.0119 - val_mae: 0.0877\n", + "Epoch 477/500\n", + "600/600 [==============================] - 0s 61us/sample - loss: 0.0122 - mae: 0.0882 - val_loss: 0.0151 - val_mae: 0.0967\n", + "Epoch 478/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0136 - mae: 0.0933 - val_loss: 0.0123 - val_mae: 0.0889\n", + "Epoch 479/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0121 - mae: 0.0884 - val_loss: 0.0116 - val_mae: 0.0869\n", + "Epoch 480/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0121 - mae: 0.0883 - val_loss: 0.0118 - val_mae: 0.0877\n", + "Epoch 481/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0120 - mae: 0.0876 - val_loss: 0.0118 - val_mae: 0.0875\n", + "Epoch 482/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0121 - mae: 0.0887 - val_loss: 0.0116 - val_mae: 0.0865\n", + "Epoch 483/500\n", + "600/600 [==============================] - 0s 70us/sample - loss: 0.0122 - mae: 0.0892 - val_loss: 0.0114 - val_mae: 0.0863\n", + "Epoch 484/500\n", + "600/600 [==============================] - 0s 57us/sample - loss: 0.0132 - mae: 0.0926 - val_loss: 0.0115 - val_mae: 0.0866\n", + "Epoch 485/500\n", + "600/600 [==============================] - 0s 70us/sample - loss: 0.0138 - mae: 0.0948 - val_loss: 0.0118 - val_mae: 0.0874\n", + "Epoch 486/500\n", + "600/600 [==============================] - 0s 59us/sample - loss: 0.0119 - mae: 0.0879 - val_loss: 0.0114 - val_mae: 0.0860\n", + "Epoch 487/500\n", + "600/600 [==============================] - 0s 50us/sample - loss: 0.0118 - mae: 0.0872 - val_loss: 0.0116 - val_mae: 0.0870\n", + "Epoch 488/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0117 - mae: 0.0870 - val_loss: 0.0114 - val_mae: 0.0861\n", + "Epoch 489/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0118 - mae: 0.0869 - val_loss: 0.0120 - val_mae: 0.0879\n", + "Epoch 490/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0119 - mae: 0.0873 - val_loss: 0.0115 - val_mae: 0.0863\n", + "Epoch 491/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0118 - mae: 0.0871 - val_loss: 0.0117 - val_mae: 0.0873\n", + "Epoch 492/500\n", + "600/600 [==============================] - 0s 61us/sample - loss: 0.0122 - mae: 0.0886 - val_loss: 0.0127 - val_mae: 0.0899\n", + "Epoch 493/500\n", + "600/600 [==============================] - 0s 54us/sample - loss: 0.0122 - mae: 0.0881 - val_loss: 0.0113 - val_mae: 0.0857\n", + "Epoch 494/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0125 - mae: 0.0898 - val_loss: 0.0119 - val_mae: 0.0880\n", + "Epoch 495/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0123 - mae: 0.0897 - val_loss: 0.0116 - val_mae: 0.0866\n", + "Epoch 496/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0119 - mae: 0.0875 - val_loss: 0.0115 - val_mae: 0.0866\n", + "Epoch 497/500\n", + "600/600 [==============================] - 0s 56us/sample - loss: 0.0118 - mae: 0.0868 - val_loss: 0.0117 - val_mae: 0.0871\n", + "Epoch 498/500\n", + "600/600 [==============================] - 0s 52us/sample - loss: 0.0124 - mae: 0.0889 - val_loss: 0.0116 - val_mae: 0.0866\n", + "Epoch 499/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0119 - mae: 0.0871 - val_loss: 0.0115 - val_mae: 0.0863\n", + "Epoch 500/500\n", + "600/600 [==============================] - 0s 53us/sample - loss: 0.0118 - mae: 0.0873 - val_loss: 0.0115 - val_mae: 0.0864\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Mc_CQu2_IvOP", + "colab_type": "text" + }, + "source": [ + "### 3. Plot Metrics\n", + "Each training epoch, the model prints out its loss and mean absolute error for training and validation. You can read this in the output above (note that your exact numbers may differ): \n", + "\n", + "```\n", + "Epoch 500/500\n", + "600/600 [==============================] - 0s 51us/sample - loss: 0.0118 - mae: 0.0873 - val_loss: 0.0105 - val_mae: 0.0832\n", + "```\n", + "\n", + "You can see that we've already got a huge improvement - validation loss has dropped from 0.15 to 0.01, and validation MAE has dropped from 0.33 to 0.08.\n", + "\n", + "The following cell will print the same graphs we used to evaluate our original model, but showing our new training history:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "SYHGswAJJgrC", + "colab_type": "code", + "outputId": "bdc6e8f7-480d-4d3e-c20b-94776722360f", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 851 + } + }, + "source": [ + "# Draw a graph of the loss, which is the distance between\n", + "# the predicted and actual values during training and validation.\n", + "loss = history_2.history['loss']\n", + "val_loss = history_2.history['val_loss']\n", + "\n", + "epochs = range(1, len(loss) + 1)\n", + "\n", + "plt.plot(epochs, loss, 'g.', label='Training loss')\n", + "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n", + "plt.title('Training and validation loss')\n", + "plt.xlabel('Epochs')\n", + "plt.ylabel('Loss')\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "# Exclude the first few epochs so the graph is easier to read\n", + "SKIP = 100\n", + "\n", + "plt.clf()\n", + "\n", + "plt.plot(epochs[SKIP:], loss[SKIP:], 'g.', label='Training loss')\n", + "plt.plot(epochs[SKIP:], val_loss[SKIP:], 'b.', label='Validation loss')\n", + "plt.title('Training and validation loss')\n", + "plt.xlabel('Epochs')\n", + "plt.ylabel('Loss')\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "plt.clf()\n", + "\n", + "# Draw a graph of mean absolute error, which is another way of\n", + "# measuring the amount of error in the prediction.\n", + "mae = history_2.history['mae']\n", + "val_mae = history_2.history['val_mae']\n", + "\n", + "plt.plot(epochs[SKIP:], mae[SKIP:], 'g.', label='Training MAE')\n", + "plt.plot(epochs[SKIP:], val_mae[SKIP:], 'b.', label='Validation MAE')\n", + "plt.title('Training and validation mean absolute error')\n", + "plt.xlabel('Epochs')\n", + "plt.ylabel('MAE')\n", + "plt.legend()\n", + "plt.show()" + ], + "execution_count": 16, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\nnCYCpZRyuP8H8luf2Ik/xC4AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + }, + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEWCAYAAAB8LwAVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOydeXxU5bn4v89MFqC41IiiEAy2iksp\nOzouGEStoFWsS6W2AVHCIt5yvZbWqpUreqlob6mKQFCRtBbU+pMiAipIgOp42RVBrKBhUVFMRbSY\nZea8vz/ecyZnJpNkghkSyPPNJ5+cc95z3nlnyXnm2cUYg6IoiqIkEmjqBSiKoijNExUQiqIoSlJU\nQCiKoihJUQGhKIqiJEUFhKIoipIUFRCKoihKUlRAHAKIyCIRGdrY5zYlIlIqIhelYV4jIt93t6eL\nyN2pnHsAj3ODiLxyoOs83BCRp0Tkvkaec5iI/KMx51QaRkZTL+BwRUS+9u22ASqAqLs/0hjzdKpz\nGWMGpuPcwx1jzKjGmEdE8oAPgUxjTMSd+2kg5fdQSS8iMgy42RhzXlOv5XBCBUSaMMa09bZFpBT7\n4V2SeJ6IZHg3HUVRmj/J/mcb+n98qPzfq4npICMi+SKyS0R+LSK7gVki8l0RWSAie0TkC3e7o++a\nEhG52d0eJiL/EJGH3HM/FJGBB3huZxFZISJficgSEZkqIn+pZd2prHGiiLzuzveKiBzrG/+FiGwX\nkTIRubOO1+csEdktIkHfsatE5G13u6+IhEVkr4h8IiKPikhWLXPFmT1E5FfuNR+LyPCEcy8TkfUi\nsk9EdorIBN/wCvfvXhH5WkRCieYPETlHRFaLyJfu33NSfW0S1uF9PsaLyGfuegeLyCAR+aeI/EtE\nfus7PyAivxGRbe5r+6yIHOMbf859Pb903+szE16fqSLykruu/xOR79Xx3tQ6l8uxIvKqO9dyETnJ\nvU5E5I/u89knIhtF5Afu2FEiUux+rraLyF0iUuO+JCJ5Yk2CGb5jJSJys4icDkwHQu77s9cdz3Y/\n+ztE5FOxJsfWdTy/4SLyrvv5ftlbvztmROQWEXkfeF+S/x9ni8gU9/P1sbudnfC+xs6vbR3NCRUQ\nTUN74BjgJKAQ+z7Mcvc7Ad8Aj9Zx/VnAe8CxwGTgCRGRAzj3r8AqIAeYAPyijsdMZY0/A24EjgOy\ngNsBROQMYJo7/4nu43UkCcaY/wP+DVyYMO9f3e0o8J/u8wkBA4Axdawbdw2Xuuu5GDgFSPR//Bso\nAI4GLgNGi8hgd6yf+/doY0xbY0w4Ye5jgJeAh93n9r/ASyKSk/Acarw2tdAeaAV0AH4HzAR+DvQC\nzgfuFpHO7rm3AoOBC7Cv7RfAVN9ci9znexywjppmseuB/wa+C2wF7q9jXfXNdQMwEfvebPCNX4J9\nDU8FjgKuA8rcsUfcYye7z6EA+zqljDHmXWAUEHbfn6Pdod+7j9kd+D7Vr2cNRORK4LfAT4B2wEpg\nTsJpg7H/T2e4+4n/x3cCZ7uP1w3oC9zluz7x/OaPMUZ/0/wLlAIXudv5QCXQqo7zuwNf+PZLsCYq\ngGHAVt9YG8AA7RtyLvYmHwHa+Mb/AvwlxeeUbI13+fbHAIvd7d8Bc31j33Ffg4tqmfs+4El3+wjs\nzfukWs4dB7zg2zfA993tp4D73O0ngd/7zjvVf26SeacAf3S389xzM3zjw4B/uNu/AFYlXB8GhtX3\n2iR53Hys8A36nr8BzvKdsxYY7G6/CwzwjZ0AVPnX6hs72p3rKN/r87hvfBCwJcX3P9lc/ve4LVaY\n52KF/T+xN8+A75yg+zk4w3dsJFCS5DVO9h6UEP9Z/4dvTNzPzfd8x0LAh7U8n0XATb79ALDf+9y5\nj31hwvsU938MbAMG+fZ/BJSm+n/fHH9Vg2ga9hhjyr0dEWkjIjNcFXsf1qRxtPjMLAns9jaMMfvd\nzbYNPPdE4F++YwA7a1twimvc7dve71vTif65jTH/pvobZDL+CvzEVc9/Aqwzxmx313GqWPPWbncd\n/4P9xlofcWsAtic8v7NEZJlr6vgS+400lXm9ubcnHNuO/cbqUdtrk4wyY4wX0PCN+/dT3/g3vutP\nAl4Qa3LbixUYUeB4EQmKyO9d89M+7BcViH9eKa0rxbn87/HXwL+AE40xr2G1zanAZyJSJCJHutdm\nEv/aJb5uB0o77Beitb7XZrF7PBknAX/ynfsvrJDxryXx/yPu/5ian4Pt7rHazm/2qIBoGhJL6P4X\n0AX7LfFIqk0atZmNGoNPgGNEpI3vWG4d53+bNX7in9t9zJzaTjbGbMb+cw0k3rwE1lS1BTjFXcdv\nD2QNWA3Kz1+B+UCuMeYorE3bm7e+kscfY28wfjoBH6Wwrm/LTmCgMeZo328rY8xH2NfuSqw57Sjs\nt3A4sM9VKnP53+O2WHPKxwDGmIeNMb2w5plTgV8Bn2O1Hf9rV9vr9m/3r//z2t63nfgefY4VpGf6\nXpejjC94JIGd2OhC/+vY2hjzRh2Pkbif+Dno5B6r7fxmjwqI5sER2A/zXteefU+6H9D9Rr4GmCAi\nWSISAn6cpjX+DbhcRM4T61C+l/o/e38FfokVRM8lrGMf8LWInAaMTnENzwLDROQMV0Alrv8IrEZV\nLiJ9sTdEjz2Ag7WTJ2MhcKqI/ExEMkTkp9gb4YIU1/ZtmA7c73MIt3Pt6WCfUwVWW2uD1bYOlFTm\nGuR7jycCbxpjdopIH1dDy8Te6MsBx9WSnnXXf4T7HG7DmjrjMMbswQqOn7vazHDA71D/FOjoPjbG\nGAfru/mjiBwHICIdRORHtTy/6cAd4jreXef5tQ14fcD6LO5y34NjsabVpEEfhwoqIJoHU4DW2G89\nb2JV4YPBDVi7bBnW7v8M9iaQjANeozFmE3AL9qb/CdaRuquey+ZgnZavGWM+9x2/HXvz/gp7A3gm\nxTUscp/Da1hn7GsJp4wB7hWRr7D/2M/6rt2Pdd6+7pogzk6Yuwy4HKtllQHjgcsT1p0u/oTVfF5x\n1/4m1pEKUIzVxD4CNrtjB0oqc/0VK3j/hXWo/9w9fiT2vfrCnaMMeNAduxUrND4A/uHO8WQtaxiB\n1TzKgDMB/7f714BNwG4R8V73X2Pf6zdds9gSrBZcA2PMC8ADwFz33HewGmxDuA/7pettYCPWkd+o\nyYMHG3EdKIqCiDyDdVKmXYNRFKX5oxpEC8ZV/b8nNpb+UqyNeV5Tr0tRlOaBZlK3bNoD/w/rMN4F\njDbGrG/aJSmK0lxQE5OiKIqSFDUxKYqiKEk5bExMxx57rMnLy2vqZSiKohxSrF279nNjTNIEwsNG\nQOTl5bFmzZqmXoaiKMohhYgkVgGIoSYmRVEUJSkqIBRFUZSkqIBQFEVRknLY+CAURTl4VFVVsWvX\nLsrLD6nipC2aVq1a0bFjRzIzM1O+Jq0Cws3O/RO27vvjxpjfJ4zfBtyM7UuwBxhujNkuIt2xVTuP\nxJYuvt8Yk1LNHUVR0s+uXbs44ogjyMvLo/ZeVUpzwRhDWVkZu3btonPnzvVf4JI2E5PbJ2AqtuDV\nGcAQt7OYn/VAb2PMD7EVPye7x/cDBcaYM4FLgSkicjSKojQLysvLycnJUeFwiCAi5OTkNFjjS6cP\noi+2m9kHxphKYC621k8MY8wyX8OaN3HbUBpj/mmMed/d/hj4jNobfXxrwmGYNMn+VRQlNVQ4HFoc\nyPuVThNTB+I7MO2iugxxMm7Ctv2Lw63Nn4Vt55c4Vojb27VTp8T+L6kRDsOAAVBZCVlZsHQphEIH\nNJWiKMphRbOIYhKRnwO9qa4R7x0/AfgzcKPbACQOY0yRMaa3MaZ3u3YHpmCUlFjhEI1CRQVMmKCa\nhKI0d8rKyujevTvdu3enffv2dOjQIbZfWVlZ57Vr1qzhP/7jP+p9jHPOOadR1lpSUoKI8Pjjj8eO\nbdiwARHhoYceih2LRCK0a9eO3/zmN3HX5+fn06VLl9jzu+aaaxplXamQTg3iI+JbPHYkSStBEbkI\nuBO4wBhT4Tt+JPAScKcx5ts0OqmT/HyrOVRUgOPAkiWwcqVqEorSnMnJyWHDhg0ATJgwgbZt23L7\n7bfHxiORCBkZyW9vvXv3pnfv3vU+xhtvvFHvOanygx/8gGeffZabb74ZgDlz5tCtW7e4c1599VVO\nPfVUnnvuOSZNmhRnEnr66adTWnNjk04NYjVwioh0dtsAXo/tfBVDRHoAM4ArjDGf+Y5nAS8AxcaY\nv6VxjYRCVhhcdBEEAlZIVFZazUJRlMYjvDPMpJWTCO9Mj4o+bNgwRo0axVlnncX48eNZtWoVoVCI\nHj16cM455/Dee+8B9hv95ZdfDljhMnz4cPLz8zn55JN5+OGHY/O1bds2dn5+fj7XXHMNp512Gjfc\ncANeFeyFCxdy2mmn0atXL/7jP/4jNm8iJ510EuXl5Xz66acYY1i8eDEDB8Y3rJszZw6//OUv6dSp\nE+FmYsZImwZhjImIyFjgZWyY65PGmE0ici+wxhgzH2tSags850rLHcaYK4DrsL2Ic0RkmDvlMGPM\nhnSsNRSypqWVK6t9Efn56XgkRWmZhHeGGVA8gMpoJVnBLJYWLCWU2/gq+q5du3jjjTcIBoPs27eP\nlStXkpGRwZIlS/jtb3/L888/X+OaLVu2sGzZMr766iu6dOnC6NGja+QKrF+/nk2bNnHiiSdy7rnn\n8vrrr9O7d29GjhzJihUr6Ny5M0OGDKlzbddccw3PPfccPXr0oGfPnmRnZ8fGysvLWbJkCTNmzGDv\n3r3MmTMnzsR1ww030Lp1awAuvvhiHnzwwRrzp4O05kEYYxZiG7r7j/3Ot31RLdf9hSZo9j10qP1b\nUKDmJUVpTEpKS6iMVhI1USqjlZSUlqRFQFx77bUEg0EAvvzyS4YOHcr777+PiFBVVZX0mssuu4zs\n7Gyys7M57rjj+PTTT+nYsWPcOX379o0d6969O6WlpbRt25aTTz45llcwZMgQioqKal3bddddx09/\n+lO2bNnCkCFD4kxYCxYsoH///rRu3Zqrr76aiRMnMmXKlNhzORxNTIcMRUVwwQX27+zZTb0aRTn8\nyM/LJyuYRVCCZAWzyM/LT8vjfOc734lt33333fTv35933nmHF198sdYcAP83+WAwSCQSOaBz6qN9\n+/ZkZmby6quvMmDAgLixOXPmsGTJEvLy8ujVqxdlZWW89tprDX6MxqbFl9oIh+GWW8B7vysqrP9B\nNQhFaTxCuSGWFiylpLSE/Lz8tGgPiXz55Zd06NABgKeeeqrR5+/SpQsffPABpaWl5OXl8cwz9Rd7\nuPfee/nss89imgEQM4Xt3LkzJohmzZrFnDlzuPjiixt93Q2hxQuIkhLrmPYQgR07rOBQIaEojUco\nN3RQBIPH+PHjGTp0KPfddx+XXXZZo8/funVrHnvsMS699FK+853v0KdPn3qvSRY6+8ILL3DhhRfG\naSlXXnkl48ePp6LCBnb6fRDHHnssS5YsaaRnUTeHTU/q3r17mwNpGOQlylVUWOHgRTIFgzB8uPoj\nFCUZ7777LqeffnpTL6PJ+frrr2nbti3GGG655RZOOeUU/vM//7Opl1Uryd43EVlrjEnq4GjxPggv\nzPW++2DECCscolEbzTRjhhUezSTiTFGUZsbMmTPp3r07Z555Jl9++SUjR45s6iU1Ki1eg/ATDkP/\n/lab8AgEoHdv6NlTtQlF8VAN4tBENYhvSTQav+84sGoVTJ9uhYdqE4qitBRUQPgoKakpIPxohrWi\nKC0JFRA+8vOhrmZLmmGtKEpLQgWEj1DIagijRkHfvtb/4NG3Lyxbpj4IRVFaDiogEgiFYNo0mDIF\nsrNtuGvr1nZfhYOiNA/69+/Pyy+/HHdsypQpjB49utZr8vPz8QJZBg0axN69e2ucM2HChLgS3MmY\nN28emzdvju3/7ne/a5S8hOZYFlwFRC144a8jRlTXaNLOc4rSPBgyZAhz586NOzZ37tx6C+Z5LFy4\nkKOPPrAuxokC4t577+Wii5KWlWswXllwj/rKgidGoT799NNs2LCBDRs28Le/fftC2Cog6mH2bJg5\n0/oe+veHu+6Cfv1s3SZFUVKnMb9gXXPNNbz00kux5kClpaV8/PHHnH/++YwePZrevXtz5plncs89\n9yS9Pi8vj88//xyA+++/n1NPPZXzzjsvVhIcbI5Dnz596NatG1dffTX79+/njTfeYP78+fzqV7+i\ne/fubNu2jWHDhsVuxkuXLqVHjx507dqV4cOHxzKh8/LyuOeee+jZsyddu3Zly5YtSdfV3MqCq4Co\nA3+3uaqq6qZCkQiMHauahKKkilex4O67Gyf59JhjjqFv374sWmS7FM+dO5frrrsOEeH+++9nzZo1\nvP322yxfvpy333671nnWrl3L3Llz2bBhAwsXLmT16tWxsZ/85CesXr2at956i9NPP50nnniCc845\nhyuuuIIHH3yQDRs28L3vfS92fnl5OcOGDeOZZ55h48aNRCIRpk2bFhs/9thjWbduHaNHj67TjOWV\nBX/jjTdqLQv+4x//mCFDhjBnzpy4a2+44YaYielXv/pV6i9oLaiAqAOv21wwaH/9Pb+jUQ15VZRU\n8X/Zaqxwcb+ZyW9eevbZZ+nZsyc9evRg06ZNceagRFauXMlVV11FmzZtOPLII7niiitiY++88w7n\nn38+Xbt25emnn2bTpk11rue9996jc+fOnHrqqQAMHTqUFStWxMZ/8pOfANCrVy9KS0trnee6667j\nueeeY86cOTVMZollwefNm0fUF5vvNzE1Rs8IFRB14PdD+IovEghYB7aGvCpKavi/bDVWuPiVV17J\n0qVLWbduHfv376dXr158+OGHPPTQQyxdupS3336byy67rNYy3/UxbNgwHn30UTZu3Mg999xzwPN4\neJpAfeXCm1NZcBUQ1N0KMRSCTp2sWckYKxwuushGNZWUqJlJUVLB+7I1cWLj9Xtv27Yt/fv3Z/jw\n4bFv2vv27eM73/kORx11FJ9++mnMBFUb/fr1Y968eXzzzTd89dVXvPjii7Gxr776ihNOOIGqqiqe\nfvrp2PEjjjiCr776qsZcXbp0obS0lK1btwLw5z//mQsuuOCAntu9997LAw88kLQs+I4dOygtLaW0\ntJSpU6fWMDM1Ji2+3HcqrRC9bz9eO9Krr4Zx46r3G+sDryiHM6FQ4/+fDBkyhKuuuipmaurWrRs9\nevTgtNNOIzc3l3PPPbfO63v27MlPf/pTunXrxnHHHRdXsnvixImcddZZtGvXjrPOOismFK6//npG\njBjBww8/HBcp1KpVK2bNmsW1115LJBKhT58+jBo16oCeV3MpC97ii/VNWjmJu5fdTdRECUqQif0n\ncsf5d9Q4LxyG4uLq/ZkzrT01GLTfiu6oeYmiHLZosb5Dk4YW62vxGoTXCtHTIOpqhTh7ttUagkHI\ncF85Lb+hKMrhSlp9ECJyqYi8JyJbReQ3ScZvE5HNIvK2iCwVkZN8Y0NF5H33d2i61ui1QpzYf2JS\n85KHPwojEoFu3azzWs1LiqIcrqRNgxCRIDAVuBjYBawWkfnGGH/M2XqgtzFmv4iMBiYDPxWRY4B7\ngN6AAda6136RjrWm0grR80N4uRCrV8PatbB7N4wfr0JCaXkYYxB/7LfSrDkQd0I6NYi+wFZjzAfG\nmEpgLnCl/wRjzDJjzH53902go7v9I+BVY8y/XKHwKnBpGtdaL14UxkUX2XwIY6w2MW8enH++ZlYr\nLYtWrVpRVlZ2QDcd5eBjjKGsrIxWrVo16Lp0+iA6ADt9+7uAs+o4/ybAi0lLdm2HRl2dj/DOMCWl\nJeTn5depSYRCMGECvPaaNTN5RKPg1QgrLEzXKhWl+dCxY0d27drFnj17mnopSoq0atWKjh071n+i\nj2bhpBaRn2PNSQ0KGhaRQqAQoFOnTgf02KmEufoJhWDqVBgzJr65kONUC4muXa3PIj9fTU/K4Ulm\nZiadO3du6mUoaSadJqaPgFzffkf3WBwichFwJ3CFMaaiIdcaY4qMMb2NMb3btWt3QIssKS2hMlpJ\n1ESpiFQwoWRC0oQ5P4WFsHIlDB4cX37Dcazg6N+/8WrOKIqiNBXpFBCrgVNEpLOIZAHXA/P9J4hI\nD2AGVjh85ht6GbhERL4rIt8FLnGPNTpemGuAAA4OSz5cwoDiAfUKiVAIXnjB9qr2NxaKRq0juzFr\nziiKojQFaRMQxpgIMBZ7Y38XeNYYs0lE7hURryLWg0Bb4DkR2SAi891r/wVMxAqZ1cC97rFGxwtz\n7X1ibwTBMQ6V0UpKSktSur6w0DYY8tdq8sjI0BwJRVEOXdLqgzDGLAQWJhz7nW+71i4bxpgngSfT\nt7p4Nny6AYONyMgIZNSZMJdI167QqxesWhV//MYb1QehKMqhS7NwUjc1JaUlRJ1qj3O346s7ONUX\n4eTVua+oiD+enQ0FBWlbsqIoStpRAUG1H6IiUoGDw+qPV5M/O59HBj7CuMXj6oxw8jKsHcf6Inr3\nhp49oUePav+DahGKohyKaLlv4v0QAAZDZbSSP735p1iEU21+CX+d++xsWwa8Rw/bce6uuzSSSVGU\nQxcVEC6h3BA9T+gZd2zz55sJSIAAAUSEnDY5Na9LqHMPcMsttkWp41jTk0YyKYpyKKICwkdBtwKC\nEh+OFHWiiNjopnGLx9XaVOiOO+zfkhIrGDyMsc5r1SIURTnUUAHhI5Qb4rHLHiMg1S+LweAYJ+Xw\n1/x8a2ryEuiMsfWaLrhAhYSiKIcWKiASKOxVyLTLppEZyCQgATKDmWQFswhKsN5+EVBtcrr44vjj\nVVUweTJMmqSCQlGUQ4MW31GuNsI7wxS/ZVvI9TihB2X7y+ot5hd3fdhWefXXaxKxv9nZ2kdCUZTm\nQV0d5VSDqIPZb82maG0Rtyy8JeagnrRyUr1lOMDe/B97LL4MhzHquFYU5dBB8yBqoaS0JJYX4TgO\noxeMRkQwGLKD2fVWfQVbhmP9eluvyY+IluBQFKX5oxpELeTn5RPwff13cIiaKI5xKI+Ux8xP9VFQ\nYPMkEikuVl+EoijNGxUQtRDKDTF10FQyA5kI8W0VDYZZG2albGoqKYG+fasjm6JRmDFDk+gURWne\nqICog8JehSwftpyRvUaSHcyOExQRJ5JyxddQyGZYt2oVH/6q5cAVRWnOqICoh1BuiGmXT2PZ0GVc\n2eVKghIkIIGUQl7j5nGFhN9preXAFUVpzqiAaAAvb3sZYwwBCTDl0ikph7x6lJVVb4toOXBFUZo3\nGsWUIl5rUgcHMcL6T9YzaeUkctrkpJwj4RX2q6y0AmLdOvj1r+Hoo7V/taIozQ8VECnilQSvjFYi\nIsxcNxPHOBisRpEdzGbKpVPqFBZelvXkybb8xqpV9lfE+ic0eU5RlOaEmphSxCsJPqLnCIwxRE00\n1oHOMQ4VkQrGLhzL3cvurrOndSgE+/fHHzNGk+cURWl+qIBoAKHcEJ2O6kRieZKABAgEAkRNtM7e\nER5XX538eE7NauKKoihNhgqIBpKfl09GsNoyF5QghT0LmTpoKtnB7JSK+hUWwvjx8RFNjmP7SIwe\nrbkRiqI0D7RY3wEwesFoZqydgcEgCFd2uZK+HfrGHNapOq7DYRg3zvoh/LRurf4IRVEODk1WrE9E\nLhWR90Rkq4j8Jsl4PxFZJyIREbkmYWyyiGwSkXdF5GERkcTrm4qCbgVkBjMBm1U977153Pnandy6\n6FZy2uQwbvG4en0RYAVAz541j5eXw4QJqkkoitK0pE1AiEgQmAoMBM4AhojIGQmn7QCGAX9NuPYc\n4Fzgh8APgD7ABelaa0MJ5YYY3n14XGa118f6iXVP1NvH2k9Bge1n7ccYeOUVWy68qCgNT0BRFCUF\n0qlB9AW2GmM+MMZUAnOBK/0nGGNKjTFvA07CtQZoBWQB2UAm8Gka19pgCroV0CqjVY06TScecWKD\nGww99hhkZtYci0ZhzBjVJBRFaRrSKSA6ADt9+7vcY/VijAkDy4BP3N+XjTHvJp4nIoUiskZE1uzZ\ns6cRlpw6XtjryF4jYwX9soPZjD93PEsLljKx/8SUSoKDdVovXw6XXFJzLBq1WoZqEoqiHGyaZaKc\niHwfOB3o6B56VUTON8as9J9njCkCisA6qQ/uKq2QCOWGKOhWECv/vfGzjQ3uPgdWk5gwweZCVFbG\nj23dCiNHwrZtmnWtKMrBI50C4iMg17ff0T2WClcBbxpjvgYQkUVACFhZ51VNyOy3ZscaDAlCMBBk\n6qCpFPYqTHkOrzR4cTHs3g1r1sCuXdXjDz1ks66DQRg+3GoWKigURUkX6TQxrQZOEZHOIpIFXA/M\nT/HaHcAFIpIhIplYB3UNE1NzwV+nCazDOuJEGLtwbEo9I/yEQjBtGrzwAtx9d/yYMdbkVFmp/SQU\nRUk/aRMQxpgIMBZ4GXtzf9YYs0lE7hWRKwBEpI+I7AKuBWaIyCb38r8B24CNwFvAW8aYF9O11m+L\nV6cpkPByRpxIyp3nklFYaAVB377QvbtNrNN+EoqiHCw0Ua6RCO8MU1Jawt6KvfzhjT8QNVEAsoPZ\nLBu6DLCaRkN8E+GwNTc98QRUVVUfz8iwAiIrSxPqFEX5dtSVKNcsndSHIp7DGmBf+b5YpnVFtIKb\n5t/EB198QMSJkBXMSim6KRy2JqTycisM/BgD555rxzZuVAGhKEp60FpMacCfaQ3w7ufvUhGtSDl5\nDqqjmZIpeNEorFhhS3SMHKkhsIqipAcVEGnAy7RORJCUW5V6zYWCQfu3Xz+7HQjEF/kDeP75xlm3\noiiKHxUQaaKgWwFBia+hcdqxpzG029CUrveaC02caLWJ5cth5UrruD7vvPhzaysfriiK8m1QJ3Ua\nKVpbxJiXxhA1UQIECAaCOMZJ2Q+RiOeX8FqW9uxpNQ1NnlMU5UBRJ3UT4SXJjV04logTocqxoUie\nH6KhAsLzS0Sj1tzUsyc88og9phFNiqI0NmpiSjNl+8tivas9RIScNg1vH5fol9i920YyeclzmhOh\nKEpjohpEmvGS6CqjtsCSMYaoE2Xc4nF0Pa5rg+s1LV1qBUFODtx6a3WUU0aGFSCKoiiNhWoQacar\n+jqi5wgAHKw28U3kG8YtHlR5k2gAACAASURBVHdApTjuuAPKyqzm4NGtm82JmDRJy28oitI4qAZx\nEAjlhigpLSExIGDVx6voP7s/Dw98uMEVYD1zU0WF7We9apX9FYFWrdQfoSjKt0c1iINEfl4+2RnZ\nNRoMVUQrGLtwbEotSv145qaLLqquzwTW5PTNN7bXtWoSiqJ8G1RAHCQSGwx5BCRA1EQblGUdm9Pt\nIZHYshSsNtG/vwoJRVEOHBUQB5FQbohpl0/j0UGPxpLoPLNTQAIpZ1nHzRmC226rmV0N1vxUXGyF\nhPomFEVpKOqDaALK9pfFBIPBYIwhKEGmXDrlgJLnHnnEbgeD1sTk+Dp8FxXBzJn2eHa2+iYURUkd\n1SCagPy8fAIJX/kd41C2v6zBc3nJc55Q6J2QD+k4NtrJcaxGUVKiGoWiKKmhAqIJCOWGmDpoalyt\nJkFYvG0xoxeMblDoa2Ly3E032b/JCAZt/sSAAbZbnXakUxSlLlRANBGFvQpZeeNKBncZTIAADg4r\ntq9g+trp9J/dv8HRTBMn2r+FhVZL6Ns3/rxAAB591OZPeOU6NPtaUZS6UAHRhIRyQ/Tt0DeuDAfY\n0NfJr09m0spJtQqK8M5wbNxLnvN8C6EQTJkCrVvbENhAAG6/Hbp2hR07bNa1p3Fo9rWiKLWh1Vyb\nmPDOMPmz82OlOPwIQquMVjUqv4Z3hhlQPIDKaGWdlWGLimDsWKstZGRYYRGJWOEwfDgUFKjDWlFa\nOnVVc1UNookJ5YYoGVrCqF6jOOPYM+LGvJalibkRJaUlVEYr682dKCuzzmnHsT2tKyqssIhEoFMn\nFQ6KotSNCohmgJcf8fgVj9doMoSBHV/uiDM1eQUAgxKsM3fCc2AHAvGtSx0H9u7VSCZFUeomrSYm\nEbkU+BMQBB43xvw+YbwfMAX4IXC9MeZvvrFOwONALmCAQcaY0toe61A1MSVy1dyrmPfevNi+V5oj\nGAgyddDUWI+J8M4wJaUl9dZvCodttvWrr8YLicxMKyi0j4SitGyaxMQkIkFgKjAQOAMYIiJnJJy2\nAxgG/DXJFMXAg8aY04G+wGfpWmtzYvy548kKVsepGvcn4kQYu3BsTJMI5Ya44/w76k2s88pxZFZX\n94j5IqLR6twIRVGURNJpYuoLbDXGfGCMqQTmAlf6TzDGlBpj3gYc/3FXkGQYY151z/vaGLM/jWtt\nNng+iUtOvqRGYb+oiTaoVlNszpAVAoMHV2dbe9qE49jcCEVRlETSKSA6ADt9+7vcY6lwKrBXRP6f\niKwXkQddjSQOESkUkTUismbPnj2NsOTmQSg3xIT8CWQGM+OOByVYwx+R8pyhmrkRYP0TZWWaXa0o\nSk2aq5M6AzgfuB3oA5yMNUXFYYwpMsb0Nsb0bteu3cFdYZoJ5YYY3n14nBYRcSJMXzud82edT9Ha\nogbP6XdaQ3WOxN69ml2tKEpN0lms7yOsg9mjo3ssFXYBG4wxHwCIyDzgbOCJRl1hM6egWwGz35pN\nRaQi1okOrKlpzEtjAGo0GqrLee1vWbp3L/zxj9YP8Yc/WFOTMTa7urjYnpOfr85rRWnJ1CkgRORI\nY8y+WsY6GWN21HH5auAUEemMFQzXAz9LcV2rgaNFpJ0xZg9wIXDohyg1EK+HxISSCbzywStxY1ET\nZfRLowHIDmaztGApQL0JdKGQ/Z00qTpHwk8gALNmWSe2RjgpSsumPhNTibchIksTxuZRB8aYCDAW\neBl4F3jWGLNJRO4VkSvcOfuIyC7gWmCGiGxyr41izUtLRWQjIMDMlJ/VYYTnj/BHNnk4xsExDuWR\nciaUTKD4reKUEuig2tzk70YnAj16VEc4aa0mRWnZ1Gdi8ofRHFPHWFKMMQuBhQnHfufbXo01PSW7\n9lVsfkSLx4tsKn6rmN1f7+afZf9k8+ebY+MGw5IPl5CxPYOMQAY41Nt8yKvXNGaMFQZQXZtp/Xpr\nbsrKshFOkyapuUlRWiL1CQhTy3ayfSWNhHJDhHJDsdpNHp4T2zEOUSfKiJ4j6HRUp3oT6MBGL/lp\n377aHxEMwq232t7WlZVqblKUlkh9AuI4EbkNqy1427j7h1fY0CFCSWkJUcd+5ReEK7tcycvbXo75\nHQq6FaTclc4zM1VUWKGwfXv1mONY81J5ebXzuqREBYSitCTqExAzgSOSbIMtg6EcZLw6TJ5AGHjK\nQNq3bc/ur3fTvm37Bs3lRTUlK8XhOLB6dfwxTahTlJbFAddiEpE+rg+hWXC41GJKBS+UNadNDuMW\nj6M8Uh4Lgc0IZMTVbEppvrDVJiprVhyPIQKtWqmZSVEONxqtFpOInCEiE0VkKzCtUVanNBivDlPZ\n/jIqIhVxDYciToQxL41pUOtSrxTHqFE221qShB/4zUyKorQM6tUgRCQPGOL+VgEnAb3rqqzaFLQk\nDcIjvDNMv6f6EXEiScczAhnc3OPmBvklErUJkWqBkZ1tI5/KyjSqSVEOF+rSIOoUECISBo7EFtqb\na4x5X0Q+NMZ0Ts9SD5yWKCAAitYWMXbhWKqcqqTjtXWlq4tw2GZT794NixbZZkOBAFx4ISxZYrUJ\nNTcpyuFBXQKiPif1p9gCe8djo5beR8NbmxWFvQrpelzXmE/iiXVPsOrjVbFxg4lLmkulh4Q/2/rF\nF6vLcLziS+b2yoSHQlagaGkORTn8qFNAGGMGi8hRwE+ACSJyCrYERl9jzKq6rlUOHl6OBEDX47rS\nf3Z/KqIVgNUgRIS9FXtT6mPtxwuDrayMLxHuHw+HbYE/zZVQlMOPep3UxpgvjTGzjDGXYAvm/Q74\no4jsrOdSpQkI5YZ4eODDZAZsqXCDIepE+d/w/1IRrYiV4Sh+q5hJKyfV6cj2wmAnToQhQ+LHbr+9\n2rldWamlORTlcKRB1VyNMZ8CjwCPiMhJ6VmS8m0p21+GY6qr8Hkd6QISICABgoEgszbMIuJE6tUm\nPG1g4sRqh/WQIbBvH4webWs3eVqGV6pDUZTDg/qquc6v5/orGnEtSiPhJdP58yPAluPICGQw6JRB\nvPjei3FF/eoyN3lagjFWQMydW12/KTsbHn5YI5sU5XCkPg0ihO0KNwf4P1Io0Kc0PXWWCXeifLzv\n45SL+kG8L0KkWjiAdVavXw/TNCtGUQ476gtzDQIXY3Mgfgi8BMwxxmw6OMtLnZYa5loXteVJCEJm\nMJPh3YennCPhRSrl5Ngifv6s6+xsWLbMbms0k6IcWhxwmKvbl2ExsFhEsrGCokRE/tsY82jjL1Vp\nTEK5IaYOmlojT8LzSXQ6qlPKuRFe6KvHqFHVUU1VVTZvYvZsKziCQRg+HAoKVFAoyqFMvVFMIpIt\nIj8B/gLcAjwMvJDuhSmNQ2GvQpYPW84lJ18S199aEHZ8uSPlchx+yspqluPYvNlWfvWimWbM0P7W\ninKoU5+JqRj4Abbpz1xjzDsHa2ENRU1MdRPeGWZA8QAqIjY/AgFjDMFAkNtCt3F09tEp9ZCA6twH\nrxR4bQSDNvrpjjsa6UkoitLofJtSGw7wb3fXf6IAxhhzZKOt8luiAqJ+wjvDFL9VzMx1M4maaNxY\nQ0tyhMO2TPiSJTX7WnvhsNnZmjinKM2dA67maowJGGOOcH+P9P0e0ZyEg5IaodwQnY7qRLIvBQZD\neaSc4reKU5srZAVEdnbNMS8c9kc/go0bbckONTUpyqFHg8p9K4c++Xn5ZGdkx/kjPAyGWRtmNahM\n+NKl1mGdmRk/Fo3CvHkwciTceaf6IxTlUCStAkJELhWR90Rkq4j8Jsl4PxFZJyIREbkmyfiRIrJL\nRDRiqpHwciTuv/B+xp87PlaSw6MqWhUr7AfWLFVXSY5QyOZALF9uBUV2dk0HtjHVxf0URTl0aFCp\njYbg5lBMxeZR7AJWi8h8Y8xm32k7gGHA7bVMMxFYka41tlT8xf0GdxnM5NcnM++9eQA4OGzas4lJ\nKyext2Ivfwz/kaiJkh3MrrckRyhkS2+MGROfTOehLUsV5dAibQIC6AtsNcZ8ACAic4ErgZiA8JoO\nuc7wOESkF7bM+GIgqQNF+faEckP07dCXv7/391hZjqc3Pl3jvIpoRb0lOcCGwCbDGBg3zm6vX2//\nap6EojRv0ikgOmDLdHjsAs5K5UIRCQB/AH4OXFTHeYVAIUCnTp0OeKEtnfy8fIKBYK2d6QCCEqy3\nJAckL8vhlQr/5htb4M+Lepo1y2Zgq5BQlOZJc3VSjwEWGmN21XWSMabIGNPbGNO7Xbt2B2lphx9e\nxnVQgknHBeGyUy9LbS5fifCbb67pj/CHxCYrDx4Oa9STojQX0qlBfATk+vY7usdSIQScLyJjgLZA\nloh8bYyp4ehWGofCXoWs/2Q909dOrzEmIsx/bz4vb305pTwJzx8RDtvyG7Ul1AUC8X4JbT6kKM2L\ndGoQq4FTRKSziGQB1wP1lQ8HwBhzgzGmkzEmD+vALlbhkH4KuhWQFcyK7Qew/SMc4+AYJ+aHSBVP\nmxg50mZV+wkEqv0SnragzYcUpXmRNgFhjIkAY4GXgXeBZ40xm0TkXhG5AkBE+ojILuBaYIaINLsq\nsS2JUG6IkqEljOo1ilG9RlHYqzAuf/5A6jd5YbC9esUfdxz76w9/9fwXwWB18yE1OSlK01FnqY1D\nCS210fgkq9/kGIegBHnsssesAEmRoiKrSSRjxgwodKfyyop7nenU5KQo6eWAS20oLRsvqa6wV2FM\nOABETZRRC0ZRtLYo5bkKC60guOQSGDzYmpjA/vWHxoZCtrif9rtWlKZHBYRSJ179Jn+Pa7BlOUYt\nGMWvl/w65bkKC+Hll2H8eJtxHQjYKKdVq6yGkWhKSmZyUhTl4KEmJqVewjvD5M/OpzJamXR8xuUz\nGmRuAisQEjOuRWxNp5KSalOS3+SUaF6qa0xRlNQ44I5yigLVzuvit4rZvGczK3bEVz958PUHASjb\nX0ZOmxzK9pfV21uirKxmmXBjrCmpuLj6hp/Yyc5DQ2IVJf2ogFBSwl+/6ddLfs3k1yfHxrZ+sZWR\nC0YiCAZDQAL11m7Kz7faQmUSpWT3bmtuqkszSOafUAGhKI2L+iCUBvPARQ8w/tzxNUqGe7WcHONQ\nGa2sM2fCc0L37Vtz7KWX4O676y4Rrv4JRUk/KiCUA+Lo7KOT9pQAmy8hIuS0qbt8aygEU6ZA69bx\nJTmqqqxmUFeJcH9JDzUvKUp6UAGhHBC1NR4SJJZ9PW7xuHqT6rwb/cUXV4e+ejgO7N3b2CtXFCVV\n1AehHBBejkRij2uDwTEOBhMzM6VSu2nCBFi5smbdpj/8Afbts6XBQZPoFOVgogJCOWA8x3WPE3ow\n5qUxcULCoz4zU2wuV5MoLoaZM6vDX6NRm2D35JPWDBWJWL9D9+7WBOU46qRWlHShJiblW1PYq5AR\nPUfUMDdFTZTRC0Zz1TNXpVS/yavb9Nhj8cX9vPDXiorqqKVVq6xwCATUSa0o6UIFhNIoFHQroFVG\nqxpCwsFh3pZ5XPDUBTEhUV+f68JCGDGi/scMBOCii9S8pCjpQjOplUYjvDNM8VvFPLH+Caqcqhrj\nfU/sy009b2Lc4nFURivJCmbVmivhJcLV1ktCBFq1UuGgKN8WLdanHBRCuSGmXT6N5cOWM7jL4Brj\nqz5exagFoyiPlBM10TpzJfzRTYld6QIBOP98GDq0+piWBVeUxkc1CCVtFK0tYvSC0Tg4Nca8cNgf\nd/kx488ZX2ukk6dJVFRUH/N6XAcCtujflCm28ZBGNClKw1ENQmkSCnsV1lrEz2CImijztsyj/+z+\ntfojPE3ivvusb0Kk2uTkRTA98YQ1RWlZcEVpXFRAKGmloFsBrTNa13lOoqkp0Ynt9YgoKLAagr+X\nhAisWVMtNDIyNKJJURoLzYNQ0oqXUFdSWsLibYtZsX1FjXMCEojlS3hd7JI5sT1toqQEcnJg/Xqb\nM+GvCjtwoJqXFKWxUAGhpB0voS4/Lz928xcROhzRgZ37dmIwjFs8jq7HdaWktITKaGWcE9vvn/CX\n/x796+1EnVz8ivCiRbbXRFmZ9olQlG+LmpiUg4anTYzoOYKgBNnx5Q4c4+AYh28i3zBu8Thy2uSQ\nFcwiKEGyglnk5+UnnSu8M8yTe4dCsByIgpu9XVUFY8fWXw1WUZT6UQGhHFS8FqYRJxJXkgNsGOzo\nBaPp06EPI3qOqLOfRElpCdEO/4ChA6D3TIKZUQIB64vwqsGqw1pRvh1pFRAicqmIvCciW0XkN0nG\n+4nIOhGJiMg1vuPdRSQsIptE5G0R+Wk616kcXPLz8mNaQlCCcWMODiu2r2DWhlls/GwjoxeMZvSC\n0TWinGJzdFpN68G38V/3bo+LcAK7nZNaKShFUZKQtjwIEQkC/wQuBnYBq4EhxpjNvnPygCOB24H5\nxpi/ucdPBYwx5n0RORFYC5xujKm1+LPmQRxahHeGKSktIadNDrcuujVpv+ugBGMFALOD2SwbuixO\noyhaW8Tzm5/n6jOupuyVQu68s2bWdXY2LFumvghFqY2m6kndF9hqjPnAXcRc4EogJiCMMaXuWFwm\nlTHmn77tj0XkM6AdoN0BDhP8LUyBGgl1gsSEA0BFtILit4pj14R3hmMlO1buWMmUM0NkZnat0cK0\nosIm0U2ZokJCURpKOk1MHYCdvv1d7rEGISJ9gSxgW5KxQhFZIyJr9uzZc8ALVZqWsv1liK+eRoBA\nDf8EwKwNs2KmpsRop7KcBZSUwODBNRsPrVoF551no5sURUmdZu2kFpETgD8DNxpjatRrMMYUGWN6\nG2N6t2vX7uAvUGkU/D6JjEBGUuEAEHEiFL9VzKSVk5JGO4VC8MIL8I9/1Ox17TgwciRcdZVGNilK\nqqTTxPQRkOvb7+geSwkRORJ4CbjTGPNmI69NaUb4k+ly2uRwy8JbiDiRGucZY3hi/RM4xiErmMWU\nS6dQtr/MCoeEXIkpU2xBv2g0fo5582D+fNt3ojB5FRBFUVzSqUGsBk4Rkc4ikgVcD8xP5UL3/BeA\nYs9xrRzehHJD3HH+HRT2KmTqoKlkBjKT9paocqqImigVkQqe3/x8DeEQmy9kGw8lmptAtQlFSZW0\nVnMVkUHAFCAIPGmMuV9E7gXWGGPmi0gfrCD4LlAO7DbGnCkiPwdmAZt80w0zxmyo7bE0iunwwust\nMWvDLCqjlUnNTgEJkB3MZmnBUsD6JRIFRjgMkydbzSEZGuWktHTqimLSct9Ks8YTFDPXzYyLahIE\ngyEoQUb0HMHst2bX2YSoqAhGj46v2wS22N/999tigIrSEtFy38ohi9eEqNcJvWqMBSRAMBBkxfYV\n9TYhKiy0zutkUU57NXhaUZKiAkI5JLip501x+wZjcyWcKJs/3xwzQWUEMsjPy0/a99of5dSvnzuP\nsSaoHj2shqE+CUWpRqu5KocEXuOhB19/kG1fbMNgcIxTwzdxY/cbAWotGQ5WULRqFT//hg32d+ZM\n69zWCCdFUQ1COYQo7FVI8VXFtMpoRVCCZAYzyQxkxsaDEqTHCT2SlgxP5Oqrkz9GNGo1CU2qUxTV\nIJRDDH/OhFcKfPLrk3nxny9iMNy66FbO7nA2YH0UtZUMLyyEbdvgwQdr1m9yHBg1ClasgDPP1L4S\nSstFo5iUQ55JKydx97K746KcwGoUj132WK19scH6HMaNs+U4aiMjA6ZOVbOTcniiUUzKYU1+Xj7B\nQLDGccc4lO0vq/NaL+u6dWsb8pqMSKSm2SkchkmT1KmtHN6oiUk55AnlhhjefTjT106PO24wrPp4\nFeGd4VobD0F8r+tNm+Dpp2ue4zhWSGzbBvv2waxZVnBkZdlr1QSlHI6oBqEcFhR0K6B1Rusa5Tnm\nbZlHv6f6UbS2bq9zKGST5f7yFxg/vvYSHZMnw/Tptox4Y3WtU21Eaa6ogFAOCzzn9cheI8kOZscJ\niogTYdSCUTWERLJcCYAHHrC5EpdcUvdjikAwCDt2HPjNPRy2vbO1h7bSHFEntXLY4ZXnKFpXhJNQ\nJf6Mdmdw+amXs698H7M2zCLiRGotz+HdvMvLa0Y6eXiaRnb2gZmaJk2ywiEatcJm4kQt+6EcXJqq\no5yiNAlet7rdX+9m3nvxVfo279nM5j2b445VRCpiuRL+gn9+38TevfDQQzVrOXn7FRX2vIYKiPx8\n68eorLR/8/Mbdr2ipBPVIJTDlvDOMP2e6pe0t0QifU/sy5pP1mCMoVVGq1oL/o0ZU7PHhMcZZ8Av\nf9nwcNhw2AoXzbdQmgKt5qq0WMI7w0x+fTJ/f+/vtXaqSyRAgPsuvI87zq9p6wmHobgYFi/9N6Xv\ntwFqxsaOHw9HH603fOXQQPMglBZLKDfEC9e/wOvDX6dfp34EUvjIGww5bXKAmo7sUAgKfhvm4/6X\nQbACcCBB8Dz4INx1V8OczrU5zBWlKVEfhNIiCOWGWH7jcsI7w7HWpoveX8T89+bjEO9YMBhuWXgL\nK7av4NlNzxI10VhjolBuiJLSEqId/gHD+sNbQ5F1N2Oc6n8lY+xvebnVNurTIsI7w3UWF1SUpkI1\nCKVF4W9t+sL1L1DYq7BG7gTY0NinNz5NlVOFYxwqotWO7Py8fLKCWQQ7rab14NuY/vy7nHFGzccy\nxvot6mttmkpxQUVpClRAKC2agm4FseqwWcGsWk1QjnFYvG0xoxeMBmBpwVIm9p/I0oKlFA7uyuOP\n2yikGtc5tt1p//61C4mYwHHXkKy4oKI0BeqkVlo8ntkpPy+fyW9MZt6WWhpYuwQIcMVpVzDw+wMp\n219GTpsc+7fscp6Y1LXWwn+nnw5dukD79lBQEG968q+BXSGNalIOGhrFpCgpEt4Z5oKnLqDKqUrp\nfK83dkACZAQyGNRqIgvuGkekIgAESRblBDbBbto06No1PsTVS86rqDQEMyI8OncLhYO7NtbTU5Qa\nqIBQlAbgZWLv/no3L73/UsrCIsbOs6E0Hz7qA1uuojYhARAIGIwxZGQabhpuK9IWzTQ4UQEiBL6/\njGkPtlchoaSNJhMQInIp8CfsV6nHjTG/TxjvB0wBfghcb4z5m29sKHCXu3ufMWZ2XY+lAkJJB35h\nsWH3Bkq/LE394p1nI7NLMJHsWk7w/vckti0BAxLFRAUIgkTJzDIsX5ap5iYlLTRJqQ0RCQJTgYuB\nXcBqEZlvjPHXOdgBDANuT7j2GOAeoDf2P2ete+0X6VqvoiTDK9sBVlj0n92fimhFzLRUJ7lv8v3b\nCsnYOJx2zg/gmxxWroTqL2WeZlG9b0tHBeA7e+Df7cBkEI2YAyrjoSjflnTmQfQFthpjPgAQkbnA\nlUBMQBhjSt2xhAo3/Ah41RjzL3f8VeBSYE4a16sodRLKDbFs6LJYHsUtC2+pt4zH+22K4axitgYy\neXTQo/DSB7z5zHlUbh6IDSJMND+JPf7v493dKJmZkJ9fsyGSoqSbdAqIDsBO3/4u4KxvcW2HxJNE\npBAoBOjUqdOBrVJRGoBfowAYu3AsURMlIAF6tu9Jfud8NnyygVc/eDVOw6hyqhi5YKTdue4BWHMz\nvPQYmAAEolaJMJnu2Z7QcCDnXarabWXyY2cznvaHpBbhrzVFx3BcQUSleXNIZ1IbY4qAIrA+iCZe\njtLCKOxVSNfjuta44YV3hinZbpPfaqX343D8O9aZnVdij73+K9hyBdZlByDw+Zk4n5/JvHfhxTnw\n2GPJiwE214J/XlRWZSVkZEYxBXcQ7fAPzRg/REingPgIyPXtd3SPpXptfsK1JY2yKkVpRBI1Cu9Y\nydCS+osE5r5pf13k+ms47ZsbefcvI+CjvlgTlMHTKKJRW0120aL4XIpw2CbieSXDly1rPkKipMSu\nKxoFxwDbzsWcuDyWMa4ConmTzkzq1cApItJZRLKA64H5KV77MnCJiHxXRL4LXOIeU5RDAq9I4PTL\npxOUav+BIOQdnUf39t3jzg8QIDOYSZfu/yJz0K8hoxzw/BvVAiYatZnZ06dXZ2cXF9t+FMZARYVh\n8mO7Y+c3dTtTr99FMGj/Zn7vdc0Yd2nq9yYV0h3mOggbxhoEnjTG3C8i9wJrjDHzRaQP8ALwXaAc\n2G2MOdO9djjwW3eq+40xs+p6LA1zVZorXqgs2NIe3rfmorVFPL/5ebqf0D2uw10wEGRQq4l8/OII\nVq08Gkx1GKylOvpp1Ci7PX26p2kYgn0eZ+XzP4BdoZh5JyvrwDreNQbqg6iJ3/TWlO8NNGFHOWPM\nQmBhwrHf+bZXY81Hya59EngynetTlINBMjMUWB9GYS/rUJi0chIRJ0LURMGBvmdFyfn+Lla9kQ1R\n13ltglQr/VZgTJ/ucGzul8ARgEDAzlG84H067Q3FzDuVlQfW8a4xCIX8j5v8tWhp+E1vyd4bf+mV\npny9DmkntaIcLngF+7yS3/l5+RR/+RgM3WAd2a0/h0WPQNSfdGe1h893Hu3uR60QWXMzMzcE+K/b\n7LfT8gqDwWGvlALfAxJqP0Gj3Yyay42tuVNXq9nmVP5dBYSiNANCuSGWFiyNu7kWv1Uc78g+/h14\nqwC+Ph62XEnNPIqgq1gI0YjhoT84DBnxMU/POB7jBJh8VwdgG/u+yODJvTaaKBgIIggRJ0JWMIsp\nZ/4fZe92PaBoqFRvbHUJkVi/jrLL611HfcIoHIbiedshbzkFl5/SrASWv9954nNMVv5dBYSitHAS\nTVEF3Qp4csOTVEYrCRDgh33KeTt3rG1w9Or/wOu/IbGbXXXZDsGJwtziI8Fk2OPRAJN/29meEVgM\nPWYR7fZnyLVe0m8+7M6Ye7tANDW7eGJobSo3trqEiDdWUdoTZ/YvCTiGjKAw6LrdtD/nldhN3rvx\ne0IumTAKh6H/hVEqKjpA8Bqe3DCIkrsmNTsh4flk2Fkt5JJpk02FCghFaaZ44bL+b8mew/uJwD1U\nffcDWH+TjXhq/S94f5Drr6gOTozuPyJ+UiMYxJqq1oyEDUNh6AA7VvI7olUBMPX7LBKdrFP+upEd\nGTvICGSAQ603trqE/DbYugAAEl1JREFUiDfmfHg+RLJwjFAZNcz7SzuYa2/yjwx8hHE/60p5RUdM\nYCEMHUBlp9UUL3ifkr2hmLAqnredisqOVjhGDZXbzqH4reIGC4h05pfUJSyHdhsKxAc1NAUqIBSl\nGZOoVXj7Bd0KKO5RzO6vHwCgfdv27N6ylXnPHAFrR7gObX+tp5qFASEAkSxY/Ef4pAc4GfaYRMjI\nlDrLe5SUQHmFg3EClFdEGfM/b+IceQzBk/sy4oozKehWAFjnu98EVNe34/y8fGTXOfBlJwhEIOqW\nHSEI0Uyqtp3L84vKqKg0GCdoM89L83EkwBP/8zOiEYMEonTu+y5by7aBHA/iQLAK8pYxa8P6Bt1w\n0x1pVFsnQb/Q8F7HpkIFhKIcgiSLjAp3C7OwPJ/K9uvcMh7uv7dEbUmPWOIdVAuKoJuUJ9XHcrZw\n5BnvMW9LkOIym35U0K2AjWvb8vyiMq4emMPe9tswgUvAZGIkSnTdL8DJILK8kt2nPgrdqm90IkLP\n9j25qedNFPYqrOFribErhJm9BCpdDejoUtiXC04AxBBs+wVXD8xh2ewIjoN74y/BbCigqsJdfzTI\n1td/APwAApXQ63HoZn05ESfYIHt+fZFGqVCXnySZsGxO/gdQAaEohw2eSaq4ezFv/vCXbHjF7SHR\nfh0s/hNEsql2bPt9F4H4/bLT2bPidCavMHCaA99fxPStn8B7PwYjvPK4wxFXPQWXvgTvXg2Z++G9\nK1xzDvx98Zd8fNQ4KqIVOMYBA6s+XsWq/wsw7dOuZAWyuenGywmdb9fn3URXPTOAaFUvbNqUgb0n\ng1QhAcGYILL4Ybr+OoNH525k9NS5OCe9Bp/+ANbeTE3hBzgZyFG7yMpbT8SxyXl7t57Oj/5SwtUD\nc+rtsZFz+kYCGadhyCArS8g5fSOTVi5IOUKraN5GbnlsEc5Jr5GdNzGp0z6ZKam5+B9AGwYpymGL\nP0HvyD0/4sXnvsuWV0OYaMDVKHxaQw3qOx4FMW4SH1TXjwLO/T202mdrTHkRWDvPhqeWVYfpBisY\n/PuHGdj/aMYtHkd5pByz8yyYtRycTOIKFnqajlTR9xcvMeW+49n42UZG/fdazIKpPnNatPpc9zHG\nz1zM4IuOp6S0hE3rj+Tp/7oRolmQUcmMZ7fVKiSK1hYxduFYIjv6ENw+gNuG9OSRj39GRWlPAtsv\nZOqYa+sUMEVFMHpMFCdqIODAoLGMGhlk2uXTYu9NXc76ZFqH55zf3e4Z2p/2YaP5J5osUU5RlKYj\n0Qz1wI3VTtfF77zBir+GqGlyEmp8E/fVg6rerg6pjT8/AuH/sgIoWGkd4Llv2lyOqO/GH81k3vQf\nMm/LvZD7TfWiT10QX7AwUGUFkWN9CasyH+C8Wau46Itn4KVproBy1xCIwqCxdOdGV0vJpHDw4NjU\nd927wAoHkwERw/OLyiisHqZo3kaeX1RG97P38r+73FLuHd8gCvy/RXmUl/8Cs+iPONEsxix36FqS\n3OQUDsMtt4ATdYWwY2Dho8xsP4CCbmGr6XmmpB19KC+9kOJj3ofLSZpx781ZHZU1FoYOYNaGWTw8\n8GHK9pelLe9EBYSitCC8rOb8nUK/f99CZE0BfNITIQPjiHXq1lHaI/5volCJ2k3P2R3BOsBPWA/Z\ne925vQirAHxwEWzvVx1FNXupvYEHI3DKfGj7qfUfQHXV29w3cXaczSuzrgDHJxwkCqE/wDc5VPR+\nnNHXnsX6T9YzeoG92U5+ZiXO3o7W+e0YCFbR/ey9MS1r87qjWDHxdxA9nVeeiMApz9jHb78Os/hP\nbI1mgfzcrt9kEK2qsjkWHT+Ofdv3fDRt9p+G47SPf31MgOiH5zH59cn07dCXvVtPx7w4FdYPxTgZ\nFK2IMGPtAEzuGwDM2jCLZUOXVUd4lVg/iBVuAm8VUJH7JmMXjsUxTtoS6tTEpCgtlMSktJwcKCuD\nTV8v56+vbMHsOQ22n0u1+cgh1tAIqBYUjr35H/8O8lk3K2iS4hBfodY1C532dyg7FfacCQgSiBIc\n8N9Ez/3/7Z17sFVVHcc/33OAqyMCymUQBXmIVhYGSA6VvXAsH6k11kiPsRonjLR0TA3G0bHSP3R6\nGEU2FCqm+aq0sjSNRy9Rg3gEEkoIKIGgBkUpXO759cda+559z93nXi7cfc6J+/vMnDlrr73OWt/z\nO7P376zH/q0b2kfCTfb63nksLPks4f+thR7GW+6C1VPLPZczLoPXmmHUIgoqUrrjseB81Boc1qiF\nsDs+gf7WO0O9C74WJ/ZTbao1ftU+wN4wXGSCYgsjv3gRLw58gJKV0IvvKLdR2EtBBUp74wqsxD5v\n+CU69RthR8F5v62YE9oLxywJ2qJTHPuvz3LVx9/GuKHjuHn2Fh6650go9Qt6irvh01PQiCcxDCEu\nPvnitiGs7lC3PalriTsIx+k50s7jkZ808+yrz9I85gX+NGcqrS3BYahQ4vRzX2H+w8207oXyTR+q\nD1NVDmN1pNCnxK0PPMOyLcvYuvqNrP3vE6xZfGzbJHlbtRZ0FIpGqdRafiCw7UZeCD2Gw/8BO0an\n2k0cVdLgHjjhVxXPkaR0K85tFFph+JPwn2ZofhbGPtLmhNo5GLWE1VMDN8HrA+CJK8srymiFQZtg\nxyg6LA5I65FBax+QoQJxj/LkVWjfRuxZNRWb2vU69hV3EI7j9AhJeHEI+1EsWgTXXhuWgnZNV04j\n5L1p/L+Z+70BnHZaCGNeKlUOd6WHugpIyT7fqeEmi/MknU60Vz4nUoL+W2HXMNqv9mqFgRth50ja\nTca3fbYER62El06KQ2glGPlHGLImFFkyLfW5ak++p+2S9NQqzyXp1o5ZI/+ITr+GGy/8IDPfNTPj\nO1fHJ6kdx+kR2kdmDfTrl9zIO5aXiDdwKBbFBRfA/fdDSwu0jyNVvnFePn1A25h7qLOyXLgzFgpC\nCntNSKKlBVQwxr3vGZY/Po5sh9S+jjLRIexK72ycmpDfOaairuR8/NzWCan8Imx8T3iphcwluG2f\nr+YMKnUm6dZym+lFAhvfg922kMFnr6UncQfhOM5+kw46l8xhDB4My5aF8xfGB4HT4SouuST0QubM\nae8Ahg8PvZFp00JPJdvxqO39yith0KByJNTQRoFFi05i5fz05zqbcM9aqRWOJQtzIG0rparVVW3O\nhdTQUuWNPvRMxr93E2sWj2HPnuBEO9ZV2dMppOqrOF/qyytrxsGH6DHcQTiOc0Bk9SqyylSWnzAB\nLr00DE81NYWeRVKu0vEkDmfAAFi+HM4/v+Pe3Ok2mppCD6RYhMmTxfr1sHlzuAkXCjBpkli2LOnJ\nJJSdRlOTmDUrlJk7t1xOBeOIkS/w6obhqRVZ1Sn2gT5FsXcvoBKlkrBSmL+56saN3DTjuLZhu7lz\nVUVPfG9bBZa9qqxvX7ULG94T+ByE4zh1I69geJX1ZsVVgvJ8yoQJwQlt3dp+v++krvS8S1LfnXeG\n8tVI6oHUjnpU/76VdR51VFlXovHyy0OvSoJzzoETTgj1HX00XH31/tnQJ6kdx+n15BmZtVbk8R3c\nQTiO4ziZdOYguh5EcxzHcXoluToISWdIWitpnaQZGeebJN0Xzz8laVTM7ytpnqS/SlojqXsLex3H\ncZwDJjcHIakIzAbOBE4EPibpxIpiFwH/NLOxwLeAm2L+R4EmMxsHnAxcnDgPx3Ecpzbk2YM4BVhn\nZuvNbA9wL3BeRZnzgHkx/RPgNEnJIuHDJPUBDgX2AP/KUavjOI5TQZ4O4hjghdTxizEvs4yZ7QV2\nAoMJzuI/wBZgE/B1M3u1sgFJ0yQtkbRk+/btPf8NHMdxejGNOkl9CuGZ8qOB0cCXJI2pLGRmc8xs\nkplNGjJkSK01Oo7jHNTk+ST1ZmBE6nh4zMsq82IcThoIvAJ8HHjUzFqAbZL+BEwC1ldrbOnSpS9L\n2rifWpuBl/fzs3niurqH6+o+jarNdXWPA9E1stqJPB3En4HjJY0mOIKphBt/ml8AnwIWAx8BFpiZ\nSdoETAF+JOkwYDJwS2eNmdl+dyEkLam2DrieuK7u4bq6T6Nqc13dIy9duQ0xxTmFS4HfAGuA+81s\ntaSvSjo3FpsLDJa0DrgCSJbCzgb6S1pNcDS3m9nKvLQ6juM4Hck1WJ+Z/Rr4dUXedan064QlrZWf\n25WV7ziO49SORp2krjVz6i2gCq6re7iu7tOo2lxX98hF10ETi8lxHMfpWbwH4TiO42TiDsJxHMfJ\npFc4CEm3SdomaVUq70hJj0t6Lr4fEfMlaVYMILhS0sQa67pe0mZJy+PrrNS5mVHXWkkfyEnTCEkL\nJT0jabWky2J+I9irmrZ62+wQSU9LWhF1fSXmj45BKNfFoJT9Yn5mkMoa6rpD0vMpe42P+TX7LWN7\nRUnLJD0cj+tqr0501d1ekjYoBC9dLmlJzMv/mjSzg/4FvBuYCKxK5d0MzIjpGcBNMX0W8AhhX7/J\nwFM11nU9cGVG2ROBFUAT4enyvwPFHDQNAybG9OHAs7HtRrBXNW31tpmA/jHdF3gq2uJ+YGrM/z4w\nPaY/D3w/pqcC9+Vkr2q67gA+klG+Zr9lbO8K4MfAw/G4rvbqRFfd7QVsAJor8nK/JntFD8LMfg9U\nxnJKBwqcR3mr7/OAOy3wJDBI0rAa6qrGecC9ZrbbzJ4H1hFCkvS0pi1m9peY/jfhGZZjaAx7VdNW\njVrZzCwszYZwI+5LCDg5hRBXDDraLCtIZa10VaNmv6Wk4cDZwA/jsaizvbJ0dUHN7NVJ+7lek73C\nQVRhqJltiemtwNCY3pcgg3lzaewa3pZ0G+uhK3blJxD+eTaUvSq0QZ1tFocllgPbgMcJvZUdFh4Y\nrWy7WpDK3HWZWWKvG6O9viWpqVJXhuae5hbgaqAUjwfTAPbK0JVQb3sZ8JikpZKmxbzcr8ne7CDa\nsNAva5T1vrcCxwHjCdFsv1EPEZL6Az8FLjezdqHW622vDG11t5mZtZrZeELMsVOAN9ZaQxaVuiS9\nBZhJ0Pc24Ejgy7XUJOmDwDYzW1rLdruiE111tVfkVDObSNhf5xJJ706fzOua7M0O4qWk2xXft8X8\nfQkymBtm9lK8qEvADygPidRMl6S+hBvw3Wb2s5jdEPbK0tYINkswsx3AQuDthK59Eq0g3XabLrUP\nUlkLXWfEoTozs93A7dTeXu8EzpW0gbBPzBTg29TfXh10SbqrAeyFmW2O79uAB6OG3K/J3uwgkkCB\nxPefp/IvjCsBJgM7U9243KkYK/wwkKxw+gUwNa7oGA0cDzydQ/sixMhaY2bfTJ2qu72qaWsAmw2R\nNCimDwVOJ8yPLCQEoYSONkts2Rakska6/pa6qYgwbp22V+6/pZnNNLPhZjaKMOm8wMw+QZ3tVUXX\nJ+ttL0mHSTo8SQPvjxryvyb3d3b7/+kF3EMYemghjMddRBjDnA88B/wWODKWFSFY4N+BvwKTaqzr\nR7HdlfGHHpYqf03UtRY4MydNpxK6qiuB5fF1VoPYq5q2etvsJGBZbH8VcF3MH0NwSOuABwjb6AIc\nEo/XxfNjaqxrQbTXKuAuyiudavZbpjS+l/JqobraqxNddbVXtMuK+FoNXBPzc78mPdSG4ziOk0lv\nHmJyHMdxOsEdhOM4jpOJOwjHcRwnE3cQjuM4TibuIBzHcZxM3EE4ThdIalU5kudySTO6/tQ+1z1K\nqWi+jtNI5LonteMcJLxmIVyF4/QqvAfhOPtJjNF/s0Kc/qcljY35oyQtiMHd5ks6NuYPlfSgwv4M\nKyS9I1ZVlPQDhT0bHotPPSPpiwp7X6yUdG+dvqbTi3EH4Thdc2jFENMFqXM7zWwc8F1CJFCA7wDz\nzOwk4G5gVsyfBfzOzN5K2Adkdcw/HphtZm8GdgDnx/wZwIRYz+fy+nKOUw1/ktpxukDSLjPrn5G/\nAZhiZutjEMGtZjZY0suEcB8tMX+LmTVL2g4MtxD0LaljFCEM9/Hx+MtAXzO7QdKjwC7gIeAhK+/t\n4Dg1wXsQjnNgWJV0d9idSrdSnhs8mxBTZyLw51SkU8epCe4gHOfAuCD1vjimnyBEAwX4BPCHmJ4P\nTIe2jXwGVqtUUgEYYWYLCfsPDAQ69GIcJ0/8H4njdM2hcVe2hEfNLFnqeoSklYRewMdi3heA2yVd\nBWwHPhPzLwPmSLqI0FOYTojmm0URuCs6EQGzLOzp4Dg1w+cgHGc/iXMQk8zs5XprcZw88CEmx3Ec\nJxPvQTiO4ziZeA/CcRzHycQdhOM4jpOJOwjHcRwnE3cQjuM4TibuIBzHcZxM/gd2guItfXq1MgAA\nAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f86dWOyZKmN9", + "colab_type": "text" + }, + "source": [ + "Great results! From these graphs, we can see several exciting things:\n", + "\n", + "* Our network has reached its peak accuracy much more quickly (within 200 epochs instead of 500)\n", + "* The overall loss and MAE are much better than our previous network\n", + "* Metrics are better for validation than training, which means the network is not overfitting\n", + "\n", + "The reason the metrics for validation are better than those for training is that validation metrics are calculated at the end of each epoch, while training metrics are calculated throughout the epoch, so validation happens on a model that has been trained slightly longer.\n", + "\n", + "This all means our network seems to be performing well! To confirm, let's check its predictions against the test dataset we set aside earlier:\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lZfztKKyhLxX", + "colab_type": "code", + "outputId": "7ed4e1c5-4d19-4d10-cd65-0cae30486734", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 318 + } + }, + "source": [ + "# Calculate and print the loss on our test dataset\n", + "loss = model_2.evaluate(x_test, y_test)\n", + "\n", + "# Make predictions based on our test dataset\n", + "predictions = model_2.predict(x_test)\n", + "\n", + "# Graph the predictions against the actual values\n", + "plt.clf()\n", + "plt.title('Comparison of predictions and actual values')\n", + "plt.plot(x_test, y_test, 'b.', label='Actual')\n", + "plt.plot(x_test, predictions, 'r.', label='Predicted')\n", + "plt.legend()\n", + "plt.show()" + ], + "execution_count": 17, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\r200/1 [================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================] - 0s 40us/sample - loss: 0.0082 - mae: 0.0827\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\nrkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3h7IcvuOOS4J", + "colab_type": "text" + }, + "source": [ + "Much better! The evaluation metrics we printed show that the model has a low loss and MAE on the test data, and the predictions line up visually with our data fairly well.\n", + "\n", + "The model isn't perfect; its predictions don't form a smooth sine curve. For instance, the line is almost straight when `x` is between 4.2 and 5.2. If we wanted to go further, we could try further increasing the capacity of the model, perhaps using some techniques to defend from overfitting.\n", + "\n", + "However, an important part of machine learning is knowing when to quit, and this model is good enough for our use case - which is to make some LEDs blink in a pleasing pattern.\n", + "\n", + "## Generate a TensorFlow Lite Model" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sHe-Wv47rhm8", + "colab_type": "text" + }, + "source": [ + "### 1. Generate Models with or without Quantization\n", + "We now have an acceptably accurate model. We'll use the [TensorFlow Lite Converter](https://www.tensorflow.org/lite/convert) to convert the model into a special, space-efficient format for use on memory-constrained devices.\n", + "\n", + "Since this model is going to be deployed on a microcontroller, we want it to be as tiny as possible! One technique for reducing the size of models is called [quantization](https://www.tensorflow.org/lite/performance/post_training_quantization) while converting the model. It reduces the precision of the model's weights, and possibly the activations (output of each layer) as well, which saves memory, often without much impact on accuracy. Quantized models also run faster, since the calculations required are simpler.\n", + "\n", + "*Note: Currently, TFLite Converter produces TFlite models with float interfaces (input and output ops are always float). This is a blocker for users who require TFlite models with pure int8 or uint8 inputs/outputs. Refer to https://github.com/tensorflow/tensorflow/issues/38285*\n", + "\n", + "In the following cell, we'll convert the model twice: once with quantization, once without." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "1muAoUm8lSXL", + "colab_type": "code", + "outputId": "5ff328ef-73c5-45cd-e339-da52696b00e3", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "# Convert the model to the TensorFlow Lite format without quantization\n", + "converter = tf.lite.TFLiteConverter.from_keras_model(model_2)\n", + "model_no_quant_tflite = converter.convert()\n", + "\n", + "# # Save the model to disk\n", + "open(MODEL_NO_QUANT_TFLITE, \"wb\").write(model_no_quant_tflite)\n", + "\n", + "# Convert the model to the TensorFlow Lite format with quantization\n", + "def representative_dataset():\n", + " for i in range(500):\n", + " yield([x_train[i].reshape(1, 1)])\n", + "# Set the optimization flag.\n", + "converter.optimizations = [tf.lite.Optimize.DEFAULT]\n", + "# Enforce full-int8 quantization (except inputs/outputs which are always float)\n", + "converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]\n", + "# Provide a representative dataset to ensure we quantize correctly.\n", + "converter.representative_dataset = representative_dataset\n", + "model_tflite = converter.convert()\n", + "\n", + "# Save the model to disk\n", + "open(MODEL_TFLITE, \"wb\").write(model_tflite)" + ], + "execution_count": 18, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "2512" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 18 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8X1yO3h5pYbt", + "colab_type": "text" + }, + "source": [ + "### 2. Compare Model Sizes" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "jAIe0dK3pXU8", + "colab_type": "code", + "outputId": "ce15b7eb-f857-4cb0-ba70-5a67ce04566b", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + } + }, + "source": [ + "import os\n", + "model_no_quant_size = os.path.getsize(MODEL_NO_QUANT_TFLITE)\n", + "print(\"Model is %d bytes\" % model_no_quant_size)\n", + "model_size = os.path.getsize(MODEL_TFLITE)\n", + "print(\"Quantized model is %d bytes\" % model_size)\n", + "difference = model_no_quant_size - model_size\n", + "print(\"Difference is %d bytes\" % difference)" + ], + "execution_count": 19, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model is 2736 bytes\n", + "Quantized model is 2512 bytes\n", + "Difference is 224 bytes\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cR2OuokFpkEM", + "colab_type": "text" + }, + "source": [ + "Our quantized model is only 224 bytes smaller than the original version, which only a tiny reduction in size! At around 2.5 kilobytes, this model is already so small that the weights make up only a small fraction of the overall size, meaning quantization has little effect.\n", + "\n", + "More complex models have many more weights, meaning the space saving from quantization will be much higher, approaching 4x for most sophisticated models.\n", + "\n", + "Regardless, our quantized model will take less time to execute than the original version, which is important on a tiny microcontroller!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "L_vE-ZDkHVxe", + "colab_type": "text" + }, + "source": [ + "### 3. Test the Models\n", + "\n", + "To prove these models are still accurate after conversion and quantization, we'll use both of them to make predictions and compare these against our test results:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-J7IKlXiYVPz", + "colab_type": "code", + "outputId": "87d2fd39-4ddc-4f73-e164-e0089a5cfb59", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + } + }, + "source": [ + "# Instantiate an interpreter for each model\n", + "model_no_quant = tf.lite.Interpreter(MODEL_NO_QUANT_TFLITE)\n", + "model = tf.lite.Interpreter(MODEL_TFLITE)\n", + "\n", + "# Allocate memory for each model\n", + "model_no_quant.allocate_tensors()\n", + "model.allocate_tensors()\n", + "\n", + "# Get the input and output tensors so we can feed in values and get the results\n", + "model_no_quant_input = model_no_quant.tensor(model_no_quant.get_input_details()[0][\"index\"])\n", + "model_no_quant_output = model_no_quant.tensor(model_no_quant.get_output_details()[0][\"index\"])\n", + "model_input = model.tensor(model.get_input_details()[0][\"index\"])\n", + "model_output = model.tensor(model.get_output_details()[0][\"index\"])\n", + "\n", + "# Create arrays to store the results\n", + "model_no_quant_predictions = np.empty(x_test.size)\n", + "model_predictions = np.empty(x_test.size)\n", + "\n", + "# Run each model's interpreter for each value and store the results in arrays\n", + "for i in range(x_test.size):\n", + " model_no_quant_input().fill(x_test[i])\n", + " model_no_quant.invoke()\n", + " model_no_quant_predictions[i] = model_no_quant_output()[0]\n", + "\n", + " model_input().fill(x_test[i])\n", + " model.invoke()\n", + " model_predictions[i] = model_output()[0]\n", + "\n", + "# See how they line up with the data\n", + "plt.clf()\n", + "plt.title('Comparison of various models against actual values')\n", + "plt.plot(x_test, y_test, 'bo', label='Actual predictions')\n", + "plt.plot(x_test, predictions, 'ro', label='Original predictions')\n", + "plt.plot(x_test, model_no_quant_predictions, 'bx', label='Lite predictions')\n", + "plt.plot(x_test, model_predictions, 'gx', label='Lite quantized predictions')\n", + "plt.legend()\n", + "plt.show()" + ], + "execution_count": 20, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jWxvLGexKv0D", + "colab_type": "text" + }, + "source": [ + "We can see from the graph that the predictions for the original model, the converted model, and the quantized model are all close enough to be indistinguishable. This means that our quantized model is ready to use!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HPSFmDL7pv2L", + "colab_type": "text" + }, + "source": [ + "## Generate a TensorFlow Lite for Microcontrollers Model\n", + "Convert the TensorFlow Lite quantized model into a C source file that can be loaded by TensorFlow Lite for Microcontrollers." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "j1FB4ieeg0lw", + "colab_type": "code", + "outputId": "a2ba48f0-c440-409a-dad0-747a22ac3a64", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 476 + } + }, + "source": [ + "# Install xxd if it is not available\n", + "!apt-get update && apt-get -qq install xxd\n", + "# Convert to a C source file\n", + "!xxd -i {MODEL_TFLITE} > {MODEL_TFLITE_MICRO}\n", + "# Update variable names\n", + "REPLACE_TEXT = MODEL_TFLITE.replace('/', '_').replace('.', '_')\n", + "!sed -i 's/'{REPLACE_TEXT}'/g_model/g' {MODEL_TFLITE_MICRO}" + ], + "execution_count": 21, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Get:1 https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/ InRelease [3,626 B]\n", + "Ign:2 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 InRelease\n", + "Hit:3 http://archive.ubuntu.com/ubuntu bionic InRelease\n", + "Get:4 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]\n", + "Hit:5 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic InRelease\n", + "Ign:6 https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 InRelease\n", + "Hit:7 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 Release\n", + "Hit:8 https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 Release\n", + "Get:9 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]\n", + "Get:10 http://ppa.launchpad.net/marutter/c2d4u3.5/ubuntu bionic InRelease [15.4 kB]\n", + "Get:11 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]\n", + "Get:14 http://ppa.launchpad.net/marutter/c2d4u3.5/ubuntu bionic/main Sources [1,810 kB]\n", + "Get:15 http://security.ubuntu.com/ubuntu bionic-security/restricted amd64 Packages [38.5 kB]\n", + "Get:16 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages [873 kB]\n", + "Get:17 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [1,368 kB]\n", + "Get:18 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages [835 kB]\n", + "Get:19 http://archive.ubuntu.com/ubuntu bionic-updates/restricted amd64 Packages [57.5 kB]\n", + "Get:20 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [1,176 kB]\n", + "Get:21 http://ppa.launchpad.net/marutter/c2d4u3.5/ubuntu bionic/main amd64 Packages [873 kB]\n", + "Fetched 7,301 kB in 3s (2,475 kB/s)\n", + "Reading package lists... Done\n", + "Selecting previously unselected package xxd.\n", + "(Reading database ... 144568 files and directories currently installed.)\n", + "Preparing to unpack .../xxd_2%3a8.0.1453-1ubuntu1.3_amd64.deb ...\n", + "Unpacking xxd (2:8.0.1453-1ubuntu1.3) ...\n", + "Setting up xxd (2:8.0.1453-1ubuntu1.3) ...\n", + "Processing triggers for man-db (2.8.3-2ubuntu0.1) ...\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JvRy0ZyMhQOX", + "colab_type": "text" + }, + "source": [ + "## Deploy to a Microcontroller\n", + "\n", + "Follow the instructions in the [hello_world](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/micro/examples/hello_world) README.md for [TensorFlow Lite for MicroControllers](https://www.tensorflow.org/lite/microcontrollers/overview) to deploy this model on a specific microcontroller.\n", + "\n", + "**Reference Model:** If you have not modified this notebook, you can follow the instructions as is, to deploy the model. Refer to the [`hello_world/train/models`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/train/models) directory to access the models generated in this notebook.\n", + "\n", + "**New Model:** If you have generated a new model, then update the values assigned to the variables defined in [`hello_world/model.cc`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/model.cc) with values displayed after running the following cell." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "l4-WhtGpvb-E", + "colab_type": "code", + "outputId": "ba008623-d568-43b1-a824-68adbe811567", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + } + }, + "source": [ + "# Print the C source file\n", + "!cat {MODEL_TFLITE_MICRO}" + ], + "execution_count": 22, + "outputs": [ + { + "output_type": "stream", + "text": [ + "unsigned char g_model[] = {\n", + " 0x1c, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x12, 0x00,\n", + " 0x1c, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x14, 0x00,\n", + " 0x00, 0x00, 0x18, 0x00, 0x12, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,\n", + " 0x60, 0x09, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00,\n", + " 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x08, 0x00,\n", + " 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,\n", + " 0x13, 0x00, 0x00, 0x00, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x75, 0x6e, 0x74,\n", + " 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x00,\n", + " 0x0c, 0x00, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00,\n", + " 0x0c, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00,\n", + " 0x8c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,\n", + " 0x2c, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,\n", + " 0x04, 0x00, 0x00, 0x00, 0xfe, 0xfd, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00,\n", + " 0x05, 0x00, 0x00, 0x00, 0x31, 0x2e, 0x35, 0x2e, 0x30, 0x00, 0x00, 0x00,\n", + " 0x7c, 0xfd, 0xff, 0xff, 0x80, 0xfd, 0xff, 0xff, 0x84, 0xfd, 0xff, 0xff,\n", + " 0x88, 0xfd, 0xff, 0xff, 0x22, 0xfe, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00,\n", + " 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00,\n", + " 0x9f, 0x0a, 0x00, 0x00, 0x65, 0x06, 0x00, 0x00, 0x3d, 0xf8, 0xff, 0xff,\n", + " 0x00, 0x00, 0x00, 0x00, 0xeb, 0x0a, 0x00, 0x00, 0x2f, 0xf8, 0xff, 0xff,\n", + " 0xe8, 0x04, 0x00, 0x00, 0x21, 0x0a, 0x00, 0x00, 0x46, 0xfe, 0xff, 0xff,\n", + " 0xc8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xf7, 0xff, 0xff,\n", + " 0x28, 0xf9, 0xff, 0xff, 0x9a, 0x05, 0x00, 0x00, 0x6e, 0xfe, 0xff, 0xff,\n", + " 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x73, 0x1c, 0x11, 0xe1,\n", + " 0x0c, 0x81, 0xa5, 0x43, 0xfe, 0xd5, 0xd5, 0xb2, 0x60, 0x77, 0x19, 0xdf,\n", + " 0x8a, 0xfe, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x51, 0x0b, 0x00, 0x00, 0x47, 0xf6, 0xff, 0xff,\n", + " 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x00, 0x00, 0x9b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x00, 0x00, 0xe7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", + " 0x92, 0x07, 0x00, 0x00, 0xf4, 0xf4, 0xff, 0xff, 0x55, 0xf0, 0xff, 0xff,\n", + " 0x00, 0x00, 0x00, 0x00, 0xd6, 0xfe, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00,\n", + " 0x00, 0x01, 0x00, 0x00, 0xee, 0xfc, 0x00, 0xec, 0x05, 0x16, 0xef, 0xec,\n", + " 0xe6, 0xf8, 0x03, 0x01, 0x00, 0xfa, 0xf8, 0xf5, 0xda, 0xeb, 0x27, 0x14,\n", + " 0xef, 0xde, 0xe2, 0xda, 0xf0, 0xdf, 0x32, 0x06, 0x01, 0xe6, 0xee, 0xf9,\n", + " 0x00, 0x16, 0x07, 0xe0, 0xfe, 0xff, 0xe9, 0x05, 0xe7, 0xef, 0x81, 0x1b,\n", + " 0x18, 0xea, 0xca, 0x01, 0x0f, 0x00, 0xdb, 0xf7, 0x0e, 0xec, 0x12, 0x1e,\n", + " 0x04, 0x13, 0xb2, 0xe7, 0xfd, 0x06, 0xbb, 0xe0, 0x0c, 0xec, 0xf0, 0xdf,\n", + " 0xeb, 0xf7, 0x05, 0x26, 0x19, 0xe4, 0x70, 0x1a, 0xea, 0x1e, 0x34, 0xdf,\n", + " 0x19, 0xf3, 0xf1, 0x19, 0x0e, 0x03, 0x1b, 0xe1, 0xde, 0x13, 0xf6, 0x19,\n", + " 0xff, 0xf6, 0x1a, 0x17, 0xf1, 0x1c, 0xdb, 0x1a, 0x1a, 0x20, 0xe6, 0x19,\n", + " 0xf5, 0xff, 0x97, 0x0b, 0x00, 0x00, 0xce, 0xdf, 0x0d, 0xf7, 0x15, 0xe4,\n", + " 0xed, 0xfc, 0x0d, 0xe9, 0xfb, 0xec, 0x5c, 0xfc, 0x1d, 0x02, 0x58, 0xe3,\n", + " 0xe0, 0xf4, 0x15, 0xec, 0xf9, 0x00, 0x13, 0x05, 0xec, 0x0c, 0x1c, 0x14,\n", + " 0x0c, 0xe9, 0x0a, 0xf4, 0x18, 0x00, 0xd7, 0x05, 0x27, 0x02, 0x15, 0xea,\n", + " 0xea, 0x02, 0x9b, 0x00, 0x0c, 0xfa, 0xe9, 0xea, 0xfe, 0x01, 0x14, 0xfd,\n", + " 0x0b, 0x02, 0xf0, 0xef, 0x06, 0xee, 0x01, 0x0d, 0x06, 0xe7, 0xf7, 0x11,\n", + " 0xf5, 0x0a, 0xf9, 0xf1, 0x23, 0xff, 0x0d, 0xf2, 0xec, 0x11, 0x26, 0x1d,\n", + " 0xf2, 0xea, 0x28, 0x18, 0xe0, 0xfb, 0xf3, 0xf4, 0x05, 0x1c, 0x1d, 0xfb,\n", + " 0xfd, 0x1e, 0xfc, 0x11, 0xe8, 0x06, 0x09, 0x03, 0x12, 0xf2, 0x35, 0xfb,\n", + " 0xdd, 0x1b, 0xf9, 0xef, 0xf3, 0xe7, 0x6f, 0x0c, 0x1d, 0x00, 0x43, 0xfd,\n", + " 0x0d, 0xf1, 0x0a, 0x19, 0x1a, 0xfa, 0xe0, 0x18, 0x1e, 0x13, 0x37, 0x1c,\n", + " 0x12, 0xec, 0x3a, 0x0c, 0xb6, 0xcb, 0xe6, 0x13, 0xf7, 0xeb, 0xf1, 0x05,\n", + " 0x1b, 0xfa, 0x19, 0xe5, 0xec, 0xcf, 0x0c, 0xf4, 0xe2, 0xff, 0xff, 0xff,\n", + " 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0xa2, 0x8c, 0xc9,\n", + " 0x5f, 0x1d, 0xce, 0x41, 0x9f, 0xcd, 0x20, 0xb1, 0xdf, 0x53, 0x2f, 0x81,\n", + " 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,\n", + " 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe2, 0xee, 0xff, 0xff,\n", + " 0x80, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x54, 0x4f, 0x43, 0x4f,\n", + " 0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x2e, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xbc, 0xf9, 0xff, 0xff,\n", + " 0x48, 0x01, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00,\n", + " 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00,\n", + " 0xb8, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,\n", + " 0x04, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00,\n", + " 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", + " 0xca, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x00, 0x00,\n", + " 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00,\n", + " 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", + " 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,\n", + " 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x00, 0x00,\n", + " 0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n", + " 0x04, 0x00, 0x00, 0x00, 0xba, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01,\n", + " 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,\n", + " 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00,\n", + " 0x07, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,\n", + " 0x24, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n", + " 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n", + " 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x04, 0x00,\n", + " 0x08, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x0a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xdc, 0x04, 0x00, 0x00,\n", + " 0x54, 0x04, 0x00, 0x00, 0xc4, 0x03, 0x00, 0x00, 0x54, 0x03, 0x00, 0x00,\n", + " 0xd0, 0x02, 0x00, 0x00, 0x4c, 0x02, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,\n", + " 0x5c, 0x01, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00,\n", + " 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xff, 0xff,\n", + " 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,\n", + " 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x00, 0x00, 0x00, 0x00,\n", + " 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x0c, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,\n", + " 0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n", + " 0x0d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, 0x5f,\n", + " 0x69, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xc2, 0xfb, 0xff, 0xff,\n", + " 0x00, 0x00, 0x00, 0x02, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xff, 0xff,\n", + " 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0xba, 0x2b, 0x4f, 0x38, 0x20, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,\n", + " 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e,\n", + " 0x73, 0x65, 0x5f, 0x34, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x5f,\n", + " 0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x2a, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09,\n", + " 0x6c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,\n", + " 0x04, 0x00, 0x00, 0x00, 0x2c, 0xfd, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00,\n", + " 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb9, 0x36, 0x0b, 0x3c,\n", + " 0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,\n", + " 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x34,\n", + " 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f, 0x52, 0x65, 0x61, 0x64,\n", + " 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x2f, 0x74,\n", + " 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00,\n", + " 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n", + " 0xaa, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09, 0x6c, 0x00, 0x00, 0x00,\n", + " 0x09, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n", + " 0x9c, 0xfc, 0xff, 0xff, 0x30, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,\n", + " 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0xaa, 0x7b, 0xbe, 0x3b, 0x01, 0x00, 0x00, 0x00,\n", + " 0x2e, 0xbd, 0xbd, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", + " 0x19, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,\n", + " 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x33,\n", + " 0x2f, 0x52, 0x65, 0x6c, 0x75, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x2a, 0xfd, 0xff, 0xff,\n", + " 0x00, 0x00, 0x00, 0x02, 0x58, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,\n", + " 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2c, 0xfe, 0xff, 0xff,\n", + " 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0xe3, 0x04, 0x20, 0x39, 0x20, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,\n", + " 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e,\n", + " 0x73, 0x65, 0x5f, 0x33, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x5f,\n", + " 0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x10, 0x00, 0x00, 0x00, 0x92, 0xfd, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09,\n", + " 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,\n", + " 0x04, 0x00, 0x00, 0x00, 0x94, 0xfe, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00,\n", + " 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe8, 0x76, 0x51, 0x3c,\n", + " 0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,\n", + " 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x33,\n", + " 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f, 0x52, 0x65, 0x61, 0x64,\n", + " 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x2f, 0x74,\n", + " 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00,\n", + " 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n", + " 0x12, 0xfe, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09, 0x6c, 0x00, 0x00, 0x00,\n", + " 0x07, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n", + " 0x04, 0xfe, 0xff, 0xff, 0x30, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,\n", + " 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0xd2, 0x91, 0x43, 0x3c, 0x01, 0x00, 0x00, 0x00,\n", + " 0x40, 0xce, 0x42, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", + " 0x19, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,\n", + " 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32,\n", + " 0x2f, 0x52, 0x65, 0x6c, 0x75, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x92, 0xfe, 0xff, 0xff,\n", + " 0x00, 0x00, 0x00, 0x02, 0x5c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n", + " 0x2c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x94, 0xff, 0xff, 0xff,\n", + " 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x28, 0xb3, 0xd9, 0x38, 0x20, 0x00, 0x00, 0x00,\n", + " 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31,\n", + " 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, 0x2f, 0x4d, 0x61, 0x74,\n", + " 0x4d, 0x75, 0x6c, 0x5f, 0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xff, 0xff,\n", + " 0x00, 0x00, 0x00, 0x09, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,\n", + " 0x34, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00,\n", + " 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x00, 0x00,\n", + " 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0xd5, 0x6b, 0x8a, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,\n", + " 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e,\n", + " 0x73, 0x65, 0x5f, 0x32, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f,\n", + " 0x52, 0x65, 0x61, 0x64, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,\n", + " 0x4f, 0x70, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65,\n", + " 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x8a, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09,\n", + " 0x60, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,\n", + " 0x04, 0x00, 0x00, 0x00, 0x7c, 0xff, 0xff, 0xff, 0x2c, 0x00, 0x00, 0x00,\n", + " 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n", + " 0x01, 0x00, 0x00, 0x00, 0x5d, 0x4f, 0xc9, 0x3c, 0x01, 0x00, 0x00, 0x00,\n", + " 0x0e, 0x86, 0xc8, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", + " 0x12, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, 0x5f,\n", + " 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x38, 0x00, 0x00,\n", + " 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x08, 0x00, 0x07, 0x00, 0x0c, 0x00,\n", + " 0x10, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,\n", + " 0x6c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00,\n", + " 0x10, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00,\n", + " 0x0c, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,\n", + " 0x24, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n", + " 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n", + " 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xde, 0x0a, 0x3c,\n", + " 0x01, 0x00, 0x00, 0x00, 0x66, 0x64, 0x87, 0x3f, 0x01, 0x00, 0x00, 0x00,\n", + " 0x13, 0x42, 0x8d, 0xbf, 0x0d, 0x00, 0x00, 0x00, 0x49, 0x64, 0x65, 0x6e,\n", + " 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x38, 0x00, 0x00, 0x00,\n", + " 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n", + " 0x03, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,\n", + " 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x07, 0x00,\n", + " 0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,\n", + " 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00,\n", + " 0x06, 0x00, 0x00, 0x00, 0x00, 0x72, 0x0a, 0x00, 0x0c, 0x00, 0x07, 0x00,\n", + " 0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,\n", + " 0x04, 0x00, 0x00, 0x00\n", + "};\n", + "unsigned int g_model_len = 2512;\n" + ], + "name": "stdout" + } + ] + } + ] +} \ No newline at end of file diff --git a/tensorflow/lite/micro/examples/micro_speech/README.md b/tensorflow/lite/micro/examples/micro_speech/README.md index 878b82f868e..5c20aa5fe75 100644 --- a/tensorflow/lite/micro/examples/micro_speech/README.md +++ b/tensorflow/lite/micro/examples/micro_speech/README.md @@ -545,4 +545,4 @@ with the model and sample inputs. So far you have used an existing trained model to run inference on microcontrollers. If you wish to train your own model, follow the instructions -in [train/README.md](train/README.md). +given in the [train/](train/) directory. diff --git a/tensorflow/lite/micro/examples/micro_speech/train/README.md b/tensorflow/lite/micro/examples/micro_speech/train/README.md index 25277feb5ab..8e65f2bb13a 100644 --- a/tensorflow/lite/micro/examples/micro_speech/train/README.md +++ b/tensorflow/lite/micro/examples/micro_speech/train/README.md @@ -23,28 +23,48 @@ stop go ``` +The scripts used in training the model have been sourced from the +[Simple Audio Recognition](https://www.tensorflow.org/tutorials/sequences/audio_recognition) +tutorial. + ## Table of contents - [Overview](#overview) -- [Trained Models](#trained-models) - [Training](#training) +- [Trained Models](#trained-models) - [Model Architecture](#model-architecture) - [Dataset](#dataset) - [Preprocessing Speech Input](#preprocessing-speech-input) +- [Other Training Methods](#other-training-methods) ## Overview -1. Training Jupyter Notebook: [`train_micro_speech_model.ipynb`](train_micro_speech_model.ipynb) -. The training scripts used in this notebook are in the -[Simple Audio Recognition](https://www.tensorflow.org/tutorials/sequences/audio_recognition) -tutorial. -2. Dataset Type: **Speech** -3. Dataset: Speech Commands, Version 2. ([Download Link](https://storage.cloud.google.com/download.tensorflow.org/data/speech_commands_v0.02.tar.gz) +1. Dataset: Speech Commands, Version 2. ([Download Link](https://storage.cloud.google.com/download.tensorflow.org/data/speech_commands_v0.02.tar.gz) , [Paper](https://arxiv.org/abs/1804.03209)) -4. Deep Learning Framework: **TensorFlow 1.5** -5. Language: **Python 3.7** -6. Model Size: **<20 kB** -7. Model Category: **Multiclass Classification** +2. Dataset Type: **Speech** +3. Deep Learning Framework: **TensorFlow 1.5** +4. Language: **Python 3.7** +5. Model Size: **<20 kB** +6. Model Category: **Multiclass Classification** + +## Training + +Train the model in the cloud using Google Colaboratory or locally using a +Jupyter Notebook. + + + + +
+ Google Colaboratory + + Jupyter Notebook +
+ +*Estimated Training Time: ~2 Hours.* + +For more options, refer to the [Other Training Methods](#other-training-methods) +section. ## Trained Models @@ -52,7 +72,7 @@ tutorial. | ------------- |-------------| The `models` directory in the above zip file can be generated by following the -instructions in the [Training](#training) section below. It +instructions in the [Training](#training) section above. It includes the following 3 model files: | Name | Format | Target Framework | Target Device | @@ -61,67 +81,11 @@ includes the following 3 model files: | `model.tflite` *(<20 kB)* | Fully Quantized* TFLite Model | TensorFlow Lite | Mobile Devices| | `model.cc` | C Source File | TensorFlow Lite for Microcontrollers | Microcontrollers | -*Fully quantized implies that the model is **strictly int8** quantized +**Fully quantized implies that the model is **strictly int8** quantized **including** the input(s) and output(s).* - -## Training - -### 1. Use [Google Colaboratory](https://colab.research.google.com) - -*We strongly recommend trying this approach first.* - -| Run in Google Colaboratory | train_micro_speech_model.ipynb | -| ------------- |-------------| - -**Estimated Training Time:** ~2 hours. -**Advantage:** It allows the use of a free Tesla K80 GPU for training and avoids -the need to install dependencies. -**Disadvantage:** Your training time is limited as the session can only run -upto 12 hours in a row if you keep the browser open and 90 minutes if you close -the browser. - -### 2. Use [Google Cloud](https://cloud.google.com/) - -1. Create a Virtual Machine (VM) using a pre-configured Deep Learning VM Image. - -``` -export IMAGE_FAMILY="tf-latest-cpu" -export ZONE="us-west1-b" # Or any other required region -export INSTANCE_NAME="model-trainer" -export INSTANCE_TYPE="n1-standard-8" # or any other instance type -gcloud compute instances create $INSTANCE_NAME \ - --zone=$ZONE \ - --image-family=$IMAGE_FAMILY \ - --image-project=deeplearning-platform-release \ - --machine-type=$INSTANCE_TYPE \ - --boot-disk-size=120GB \ - --min-cpu-platform=Intel\ Skylake -``` - -2. As soon as instance has been created you can SSH to it: - -``` -gcloud compute ssh "jupyter@${INSTANCE_NAME}" -``` - -3. Train a model by following the instructions in the [`train_micro_speech_model.ipynb`](train_micro_speech_model.ipynb) -jupyter notebook. - -4. Finally, don't forget to remove the instance when training is done: - -``` -gcloud compute instances delete "${INSTANCE_NAME}" --zone="${ZONE}" -``` - -**Estimated Training Time:** ~2 hours (with GPU) and ~1 day (with CPU). -**Advantage:** There are no time constraints on how long the training process -can take and it avoids the need to install dependencies. -**Disadvantage:** Google Cloud isn't free. You need to pay -depending on how long you use run the VM and what resources you use. - ## Model Architecture This is a simple model comprising of a Convolutional 2D layer, a Fully Connected @@ -197,3 +161,41 @@ python tensorflow/tensorflow/examples/speech_commands/wav_to_features.py \ --window_stride=20 --preprocess=average --quantize=1 ``` + +## Other Training Methods + +### Use [Google Cloud](https://cloud.google.com/). + +*Note: Google Cloud isn't free. You need to pay depending on how long you use +run the VM and what resources you use.* + +1. Create a Virtual Machine (VM) using a pre-configured Deep Learning VM Image. + +``` +export IMAGE_FAMILY="tf-latest-cpu" +export ZONE="us-west1-b" # Or any other required region +export INSTANCE_NAME="model-trainer" +export INSTANCE_TYPE="n1-standard-8" # or any other instance type +gcloud compute instances create $INSTANCE_NAME \ + --zone=$ZONE \ + --image-family=$IMAGE_FAMILY \ + --image-project=deeplearning-platform-release \ + --machine-type=$INSTANCE_TYPE \ + --boot-disk-size=120GB \ + --min-cpu-platform=Intel\ Skylake +``` + +2. As soon as instance has been created you can SSH to it: + +``` +gcloud compute ssh "jupyter@${INSTANCE_NAME}" +``` + +3. Train a model by following the instructions in the [`train_micro_speech_model.ipynb`](train_micro_speech_model.ipynb) +jupyter notebook. + +4. Finally, don't forget to remove the instance when training is done: + +``` +gcloud compute instances delete "${INSTANCE_NAME}" --zone="${ZONE}" +```