Skip to content

Instantly share code, notes, and snippets.

@ShawnHymel
Created March 18, 2020 17:42
Show Gist options
  • Star 15 You must be signed in to star a gist
  • Fork 17 You must be signed in to fork a gist
  • Save ShawnHymel/79237fe6aee5a3653c497d879f746c0c to your computer and use it in GitHub Desktop.
Save ShawnHymel/79237fe6aee5a3653c497d879f746c0c to your computer and use it in GitHub Desktop.
TensorFlow Lite Sinewave Regression Training and Conversion
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "tflite-sinewave-training.ipynb",
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "l_-wmxvyP73e",
"colab_type": "text"
},
"source": [
"Generate a TensorFlow model that predicts values in a sinewave. Based on the code by Pete Warden at https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/create_sine_model.ipynb"
]
},
{
"cell_type": "code",
"metadata": {
"id": "gG0T9eUtP5L5",
"colab_type": "code",
"outputId": "8580a063-c7e3-440d-bdb5-074e402a9b37",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 101
}
},
"source": [
"%tensorflow_version 2.1"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"`%tensorflow_version` only switches the major version: 1.x or 2.x.\n",
"You set: `2.1`. This will be interpreted as: `2.x`.\n",
"\n",
"\n",
"TensorFlow 2.x selected.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "axunt9z5QBCr",
"colab_type": "code",
"colab": {}
},
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import math\n",
"from tensorflow.keras import layers"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "UalEVZteQNDF",
"colab_type": "code",
"outputId": "9d610919-fba2-43a7-ec81-18cdfda056eb",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 118
}
},
"source": [
"# Print versions\n",
"!python --versions\n",
"print('Numpy ' + np.__version__)\n",
"print('TensorFlow ' + tf.__version__)\n",
"print('Keras ' + tf.keras.__version__)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Unknown option: --\n",
"usage: python3 [option] ... [-c cmd | -m mod | file | -] [arg] ...\n",
"Try `python -h' for more information.\n",
"Numpy 1.17.5\n",
"TensorFlow 2.1.0\n",
"Keras 2.2.4-tf\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "7rcPcaSGQWvH",
"colab_type": "code",
"colab": {}
},
"source": [
"# Settings\n",
"nsamples = 1000 # Number of samples to use as a dataset\n",
"val_ratio = 0.2 # Percentage of samples that should be held for validation set\n",
"test_ratio = 0.2 # Percentage of samples that should be held for test set\n",
"tflite_model_name = 'sine_model' # Will be given .tflite suffix\n",
"c_model_name = 'sine_model' # Will be given .h suffix"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Ws6srgy9QqQq",
"colab_type": "code",
"outputId": "abca0985-6c75-4d8a-9d45-def4846c047a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
}
},
"source": [
"# Generate some random samples\n",
"np.random.seed(1234)\n",
"x_values = np.random.uniform(low=0, high=(2 * math.pi), size=nsamples)\n",
"plt.plot(x_values)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fa4255b5278>]"
]
},
"metadata": {
"tags": []
},
"execution_count": 5
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "yGpkU2W5Q0tu",
"colab_type": "code",
"outputId": "899c89e7-6f15-4b0c-d4aa-8ca127a47ab1",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
}
},
"source": [
"# Create a noisy sinewave with these values\n",
"y_values = np.sin(x_values) + (0.1 * np.random.randn(x_values.shape[0]))\n",
"plt.plot(x_values, y_values, '.')"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fa425106208>]"
]
},
"metadata": {
"tags": []
},
"execution_count": 6
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ZHkdG5kHQ-hZ",
"colab_type": "code",
"outputId": "2da9eda1-0795-49bf-f491-798c2e36e81e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 265
}
},
"source": [
"# Plit the dataset into training, validation, and test sets\n",
"val_split = int(val_ratio * nsamples)\n",
"test_split = int(val_split + (test_ratio * nsamples))\n",
"x_val, x_test, x_train = np.split(x_values, [val_split, test_split])\n",
"y_val, y_test, y_train = np.split(y_values, [val_split, test_split])\n",
"\n",
"# Check that our splits add up correctly\n",
"assert(x_train.size + x_val.size + x_test.size) == nsamples\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_val, y_val, 'y.', label=\"Validate\")\n",
"plt.legend()\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "SdZ7nh49RveB",
"colab_type": "code",
"colab": {}
},
"source": [
"# Create a model\n",
"model = tf.keras.Sequential()\n",
"model.add(layers.Dense(16, activation='relu', input_shape=(1,)))\n",
"model.add(layers.Dense(16, activation='relu'))\n",
"model.add(layers.Dense(1))"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "2PEmqpDChct3",
"colab_type": "code",
"outputId": "ad66d839-19f4-41b0-bb38-d9be838f0085",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 252
}
},
"source": [
"# View model\n",
"model.summary()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"dense (Dense) (None, 16) 32 \n",
"_________________________________________________________________\n",
"dense_1 (Dense) (None, 16) 272 \n",
"_________________________________________________________________\n",
"dense_2 (Dense) (None, 1) 17 \n",
"=================================================================\n",
"Total params: 321\n",
"Trainable params: 321\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "kCwv3kMUhe4S",
"colab_type": "code",
"colab": {}
},
"source": [
"# Add optimizer, loss function, and metrics to model and compile it\n",
"model.compile(optimizer='rmsprop', loss='mae', metrics=['mae'])"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "-lSCIHp3howX",
"colab_type": "code",
"outputId": "0ffea290-c1ce-4663-a08f-afc51582826c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"source": [
"# Train model\n",
"history = model.fit(x_train,\n",
" y_train,\n",
" epochs=500,\n",
" batch_size=100,\n",
" validation_data=(x_val, y_val))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Train on 600 samples, validate on 200 samples\n",
"Epoch 1/500\n",
"600/600 [==============================] - 1s 1ms/sample - loss: 0.8297 - mae: 0.8297 - val_loss: 0.8248 - val_mae: 0.8248\n",
"Epoch 2/500\n",
"600/600 [==============================] - 0s 50us/sample - loss: 0.7889 - mae: 0.7889 - val_loss: 0.7919 - val_mae: 0.7919\n",
"Epoch 3/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.7647 - mae: 0.7647 - val_loss: 0.7660 - val_mae: 0.7660\n",
"Epoch 4/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.7438 - mae: 0.7438 - val_loss: 0.7415 - val_mae: 0.7415\n",
"Epoch 5/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.7224 - mae: 0.7224 - val_loss: 0.7180 - val_mae: 0.7180\n",
"Epoch 6/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.7027 - mae: 0.7027 - val_loss: 0.6985 - val_mae: 0.6985\n",
"Epoch 7/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.6865 - mae: 0.6865 - val_loss: 0.6813 - val_mae: 0.6813\n",
"Epoch 8/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.6712 - mae: 0.6712 - val_loss: 0.6652 - val_mae: 0.6652\n",
"Epoch 9/500\n",
"600/600 [==============================] - 0s 44us/sample - loss: 0.6569 - mae: 0.6569 - val_loss: 0.6494 - val_mae: 0.6494\n",
"Epoch 10/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.6434 - mae: 0.6434 - val_loss: 0.6352 - val_mae: 0.6352\n",
"Epoch 11/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.6298 - mae: 0.6298 - val_loss: 0.6211 - val_mae: 0.6211\n",
"Epoch 12/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.6167 - mae: 0.6167 - val_loss: 0.6079 - val_mae: 0.6079\n",
"Epoch 13/500\n",
"600/600 [==============================] - 0s 43us/sample - loss: 0.6038 - mae: 0.6038 - val_loss: 0.5945 - val_mae: 0.5945\n",
"Epoch 14/500\n",
"600/600 [==============================] - 0s 55us/sample - loss: 0.5907 - mae: 0.5907 - val_loss: 0.5816 - val_mae: 0.5816\n",
"Epoch 15/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.5795 - mae: 0.5795 - val_loss: 0.5709 - val_mae: 0.5709\n",
"Epoch 16/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.5699 - mae: 0.5699 - val_loss: 0.5611 - val_mae: 0.5611\n",
"Epoch 17/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.5601 - mae: 0.5601 - val_loss: 0.5513 - val_mae: 0.5513\n",
"Epoch 18/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.5504 - mae: 0.5504 - val_loss: 0.5414 - val_mae: 0.5414\n",
"Epoch 19/500\n",
"600/600 [==============================] - 0s 45us/sample - loss: 0.5410 - mae: 0.5410 - val_loss: 0.5325 - val_mae: 0.5325\n",
"Epoch 20/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.5320 - mae: 0.5320 - val_loss: 0.5239 - val_mae: 0.5239\n",
"Epoch 21/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.5229 - mae: 0.5229 - val_loss: 0.5157 - val_mae: 0.5157\n",
"Epoch 22/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.5137 - mae: 0.5137 - val_loss: 0.5065 - val_mae: 0.5065\n",
"Epoch 23/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.5040 - mae: 0.5040 - val_loss: 0.4972 - val_mae: 0.4972\n",
"Epoch 24/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.4945 - mae: 0.4945 - val_loss: 0.4877 - val_mae: 0.4877\n",
"Epoch 25/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.4851 - mae: 0.4851 - val_loss: 0.4792 - val_mae: 0.4792\n",
"Epoch 26/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.4761 - mae: 0.4761 - val_loss: 0.4698 - val_mae: 0.4698\n",
"Epoch 27/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.4664 - mae: 0.4664 - val_loss: 0.4606 - val_mae: 0.4606\n",
"Epoch 28/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.4569 - mae: 0.4569 - val_loss: 0.4500 - val_mae: 0.4500\n",
"Epoch 29/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.4477 - mae: 0.4477 - val_loss: 0.4400 - val_mae: 0.4400\n",
"Epoch 30/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.4391 - mae: 0.4391 - val_loss: 0.4310 - val_mae: 0.4310\n",
"Epoch 31/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.4300 - mae: 0.4300 - val_loss: 0.4213 - val_mae: 0.4213\n",
"Epoch 32/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.4217 - mae: 0.4217 - val_loss: 0.4126 - val_mae: 0.4126\n",
"Epoch 33/500\n",
"600/600 [==============================] - 0s 28us/sample - loss: 0.4130 - mae: 0.4130 - val_loss: 0.4035 - val_mae: 0.4035\n",
"Epoch 34/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.4049 - mae: 0.4049 - val_loss: 0.3948 - val_mae: 0.3948\n",
"Epoch 35/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.3967 - mae: 0.3967 - val_loss: 0.3850 - val_mae: 0.3850\n",
"Epoch 36/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.3887 - mae: 0.3887 - val_loss: 0.3767 - val_mae: 0.3767\n",
"Epoch 37/500\n",
"600/600 [==============================] - 0s 44us/sample - loss: 0.3811 - mae: 0.3811 - val_loss: 0.3702 - val_mae: 0.3702\n",
"Epoch 38/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.3738 - mae: 0.3738 - val_loss: 0.3624 - val_mae: 0.3624\n",
"Epoch 39/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.3671 - mae: 0.3671 - val_loss: 0.3555 - val_mae: 0.3555\n",
"Epoch 40/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.3600 - mae: 0.3600 - val_loss: 0.3491 - val_mae: 0.3491\n",
"Epoch 41/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.3530 - mae: 0.3530 - val_loss: 0.3428 - val_mae: 0.3428\n",
"Epoch 42/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.3459 - mae: 0.3459 - val_loss: 0.3361 - val_mae: 0.3361\n",
"Epoch 43/500\n",
"600/600 [==============================] - 0s 44us/sample - loss: 0.3396 - mae: 0.3396 - val_loss: 0.3331 - val_mae: 0.3331\n",
"Epoch 44/500\n",
"600/600 [==============================] - 0s 43us/sample - loss: 0.3348 - mae: 0.3348 - val_loss: 0.3274 - val_mae: 0.3274\n",
"Epoch 45/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.3291 - mae: 0.3291 - val_loss: 0.3236 - val_mae: 0.3236\n",
"Epoch 46/500\n",
"600/600 [==============================] - 0s 43us/sample - loss: 0.3255 - mae: 0.3255 - val_loss: 0.3196 - val_mae: 0.3196\n",
"Epoch 47/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.3213 - mae: 0.3213 - val_loss: 0.3159 - val_mae: 0.3159\n",
"Epoch 48/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.3182 - mae: 0.3182 - val_loss: 0.3120 - val_mae: 0.3120\n",
"Epoch 49/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.3143 - mae: 0.3143 - val_loss: 0.3076 - val_mae: 0.3076\n",
"Epoch 50/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.3110 - mae: 0.3110 - val_loss: 0.3033 - val_mae: 0.3033\n",
"Epoch 51/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.3081 - mae: 0.3081 - val_loss: 0.3003 - val_mae: 0.3003\n",
"Epoch 52/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.3052 - mae: 0.3052 - val_loss: 0.2982 - val_mae: 0.2982\n",
"Epoch 53/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.3018 - mae: 0.3018 - val_loss: 0.2963 - val_mae: 0.2963\n",
"Epoch 54/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.2990 - mae: 0.2990 - val_loss: 0.2933 - val_mae: 0.2933\n",
"Epoch 55/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.2956 - mae: 0.2956 - val_loss: 0.2902 - val_mae: 0.2902\n",
"Epoch 56/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.2927 - mae: 0.2927 - val_loss: 0.2871 - val_mae: 0.2871\n",
"Epoch 57/500\n",
"600/600 [==============================] - 0s 46us/sample - loss: 0.2899 - mae: 0.2899 - val_loss: 0.2845 - val_mae: 0.2845\n",
"Epoch 58/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.2882 - mae: 0.2882 - val_loss: 0.2814 - val_mae: 0.2814\n",
"Epoch 59/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.2840 - mae: 0.2840 - val_loss: 0.2771 - val_mae: 0.2771\n",
"Epoch 60/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.2817 - mae: 0.2817 - val_loss: 0.2740 - val_mae: 0.2740\n",
"Epoch 61/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.2792 - mae: 0.2792 - val_loss: 0.2710 - val_mae: 0.2710\n",
"Epoch 62/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.2755 - mae: 0.2755 - val_loss: 0.2675 - val_mae: 0.2675\n",
"Epoch 63/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.2731 - mae: 0.2731 - val_loss: 0.2643 - val_mae: 0.2643\n",
"Epoch 64/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.2702 - mae: 0.2702 - val_loss: 0.2618 - val_mae: 0.2618\n",
"Epoch 65/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.2670 - mae: 0.2670 - val_loss: 0.2608 - val_mae: 0.2608\n",
"Epoch 66/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.2641 - mae: 0.2641 - val_loss: 0.2571 - val_mae: 0.2571\n",
"Epoch 67/500\n",
"600/600 [==============================] - 0s 43us/sample - loss: 0.2610 - mae: 0.2610 - val_loss: 0.2540 - val_mae: 0.2540\n",
"Epoch 68/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.2583 - mae: 0.2583 - val_loss: 0.2505 - val_mae: 0.2505\n",
"Epoch 69/500\n",
"600/600 [==============================] - 0s 49us/sample - loss: 0.2552 - mae: 0.2552 - val_loss: 0.2461 - val_mae: 0.2461\n",
"Epoch 70/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.2529 - mae: 0.2529 - val_loss: 0.2435 - val_mae: 0.2435\n",
"Epoch 71/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.2496 - mae: 0.2496 - val_loss: 0.2416 - val_mae: 0.2416\n",
"Epoch 72/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.2475 - mae: 0.2475 - val_loss: 0.2381 - val_mae: 0.2381\n",
"Epoch 73/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.2437 - mae: 0.2437 - val_loss: 0.2345 - val_mae: 0.2345\n",
"Epoch 74/500\n",
"600/600 [==============================] - 0s 28us/sample - loss: 0.2415 - mae: 0.2415 - val_loss: 0.2316 - val_mae: 0.2316\n",
"Epoch 75/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.2390 - mae: 0.2390 - val_loss: 0.2291 - val_mae: 0.2291\n",
"Epoch 76/500\n",
"600/600 [==============================] - 0s 49us/sample - loss: 0.2362 - mae: 0.2362 - val_loss: 0.2254 - val_mae: 0.2254\n",
"Epoch 77/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.2337 - mae: 0.2337 - val_loss: 0.2239 - val_mae: 0.2239\n",
"Epoch 78/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.2313 - mae: 0.2313 - val_loss: 0.2204 - val_mae: 0.2204\n",
"Epoch 79/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.2289 - mae: 0.2289 - val_loss: 0.2189 - val_mae: 0.2189\n",
"Epoch 80/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.2255 - mae: 0.2255 - val_loss: 0.2184 - val_mae: 0.2184\n",
"Epoch 81/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.2231 - mae: 0.2231 - val_loss: 0.2138 - val_mae: 0.2138\n",
"Epoch 82/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.2206 - mae: 0.2206 - val_loss: 0.2096 - val_mae: 0.2096\n",
"Epoch 83/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.2184 - mae: 0.2184 - val_loss: 0.2066 - val_mae: 0.2066\n",
"Epoch 84/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.2158 - mae: 0.2158 - val_loss: 0.2062 - val_mae: 0.2062\n",
"Epoch 85/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.2140 - mae: 0.2140 - val_loss: 0.2014 - val_mae: 0.2014\n",
"Epoch 86/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.2109 - mae: 0.2109 - val_loss: 0.1993 - val_mae: 0.1993\n",
"Epoch 87/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.2100 - mae: 0.2100 - val_loss: 0.1977 - val_mae: 0.1977\n",
"Epoch 88/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.2063 - mae: 0.2063 - val_loss: 0.1985 - val_mae: 0.1985\n",
"Epoch 89/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.2050 - mae: 0.2050 - val_loss: 0.1944 - val_mae: 0.1944\n",
"Epoch 90/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.2031 - mae: 0.2031 - val_loss: 0.1931 - val_mae: 0.1931\n",
"Epoch 91/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.2017 - mae: 0.2017 - val_loss: 0.1902 - val_mae: 0.1902\n",
"Epoch 92/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.1996 - mae: 0.1996 - val_loss: 0.1883 - val_mae: 0.1883\n",
"Epoch 93/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.1968 - mae: 0.1968 - val_loss: 0.1854 - val_mae: 0.1854\n",
"Epoch 94/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.1955 - mae: 0.1955 - val_loss: 0.1838 - val_mae: 0.1838\n",
"Epoch 95/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.1932 - mae: 0.1932 - val_loss: 0.1816 - val_mae: 0.1816\n",
"Epoch 96/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.1910 - mae: 0.1910 - val_loss: 0.1789 - val_mae: 0.1789\n",
"Epoch 97/500\n",
"600/600 [==============================] - 0s 47us/sample - loss: 0.1899 - mae: 0.1899 - val_loss: 0.1781 - val_mae: 0.1781\n",
"Epoch 98/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.1874 - mae: 0.1874 - val_loss: 0.1753 - val_mae: 0.1753\n",
"Epoch 99/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.1863 - mae: 0.1863 - val_loss: 0.1747 - val_mae: 0.1747\n",
"Epoch 100/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.1845 - mae: 0.1845 - val_loss: 0.1727 - val_mae: 0.1727\n",
"Epoch 101/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.1824 - mae: 0.1824 - val_loss: 0.1720 - val_mae: 0.1720\n",
"Epoch 102/500\n",
"600/600 [==============================] - 0s 44us/sample - loss: 0.1819 - mae: 0.1819 - val_loss: 0.1698 - val_mae: 0.1698\n",
"Epoch 103/500\n",
"600/600 [==============================] - 0s 43us/sample - loss: 0.1807 - mae: 0.1807 - val_loss: 0.1680 - val_mae: 0.1680\n",
"Epoch 104/500\n",
"600/600 [==============================] - 0s 49us/sample - loss: 0.1780 - mae: 0.1780 - val_loss: 0.1681 - val_mae: 0.1681\n",
"Epoch 105/500\n",
"600/600 [==============================] - 0s 47us/sample - loss: 0.1768 - mae: 0.1768 - val_loss: 0.1658 - val_mae: 0.1658\n",
"Epoch 106/500\n",
"600/600 [==============================] - 0s 47us/sample - loss: 0.1749 - mae: 0.1749 - val_loss: 0.1654 - val_mae: 0.1654\n",
"Epoch 107/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.1744 - mae: 0.1744 - val_loss: 0.1632 - val_mae: 0.1632\n",
"Epoch 108/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.1724 - mae: 0.1724 - val_loss: 0.1612 - val_mae: 0.1612\n",
"Epoch 109/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.1698 - mae: 0.1698 - val_loss: 0.1618 - val_mae: 0.1618\n",
"Epoch 110/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.1699 - mae: 0.1699 - val_loss: 0.1603 - val_mae: 0.1603\n",
"Epoch 111/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.1688 - mae: 0.1688 - val_loss: 0.1596 - val_mae: 0.1596\n",
"Epoch 112/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.1666 - mae: 0.1666 - val_loss: 0.1556 - val_mae: 0.1556\n",
"Epoch 113/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.1648 - mae: 0.1648 - val_loss: 0.1572 - val_mae: 0.1572\n",
"Epoch 114/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.1647 - mae: 0.1647 - val_loss: 0.1546 - val_mae: 0.1546\n",
"Epoch 115/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.1622 - mae: 0.1622 - val_loss: 0.1524 - val_mae: 0.1524\n",
"Epoch 116/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.1609 - mae: 0.1609 - val_loss: 0.1514 - val_mae: 0.1514\n",
"Epoch 117/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1595 - mae: 0.1595 - val_loss: 0.1521 - val_mae: 0.1521\n",
"Epoch 118/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.1579 - mae: 0.1579 - val_loss: 0.1515 - val_mae: 0.1515\n",
"Epoch 119/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.1577 - mae: 0.1577 - val_loss: 0.1490 - val_mae: 0.1490\n",
"Epoch 120/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.1555 - mae: 0.1555 - val_loss: 0.1495 - val_mae: 0.1495\n",
"Epoch 121/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.1547 - mae: 0.1547 - val_loss: 0.1451 - val_mae: 0.1451\n",
"Epoch 122/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.1528 - mae: 0.1528 - val_loss: 0.1453 - val_mae: 0.1453\n",
"Epoch 123/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.1517 - mae: 0.1517 - val_loss: 0.1446 - val_mae: 0.1446\n",
"Epoch 124/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1514 - mae: 0.1514 - val_loss: 0.1429 - val_mae: 0.1429\n",
"Epoch 125/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.1495 - mae: 0.1495 - val_loss: 0.1428 - val_mae: 0.1428\n",
"Epoch 126/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.1484 - mae: 0.1484 - val_loss: 0.1404 - val_mae: 0.1404\n",
"Epoch 127/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.1476 - mae: 0.1476 - val_loss: 0.1433 - val_mae: 0.1433\n",
"Epoch 128/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.1476 - mae: 0.1476 - val_loss: 0.1381 - val_mae: 0.1381\n",
"Epoch 129/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.1453 - mae: 0.1453 - val_loss: 0.1369 - val_mae: 0.1369\n",
"Epoch 130/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.1441 - mae: 0.1441 - val_loss: 0.1377 - val_mae: 0.1377\n",
"Epoch 131/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.1433 - mae: 0.1433 - val_loss: 0.1359 - val_mae: 0.1359\n",
"Epoch 132/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.1439 - mae: 0.1439 - val_loss: 0.1339 - val_mae: 0.1339\n",
"Epoch 133/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.1421 - mae: 0.1421 - val_loss: 0.1360 - val_mae: 0.1360\n",
"Epoch 134/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1406 - mae: 0.1406 - val_loss: 0.1347 - val_mae: 0.1347\n",
"Epoch 135/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.1403 - mae: 0.1403 - val_loss: 0.1341 - val_mae: 0.1341\n",
"Epoch 136/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.1391 - mae: 0.1391 - val_loss: 0.1318 - val_mae: 0.1318\n",
"Epoch 137/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1380 - mae: 0.1380 - val_loss: 0.1306 - val_mae: 0.1306\n",
"Epoch 138/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.1371 - mae: 0.1371 - val_loss: 0.1289 - val_mae: 0.1289\n",
"Epoch 139/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.1361 - mae: 0.1361 - val_loss: 0.1300 - val_mae: 0.1300\n",
"Epoch 140/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.1358 - mae: 0.1358 - val_loss: 0.1292 - val_mae: 0.1292\n",
"Epoch 141/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.1341 - mae: 0.1341 - val_loss: 0.1289 - val_mae: 0.1289\n",
"Epoch 142/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.1339 - mae: 0.1339 - val_loss: 0.1276 - val_mae: 0.1276\n",
"Epoch 143/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.1321 - mae: 0.1321 - val_loss: 0.1246 - val_mae: 0.1246\n",
"Epoch 144/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1324 - mae: 0.1324 - val_loss: 0.1248 - val_mae: 0.1248\n",
"Epoch 145/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1300 - mae: 0.1300 - val_loss: 0.1231 - val_mae: 0.1231\n",
"Epoch 146/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.1298 - mae: 0.1298 - val_loss: 0.1232 - val_mae: 0.1232\n",
"Epoch 147/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.1289 - mae: 0.1289 - val_loss: 0.1243 - val_mae: 0.1243\n",
"Epoch 148/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.1284 - mae: 0.1284 - val_loss: 0.1208 - val_mae: 0.1208\n",
"Epoch 149/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.1276 - mae: 0.1276 - val_loss: 0.1216 - val_mae: 0.1216\n",
"Epoch 150/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.1265 - mae: 0.1265 - val_loss: 0.1205 - val_mae: 0.1205\n",
"Epoch 151/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.1246 - mae: 0.1246 - val_loss: 0.1192 - val_mae: 0.1192\n",
"Epoch 152/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.1252 - mae: 0.1252 - val_loss: 0.1200 - val_mae: 0.1200\n",
"Epoch 153/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.1238 - mae: 0.1238 - val_loss: 0.1174 - val_mae: 0.1174\n",
"Epoch 154/500\n",
"600/600 [==============================] - 0s 44us/sample - loss: 0.1233 - mae: 0.1233 - val_loss: 0.1189 - val_mae: 0.1189\n",
"Epoch 155/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.1229 - mae: 0.1229 - val_loss: 0.1176 - val_mae: 0.1176\n",
"Epoch 156/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1213 - mae: 0.1213 - val_loss: 0.1179 - val_mae: 0.1179\n",
"Epoch 157/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.1216 - mae: 0.1216 - val_loss: 0.1192 - val_mae: 0.1192\n",
"Epoch 158/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1219 - mae: 0.1219 - val_loss: 0.1147 - val_mae: 0.1147\n",
"Epoch 159/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1190 - mae: 0.1190 - val_loss: 0.1137 - val_mae: 0.1137\n",
"Epoch 160/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.1183 - mae: 0.1183 - val_loss: 0.1132 - val_mae: 0.1132\n",
"Epoch 161/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.1176 - mae: 0.1176 - val_loss: 0.1118 - val_mae: 0.1118\n",
"Epoch 162/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.1176 - mae: 0.1176 - val_loss: 0.1140 - val_mae: 0.1140\n",
"Epoch 163/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.1160 - mae: 0.1160 - val_loss: 0.1137 - val_mae: 0.1137\n",
"Epoch 164/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.1162 - mae: 0.1162 - val_loss: 0.1111 - val_mae: 0.1111\n",
"Epoch 165/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1153 - mae: 0.1153 - val_loss: 0.1122 - val_mae: 0.1122\n",
"Epoch 166/500\n",
"600/600 [==============================] - 0s 51us/sample - loss: 0.1141 - mae: 0.1141 - val_loss: 0.1112 - val_mae: 0.1112\n",
"Epoch 167/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.1142 - mae: 0.1142 - val_loss: 0.1086 - val_mae: 0.1086\n",
"Epoch 168/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.1122 - mae: 0.1122 - val_loss: 0.1083 - val_mae: 0.1083\n",
"Epoch 169/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.1132 - mae: 0.1132 - val_loss: 0.1067 - val_mae: 0.1067\n",
"Epoch 170/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.1132 - mae: 0.1132 - val_loss: 0.1079 - val_mae: 0.1079\n",
"Epoch 171/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.1117 - mae: 0.1117 - val_loss: 0.1062 - val_mae: 0.1062\n",
"Epoch 172/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.1102 - mae: 0.1102 - val_loss: 0.1102 - val_mae: 0.1102\n",
"Epoch 173/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.1123 - mae: 0.1123 - val_loss: 0.1062 - val_mae: 0.1062\n",
"Epoch 174/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.1123 - mae: 0.1123 - val_loss: 0.1058 - val_mae: 0.1058\n",
"Epoch 175/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.1099 - mae: 0.1099 - val_loss: 0.1047 - val_mae: 0.1047\n",
"Epoch 176/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.1084 - mae: 0.1084 - val_loss: 0.1038 - val_mae: 0.1038\n",
"Epoch 177/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.1078 - mae: 0.1078 - val_loss: 0.1040 - val_mae: 0.1040\n",
"Epoch 178/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.1084 - mae: 0.1084 - val_loss: 0.1034 - val_mae: 0.1034\n",
"Epoch 179/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.1076 - mae: 0.1076 - val_loss: 0.1023 - val_mae: 0.1023\n",
"Epoch 180/500\n",
"600/600 [==============================] - 0s 46us/sample - loss: 0.1076 - mae: 0.1076 - val_loss: 0.1040 - val_mae: 0.1040\n",
"Epoch 181/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.1075 - mae: 0.1075 - val_loss: 0.1010 - val_mae: 0.1010\n",
"Epoch 182/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.1059 - mae: 0.1059 - val_loss: 0.1012 - val_mae: 0.1012\n",
"Epoch 183/500\n",
"600/600 [==============================] - 0s 46us/sample - loss: 0.1051 - mae: 0.1051 - val_loss: 0.1003 - val_mae: 0.1003\n",
"Epoch 184/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.1071 - mae: 0.1071 - val_loss: 0.0999 - val_mae: 0.0999\n",
"Epoch 185/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.1040 - mae: 0.1040 - val_loss: 0.0998 - val_mae: 0.0998\n",
"Epoch 186/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1061 - mae: 0.1061 - val_loss: 0.1002 - val_mae: 0.1002\n",
"Epoch 187/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.1039 - mae: 0.1039 - val_loss: 0.1015 - val_mae: 0.1015\n",
"Epoch 188/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.1033 - mae: 0.1033 - val_loss: 0.0980 - val_mae: 0.0980\n",
"Epoch 189/500\n",
"600/600 [==============================] - 0s 47us/sample - loss: 0.1031 - mae: 0.1031 - val_loss: 0.0990 - val_mae: 0.0990\n",
"Epoch 190/500\n",
"600/600 [==============================] - 0s 44us/sample - loss: 0.1027 - mae: 0.1027 - val_loss: 0.0972 - val_mae: 0.0972\n",
"Epoch 191/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.1012 - mae: 0.1012 - val_loss: 0.0988 - val_mae: 0.0988\n",
"Epoch 192/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1028 - mae: 0.1028 - val_loss: 0.0977 - val_mae: 0.0977\n",
"Epoch 193/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.1014 - mae: 0.1014 - val_loss: 0.0965 - val_mae: 0.0965\n",
"Epoch 194/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.1026 - mae: 0.1026 - val_loss: 0.0975 - val_mae: 0.0975\n",
"Epoch 195/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1013 - mae: 0.1013 - val_loss: 0.0951 - val_mae: 0.0951\n",
"Epoch 196/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.1010 - mae: 0.1010 - val_loss: 0.0952 - val_mae: 0.0952\n",
"Epoch 197/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.1009 - mae: 0.1009 - val_loss: 0.0956 - val_mae: 0.0956\n",
"Epoch 198/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.0999 - mae: 0.0999 - val_loss: 0.0975 - val_mae: 0.0975\n",
"Epoch 199/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.1004 - mae: 0.1004 - val_loss: 0.0943 - val_mae: 0.0943\n",
"Epoch 200/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.1000 - mae: 0.1000 - val_loss: 0.0976 - val_mae: 0.0976\n",
"Epoch 201/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0998 - mae: 0.0998 - val_loss: 0.0943 - val_mae: 0.0943\n",
"Epoch 202/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0979 - mae: 0.0979 - val_loss: 0.0966 - val_mae: 0.0966\n",
"Epoch 203/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.0994 - mae: 0.0994 - val_loss: 0.0943 - val_mae: 0.0943\n",
"Epoch 204/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0977 - mae: 0.0977 - val_loss: 0.0934 - val_mae: 0.0934\n",
"Epoch 205/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0972 - mae: 0.0972 - val_loss: 0.0940 - val_mae: 0.0940\n",
"Epoch 206/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0986 - mae: 0.0986 - val_loss: 0.0948 - val_mae: 0.0948\n",
"Epoch 207/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.0998 - mae: 0.0998 - val_loss: 0.0977 - val_mae: 0.0977\n",
"Epoch 208/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0971 - mae: 0.0971 - val_loss: 0.0936 - val_mae: 0.0936\n",
"Epoch 209/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0981 - mae: 0.0981 - val_loss: 0.0918 - val_mae: 0.0918\n",
"Epoch 210/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0965 - mae: 0.0965 - val_loss: 0.0961 - val_mae: 0.0961\n",
"Epoch 211/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.0950 - mae: 0.0950 - val_loss: 0.0917 - val_mae: 0.0917\n",
"Epoch 212/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0963 - mae: 0.0963 - val_loss: 0.0912 - val_mae: 0.0912\n",
"Epoch 213/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0966 - mae: 0.0966 - val_loss: 0.0911 - val_mae: 0.0911\n",
"Epoch 214/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.0969 - mae: 0.0969 - val_loss: 0.0912 - val_mae: 0.0912\n",
"Epoch 215/500\n",
"600/600 [==============================] - 0s 44us/sample - loss: 0.0965 - mae: 0.0965 - val_loss: 0.0932 - val_mae: 0.0932\n",
"Epoch 216/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0939 - mae: 0.0939 - val_loss: 0.0904 - val_mae: 0.0904\n",
"Epoch 217/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0950 - mae: 0.0950 - val_loss: 0.0924 - val_mae: 0.0924\n",
"Epoch 218/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0941 - mae: 0.0941 - val_loss: 0.0939 - val_mae: 0.0939\n",
"Epoch 219/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0966 - mae: 0.0966 - val_loss: 0.0930 - val_mae: 0.0930\n",
"Epoch 220/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0947 - mae: 0.0947 - val_loss: 0.0908 - val_mae: 0.0908\n",
"Epoch 221/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.0958 - mae: 0.0958 - val_loss: 0.0904 - val_mae: 0.0904\n",
"Epoch 222/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.0961 - mae: 0.0961 - val_loss: 0.0900 - val_mae: 0.0900\n",
"Epoch 223/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.0929 - mae: 0.0929 - val_loss: 0.0909 - val_mae: 0.0909\n",
"Epoch 224/500\n",
"600/600 [==============================] - 0s 46us/sample - loss: 0.0943 - mae: 0.0943 - val_loss: 0.0938 - val_mae: 0.0938\n",
"Epoch 225/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0965 - mae: 0.0965 - val_loss: 0.0907 - val_mae: 0.0907\n",
"Epoch 226/500\n",
"600/600 [==============================] - 0s 28us/sample - loss: 0.0946 - mae: 0.0946 - val_loss: 0.0912 - val_mae: 0.0912\n",
"Epoch 227/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0932 - mae: 0.0932 - val_loss: 0.0913 - val_mae: 0.0913\n",
"Epoch 228/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.0935 - mae: 0.0935 - val_loss: 0.0906 - val_mae: 0.0906\n",
"Epoch 229/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0933 - mae: 0.0933 - val_loss: 0.0892 - val_mae: 0.0892\n",
"Epoch 230/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0937 - mae: 0.0937 - val_loss: 0.0893 - val_mae: 0.0893\n",
"Epoch 231/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0930 - mae: 0.0930 - val_loss: 0.0892 - val_mae: 0.0892\n",
"Epoch 232/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0926 - mae: 0.0926 - val_loss: 0.0898 - val_mae: 0.0898\n",
"Epoch 233/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.0948 - mae: 0.0948 - val_loss: 0.0888 - val_mae: 0.0888\n",
"Epoch 234/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0938 - mae: 0.0938 - val_loss: 0.0890 - val_mae: 0.0890\n",
"Epoch 235/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0932 - mae: 0.0932 - val_loss: 0.0897 - val_mae: 0.0897\n",
"Epoch 236/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0934 - mae: 0.0934 - val_loss: 0.0897 - val_mae: 0.0897\n",
"Epoch 237/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0916 - mae: 0.0916 - val_loss: 0.0885 - val_mae: 0.0885\n",
"Epoch 238/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0928 - mae: 0.0928 - val_loss: 0.0897 - val_mae: 0.0897\n",
"Epoch 239/500\n",
"600/600 [==============================] - 0s 45us/sample - loss: 0.0921 - mae: 0.0921 - val_loss: 0.0909 - val_mae: 0.0909\n",
"Epoch 240/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0928 - mae: 0.0928 - val_loss: 0.0921 - val_mae: 0.0921\n",
"Epoch 241/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0930 - mae: 0.0930 - val_loss: 0.0894 - val_mae: 0.0894\n",
"Epoch 242/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0939 - mae: 0.0939 - val_loss: 0.0879 - val_mae: 0.0879\n",
"Epoch 243/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0907 - mae: 0.0907 - val_loss: 0.0908 - val_mae: 0.0908\n",
"Epoch 244/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0915 - mae: 0.0915 - val_loss: 0.0888 - val_mae: 0.0888\n",
"Epoch 245/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0916 - mae: 0.0916 - val_loss: 0.0875 - val_mae: 0.0875\n",
"Epoch 246/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0903 - mae: 0.0903 - val_loss: 0.0878 - val_mae: 0.0878\n",
"Epoch 247/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.0910 - mae: 0.0910 - val_loss: 0.0906 - val_mae: 0.0906\n",
"Epoch 248/500\n",
"600/600 [==============================] - 0s 27us/sample - loss: 0.0920 - mae: 0.0920 - val_loss: 0.0865 - val_mae: 0.0865\n",
"Epoch 249/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0906 - mae: 0.0906 - val_loss: 0.0885 - val_mae: 0.0885\n",
"Epoch 250/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0901 - mae: 0.0901 - val_loss: 0.0884 - val_mae: 0.0884\n",
"Epoch 251/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0920 - mae: 0.0920 - val_loss: 0.0872 - val_mae: 0.0872\n",
"Epoch 252/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0928 - mae: 0.0928 - val_loss: 0.0868 - val_mae: 0.0868\n",
"Epoch 253/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0917 - mae: 0.0917 - val_loss: 0.0872 - val_mae: 0.0872\n",
"Epoch 254/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0918 - mae: 0.0918 - val_loss: 0.0870 - val_mae: 0.0870\n",
"Epoch 255/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.0893 - mae: 0.0893 - val_loss: 0.0872 - val_mae: 0.0872\n",
"Epoch 256/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0917 - mae: 0.0917 - val_loss: 0.0892 - val_mae: 0.0892\n",
"Epoch 257/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0905 - mae: 0.0905 - val_loss: 0.0861 - val_mae: 0.0861\n",
"Epoch 258/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0932 - mae: 0.0932 - val_loss: 0.0858 - val_mae: 0.0858\n",
"Epoch 259/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0898 - mae: 0.0898 - val_loss: 0.0887 - val_mae: 0.0887\n",
"Epoch 260/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0889 - mae: 0.0889 - val_loss: 0.0885 - val_mae: 0.0885\n",
"Epoch 261/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0899 - mae: 0.0899 - val_loss: 0.0859 - val_mae: 0.0859\n",
"Epoch 262/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0926 - mae: 0.0926 - val_loss: 0.0887 - val_mae: 0.0887\n",
"Epoch 263/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0897 - mae: 0.0897 - val_loss: 0.0866 - val_mae: 0.0866\n",
"Epoch 264/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0900 - mae: 0.0900 - val_loss: 0.0865 - val_mae: 0.0865\n",
"Epoch 265/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0909 - mae: 0.0909 - val_loss: 0.0876 - val_mae: 0.0876\n",
"Epoch 266/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0888 - mae: 0.0888 - val_loss: 0.0893 - val_mae: 0.0893\n",
"Epoch 267/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0905 - mae: 0.0905 - val_loss: 0.0859 - val_mae: 0.0859\n",
"Epoch 268/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0895 - mae: 0.0895 - val_loss: 0.0871 - val_mae: 0.0871\n",
"Epoch 269/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0911 - mae: 0.0911 - val_loss: 0.0889 - val_mae: 0.0889\n",
"Epoch 270/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0894 - mae: 0.0894 - val_loss: 0.0864 - val_mae: 0.0864\n",
"Epoch 271/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0893 - mae: 0.0893 - val_loss: 0.0860 - val_mae: 0.0860\n",
"Epoch 272/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0908 - mae: 0.0908 - val_loss: 0.0890 - val_mae: 0.0890\n",
"Epoch 273/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0895 - mae: 0.0895 - val_loss: 0.0881 - val_mae: 0.0881\n",
"Epoch 274/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0884 - mae: 0.0884 - val_loss: 0.0850 - val_mae: 0.0850\n",
"Epoch 275/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0880 - mae: 0.0880 - val_loss: 0.0939 - val_mae: 0.0939\n",
"Epoch 276/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0925 - mae: 0.0925 - val_loss: 0.0849 - val_mae: 0.0849\n",
"Epoch 277/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0883 - mae: 0.0883 - val_loss: 0.0869 - val_mae: 0.0869\n",
"Epoch 278/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0881 - mae: 0.0881 - val_loss: 0.0851 - val_mae: 0.0851\n",
"Epoch 279/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.0884 - mae: 0.0884 - val_loss: 0.0845 - val_mae: 0.0845\n",
"Epoch 280/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0867 - mae: 0.0867 - val_loss: 0.0872 - val_mae: 0.0872\n",
"Epoch 281/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.0895 - mae: 0.0895 - val_loss: 0.0899 - val_mae: 0.0899\n",
"Epoch 282/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0906 - mae: 0.0906 - val_loss: 0.0857 - val_mae: 0.0857\n",
"Epoch 283/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0880 - mae: 0.0880 - val_loss: 0.0850 - val_mae: 0.0850\n",
"Epoch 284/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0885 - mae: 0.0885 - val_loss: 0.0871 - val_mae: 0.0871\n",
"Epoch 285/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0892 - mae: 0.0892 - val_loss: 0.0841 - val_mae: 0.0841\n",
"Epoch 286/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0881 - mae: 0.0881 - val_loss: 0.0859 - val_mae: 0.0859\n",
"Epoch 287/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0870 - mae: 0.0870 - val_loss: 0.0890 - val_mae: 0.0890\n",
"Epoch 288/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0871 - mae: 0.0871 - val_loss: 0.0893 - val_mae: 0.0893\n",
"Epoch 289/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0903 - mae: 0.0903 - val_loss: 0.0866 - val_mae: 0.0866\n",
"Epoch 290/500\n",
"600/600 [==============================] - 0s 43us/sample - loss: 0.0873 - mae: 0.0873 - val_loss: 0.0863 - val_mae: 0.0863\n",
"Epoch 291/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0882 - mae: 0.0882 - val_loss: 0.0859 - val_mae: 0.0859\n",
"Epoch 292/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0906 - mae: 0.0906 - val_loss: 0.0842 - val_mae: 0.0842\n",
"Epoch 293/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0874 - mae: 0.0874 - val_loss: 0.0874 - val_mae: 0.0874\n",
"Epoch 294/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0872 - mae: 0.0872 - val_loss: 0.0883 - val_mae: 0.0883\n",
"Epoch 295/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0886 - mae: 0.0886 - val_loss: 0.0883 - val_mae: 0.0883\n",
"Epoch 296/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0877 - mae: 0.0877 - val_loss: 0.0861 - val_mae: 0.0861\n",
"Epoch 297/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0875 - mae: 0.0875 - val_loss: 0.0849 - val_mae: 0.0849\n",
"Epoch 298/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0877 - mae: 0.0877 - val_loss: 0.0867 - val_mae: 0.0867\n",
"Epoch 299/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.0886 - mae: 0.0886 - val_loss: 0.0859 - val_mae: 0.0859\n",
"Epoch 300/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0874 - mae: 0.0874 - val_loss: 0.0837 - val_mae: 0.0837\n",
"Epoch 301/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0872 - mae: 0.0872 - val_loss: 0.0838 - val_mae: 0.0838\n",
"Epoch 302/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0855 - mae: 0.0855 - val_loss: 0.0847 - val_mae: 0.0847\n",
"Epoch 303/500\n",
"600/600 [==============================] - 0s 49us/sample - loss: 0.0889 - mae: 0.0889 - val_loss: 0.0852 - val_mae: 0.0852\n",
"Epoch 304/500\n",
"600/600 [==============================] - 0s 43us/sample - loss: 0.0875 - mae: 0.0875 - val_loss: 0.0859 - val_mae: 0.0859\n",
"Epoch 305/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0866 - mae: 0.0866 - val_loss: 0.0840 - val_mae: 0.0840\n",
"Epoch 306/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0868 - mae: 0.0868 - val_loss: 0.0832 - val_mae: 0.0832\n",
"Epoch 307/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0852 - mae: 0.0852 - val_loss: 0.0882 - val_mae: 0.0882\n",
"Epoch 308/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0883 - mae: 0.0883 - val_loss: 0.0876 - val_mae: 0.0876\n",
"Epoch 309/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0899 - mae: 0.0899 - val_loss: 0.0843 - val_mae: 0.0843\n",
"Epoch 310/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0860 - mae: 0.0860 - val_loss: 0.0831 - val_mae: 0.0831\n",
"Epoch 311/500\n",
"600/600 [==============================] - 0s 48us/sample - loss: 0.0855 - mae: 0.0855 - val_loss: 0.0856 - val_mae: 0.0856\n",
"Epoch 312/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0867 - mae: 0.0867 - val_loss: 0.0853 - val_mae: 0.0853\n",
"Epoch 313/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0899 - mae: 0.0899 - val_loss: 0.0887 - val_mae: 0.0887\n",
"Epoch 314/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.0869 - mae: 0.0869 - val_loss: 0.0847 - val_mae: 0.0847\n",
"Epoch 315/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0876 - mae: 0.0876 - val_loss: 0.0836 - val_mae: 0.0836\n",
"Epoch 316/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.0855 - mae: 0.0855 - val_loss: 0.0830 - val_mae: 0.0830\n",
"Epoch 317/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.0865 - mae: 0.0865 - val_loss: 0.0830 - val_mae: 0.0830\n",
"Epoch 318/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0871 - mae: 0.0871 - val_loss: 0.0840 - val_mae: 0.0840\n",
"Epoch 319/500\n",
"600/600 [==============================] - 0s 54us/sample - loss: 0.0887 - mae: 0.0887 - val_loss: 0.0832 - val_mae: 0.0832\n",
"Epoch 320/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0852 - mae: 0.0852 - val_loss: 0.0844 - val_mae: 0.0844\n",
"Epoch 321/500\n",
"600/600 [==============================] - 0s 46us/sample - loss: 0.0864 - mae: 0.0864 - val_loss: 0.0849 - val_mae: 0.0849\n",
"Epoch 322/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0863 - mae: 0.0863 - val_loss: 0.0928 - val_mae: 0.0928\n",
"Epoch 323/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0896 - mae: 0.0896 - val_loss: 0.0833 - val_mae: 0.0833\n",
"Epoch 324/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0856 - mae: 0.0856 - val_loss: 0.0838 - val_mae: 0.0838\n",
"Epoch 325/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0850 - mae: 0.0850 - val_loss: 0.0836 - val_mae: 0.0836\n",
"Epoch 326/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.0852 - mae: 0.0852 - val_loss: 0.0859 - val_mae: 0.0859\n",
"Epoch 327/500\n",
"600/600 [==============================] - 0s 44us/sample - loss: 0.0862 - mae: 0.0862 - val_loss: 0.0847 - val_mae: 0.0847\n",
"Epoch 328/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0859 - mae: 0.0859 - val_loss: 0.0837 - val_mae: 0.0837\n",
"Epoch 329/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.0860 - mae: 0.0860 - val_loss: 0.0843 - val_mae: 0.0843\n",
"Epoch 330/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0856 - mae: 0.0856 - val_loss: 0.0861 - val_mae: 0.0861\n",
"Epoch 331/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0861 - mae: 0.0861 - val_loss: 0.0843 - val_mae: 0.0843\n",
"Epoch 332/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0852 - mae: 0.0852 - val_loss: 0.0848 - val_mae: 0.0848\n",
"Epoch 333/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0857 - mae: 0.0857 - val_loss: 0.0841 - val_mae: 0.0841\n",
"Epoch 334/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0878 - mae: 0.0878 - val_loss: 0.0879 - val_mae: 0.0879\n",
"Epoch 335/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0877 - mae: 0.0877 - val_loss: 0.0842 - val_mae: 0.0842\n",
"Epoch 336/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0861 - mae: 0.0861 - val_loss: 0.0831 - val_mae: 0.0831\n",
"Epoch 337/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0849 - mae: 0.0849 - val_loss: 0.0851 - val_mae: 0.0851\n",
"Epoch 338/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0855 - mae: 0.0855 - val_loss: 0.0830 - val_mae: 0.0830\n",
"Epoch 339/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.0849 - mae: 0.0849 - val_loss: 0.0847 - val_mae: 0.0847\n",
"Epoch 340/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0865 - mae: 0.0865 - val_loss: 0.0843 - val_mae: 0.0843\n",
"Epoch 341/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0874 - mae: 0.0874 - val_loss: 0.0840 - val_mae: 0.0840\n",
"Epoch 342/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.0871 - mae: 0.0871 - val_loss: 0.0839 - val_mae: 0.0839\n",
"Epoch 343/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0840 - mae: 0.0840 - val_loss: 0.0845 - val_mae: 0.0845\n",
"Epoch 344/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0859 - mae: 0.0859 - val_loss: 0.0843 - val_mae: 0.0843\n",
"Epoch 345/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0848 - mae: 0.0848 - val_loss: 0.0879 - val_mae: 0.0879\n",
"Epoch 346/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0861 - mae: 0.0861 - val_loss: 0.0832 - val_mae: 0.0832\n",
"Epoch 347/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0856 - mae: 0.0856 - val_loss: 0.0851 - val_mae: 0.0851\n",
"Epoch 348/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.0842 - mae: 0.0842 - val_loss: 0.0834 - val_mae: 0.0834\n",
"Epoch 349/500\n",
"600/600 [==============================] - 0s 44us/sample - loss: 0.0832 - mae: 0.0832 - val_loss: 0.0875 - val_mae: 0.0875\n",
"Epoch 350/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0868 - mae: 0.0868 - val_loss: 0.0826 - val_mae: 0.0826\n",
"Epoch 351/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0865 - mae: 0.0865 - val_loss: 0.0851 - val_mae: 0.0851\n",
"Epoch 352/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0858 - mae: 0.0858 - val_loss: 0.0823 - val_mae: 0.0823\n",
"Epoch 353/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0848 - mae: 0.0848 - val_loss: 0.0847 - val_mae: 0.0847\n",
"Epoch 354/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0861 - mae: 0.0861 - val_loss: 0.0853 - val_mae: 0.0853\n",
"Epoch 355/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0849 - mae: 0.0849 - val_loss: 0.0836 - val_mae: 0.0836\n",
"Epoch 356/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0865 - mae: 0.0865 - val_loss: 0.0843 - val_mae: 0.0843\n",
"Epoch 357/500\n",
"600/600 [==============================] - 0s 43us/sample - loss: 0.0850 - mae: 0.0850 - val_loss: 0.0839 - val_mae: 0.0839\n",
"Epoch 358/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0864 - mae: 0.0864 - val_loss: 0.0861 - val_mae: 0.0861\n",
"Epoch 359/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0827 - mae: 0.0827 - val_loss: 0.0835 - val_mae: 0.0835\n",
"Epoch 360/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.0871 - mae: 0.0871 - val_loss: 0.0828 - val_mae: 0.0828\n",
"Epoch 361/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0846 - mae: 0.0846 - val_loss: 0.0865 - val_mae: 0.0865\n",
"Epoch 362/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0835 - mae: 0.0835 - val_loss: 0.0859 - val_mae: 0.0859\n",
"Epoch 363/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.0847 - mae: 0.0847 - val_loss: 0.0816 - val_mae: 0.0816\n",
"Epoch 364/500\n",
"600/600 [==============================] - 0s 28us/sample - loss: 0.0856 - mae: 0.0856 - val_loss: 0.0826 - val_mae: 0.0826\n",
"Epoch 365/500\n",
"600/600 [==============================] - 0s 27us/sample - loss: 0.0846 - mae: 0.0846 - val_loss: 0.0855 - val_mae: 0.0855\n",
"Epoch 366/500\n",
"600/600 [==============================] - 0s 42us/sample - loss: 0.0828 - mae: 0.0828 - val_loss: 0.0834 - val_mae: 0.0834\n",
"Epoch 367/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0856 - mae: 0.0856 - val_loss: 0.0865 - val_mae: 0.0865\n",
"Epoch 368/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0853 - mae: 0.0853 - val_loss: 0.0827 - val_mae: 0.0827\n",
"Epoch 369/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0830 - mae: 0.0830 - val_loss: 0.0825 - val_mae: 0.0825\n",
"Epoch 370/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0851 - mae: 0.0851 - val_loss: 0.0869 - val_mae: 0.0869\n",
"Epoch 371/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0850 - mae: 0.0850 - val_loss: 0.0831 - val_mae: 0.0831\n",
"Epoch 372/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0840 - mae: 0.0840 - val_loss: 0.0836 - val_mae: 0.0836\n",
"Epoch 373/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0828 - mae: 0.0828 - val_loss: 0.0816 - val_mae: 0.0816\n",
"Epoch 374/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0871 - mae: 0.0871 - val_loss: 0.0839 - val_mae: 0.0839\n",
"Epoch 375/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0830 - mae: 0.0830 - val_loss: 0.0830 - val_mae: 0.0830\n",
"Epoch 376/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0855 - mae: 0.0855 - val_loss: 0.0833 - val_mae: 0.0833\n",
"Epoch 377/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0849 - mae: 0.0849 - val_loss: 0.0880 - val_mae: 0.0880\n",
"Epoch 378/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0846 - mae: 0.0846 - val_loss: 0.0887 - val_mae: 0.0887\n",
"Epoch 379/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0858 - mae: 0.0858 - val_loss: 0.0836 - val_mae: 0.0836\n",
"Epoch 380/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0834 - mae: 0.0834 - val_loss: 0.0835 - val_mae: 0.0835\n",
"Epoch 381/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0864 - mae: 0.0864 - val_loss: 0.0851 - val_mae: 0.0851\n",
"Epoch 382/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0847 - mae: 0.0847 - val_loss: 0.0875 - val_mae: 0.0875\n",
"Epoch 383/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0847 - mae: 0.0847 - val_loss: 0.0864 - val_mae: 0.0864\n",
"Epoch 384/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0855 - mae: 0.0855 - val_loss: 0.0819 - val_mae: 0.0819\n",
"Epoch 385/500\n",
"600/600 [==============================] - 0s 28us/sample - loss: 0.0846 - mae: 0.0846 - val_loss: 0.0868 - val_mae: 0.0868\n",
"Epoch 386/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0844 - mae: 0.0844 - val_loss: 0.0863 - val_mae: 0.0863\n",
"Epoch 387/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0868 - mae: 0.0868 - val_loss: 0.0831 - val_mae: 0.0831\n",
"Epoch 388/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0821 - mae: 0.0821 - val_loss: 0.0828 - val_mae: 0.0828\n",
"Epoch 389/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0844 - mae: 0.0844 - val_loss: 0.0817 - val_mae: 0.0817\n",
"Epoch 390/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0849 - mae: 0.0849 - val_loss: 0.0819 - val_mae: 0.0819\n",
"Epoch 391/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0838 - mae: 0.0838 - val_loss: 0.0868 - val_mae: 0.0868\n",
"Epoch 392/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.0842 - mae: 0.0842 - val_loss: 0.0844 - val_mae: 0.0844\n",
"Epoch 393/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0859 - mae: 0.0859 - val_loss: 0.0887 - val_mae: 0.0887\n",
"Epoch 394/500\n",
"600/600 [==============================] - 0s 44us/sample - loss: 0.0873 - mae: 0.0873 - val_loss: 0.0830 - val_mae: 0.0830\n",
"Epoch 395/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0818 - mae: 0.0818 - val_loss: 0.0814 - val_mae: 0.0814\n",
"Epoch 396/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0831 - mae: 0.0831 - val_loss: 0.0837 - val_mae: 0.0837\n",
"Epoch 397/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0837 - mae: 0.0837 - val_loss: 0.0853 - val_mae: 0.0853\n",
"Epoch 398/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0837 - mae: 0.0837 - val_loss: 0.0896 - val_mae: 0.0896\n",
"Epoch 399/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0849 - mae: 0.0849 - val_loss: 0.0815 - val_mae: 0.0815\n",
"Epoch 400/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0847 - mae: 0.0847 - val_loss: 0.0823 - val_mae: 0.0823\n",
"Epoch 401/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0830 - mae: 0.0830 - val_loss: 0.0838 - val_mae: 0.0838\n",
"Epoch 402/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0836 - mae: 0.0836 - val_loss: 0.0832 - val_mae: 0.0832\n",
"Epoch 403/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0841 - mae: 0.0841 - val_loss: 0.0821 - val_mae: 0.0821\n",
"Epoch 404/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0842 - mae: 0.0842 - val_loss: 0.0848 - val_mae: 0.0848\n",
"Epoch 405/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0852 - mae: 0.0852 - val_loss: 0.0824 - val_mae: 0.0824\n",
"Epoch 406/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0824 - mae: 0.0824 - val_loss: 0.0827 - val_mae: 0.0827\n",
"Epoch 407/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0839 - mae: 0.0839 - val_loss: 0.0825 - val_mae: 0.0825\n",
"Epoch 408/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0837 - mae: 0.0837 - val_loss: 0.0847 - val_mae: 0.0847\n",
"Epoch 409/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0854 - mae: 0.0854 - val_loss: 0.0846 - val_mae: 0.0846\n",
"Epoch 410/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0827 - mae: 0.0827 - val_loss: 0.0825 - val_mae: 0.0825\n",
"Epoch 411/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0839 - mae: 0.0839 - val_loss: 0.0826 - val_mae: 0.0826\n",
"Epoch 412/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0828 - mae: 0.0828 - val_loss: 0.0837 - val_mae: 0.0837\n",
"Epoch 413/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0856 - mae: 0.0856 - val_loss: 0.0833 - val_mae: 0.0833\n",
"Epoch 414/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0820 - mae: 0.0820 - val_loss: 0.0816 - val_mae: 0.0816\n",
"Epoch 415/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0842 - mae: 0.0842 - val_loss: 0.0832 - val_mae: 0.0832\n",
"Epoch 416/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0851 - mae: 0.0851 - val_loss: 0.0843 - val_mae: 0.0843\n",
"Epoch 417/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.0827 - mae: 0.0827 - val_loss: 0.0818 - val_mae: 0.0818\n",
"Epoch 418/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.0857 - mae: 0.0857 - val_loss: 0.0844 - val_mae: 0.0844\n",
"Epoch 419/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0814 - mae: 0.0814 - val_loss: 0.0835 - val_mae: 0.0835\n",
"Epoch 420/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.0841 - mae: 0.0841 - val_loss: 0.0836 - val_mae: 0.0836\n",
"Epoch 421/500\n",
"600/600 [==============================] - 0s 47us/sample - loss: 0.0841 - mae: 0.0841 - val_loss: 0.0812 - val_mae: 0.0812\n",
"Epoch 422/500\n",
"600/600 [==============================] - 0s 45us/sample - loss: 0.0839 - mae: 0.0839 - val_loss: 0.0852 - val_mae: 0.0852\n",
"Epoch 423/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0851 - mae: 0.0851 - val_loss: 0.0838 - val_mae: 0.0838\n",
"Epoch 424/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0826 - mae: 0.0826 - val_loss: 0.0813 - val_mae: 0.0813\n",
"Epoch 425/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0842 - mae: 0.0842 - val_loss: 0.0823 - val_mae: 0.0823\n",
"Epoch 426/500\n",
"600/600 [==============================] - 0s 43us/sample - loss: 0.0844 - mae: 0.0844 - val_loss: 0.0820 - val_mae: 0.0820\n",
"Epoch 427/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0817 - mae: 0.0817 - val_loss: 0.0835 - val_mae: 0.0835\n",
"Epoch 428/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0822 - mae: 0.0822 - val_loss: 0.0816 - val_mae: 0.0816\n",
"Epoch 429/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.0842 - mae: 0.0842 - val_loss: 0.0860 - val_mae: 0.0860\n",
"Epoch 430/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0863 - mae: 0.0863 - val_loss: 0.0837 - val_mae: 0.0837\n",
"Epoch 431/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0828 - mae: 0.0828 - val_loss: 0.0833 - val_mae: 0.0833\n",
"Epoch 432/500\n",
"600/600 [==============================] - 0s 29us/sample - loss: 0.0825 - mae: 0.0825 - val_loss: 0.0820 - val_mae: 0.0820\n",
"Epoch 433/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0843 - mae: 0.0843 - val_loss: 0.0830 - val_mae: 0.0830\n",
"Epoch 434/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0847 - mae: 0.0847 - val_loss: 0.0848 - val_mae: 0.0848\n",
"Epoch 435/500\n",
"600/600 [==============================] - 0s 44us/sample - loss: 0.0830 - mae: 0.0830 - val_loss: 0.0869 - val_mae: 0.0869\n",
"Epoch 436/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0821 - mae: 0.0821 - val_loss: 0.0828 - val_mae: 0.0828\n",
"Epoch 437/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0839 - mae: 0.0839 - val_loss: 0.0830 - val_mae: 0.0830\n",
"Epoch 438/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.0825 - mae: 0.0825 - val_loss: 0.0831 - val_mae: 0.0831\n",
"Epoch 439/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0836 - mae: 0.0836 - val_loss: 0.0812 - val_mae: 0.0812\n",
"Epoch 440/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0848 - mae: 0.0848 - val_loss: 0.0839 - val_mae: 0.0839\n",
"Epoch 441/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0835 - mae: 0.0835 - val_loss: 0.0843 - val_mae: 0.0843\n",
"Epoch 442/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0821 - mae: 0.0821 - val_loss: 0.0813 - val_mae: 0.0813\n",
"Epoch 443/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0845 - mae: 0.0845 - val_loss: 0.0850 - val_mae: 0.0850\n",
"Epoch 444/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0836 - mae: 0.0836 - val_loss: 0.0814 - val_mae: 0.0814\n",
"Epoch 445/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0841 - mae: 0.0841 - val_loss: 0.0817 - val_mae: 0.0817\n",
"Epoch 446/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0808 - mae: 0.0808 - val_loss: 0.0812 - val_mae: 0.0812\n",
"Epoch 447/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0839 - mae: 0.0839 - val_loss: 0.0811 - val_mae: 0.0811\n",
"Epoch 448/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0819 - mae: 0.0819 - val_loss: 0.0851 - val_mae: 0.0851\n",
"Epoch 449/500\n",
"600/600 [==============================] - 0s 45us/sample - loss: 0.0856 - mae: 0.0856 - val_loss: 0.0818 - val_mae: 0.0818\n",
"Epoch 450/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0821 - mae: 0.0821 - val_loss: 0.0800 - val_mae: 0.0800\n",
"Epoch 451/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0824 - mae: 0.0824 - val_loss: 0.0810 - val_mae: 0.0810\n",
"Epoch 452/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.0835 - mae: 0.0835 - val_loss: 0.0849 - val_mae: 0.0849\n",
"Epoch 453/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0822 - mae: 0.0822 - val_loss: 0.0817 - val_mae: 0.0817\n",
"Epoch 454/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.0847 - mae: 0.0847 - val_loss: 0.0820 - val_mae: 0.0820\n",
"Epoch 455/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0836 - mae: 0.0836 - val_loss: 0.0819 - val_mae: 0.0819\n",
"Epoch 456/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0834 - mae: 0.0834 - val_loss: 0.0830 - val_mae: 0.0830\n",
"Epoch 457/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0835 - mae: 0.0835 - val_loss: 0.0873 - val_mae: 0.0873\n",
"Epoch 458/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0834 - mae: 0.0834 - val_loss: 0.0829 - val_mae: 0.0829\n",
"Epoch 459/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0848 - mae: 0.0848 - val_loss: 0.0814 - val_mae: 0.0814\n",
"Epoch 460/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0839 - mae: 0.0839 - val_loss: 0.0841 - val_mae: 0.0841\n",
"Epoch 461/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0847 - mae: 0.0847 - val_loss: 0.0810 - val_mae: 0.0810\n",
"Epoch 462/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0814 - mae: 0.0814 - val_loss: 0.0840 - val_mae: 0.0840\n",
"Epoch 463/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0824 - mae: 0.0824 - val_loss: 0.0806 - val_mae: 0.0806\n",
"Epoch 464/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0837 - mae: 0.0837 - val_loss: 0.0883 - val_mae: 0.0883\n",
"Epoch 465/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0839 - mae: 0.0839 - val_loss: 0.0819 - val_mae: 0.0819\n",
"Epoch 466/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0825 - mae: 0.0825 - val_loss: 0.0843 - val_mae: 0.0843\n",
"Epoch 467/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0836 - mae: 0.0836 - val_loss: 0.0820 - val_mae: 0.0820\n",
"Epoch 468/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0813 - mae: 0.0813 - val_loss: 0.0801 - val_mae: 0.0801\n",
"Epoch 469/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0864 - mae: 0.0864 - val_loss: 0.0902 - val_mae: 0.0902\n",
"Epoch 470/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0838 - mae: 0.0838 - val_loss: 0.0802 - val_mae: 0.0802\n",
"Epoch 471/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0821 - mae: 0.0821 - val_loss: 0.0817 - val_mae: 0.0817\n",
"Epoch 472/500\n",
"600/600 [==============================] - 0s 40us/sample - loss: 0.0845 - mae: 0.0845 - val_loss: 0.0822 - val_mae: 0.0822\n",
"Epoch 473/500\n",
"600/600 [==============================] - 0s 39us/sample - loss: 0.0832 - mae: 0.0832 - val_loss: 0.0831 - val_mae: 0.0831\n",
"Epoch 474/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0862 - mae: 0.0862 - val_loss: 0.0829 - val_mae: 0.0829\n",
"Epoch 475/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0829 - mae: 0.0829 - val_loss: 0.0798 - val_mae: 0.0798\n",
"Epoch 476/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0835 - mae: 0.0835 - val_loss: 0.0804 - val_mae: 0.0804\n",
"Epoch 477/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0864 - mae: 0.0864 - val_loss: 0.0816 - val_mae: 0.0816\n",
"Epoch 478/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0821 - mae: 0.0821 - val_loss: 0.0834 - val_mae: 0.0834\n",
"Epoch 479/500\n",
"600/600 [==============================] - 0s 48us/sample - loss: 0.0825 - mae: 0.0825 - val_loss: 0.0815 - val_mae: 0.0815\n",
"Epoch 480/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0835 - mae: 0.0835 - val_loss: 0.0804 - val_mae: 0.0804\n",
"Epoch 481/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0847 - mae: 0.0847 - val_loss: 0.0819 - val_mae: 0.0819\n",
"Epoch 482/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0841 - mae: 0.0841 - val_loss: 0.0858 - val_mae: 0.0858\n",
"Epoch 483/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0817 - mae: 0.0817 - val_loss: 0.0811 - val_mae: 0.0811\n",
"Epoch 484/500\n",
"600/600 [==============================] - 0s 32us/sample - loss: 0.0821 - mae: 0.0821 - val_loss: 0.0827 - val_mae: 0.0827\n",
"Epoch 485/500\n",
"600/600 [==============================] - 0s 51us/sample - loss: 0.0849 - mae: 0.0849 - val_loss: 0.0819 - val_mae: 0.0819\n",
"Epoch 486/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0831 - mae: 0.0831 - val_loss: 0.0842 - val_mae: 0.0842\n",
"Epoch 487/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.0835 - mae: 0.0835 - val_loss: 0.0841 - val_mae: 0.0841\n",
"Epoch 488/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0840 - mae: 0.0840 - val_loss: 0.0801 - val_mae: 0.0801\n",
"Epoch 489/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0813 - mae: 0.0813 - val_loss: 0.0928 - val_mae: 0.0928\n",
"Epoch 490/500\n",
"600/600 [==============================] - 0s 33us/sample - loss: 0.0847 - mae: 0.0847 - val_loss: 0.0806 - val_mae: 0.0806\n",
"Epoch 491/500\n",
"600/600 [==============================] - 0s 34us/sample - loss: 0.0819 - mae: 0.0819 - val_loss: 0.0840 - val_mae: 0.0840\n",
"Epoch 492/500\n",
"600/600 [==============================] - 0s 36us/sample - loss: 0.0825 - mae: 0.0825 - val_loss: 0.0860 - val_mae: 0.0860\n",
"Epoch 493/500\n",
"600/600 [==============================] - 0s 30us/sample - loss: 0.0840 - mae: 0.0840 - val_loss: 0.0830 - val_mae: 0.0830\n",
"Epoch 494/500\n",
"600/600 [==============================] - 0s 46us/sample - loss: 0.0834 - mae: 0.0834 - val_loss: 0.0834 - val_mae: 0.0834\n",
"Epoch 495/500\n",
"600/600 [==============================] - 0s 37us/sample - loss: 0.0841 - mae: 0.0841 - val_loss: 0.0811 - val_mae: 0.0811\n",
"Epoch 496/500\n",
"600/600 [==============================] - 0s 35us/sample - loss: 0.0835 - mae: 0.0835 - val_loss: 0.0815 - val_mae: 0.0815\n",
"Epoch 497/500\n",
"600/600 [==============================] - 0s 31us/sample - loss: 0.0830 - mae: 0.0830 - val_loss: 0.0837 - val_mae: 0.0837\n",
"Epoch 498/500\n",
"600/600 [==============================] - 0s 47us/sample - loss: 0.0816 - mae: 0.0816 - val_loss: 0.0849 - val_mae: 0.0849\n",
"Epoch 499/500\n",
"600/600 [==============================] - 0s 38us/sample - loss: 0.0826 - mae: 0.0826 - val_loss: 0.0823 - val_mae: 0.0823\n",
"Epoch 500/500\n",
"600/600 [==============================] - 0s 41us/sample - loss: 0.0833 - mae: 0.0833 - val_loss: 0.0826 - val_mae: 0.0826\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "uxQvW2qWhxvP",
"colab_type": "code",
"outputId": "431b6315-bfd0-47b3-b43e-74818c0ac470",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 281
}
},
"source": [
"# Plot the training history\n",
"loss = history.history['loss']\n",
"val_loss = history.history['val_loss']\n",
"\n",
"epochs = range(1, len(loss) + 1)\n",
"\n",
"plt.plot(epochs, loss, 'bo', label='Training loss')\n",
"plt.plot(epochs, val_loss, 'b', label='Validation loss')\n",
"plt.title('Training and validation loss')\n",
"plt.legend()\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "4YIvoLMpiKke",
"colab_type": "code",
"outputId": "49091262-d13e-4237-b89f-1265a865b920",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 281
}
},
"source": [
"# Plot predictions against actual values\n",
"predictions = model.predict(x_test)\n",
"\n",
"plt.clf()\n",
"plt.title(\"Comparison of predictions to actual values\")\n",
"plt.plot(x_test, y_test, 'b.', label='Actual')\n",
"plt.plot(x_test, predictions, 'r.', label='Prediction')\n",
"plt.legend()\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "DvyeXXngioVI",
"colab_type": "code",
"outputId": "5a40a02f-508c-4d0e-f27b-bb373301b634",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"# Convert Keras model to a tflite model\n",
"converter = tf.lite.TFLiteConverter.from_keras_model(model)\n",
"converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]\n",
"tflite_model = converter.convert()\n",
"\n",
"open(tflite_model_name + '.tflite', 'wb').write(tflite_model)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2680"
]
},
"metadata": {
"tags": []
},
"execution_count": 14
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "e1cX-L0wi7f8",
"colab_type": "code",
"colab": {}
},
"source": [
"# Function: Convert some hex value into an array for C programming\n",
"def hex_to_c_array(hex_data, var_name):\n",
"\n",
" c_str = ''\n",
"\n",
" # Create header guard\n",
" c_str += '#ifndef ' + var_name.upper() + '_H\\n'\n",
" c_str += '#define ' + var_name.upper() + '_H\\n\\n'\n",
"\n",
" # Add array length at top of file\n",
" c_str += '\\nunsigned int ' + var_name + '_len = ' + str(len(hex_data)) + ';\\n'\n",
"\n",
" # Declare C variable\n",
" c_str += 'unsigned char ' + var_name + '[] = {'\n",
" hex_array = []\n",
" for i, val in enumerate(hex_data) :\n",
"\n",
" # Construct string from hex\n",
" hex_str = format(val, '#04x')\n",
"\n",
" # Add formatting so each line stays within 80 characters\n",
" if (i + 1) < len(hex_data):\n",
" hex_str += ','\n",
" if (i + 1) % 12 == 0:\n",
" hex_str += '\\n '\n",
" hex_array.append(hex_str)\n",
"\n",
" # Add closing brace\n",
" c_str += '\\n ' + format(' '.join(hex_array)) + '\\n};\\n\\n'\n",
"\n",
" # Close out header guard\n",
" c_str += '#endif //' + var_name.upper() + '_H'\n",
"\n",
" return c_str"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Ocv3Ax29ZSPu",
"colab_type": "code",
"colab": {}
},
"source": [
"# Write TFLite model to a C source (or header) file\n",
"with open(c_model_name + '.h', 'w') as file:\n",
" file.write(hex_to_c_array(tflite_model, c_model_name))"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "JQvQTB12ZaUJ",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
}
]
}
@bonadio
Copy link

bonadio commented Jun 8, 2020

For the new tensorflow in colab 2.2 you need to increase the number of samples to get a good result, I tried with 5000 and worked

@ShawnHymel
Copy link
Author

For the new tensorflow in colab 2.2 you need to increase the number of samples to get a good result, I tried with 5000 and worked

@bonadio good to know, thank you! I thought it was a limitation with the model itself. I'll up the number of samples.

@ron333
Copy link

ron333 commented Aug 13, 2020

Using TensorFlow 2.3.0 and Keras 2.4.0
So, I changed the code near the end as follows:
# Convert Keras model to a tflite model
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

with tf.io.gfile.GFile('model.tflite', 'wb') as f:
f.write(tflite_model)

@ShawnHymel
Copy link
Author

I found that shuffling the data before splitting it into the different sets improved the performance. Makes sense cause otherwise you're limiting your different sets to sequential points of a small section of the sinusoid, as opposed to points across the entire sinusoid.

from sklearn.utils import shuffle
x_values, y_values = shuffle(x_values, y_values)

@Martin-Biomed Good find, thanks! I thought I did provide random data with np.random.uniform(). You found that shuffling it a second time helped training improved accuracy?

@Martin-Biomed
Copy link

My bad Shawn, I tried altering several parameters, including the shuffling. I assumed that the shuffling did the trick, but I think it was most likely the increased learning rate value I used. The one I originally used from the tutorial hit a plateau of around 0.2 in the loss. With a higher learning rate, I could get past the local minima (which was at around 0.2).

I better delete the previous comment because it might confuse people.

@ShawnHymel
Copy link
Author

@Martin-Biomed No worries! Thanks for letting me know :)

@Martin-Biomed
Copy link

Hi Shawn,

Out of curiosity, have you come across any tutorial that teaches people how to use multiple layers of neurons in TinyML, or even more advanced ML methods such as LSTM in TinyML?

Any help would be great, cause I haven't had a lot of luck with finding this information for the Arduino, and even in Micropython, TF Lite LSTM information is rare.

@ShawnHymel
Copy link
Author

@Martin-Biomed Using multiple layers of supported operations in TinyML with TensorFlow should be trivial if you know how to make a 1 layer network. The example above demonstrates a DNN with 3 layers (16 fully-connected nodes, 16 fully-connected nodes, 1 fully-connected node as output).

I have not seen any TinyML frameworks that allow for RNNs yet (including LSTM). I have to imagine that is on the roadmap, so I hope to see RNN support in the near future.

@michel4731
Copy link

hi. my model is vary big(15.23Mb) and Compression on cube is not good(after the Compression model size:14.81Mb)
please help me for create project NN on the STM32 or ESP32

@suman346
Copy link

I am getting some error by the converter
I can't fix it it's showing it can't concate the str and byte

@ShawnHymel
Copy link
Author

@michel4731 That sounds way too big for the model. I can't imagine a Dense NN with 321 parameters is more than a few kB.

@ShawnHymel
Copy link
Author

@suman346 Where are you seeing this error? Please keep in mind that this example is over 2 years old. Newer versions of TF Lite have changed a lot of things, and I have not tested them recently to see if this example is still relevant.

@ericobropinto
Copy link

I am getting some error by the converter I can't fix it it's showing it can't concate the str and byte

I am also getting a error here.

hex_str = format(val, '04x')

ValueError: Unknown format code 'x' for object of type 'str'

were you able to solve?

@suman346
Copy link

suman346 commented Oct 20, 2021 via email

@ericobropinto
Copy link

Sorry for flooding but something strange is happening here:
I am on windows using the spyder and python 3.8.3 - everytime I try to make the conversion I get this error " hex_str = format(val, '#04x') - ValueError: Unknown format code 'x' for object of type 'str".
However the code works perfectly in colab.
I must say I am no expert and I am using this project as a way to understand how to deploy a ML model into esp32. I don't mind having to go to colab just to make the conversion but I would like to understand why I get this unknown format error.
Can somebody help me?

btw, great example @ShawnHymel !!

@ShawnHymel
Copy link
Author

@ericobropinto it looks like format(val, '#04x') only works when val is an integer. In my original code, the tflite model file was a collection (list, I think) of integers that could be iterated over and converted to hex strings (i.e. using format()). That may have changed in recent versions of TensorFlow Lite (as this example is over 2 years old). I'm not sure what format the tflite models are using now.

@abhi-84
Copy link

abhi-84 commented Nov 16, 2021

What alternative board would be used to implement this example instead of NUCLEO-32 STM32L432KC EVAL BRD since this board is not available online. please suggest

@ShawnHymel
Copy link
Author

@abhi-84 Almost any STM32 ARM Cortex-M3 or M4 should work (setting it up in CubeMX might be a little different, depending on the particular MCU or board). Some Cortex-M0 or M0+ MCUs might work...I just haven't tried them yet.

@whubaichuan
Copy link

@suman346 @ericobropinto @ShawnHymel Some possible solutions for Unknown format code 'x' for object of type 'str".

I have met this problem but solved it by changing it slightly. So be careful about the file and directory.

From

file.write(hex_to_c_array('./modellite.tflite', c_model_name))

to

file.write(hex_to_c_array(tflite_model, c_model_name))

Then it works.

@soumengoroi
Copy link

Create header guard

c_str += '#ifndef ' + var_name.upper() + '_H\n'
c_str += '#define ' + var_name.upper() + '_H\n\n'


-- Here I am facing error
"AttributeError: 'Interpreter' object has no attribute 'upper''

@ShawnHymel
Copy link
Author

@soumengoroi Check the value of var_name being passed into that function. It should be a string (and set by c_model_name as the argument)

@richardhemphill
Copy link

richardhemphill commented Sep 23, 2023

There is a typo in the 3rd code cell. Change versionS to version.
!python --version

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment