{ "cells": [ { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "aCZBFzjClURz" }, "source": [ "# Training the sine wave model\n", "\n", "Based on the **hello_world** example from [TensorFlow Lite for MicroControllers](https://www.tensorflow.org/lite/microcontrollers/overview).\n", "\n", "I removed a lot of the explanations, so if any of this doesn't make sense to you, [refer to the original notebook](https://github.com/tensorflow/tensorflow/blob/e0b19f6ef223af40e2e6d1d21b8464c1b2ebee8f/tensorflow/lite/micro/examples/hello_world/train/train_hello_world_model.ipynb).\n", "\n", "Tested with TensorFlow 2.2.0." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab_type": "text", "id": "aCZBFzjClURz" }, "outputs": [], "source": [ "# Install TensorFlow if you don't have it yet.\n", "!pip install -q tensorflow==2.2.0" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": {}, "colab_type": "code", "id": "EIH9NN1c9PJn" }, "outputs": [], "source": [ "# Set a \"seed\" value, so we get the same random numbers each time we run this\n", "# notebook for reproducible results.\n", "import numpy as np\n", "np.random.seed(1)\n", "\n", "import tensorflow as tf\n", "tf.random.set_seed(1)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": {}, "colab_type": "code", "id": "53PBJBv1jEtJ" }, "outputs": [], "source": [ "import os\n", "from tensorflow import keras\n", "import matplotlib.pyplot as plt\n", "import math" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "p-PuBEb6CMeo" }, "source": [ "## Dataset" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "7gB0-dlNmLT-" }, "source": [ "### 1. Generate Data" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "colab_type": "code", "id": "uKjg7QeMDsDx", "outputId": "0afa45df-3766-467c-c92f-2428aa04f22b" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Number of sample datapoints\n", "SAMPLES = 1000\n", "\n", "# Generate a uniformly distributed set of random numbers in the range from\n", "# 0 to 2π, which covers a complete sine wave oscillation\n", "x_values = np.random.uniform(\n", " low=0, high=2*math.pi, size=SAMPLES).astype(np.float32)\n", "\n", "# Shuffle the values to guarantee they're not in order\n", "np.random.shuffle(x_values)\n", "\n", "# Calculate the corresponding sine values\n", "y_values = np.sin(x_values).astype(np.float32)\n", "\n", "# Plot our data. The 'b.' argument tells the library to print blue dots.\n", "plt.plot(x_values, y_values, 'b.')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "iWOlC7W_FYvA" }, "source": [ "### 2. Add Noise" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "colab_type": "code", "id": "i0FJe3Y-Gkac", "outputId": "38886dba-5757-4c7e-bcd6-32c1eb82863e" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Add a small random number to each y value\n", "y_values += 0.1 * np.random.randn(*y_values.shape)\n", "\n", "# Plot our data\n", "plt.plot(x_values, y_values, 'b.')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Up8Xk_pMH4Rt" }, "source": [ "### 3. Split the Data" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "colab_type": "code", "id": "nNYko5L1keqZ", "outputId": "a016bf4f-60a9-4c3f-9954-71218f7f4a25" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# We'll use 60% of our data for training and 20% for testing. The remaining 20%\n", "# will be used for validation. Calculate the indices of each section.\n", "TRAIN_SPLIT = int(0.6 * SAMPLES)\n", "TEST_SPLIT = int(0.2 * SAMPLES + TRAIN_SPLIT)\n", "\n", "# Use np.split to chop our data into three parts.\n", "# The second argument to np.split is an array of indices where the data will be\n", "# split. We provide two indices, so the data will be divided into three chunks.\n", "x_train, x_test, x_validate = np.split(x_values, [TRAIN_SPLIT, TEST_SPLIT])\n", "y_train, y_test, y_validate = np.split(y_values, [TRAIN_SPLIT, TEST_SPLIT])\n", "\n", "# Double check that our splits add up correctly\n", "assert (x_train.size + x_validate.size + x_test.size) == SAMPLES\n", "\n", "# Plot the data in each partition in different colors:\n", "plt.plot(x_train, y_train, 'b.', label=\"Train\")\n", "plt.plot(x_test, y_test, 'r.', label=\"Test\")\n", "plt.plot(x_validate, y_validate, 'y.', label=\"Validate\")\n", "plt.legend()\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Wfdelu1TmgPk" }, "source": [ "## Training" ] }, { "cell_type": "code", "execution_count": 190, "metadata": {}, "outputs": [], "source": [ "# If you don't want to train again, load the trained model.\n", "#model = keras.models.load_model(\"model.h5\")" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "aQd0JSdOoAbw" }, "source": [ "### 1. Design the Model" ] }, { "cell_type": "code", "execution_count": 185, "metadata": { "colab": {}, "colab_type": "code", "id": "oW0xus6AF-4o" }, "outputs": [], "source": [ "model = tf.keras.Sequential()\n", "\n", "# First layer takes a scalar input and feeds it through 16 \"neurons\". The\n", "# neurons decide whether to activate based on the 'relu' activation function.\n", "model.add(keras.layers.Dense(16, activation='relu', input_shape=(1,)))\n", "\n", "# The new second layer may help the network learn more complex representations\n", "model.add(keras.layers.Dense(16, activation='relu'))\n", "\n", "# Final layer is a single neuron, since we want to output a single value\n", "model.add(keras.layers.Dense(1))\n", "\n", "# Compile the model using a standard optimizer and loss function for regression\n", "model.compile(optimizer='adam', loss='mse', metrics=['mae'])" ] }, { "cell_type": "code", "execution_count": 186, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_3\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense_9 (Dense) (None, 16) 32 \n", "_________________________________________________________________\n", "dense_10 (Dense) (None, 16) 272 \n", "_________________________________________________________________\n", "dense_11 (Dense) (None, 1) 17 \n", "=================================================================\n", "Total params: 321\n", "Trainable params: 321\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model.summary()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Dv2SC409Grap" }, "source": [ "### 2. Train the Model ###" ] }, { "cell_type": "code", "execution_count": 187, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "colab_type": "code", "id": "DPAUrdkmGq1M", "outputId": "64730ff7-488e-4b74-d5a1-49a1b733e9e5" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/500\n", "10/10 [==============================] - 0s 6ms/step - loss: 1.2013 - mae: 0.9294 - val_loss: 0.8761 - val_mae: 0.8433\n", "Epoch 2/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.6677 - mae: 0.7329 - val_loss: 0.5611 - val_mae: 0.6737\n", "Epoch 3/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.4962 - mae: 0.6183 - val_loss: 0.4849 - val_mae: 0.5979\n", "Epoch 4/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.4578 - mae: 0.5729 - val_loss: 0.4657 - val_mae: 0.5845\n", "Epoch 5/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.4392 - mae: 0.5618 - val_loss: 0.4461 - val_mae: 0.5753\n", "Epoch 6/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.4200 - mae: 0.5556 - val_loss: 0.4280 - val_mae: 0.5658\n", "Epoch 7/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.4014 - mae: 0.5441 - val_loss: 0.4088 - val_mae: 0.5530\n", "Epoch 8/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.3830 - mae: 0.5279 - val_loss: 0.3901 - val_mae: 0.5393\n", "Epoch 9/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.3659 - mae: 0.5144 - val_loss: 0.3733 - val_mae: 0.5286\n", "Epoch 10/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.3499 - mae: 0.5038 - val_loss: 0.3573 - val_mae: 0.5182\n", "Epoch 11/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.3348 - mae: 0.4910 - val_loss: 0.3418 - val_mae: 0.5065\n", "Epoch 12/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.3204 - mae: 0.4798 - val_loss: 0.3276 - val_mae: 0.4973\n", "Epoch 13/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.3076 - mae: 0.4726 - val_loss: 0.3154 - val_mae: 0.4906\n", "Epoch 14/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.2944 - mae: 0.4632 - val_loss: 0.3006 - val_mae: 0.4781\n", "Epoch 15/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.2818 - mae: 0.4504 - val_loss: 0.2884 - val_mae: 0.4681\n", "Epoch 16/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.2704 - mae: 0.4427 - val_loss: 0.2779 - val_mae: 0.4616\n", "Epoch 17/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.2596 - mae: 0.4342 - val_loss: 0.2669 - val_mae: 0.4525\n", "Epoch 18/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.2495 - mae: 0.4253 - val_loss: 0.2572 - val_mae: 0.4440\n", "Epoch 19/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.2398 - mae: 0.4168 - val_loss: 0.2478 - val_mae: 0.4359\n", "Epoch 20/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.2318 - mae: 0.4106 - val_loss: 0.2391 - val_mae: 0.4296\n", "Epoch 21/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.2228 - mae: 0.4021 - val_loss: 0.2302 - val_mae: 0.4201\n", "Epoch 22/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.2146 - mae: 0.3945 - val_loss: 0.2229 - val_mae: 0.4135\n", "Epoch 23/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.2071 - mae: 0.3870 - val_loss: 0.2148 - val_mae: 0.4055\n", "Epoch 24/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1996 - mae: 0.3802 - val_loss: 0.2087 - val_mae: 0.4005\n", "Epoch 25/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.1934 - mae: 0.3738 - val_loss: 0.2014 - val_mae: 0.3928\n", "Epoch 26/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1870 - mae: 0.3667 - val_loss: 0.1952 - val_mae: 0.3859\n", "Epoch 27/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1805 - mae: 0.3600 - val_loss: 0.1905 - val_mae: 0.3811\n", "Epoch 28/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1754 - mae: 0.3543 - val_loss: 0.1844 - val_mae: 0.3745\n", "Epoch 29/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1701 - mae: 0.3482 - val_loss: 0.1793 - val_mae: 0.3683\n", "Epoch 30/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1652 - mae: 0.3426 - val_loss: 0.1750 - val_mae: 0.3628\n", "Epoch 31/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1608 - mae: 0.3370 - val_loss: 0.1705 - val_mae: 0.3571\n", "Epoch 32/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1571 - mae: 0.3324 - val_loss: 0.1665 - val_mae: 0.3509\n", "Epoch 33/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1530 - mae: 0.3266 - val_loss: 0.1634 - val_mae: 0.3464\n", "Epoch 34/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1495 - mae: 0.3221 - val_loss: 0.1596 - val_mae: 0.3415\n", "Epoch 35/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.1460 - mae: 0.3175 - val_loss: 0.1563 - val_mae: 0.3352\n", "Epoch 36/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1428 - mae: 0.3128 - val_loss: 0.1536 - val_mae: 0.3309\n", "Epoch 37/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1397 - mae: 0.3087 - val_loss: 0.1514 - val_mae: 0.3282\n", "Epoch 38/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1373 - mae: 0.3053 - val_loss: 0.1485 - val_mae: 0.3231\n", "Epoch 39/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1347 - mae: 0.3016 - val_loss: 0.1467 - val_mae: 0.3201\n", "Epoch 40/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1326 - mae: 0.2984 - val_loss: 0.1447 - val_mae: 0.3167\n", "Epoch 41/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1304 - mae: 0.2951 - val_loss: 0.1427 - val_mae: 0.3129\n", "Epoch 42/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1291 - mae: 0.2930 - val_loss: 0.1412 - val_mae: 0.3106\n", "Epoch 43/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1269 - mae: 0.2899 - val_loss: 0.1401 - val_mae: 0.3090\n", "Epoch 44/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.1250 - mae: 0.2870 - val_loss: 0.1382 - val_mae: 0.3041\n", "Epoch 45/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1238 - mae: 0.2845 - val_loss: 0.1370 - val_mae: 0.3026\n", "Epoch 46/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1239 - mae: 0.2834 - val_loss: 0.1357 - val_mae: 0.2980\n", "Epoch 47/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1216 - mae: 0.2803 - val_loss: 0.1359 - val_mae: 0.3015\n", "Epoch 48/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1201 - mae: 0.2783 - val_loss: 0.1336 - val_mae: 0.2966\n", "Epoch 49/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1187 - mae: 0.2762 - val_loss: 0.1328 - val_mae: 0.2958\n", "Epoch 50/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1171 - mae: 0.2735 - val_loss: 0.1317 - val_mae: 0.2921\n", "Epoch 51/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1165 - mae: 0.2710 - val_loss: 0.1309 - val_mae: 0.2907\n", "Epoch 52/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1150 - mae: 0.2693 - val_loss: 0.1305 - val_mae: 0.2922\n", "Epoch 53/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.1146 - mae: 0.2687 - val_loss: 0.1298 - val_mae: 0.2910\n", "Epoch 54/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1134 - mae: 0.2660 - val_loss: 0.1284 - val_mae: 0.2859\n", "Epoch 55/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1126 - mae: 0.2642 - val_loss: 0.1278 - val_mae: 0.2864\n", "Epoch 56/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1117 - mae: 0.2634 - val_loss: 0.1271 - val_mae: 0.2844\n", "Epoch 57/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1108 - mae: 0.2607 - val_loss: 0.1261 - val_mae: 0.2803\n", "Epoch 58/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1105 - mae: 0.2596 - val_loss: 0.1255 - val_mae: 0.2797\n", "Epoch 59/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1093 - mae: 0.2585 - val_loss: 0.1259 - val_mae: 0.2822\n", "Epoch 60/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1092 - mae: 0.2582 - val_loss: 0.1242 - val_mae: 0.2787\n", "Epoch 61/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1080 - mae: 0.2557 - val_loss: 0.1235 - val_mae: 0.2738\n", "Epoch 62/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1072 - mae: 0.2533 - val_loss: 0.1241 - val_mae: 0.2790\n", "Epoch 63/500\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "10/10 [==============================] - 0s 3ms/step - loss: 0.1068 - mae: 0.2532 - val_loss: 0.1222 - val_mae: 0.2738\n", "Epoch 64/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1065 - mae: 0.2515 - val_loss: 0.1218 - val_mae: 0.2710\n", "Epoch 65/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1055 - mae: 0.2508 - val_loss: 0.1221 - val_mae: 0.2753\n", "Epoch 66/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1047 - mae: 0.2496 - val_loss: 0.1203 - val_mae: 0.2684\n", "Epoch 67/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1041 - mae: 0.2470 - val_loss: 0.1199 - val_mae: 0.2677\n", "Epoch 68/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1036 - mae: 0.2468 - val_loss: 0.1193 - val_mae: 0.2685\n", "Epoch 69/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1027 - mae: 0.2452 - val_loss: 0.1185 - val_mae: 0.2657\n", "Epoch 70/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1024 - mae: 0.2442 - val_loss: 0.1182 - val_mae: 0.2659\n", "Epoch 71/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1015 - mae: 0.2436 - val_loss: 0.1172 - val_mae: 0.2631\n", "Epoch 72/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.1012 - mae: 0.2424 - val_loss: 0.1168 - val_mae: 0.2614\n", "Epoch 73/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.1017 - mae: 0.2426 - val_loss: 0.1164 - val_mae: 0.2636\n", "Epoch 74/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.1003 - mae: 0.2404 - val_loss: 0.1155 - val_mae: 0.2603\n", "Epoch 75/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0995 - mae: 0.2399 - val_loss: 0.1154 - val_mae: 0.2621\n", "Epoch 76/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0996 - mae: 0.2389 - val_loss: 0.1143 - val_mae: 0.2563\n", "Epoch 77/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0982 - mae: 0.2367 - val_loss: 0.1142 - val_mae: 0.2588\n", "Epoch 78/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0978 - mae: 0.2369 - val_loss: 0.1131 - val_mae: 0.2550\n", "Epoch 79/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0971 - mae: 0.2344 - val_loss: 0.1127 - val_mae: 0.2552\n", "Epoch 80/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0965 - mae: 0.2342 - val_loss: 0.1119 - val_mae: 0.2549\n", "Epoch 81/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0960 - mae: 0.2340 - val_loss: 0.1112 - val_mae: 0.2540\n", "Epoch 82/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0959 - mae: 0.2341 - val_loss: 0.1108 - val_mae: 0.2542\n", "Epoch 83/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0952 - mae: 0.2308 - val_loss: 0.1103 - val_mae: 0.2501\n", "Epoch 84/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0951 - mae: 0.2315 - val_loss: 0.1097 - val_mae: 0.2526\n", "Epoch 85/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0933 - mae: 0.2294 - val_loss: 0.1087 - val_mae: 0.2482\n", "Epoch 86/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0934 - mae: 0.2273 - val_loss: 0.1085 - val_mae: 0.2485\n", "Epoch 87/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0924 - mae: 0.2276 - val_loss: 0.1079 - val_mae: 0.2500\n", "Epoch 88/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0922 - mae: 0.2266 - val_loss: 0.1070 - val_mae: 0.2456\n", "Epoch 89/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0914 - mae: 0.2254 - val_loss: 0.1063 - val_mae: 0.2459\n", "Epoch 90/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0907 - mae: 0.2247 - val_loss: 0.1058 - val_mae: 0.2452\n", "Epoch 91/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0904 - mae: 0.2253 - val_loss: 0.1056 - val_mae: 0.2473\n", "Epoch 92/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0899 - mae: 0.2244 - val_loss: 0.1044 - val_mae: 0.2410\n", "Epoch 93/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0893 - mae: 0.2210 - val_loss: 0.1038 - val_mae: 0.2417\n", "Epoch 94/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0884 - mae: 0.2213 - val_loss: 0.1034 - val_mae: 0.2422\n", "Epoch 95/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0881 - mae: 0.2212 - val_loss: 0.1024 - val_mae: 0.2394\n", "Epoch 96/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0875 - mae: 0.2198 - val_loss: 0.1018 - val_mae: 0.2377\n", "Epoch 97/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0867 - mae: 0.2186 - val_loss: 0.1013 - val_mae: 0.2391\n", "Epoch 98/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0866 - mae: 0.2177 - val_loss: 0.1005 - val_mae: 0.2363\n", "Epoch 99/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0859 - mae: 0.2163 - val_loss: 0.1003 - val_mae: 0.2338\n", "Epoch 100/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0856 - mae: 0.2161 - val_loss: 0.0993 - val_mae: 0.2337\n", "Epoch 101/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0847 - mae: 0.2144 - val_loss: 0.0986 - val_mae: 0.2335\n", "Epoch 102/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0844 - mae: 0.2146 - val_loss: 0.0983 - val_mae: 0.2341\n", "Epoch 103/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0839 - mae: 0.2151 - val_loss: 0.0978 - val_mae: 0.2353\n", "Epoch 104/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0831 - mae: 0.2132 - val_loss: 0.0967 - val_mae: 0.2306\n", "Epoch 105/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0831 - mae: 0.2100 - val_loss: 0.0969 - val_mae: 0.2296\n", "Epoch 106/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0823 - mae: 0.2123 - val_loss: 0.0957 - val_mae: 0.2320\n", "Epoch 107/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0815 - mae: 0.2096 - val_loss: 0.0949 - val_mae: 0.2274\n", "Epoch 108/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0818 - mae: 0.2119 - val_loss: 0.0943 - val_mae: 0.2295\n", "Epoch 109/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0800 - mae: 0.2085 - val_loss: 0.0936 - val_mae: 0.2270\n", "Epoch 110/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0794 - mae: 0.2072 - val_loss: 0.0932 - val_mae: 0.2267\n", "Epoch 111/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0789 - mae: 0.2067 - val_loss: 0.0925 - val_mae: 0.2245\n", "Epoch 112/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0787 - mae: 0.2051 - val_loss: 0.0918 - val_mae: 0.2235\n", "Epoch 113/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0782 - mae: 0.2052 - val_loss: 0.0916 - val_mae: 0.2238\n", "Epoch 114/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0775 - mae: 0.2027 - val_loss: 0.0907 - val_mae: 0.2220\n", "Epoch 115/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0769 - mae: 0.2036 - val_loss: 0.0902 - val_mae: 0.2231\n", "Epoch 116/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0763 - mae: 0.2024 - val_loss: 0.0895 - val_mae: 0.2191\n", "Epoch 117/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0774 - mae: 0.2044 - val_loss: 0.0889 - val_mae: 0.2217\n", "Epoch 118/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0752 - mae: 0.2000 - val_loss: 0.0883 - val_mae: 0.2175\n", "Epoch 119/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0752 - mae: 0.1995 - val_loss: 0.0878 - val_mae: 0.2191\n", "Epoch 120/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0747 - mae: 0.1988 - val_loss: 0.0869 - val_mae: 0.2171\n", "Epoch 121/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0738 - mae: 0.1994 - val_loss: 0.0868 - val_mae: 0.2194\n", "Epoch 122/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0739 - mae: 0.1970 - val_loss: 0.0860 - val_mae: 0.2143\n", "Epoch 123/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0740 - mae: 0.2001 - val_loss: 0.0852 - val_mae: 0.2163\n", "Epoch 124/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0738 - mae: 0.1960 - val_loss: 0.0848 - val_mae: 0.2131\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 125/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0720 - mae: 0.1979 - val_loss: 0.0847 - val_mae: 0.2178\n", "Epoch 126/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0716 - mae: 0.1968 - val_loss: 0.0834 - val_mae: 0.2132\n", "Epoch 127/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0706 - mae: 0.1942 - val_loss: 0.0829 - val_mae: 0.2124\n", "Epoch 128/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0704 - mae: 0.1925 - val_loss: 0.0824 - val_mae: 0.2103\n", "Epoch 129/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0698 - mae: 0.1922 - val_loss: 0.0816 - val_mae: 0.2100\n", "Epoch 130/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0692 - mae: 0.1906 - val_loss: 0.0811 - val_mae: 0.2101\n", "Epoch 131/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0689 - mae: 0.1923 - val_loss: 0.0804 - val_mae: 0.2090\n", "Epoch 132/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0694 - mae: 0.1893 - val_loss: 0.0804 - val_mae: 0.2074\n", "Epoch 133/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0692 - mae: 0.1939 - val_loss: 0.0793 - val_mae: 0.2090\n", "Epoch 134/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0688 - mae: 0.1902 - val_loss: 0.0786 - val_mae: 0.2046\n", "Epoch 135/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0674 - mae: 0.1903 - val_loss: 0.0782 - val_mae: 0.2053\n", "Epoch 136/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0671 - mae: 0.1868 - val_loss: 0.0775 - val_mae: 0.2030\n", "Epoch 137/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0653 - mae: 0.1858 - val_loss: 0.0773 - val_mae: 0.2061\n", "Epoch 138/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0652 - mae: 0.1860 - val_loss: 0.0761 - val_mae: 0.2018\n", "Epoch 139/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0647 - mae: 0.1852 - val_loss: 0.0755 - val_mae: 0.2018\n", "Epoch 140/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0645 - mae: 0.1830 - val_loss: 0.0751 - val_mae: 0.2013\n", "Epoch 141/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0637 - mae: 0.1844 - val_loss: 0.0743 - val_mae: 0.2010\n", "Epoch 142/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0631 - mae: 0.1833 - val_loss: 0.0738 - val_mae: 0.2008\n", "Epoch 143/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0631 - mae: 0.1802 - val_loss: 0.0735 - val_mae: 0.1986\n", "Epoch 144/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0619 - mae: 0.1808 - val_loss: 0.0726 - val_mae: 0.1978\n", "Epoch 145/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0613 - mae: 0.1800 - val_loss: 0.0720 - val_mae: 0.1980\n", "Epoch 146/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0607 - mae: 0.1784 - val_loss: 0.0715 - val_mae: 0.1954\n", "Epoch 147/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0602 - mae: 0.1774 - val_loss: 0.0708 - val_mae: 0.1939\n", "Epoch 148/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0598 - mae: 0.1755 - val_loss: 0.0703 - val_mae: 0.1938\n", "Epoch 149/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0597 - mae: 0.1778 - val_loss: 0.0698 - val_mae: 0.1955\n", "Epoch 150/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0588 - mae: 0.1746 - val_loss: 0.0693 - val_mae: 0.1910\n", "Epoch 151/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0586 - mae: 0.1752 - val_loss: 0.0684 - val_mae: 0.1918\n", "Epoch 152/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0580 - mae: 0.1724 - val_loss: 0.0681 - val_mae: 0.1901\n", "Epoch 153/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0575 - mae: 0.1731 - val_loss: 0.0674 - val_mae: 0.1884\n", "Epoch 154/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0570 - mae: 0.1715 - val_loss: 0.0668 - val_mae: 0.1902\n", "Epoch 155/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0565 - mae: 0.1717 - val_loss: 0.0662 - val_mae: 0.1882\n", "Epoch 156/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0564 - mae: 0.1722 - val_loss: 0.0656 - val_mae: 0.1883\n", "Epoch 157/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0554 - mae: 0.1682 - val_loss: 0.0653 - val_mae: 0.1854\n", "Epoch 158/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0553 - mae: 0.1697 - val_loss: 0.0645 - val_mae: 0.1869\n", "Epoch 159/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0544 - mae: 0.1671 - val_loss: 0.0640 - val_mae: 0.1842\n", "Epoch 160/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0540 - mae: 0.1672 - val_loss: 0.0634 - val_mae: 0.1845\n", "Epoch 161/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0537 - mae: 0.1657 - val_loss: 0.0629 - val_mae: 0.1849\n", "Epoch 162/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0531 - mae: 0.1659 - val_loss: 0.0624 - val_mae: 0.1818\n", "Epoch 163/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0535 - mae: 0.1637 - val_loss: 0.0622 - val_mae: 0.1841\n", "Epoch 164/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0534 - mae: 0.1685 - val_loss: 0.0616 - val_mae: 0.1843\n", "Epoch 165/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0534 - mae: 0.1669 - val_loss: 0.0616 - val_mae: 0.1802\n", "Epoch 166/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0513 - mae: 0.1633 - val_loss: 0.0602 - val_mae: 0.1809\n", "Epoch 167/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0508 - mae: 0.1626 - val_loss: 0.0597 - val_mae: 0.1802\n", "Epoch 168/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0508 - mae: 0.1632 - val_loss: 0.0592 - val_mae: 0.1776\n", "Epoch 169/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0502 - mae: 0.1592 - val_loss: 0.0588 - val_mae: 0.1785\n", "Epoch 170/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0498 - mae: 0.1607 - val_loss: 0.0583 - val_mae: 0.1753\n", "Epoch 171/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0489 - mae: 0.1584 - val_loss: 0.0577 - val_mae: 0.1777\n", "Epoch 172/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0489 - mae: 0.1599 - val_loss: 0.0572 - val_mae: 0.1767\n", "Epoch 173/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0482 - mae: 0.1567 - val_loss: 0.0569 - val_mae: 0.1745\n", "Epoch 174/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0479 - mae: 0.1572 - val_loss: 0.0562 - val_mae: 0.1731\n", "Epoch 175/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0473 - mae: 0.1548 - val_loss: 0.0559 - val_mae: 0.1722\n", "Epoch 176/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0468 - mae: 0.1547 - val_loss: 0.0552 - val_mae: 0.1734\n", "Epoch 177/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0467 - mae: 0.1543 - val_loss: 0.0549 - val_mae: 0.1737\n", "Epoch 178/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0460 - mae: 0.1550 - val_loss: 0.0542 - val_mae: 0.1715\n", "Epoch 179/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0458 - mae: 0.1528 - val_loss: 0.0539 - val_mae: 0.1704\n", "Epoch 180/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0456 - mae: 0.1543 - val_loss: 0.0533 - val_mae: 0.1697\n", "Epoch 181/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0451 - mae: 0.1515 - val_loss: 0.0528 - val_mae: 0.1697\n", "Epoch 182/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0447 - mae: 0.1526 - val_loss: 0.0523 - val_mae: 0.1696\n", "Epoch 183/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0440 - mae: 0.1504 - val_loss: 0.0519 - val_mae: 0.1676\n", "Epoch 184/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0436 - mae: 0.1490 - val_loss: 0.0514 - val_mae: 0.1670\n", "Epoch 185/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0432 - mae: 0.1493 - val_loss: 0.0508 - val_mae: 0.1661\n", "Epoch 186/500\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "10/10 [==============================] - 0s 3ms/step - loss: 0.0428 - mae: 0.1490 - val_loss: 0.0503 - val_mae: 0.1663\n", "Epoch 187/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0426 - mae: 0.1482 - val_loss: 0.0499 - val_mae: 0.1646\n", "Epoch 188/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0422 - mae: 0.1480 - val_loss: 0.0494 - val_mae: 0.1633\n", "Epoch 189/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0417 - mae: 0.1467 - val_loss: 0.0489 - val_mae: 0.1629\n", "Epoch 190/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0416 - mae: 0.1456 - val_loss: 0.0488 - val_mae: 0.1634\n", "Epoch 191/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0415 - mae: 0.1476 - val_loss: 0.0480 - val_mae: 0.1622\n", "Epoch 192/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0406 - mae: 0.1452 - val_loss: 0.0477 - val_mae: 0.1627\n", "Epoch 193/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0405 - mae: 0.1439 - val_loss: 0.0472 - val_mae: 0.1610\n", "Epoch 194/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0402 - mae: 0.1443 - val_loss: 0.0466 - val_mae: 0.1593\n", "Epoch 195/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0397 - mae: 0.1443 - val_loss: 0.0463 - val_mae: 0.1609\n", "Epoch 196/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0391 - mae: 0.1425 - val_loss: 0.0460 - val_mae: 0.1592\n", "Epoch 197/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0390 - mae: 0.1429 - val_loss: 0.0454 - val_mae: 0.1584\n", "Epoch 198/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0388 - mae: 0.1420 - val_loss: 0.0454 - val_mae: 0.1578\n", "Epoch 199/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0387 - mae: 0.1402 - val_loss: 0.0446 - val_mae: 0.1553\n", "Epoch 200/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0379 - mae: 0.1404 - val_loss: 0.0441 - val_mae: 0.1563\n", "Epoch 201/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0383 - mae: 0.1386 - val_loss: 0.0442 - val_mae: 0.1577\n", "Epoch 202/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0374 - mae: 0.1405 - val_loss: 0.0436 - val_mae: 0.1547\n", "Epoch 203/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0376 - mae: 0.1385 - val_loss: 0.0437 - val_mae: 0.1561\n", "Epoch 204/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0373 - mae: 0.1410 - val_loss: 0.0426 - val_mae: 0.1544\n", "Epoch 205/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0364 - mae: 0.1381 - val_loss: 0.0423 - val_mae: 0.1519\n", "Epoch 206/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0361 - mae: 0.1357 - val_loss: 0.0418 - val_mae: 0.1506\n", "Epoch 207/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0355 - mae: 0.1357 - val_loss: 0.0413 - val_mae: 0.1515\n", "Epoch 208/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0353 - mae: 0.1355 - val_loss: 0.0410 - val_mae: 0.1501\n", "Epoch 209/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0352 - mae: 0.1360 - val_loss: 0.0407 - val_mae: 0.1490\n", "Epoch 210/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0350 - mae: 0.1354 - val_loss: 0.0407 - val_mae: 0.1527\n", "Epoch 211/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0356 - mae: 0.1366 - val_loss: 0.0399 - val_mae: 0.1472\n", "Epoch 212/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0345 - mae: 0.1346 - val_loss: 0.0394 - val_mae: 0.1487\n", "Epoch 213/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0337 - mae: 0.1326 - val_loss: 0.0392 - val_mae: 0.1460\n", "Epoch 214/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0340 - mae: 0.1321 - val_loss: 0.0388 - val_mae: 0.1453\n", "Epoch 215/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0342 - mae: 0.1339 - val_loss: 0.0384 - val_mae: 0.1461\n", "Epoch 216/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0329 - mae: 0.1316 - val_loss: 0.0381 - val_mae: 0.1454\n", "Epoch 217/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0328 - mae: 0.1309 - val_loss: 0.0376 - val_mae: 0.1437\n", "Epoch 218/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0324 - mae: 0.1308 - val_loss: 0.0376 - val_mae: 0.1469\n", "Epoch 219/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0323 - mae: 0.1313 - val_loss: 0.0371 - val_mae: 0.1425\n", "Epoch 220/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0324 - mae: 0.1305 - val_loss: 0.0366 - val_mae: 0.1439\n", "Epoch 221/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0318 - mae: 0.1297 - val_loss: 0.0362 - val_mae: 0.1425\n", "Epoch 222/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0317 - mae: 0.1305 - val_loss: 0.0361 - val_mae: 0.1416\n", "Epoch 223/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0319 - mae: 0.1293 - val_loss: 0.0365 - val_mae: 0.1462\n", "Epoch 224/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0314 - mae: 0.1291 - val_loss: 0.0353 - val_mae: 0.1400\n", "Epoch 225/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0313 - mae: 0.1293 - val_loss: 0.0348 - val_mae: 0.1410\n", "Epoch 226/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0306 - mae: 0.1272 - val_loss: 0.0349 - val_mae: 0.1405\n", "Epoch 227/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0308 - mae: 0.1286 - val_loss: 0.0349 - val_mae: 0.1409\n", "Epoch 228/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0306 - mae: 0.1273 - val_loss: 0.0343 - val_mae: 0.1408\n", "Epoch 229/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0311 - mae: 0.1251 - val_loss: 0.0339 - val_mae: 0.1371\n", "Epoch 230/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0297 - mae: 0.1263 - val_loss: 0.0333 - val_mae: 0.1387\n", "Epoch 231/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0292 - mae: 0.1245 - val_loss: 0.0333 - val_mae: 0.1373\n", "Epoch 232/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0292 - mae: 0.1257 - val_loss: 0.0329 - val_mae: 0.1354\n", "Epoch 233/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0289 - mae: 0.1240 - val_loss: 0.0327 - val_mae: 0.1384\n", "Epoch 234/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0288 - mae: 0.1248 - val_loss: 0.0319 - val_mae: 0.1355\n", "Epoch 235/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0282 - mae: 0.1230 - val_loss: 0.0319 - val_mae: 0.1331\n", "Epoch 236/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0281 - mae: 0.1221 - val_loss: 0.0313 - val_mae: 0.1333\n", "Epoch 237/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0279 - mae: 0.1210 - val_loss: 0.0313 - val_mae: 0.1350\n", "Epoch 238/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0276 - mae: 0.1225 - val_loss: 0.0308 - val_mae: 0.1323\n", "Epoch 239/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0274 - mae: 0.1212 - val_loss: 0.0307 - val_mae: 0.1333\n", "Epoch 240/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0272 - mae: 0.1212 - val_loss: 0.0302 - val_mae: 0.1324\n", "Epoch 241/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0270 - mae: 0.1216 - val_loss: 0.0300 - val_mae: 0.1307\n", "Epoch 242/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0267 - mae: 0.1186 - val_loss: 0.0300 - val_mae: 0.1320\n", "Epoch 243/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0264 - mae: 0.1190 - val_loss: 0.0294 - val_mae: 0.1309\n", "Epoch 244/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0262 - mae: 0.1189 - val_loss: 0.0294 - val_mae: 0.1319\n", "Epoch 245/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0263 - mae: 0.1188 - val_loss: 0.0289 - val_mae: 0.1302\n", "Epoch 246/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0257 - mae: 0.1177 - val_loss: 0.0286 - val_mae: 0.1286\n", "Epoch 247/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0256 - mae: 0.1169 - val_loss: 0.0287 - val_mae: 0.1286\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 248/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0254 - mae: 0.1168 - val_loss: 0.0281 - val_mae: 0.1288\n", "Epoch 249/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0254 - mae: 0.1175 - val_loss: 0.0278 - val_mae: 0.1281\n", "Epoch 250/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0250 - mae: 0.1162 - val_loss: 0.0281 - val_mae: 0.1269\n", "Epoch 251/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0250 - mae: 0.1154 - val_loss: 0.0275 - val_mae: 0.1278\n", "Epoch 252/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0250 - mae: 0.1168 - val_loss: 0.0274 - val_mae: 0.1269\n", "Epoch 253/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0248 - mae: 0.1156 - val_loss: 0.0280 - val_mae: 0.1293\n", "Epoch 254/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0247 - mae: 0.1163 - val_loss: 0.0269 - val_mae: 0.1260\n", "Epoch 255/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0248 - mae: 0.1150 - val_loss: 0.0266 - val_mae: 0.1260\n", "Epoch 256/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0243 - mae: 0.1136 - val_loss: 0.0268 - val_mae: 0.1276\n", "Epoch 257/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0243 - mae: 0.1155 - val_loss: 0.0262 - val_mae: 0.1250\n", "Epoch 258/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0237 - mae: 0.1132 - val_loss: 0.0262 - val_mae: 0.1265\n", "Epoch 259/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0239 - mae: 0.1151 - val_loss: 0.0259 - val_mae: 0.1240\n", "Epoch 260/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0236 - mae: 0.1128 - val_loss: 0.0257 - val_mae: 0.1249\n", "Epoch 261/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0235 - mae: 0.1143 - val_loss: 0.0255 - val_mae: 0.1249\n", "Epoch 262/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0236 - mae: 0.1146 - val_loss: 0.0259 - val_mae: 0.1221\n", "Epoch 263/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0229 - mae: 0.1116 - val_loss: 0.0250 - val_mae: 0.1241\n", "Epoch 264/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0228 - mae: 0.1127 - val_loss: 0.0247 - val_mae: 0.1222\n", "Epoch 265/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0226 - mae: 0.1112 - val_loss: 0.0246 - val_mae: 0.1221\n", "Epoch 266/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0225 - mae: 0.1109 - val_loss: 0.0244 - val_mae: 0.1209\n", "Epoch 267/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0225 - mae: 0.1099 - val_loss: 0.0248 - val_mae: 0.1248\n", "Epoch 268/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0224 - mae: 0.1109 - val_loss: 0.0243 - val_mae: 0.1205\n", "Epoch 269/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0220 - mae: 0.1111 - val_loss: 0.0237 - val_mae: 0.1211\n", "Epoch 270/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0220 - mae: 0.1101 - val_loss: 0.0235 - val_mae: 0.1202\n", "Epoch 271/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0216 - mae: 0.1091 - val_loss: 0.0233 - val_mae: 0.1191\n", "Epoch 272/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0215 - mae: 0.1089 - val_loss: 0.0231 - val_mae: 0.1198\n", "Epoch 273/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0213 - mae: 0.1085 - val_loss: 0.0230 - val_mae: 0.1194\n", "Epoch 274/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0213 - mae: 0.1095 - val_loss: 0.0228 - val_mae: 0.1187\n", "Epoch 275/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0216 - mae: 0.1097 - val_loss: 0.0230 - val_mae: 0.1211\n", "Epoch 276/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0217 - mae: 0.1088 - val_loss: 0.0226 - val_mae: 0.1180\n", "Epoch 277/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0209 - mae: 0.1084 - val_loss: 0.0225 - val_mae: 0.1195\n", "Epoch 278/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0212 - mae: 0.1090 - val_loss: 0.0221 - val_mae: 0.1169\n", "Epoch 279/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0207 - mae: 0.1076 - val_loss: 0.0220 - val_mae: 0.1175\n", "Epoch 280/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0205 - mae: 0.1072 - val_loss: 0.0217 - val_mae: 0.1162\n", "Epoch 281/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0204 - mae: 0.1073 - val_loss: 0.0218 - val_mae: 0.1175\n", "Epoch 282/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0205 - mae: 0.1079 - val_loss: 0.0216 - val_mae: 0.1152\n", "Epoch 283/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0203 - mae: 0.1069 - val_loss: 0.0216 - val_mae: 0.1176\n", "Epoch 284/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0206 - mae: 0.1088 - val_loss: 0.0219 - val_mae: 0.1166\n", "Epoch 285/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0206 - mae: 0.1088 - val_loss: 0.0217 - val_mae: 0.1177\n", "Epoch 286/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0203 - mae: 0.1071 - val_loss: 0.0207 - val_mae: 0.1149\n", "Epoch 287/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0200 - mae: 0.1073 - val_loss: 0.0208 - val_mae: 0.1142\n", "Epoch 288/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0202 - mae: 0.1077 - val_loss: 0.0205 - val_mae: 0.1139\n", "Epoch 289/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0198 - mae: 0.1064 - val_loss: 0.0207 - val_mae: 0.1134\n", "Epoch 290/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0193 - mae: 0.1052 - val_loss: 0.0204 - val_mae: 0.1148\n", "Epoch 291/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0202 - mae: 0.1073 - val_loss: 0.0202 - val_mae: 0.1135\n", "Epoch 292/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0200 - mae: 0.1073 - val_loss: 0.0204 - val_mae: 0.1129\n", "Epoch 293/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0194 - mae: 0.1061 - val_loss: 0.0200 - val_mae: 0.1139\n", "Epoch 294/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0194 - mae: 0.1060 - val_loss: 0.0200 - val_mae: 0.1124\n", "Epoch 295/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0190 - mae: 0.1045 - val_loss: 0.0196 - val_mae: 0.1125\n", "Epoch 296/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0194 - mae: 0.1057 - val_loss: 0.0197 - val_mae: 0.1128\n", "Epoch 297/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0192 - mae: 0.1053 - val_loss: 0.0194 - val_mae: 0.1114\n", "Epoch 298/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0194 - mae: 0.1062 - val_loss: 0.0200 - val_mae: 0.1144\n", "Epoch 299/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0193 - mae: 0.1054 - val_loss: 0.0197 - val_mae: 0.1113\n", "Epoch 300/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0192 - mae: 0.1053 - val_loss: 0.0190 - val_mae: 0.1111\n", "Epoch 301/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0186 - mae: 0.1039 - val_loss: 0.0191 - val_mae: 0.1112\n", "Epoch 302/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0187 - mae: 0.1042 - val_loss: 0.0189 - val_mae: 0.1109\n", "Epoch 303/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0192 - mae: 0.1067 - val_loss: 0.0198 - val_mae: 0.1107\n", "Epoch 304/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0196 - mae: 0.1071 - val_loss: 0.0193 - val_mae: 0.1128\n", "Epoch 305/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0186 - mae: 0.1046 - val_loss: 0.0185 - val_mae: 0.1095\n", "Epoch 306/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0182 - mae: 0.1027 - val_loss: 0.0190 - val_mae: 0.1118\n", "Epoch 307/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0187 - mae: 0.1046 - val_loss: 0.0183 - val_mae: 0.1092\n", "Epoch 308/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0190 - mae: 0.1060 - val_loss: 0.0183 - val_mae: 0.1095\n", "Epoch 309/500\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "10/10 [==============================] - 0s 2ms/step - loss: 0.0183 - mae: 0.1045 - val_loss: 0.0189 - val_mae: 0.1082\n", "Epoch 310/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0189 - mae: 0.1049 - val_loss: 0.0197 - val_mae: 0.1137\n", "Epoch 311/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0194 - mae: 0.1091 - val_loss: 0.0180 - val_mae: 0.1091\n", "Epoch 312/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0185 - mae: 0.1059 - val_loss: 0.0191 - val_mae: 0.1082\n", "Epoch 313/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0187 - mae: 0.1052 - val_loss: 0.0179 - val_mae: 0.1081\n", "Epoch 314/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0181 - mae: 0.1033 - val_loss: 0.0187 - val_mae: 0.1109\n", "Epoch 315/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0188 - mae: 0.1056 - val_loss: 0.0181 - val_mae: 0.1071\n", "Epoch 316/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0182 - mae: 0.1047 - val_loss: 0.0177 - val_mae: 0.1073\n", "Epoch 317/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0177 - mae: 0.1030 - val_loss: 0.0179 - val_mae: 0.1076\n", "Epoch 318/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0174 - mae: 0.1017 - val_loss: 0.0174 - val_mae: 0.1068\n", "Epoch 319/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0174 - mae: 0.1020 - val_loss: 0.0175 - val_mae: 0.1077\n", "Epoch 320/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0178 - mae: 0.1035 - val_loss: 0.0175 - val_mae: 0.1064\n", "Epoch 321/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0182 - mae: 0.1045 - val_loss: 0.0173 - val_mae: 0.1072\n", "Epoch 322/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0177 - mae: 0.1036 - val_loss: 0.0174 - val_mae: 0.1060\n", "Epoch 323/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0175 - mae: 0.1016 - val_loss: 0.0182 - val_mae: 0.1097\n", "Epoch 324/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0181 - mae: 0.1047 - val_loss: 0.0172 - val_mae: 0.1058\n", "Epoch 325/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0172 - mae: 0.1025 - val_loss: 0.0170 - val_mae: 0.1053\n", "Epoch 326/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0174 - mae: 0.1025 - val_loss: 0.0171 - val_mae: 0.1066\n", "Epoch 327/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0172 - mae: 0.1014 - val_loss: 0.0170 - val_mae: 0.1059\n", "Epoch 328/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0172 - mae: 0.1028 - val_loss: 0.0171 - val_mae: 0.1051\n", "Epoch 329/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0172 - mae: 0.1021 - val_loss: 0.0168 - val_mae: 0.1051\n", "Epoch 330/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0170 - mae: 0.1015 - val_loss: 0.0170 - val_mae: 0.1047\n", "Epoch 331/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0171 - mae: 0.1016 - val_loss: 0.0177 - val_mae: 0.1083\n", "Epoch 332/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0170 - mae: 0.1024 - val_loss: 0.0168 - val_mae: 0.1048\n", "Epoch 333/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0167 - mae: 0.1002 - val_loss: 0.0166 - val_mae: 0.1053\n", "Epoch 334/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0166 - mae: 0.1012 - val_loss: 0.0163 - val_mae: 0.1038\n", "Epoch 335/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0169 - mae: 0.1018 - val_loss: 0.0165 - val_mae: 0.1044\n", "Epoch 336/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0170 - mae: 0.1013 - val_loss: 0.0170 - val_mae: 0.1053\n", "Epoch 337/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0167 - mae: 0.1011 - val_loss: 0.0169 - val_mae: 0.1054\n", "Epoch 338/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0166 - mae: 0.1009 - val_loss: 0.0165 - val_mae: 0.1042\n", "Epoch 339/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0164 - mae: 0.1004 - val_loss: 0.0161 - val_mae: 0.1028\n", "Epoch 340/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0167 - mae: 0.1017 - val_loss: 0.0160 - val_mae: 0.1027\n", "Epoch 341/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0165 - mae: 0.1010 - val_loss: 0.0161 - val_mae: 0.1026\n", "Epoch 342/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0164 - mae: 0.1013 - val_loss: 0.0157 - val_mae: 0.1024\n", "Epoch 343/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0167 - mae: 0.1013 - val_loss: 0.0172 - val_mae: 0.1069\n", "Epoch 344/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0166 - mae: 0.1015 - val_loss: 0.0157 - val_mae: 0.1021\n", "Epoch 345/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0163 - mae: 0.1007 - val_loss: 0.0160 - val_mae: 0.1023\n", "Epoch 346/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0163 - mae: 0.1007 - val_loss: 0.0157 - val_mae: 0.1021\n", "Epoch 347/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0165 - mae: 0.1006 - val_loss: 0.0160 - val_mae: 0.1028\n", "Epoch 348/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0161 - mae: 0.0999 - val_loss: 0.0161 - val_mae: 0.1018\n", "Epoch 349/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0161 - mae: 0.1002 - val_loss: 0.0154 - val_mae: 0.1015\n", "Epoch 350/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0160 - mae: 0.0995 - val_loss: 0.0156 - val_mae: 0.1015\n", "Epoch 351/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0165 - mae: 0.1011 - val_loss: 0.0154 - val_mae: 0.1014\n", "Epoch 352/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0158 - mae: 0.0987 - val_loss: 0.0153 - val_mae: 0.1014\n", "Epoch 353/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0158 - mae: 0.0993 - val_loss: 0.0156 - val_mae: 0.1021\n", "Epoch 354/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0162 - mae: 0.1016 - val_loss: 0.0159 - val_mae: 0.1011\n", "Epoch 355/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0164 - mae: 0.1006 - val_loss: 0.0155 - val_mae: 0.1009\n", "Epoch 356/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0171 - mae: 0.1037 - val_loss: 0.0151 - val_mae: 0.1007\n", "Epoch 357/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0162 - mae: 0.0997 - val_loss: 0.0154 - val_mae: 0.1013\n", "Epoch 358/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0159 - mae: 0.1001 - val_loss: 0.0149 - val_mae: 0.0999\n", "Epoch 359/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0158 - mae: 0.0997 - val_loss: 0.0154 - val_mae: 0.1003\n", "Epoch 360/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0161 - mae: 0.1005 - val_loss: 0.0148 - val_mae: 0.1000\n", "Epoch 361/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0159 - mae: 0.0984 - val_loss: 0.0164 - val_mae: 0.1041\n", "Epoch 362/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0159 - mae: 0.0991 - val_loss: 0.0147 - val_mae: 0.0998\n", "Epoch 363/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0157 - mae: 0.0999 - val_loss: 0.0152 - val_mae: 0.0997\n", "Epoch 364/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0160 - mae: 0.1005 - val_loss: 0.0148 - val_mae: 0.0995\n", "Epoch 365/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0156 - mae: 0.0988 - val_loss: 0.0149 - val_mae: 0.1002\n", "Epoch 366/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0154 - mae: 0.0983 - val_loss: 0.0149 - val_mae: 0.0993\n", "Epoch 367/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0154 - mae: 0.0980 - val_loss: 0.0153 - val_mae: 0.1009\n", "Epoch 368/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0159 - mae: 0.1006 - val_loss: 0.0149 - val_mae: 0.0992\n", "Epoch 369/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0157 - mae: 0.0997 - val_loss: 0.0147 - val_mae: 0.0987\n", "Epoch 370/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0153 - mae: 0.0983 - val_loss: 0.0145 - val_mae: 0.0992\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 371/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0156 - mae: 0.0990 - val_loss: 0.0150 - val_mae: 0.0999\n", "Epoch 372/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0157 - mae: 0.0994 - val_loss: 0.0144 - val_mae: 0.0984\n", "Epoch 373/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0154 - mae: 0.0983 - val_loss: 0.0145 - val_mae: 0.0990\n", "Epoch 374/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0153 - mae: 0.0983 - val_loss: 0.0147 - val_mae: 0.0984\n", "Epoch 375/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0151 - mae: 0.0975 - val_loss: 0.0146 - val_mae: 0.0990\n", "Epoch 376/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0153 - mae: 0.0980 - val_loss: 0.0142 - val_mae: 0.0982\n", "Epoch 377/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0151 - mae: 0.0978 - val_loss: 0.0144 - val_mae: 0.0979\n", "Epoch 378/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0152 - mae: 0.0978 - val_loss: 0.0143 - val_mae: 0.0979\n", "Epoch 379/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0150 - mae: 0.0969 - val_loss: 0.0152 - val_mae: 0.0992\n", "Epoch 380/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0152 - mae: 0.0970 - val_loss: 0.0142 - val_mae: 0.0979\n", "Epoch 381/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0152 - mae: 0.0986 - val_loss: 0.0146 - val_mae: 0.0982\n", "Epoch 382/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0150 - mae: 0.0973 - val_loss: 0.0141 - val_mae: 0.0976\n", "Epoch 383/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0150 - mae: 0.0978 - val_loss: 0.0141 - val_mae: 0.0972\n", "Epoch 384/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0151 - mae: 0.0977 - val_loss: 0.0142 - val_mae: 0.0974\n", "Epoch 385/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0149 - mae: 0.0972 - val_loss: 0.0140 - val_mae: 0.0966\n", "Epoch 386/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0150 - mae: 0.0972 - val_loss: 0.0144 - val_mae: 0.0980\n", "Epoch 387/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0149 - mae: 0.0968 - val_loss: 0.0139 - val_mae: 0.0967\n", "Epoch 388/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0151 - mae: 0.0973 - val_loss: 0.0144 - val_mae: 0.0981\n", "Epoch 389/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0151 - mae: 0.0977 - val_loss: 0.0138 - val_mae: 0.0964\n", "Epoch 390/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0150 - mae: 0.0969 - val_loss: 0.0139 - val_mae: 0.0966\n", "Epoch 391/500\n", "10/10 [==============================] - ETA: 0s - loss: 0.0148 - mae: 0.099 - 0s 2ms/step - loss: 0.0149 - mae: 0.0972 - val_loss: 0.0139 - val_mae: 0.0965\n", "Epoch 392/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0148 - mae: 0.0970 - val_loss: 0.0138 - val_mae: 0.0962\n", "Epoch 393/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0149 - mae: 0.0969 - val_loss: 0.0141 - val_mae: 0.0968\n", "Epoch 394/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0146 - mae: 0.0961 - val_loss: 0.0137 - val_mae: 0.0962\n", "Epoch 395/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0148 - mae: 0.0967 - val_loss: 0.0142 - val_mae: 0.0966\n", "Epoch 396/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0152 - mae: 0.0973 - val_loss: 0.0138 - val_mae: 0.0963\n", "Epoch 397/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0149 - mae: 0.0968 - val_loss: 0.0142 - val_mae: 0.0969\n", "Epoch 398/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0148 - mae: 0.0973 - val_loss: 0.0139 - val_mae: 0.0959\n", "Epoch 399/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0155 - mae: 0.0991 - val_loss: 0.0141 - val_mae: 0.0973\n", "Epoch 400/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0147 - mae: 0.0962 - val_loss: 0.0140 - val_mae: 0.0959\n", "Epoch 401/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0147 - mae: 0.0964 - val_loss: 0.0136 - val_mae: 0.0956\n", "Epoch 402/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0146 - mae: 0.0961 - val_loss: 0.0136 - val_mae: 0.0954\n", "Epoch 403/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0145 - mae: 0.0963 - val_loss: 0.0139 - val_mae: 0.0959\n", "Epoch 404/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0146 - mae: 0.0953 - val_loss: 0.0146 - val_mae: 0.0982\n", "Epoch 405/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0149 - mae: 0.0963 - val_loss: 0.0138 - val_mae: 0.0955\n", "Epoch 406/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0151 - mae: 0.0972 - val_loss: 0.0137 - val_mae: 0.0953\n", "Epoch 407/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0148 - mae: 0.0967 - val_loss: 0.0136 - val_mae: 0.0951\n", "Epoch 408/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0145 - mae: 0.0962 - val_loss: 0.0136 - val_mae: 0.0952\n", "Epoch 409/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0145 - mae: 0.0960 - val_loss: 0.0136 - val_mae: 0.0951\n", "Epoch 410/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0147 - mae: 0.0962 - val_loss: 0.0141 - val_mae: 0.0962\n", "Epoch 411/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0148 - mae: 0.0961 - val_loss: 0.0138 - val_mae: 0.0954\n", "Epoch 412/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0147 - mae: 0.0972 - val_loss: 0.0139 - val_mae: 0.0958\n", "Epoch 413/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0144 - mae: 0.0955 - val_loss: 0.0142 - val_mae: 0.0962\n", "Epoch 414/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0148 - mae: 0.0966 - val_loss: 0.0133 - val_mae: 0.0941\n", "Epoch 415/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0167 - mae: 0.1033 - val_loss: 0.0162 - val_mae: 0.1017\n", "Epoch 416/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0152 - mae: 0.0986 - val_loss: 0.0134 - val_mae: 0.0941\n", "Epoch 417/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0152 - mae: 0.0976 - val_loss: 0.0141 - val_mae: 0.0960\n", "Epoch 418/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0143 - mae: 0.0949 - val_loss: 0.0133 - val_mae: 0.0945\n", "Epoch 419/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0143 - mae: 0.0953 - val_loss: 0.0132 - val_mae: 0.0937\n", "Epoch 420/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0146 - mae: 0.0966 - val_loss: 0.0135 - val_mae: 0.0946\n", "Epoch 421/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0145 - mae: 0.0962 - val_loss: 0.0139 - val_mae: 0.0957\n", "Epoch 422/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0146 - mae: 0.0961 - val_loss: 0.0132 - val_mae: 0.0936\n", "Epoch 423/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0143 - mae: 0.0954 - val_loss: 0.0134 - val_mae: 0.0948\n", "Epoch 424/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0146 - mae: 0.0966 - val_loss: 0.0133 - val_mae: 0.0941\n", "Epoch 425/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0945 - val_loss: 0.0132 - val_mae: 0.0936\n", "Epoch 426/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0951 - val_loss: 0.0134 - val_mae: 0.0943\n", "Epoch 427/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0145 - mae: 0.0956 - val_loss: 0.0133 - val_mae: 0.0944\n", "Epoch 428/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0950 - val_loss: 0.0131 - val_mae: 0.0932\n", "Epoch 429/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0945 - val_loss: 0.0140 - val_mae: 0.0956\n", "Epoch 430/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0153 - mae: 0.0992 - val_loss: 0.0131 - val_mae: 0.0928\n", "Epoch 431/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0146 - mae: 0.0970 - val_loss: 0.0145 - val_mae: 0.0977\n", "Epoch 432/500\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "10/10 [==============================] - 0s 2ms/step - loss: 0.0148 - mae: 0.0963 - val_loss: 0.0133 - val_mae: 0.0937\n", "Epoch 433/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0142 - mae: 0.0949 - val_loss: 0.0134 - val_mae: 0.0940\n", "Epoch 434/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0140 - mae: 0.0942 - val_loss: 0.0131 - val_mae: 0.0935\n", "Epoch 435/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0143 - mae: 0.0956 - val_loss: 0.0133 - val_mae: 0.0941\n", "Epoch 436/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0148 - mae: 0.0960 - val_loss: 0.0133 - val_mae: 0.0938\n", "Epoch 437/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0144 - mae: 0.0955 - val_loss: 0.0132 - val_mae: 0.0935\n", "Epoch 438/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0944 - val_loss: 0.0136 - val_mae: 0.0943\n", "Epoch 439/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0147 - mae: 0.0969 - val_loss: 0.0140 - val_mae: 0.0951\n", "Epoch 440/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0147 - mae: 0.0967 - val_loss: 0.0152 - val_mae: 0.1004\n", "Epoch 441/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0144 - mae: 0.0956 - val_loss: 0.0132 - val_mae: 0.0929\n", "Epoch 442/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0141 - mae: 0.0943 - val_loss: 0.0133 - val_mae: 0.0940\n", "Epoch 443/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0141 - mae: 0.0947 - val_loss: 0.0133 - val_mae: 0.0936\n", "Epoch 444/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0144 - mae: 0.0954 - val_loss: 0.0132 - val_mae: 0.0938\n", "Epoch 445/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0945 - val_loss: 0.0146 - val_mae: 0.0973\n", "Epoch 446/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0145 - mae: 0.0955 - val_loss: 0.0131 - val_mae: 0.0928\n", "Epoch 447/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0143 - mae: 0.0947 - val_loss: 0.0131 - val_mae: 0.0927\n", "Epoch 448/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0952 - val_loss: 0.0133 - val_mae: 0.0942\n", "Epoch 449/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0955 - val_loss: 0.0134 - val_mae: 0.0942\n", "Epoch 450/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0144 - mae: 0.0954 - val_loss: 0.0132 - val_mae: 0.0937\n", "Epoch 451/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0147 - mae: 0.0963 - val_loss: 0.0141 - val_mae: 0.0956\n", "Epoch 452/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0144 - mae: 0.0955 - val_loss: 0.0132 - val_mae: 0.0932\n", "Epoch 453/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0950 - val_loss: 0.0135 - val_mae: 0.0943\n", "Epoch 454/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0143 - mae: 0.0956 - val_loss: 0.0129 - val_mae: 0.0923\n", "Epoch 455/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0139 - mae: 0.0940 - val_loss: 0.0132 - val_mae: 0.0927\n", "Epoch 456/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0140 - mae: 0.0942 - val_loss: 0.0133 - val_mae: 0.0940\n", "Epoch 457/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0140 - mae: 0.0944 - val_loss: 0.0133 - val_mae: 0.0934\n", "Epoch 458/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0945 - val_loss: 0.0129 - val_mae: 0.0921\n", "Epoch 459/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0141 - mae: 0.0952 - val_loss: 0.0139 - val_mae: 0.0960\n", "Epoch 460/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0949 - val_loss: 0.0129 - val_mae: 0.0924\n", "Epoch 461/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0141 - mae: 0.0939 - val_loss: 0.0131 - val_mae: 0.0927\n", "Epoch 462/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0140 - mae: 0.0940 - val_loss: 0.0132 - val_mae: 0.0929\n", "Epoch 463/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0952 - val_loss: 0.0134 - val_mae: 0.0941\n", "Epoch 464/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0140 - mae: 0.0949 - val_loss: 0.0130 - val_mae: 0.0928\n", "Epoch 465/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0140 - mae: 0.0943 - val_loss: 0.0132 - val_mae: 0.0928\n", "Epoch 466/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0139 - mae: 0.0939 - val_loss: 0.0128 - val_mae: 0.0918\n", "Epoch 467/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0143 - mae: 0.0950 - val_loss: 0.0133 - val_mae: 0.0932\n", "Epoch 468/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0143 - mae: 0.0961 - val_loss: 0.0133 - val_mae: 0.0939\n", "Epoch 469/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0953 - val_loss: 0.0131 - val_mae: 0.0934\n", "Epoch 470/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0138 - mae: 0.0934 - val_loss: 0.0139 - val_mae: 0.0949\n", "Epoch 471/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0140 - mae: 0.0943 - val_loss: 0.0135 - val_mae: 0.0944\n", "Epoch 472/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0141 - mae: 0.0939 - val_loss: 0.0129 - val_mae: 0.0926\n", "Epoch 473/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0140 - mae: 0.0940 - val_loss: 0.0134 - val_mae: 0.0926\n", "Epoch 474/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0150 - mae: 0.0983 - val_loss: 0.0133 - val_mae: 0.0935\n", "Epoch 475/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0144 - mae: 0.0961 - val_loss: 0.0131 - val_mae: 0.0930\n", "Epoch 476/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0143 - mae: 0.0956 - val_loss: 0.0131 - val_mae: 0.0931\n", "Epoch 477/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0146 - mae: 0.0963 - val_loss: 0.0144 - val_mae: 0.0968\n", "Epoch 478/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0145 - mae: 0.0954 - val_loss: 0.0130 - val_mae: 0.0919\n", "Epoch 479/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0140 - mae: 0.0940 - val_loss: 0.0128 - val_mae: 0.0919\n", "Epoch 480/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0139 - mae: 0.0939 - val_loss: 0.0133 - val_mae: 0.0925\n", "Epoch 481/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0139 - mae: 0.0937 - val_loss: 0.0129 - val_mae: 0.0925\n", "Epoch 482/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0139 - mae: 0.0937 - val_loss: 0.0128 - val_mae: 0.0920\n", "Epoch 483/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0950 - val_loss: 0.0133 - val_mae: 0.0941\n", "Epoch 484/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0143 - mae: 0.0951 - val_loss: 0.0129 - val_mae: 0.0921\n", "Epoch 485/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0141 - mae: 0.0940 - val_loss: 0.0148 - val_mae: 0.0973\n", "Epoch 486/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0148 - mae: 0.0965 - val_loss: 0.0138 - val_mae: 0.0953\n", "Epoch 487/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0144 - mae: 0.0957 - val_loss: 0.0141 - val_mae: 0.0960\n", "Epoch 488/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0147 - mae: 0.0958 - val_loss: 0.0132 - val_mae: 0.0924\n", "Epoch 489/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0138 - mae: 0.0932 - val_loss: 0.0130 - val_mae: 0.0932\n", "Epoch 490/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0143 - mae: 0.0954 - val_loss: 0.0129 - val_mae: 0.0923\n", "Epoch 491/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0142 - mae: 0.0946 - val_loss: 0.0129 - val_mae: 0.0927\n", "Epoch 492/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0140 - mae: 0.0941 - val_loss: 0.0131 - val_mae: 0.0915\n", "Epoch 493/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0145 - mae: 0.0957 - val_loss: 0.0132 - val_mae: 0.0939\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 494/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0143 - mae: 0.0951 - val_loss: 0.0131 - val_mae: 0.0925\n", "Epoch 495/500\n", "10/10 [==============================] - ETA: 0s - loss: 0.0145 - mae: 0.094 - 0s 2ms/step - loss: 0.0147 - mae: 0.0956 - val_loss: 0.0135 - val_mae: 0.0937\n", "Epoch 496/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0143 - mae: 0.0946 - val_loss: 0.0128 - val_mae: 0.0919\n", "Epoch 497/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0143 - mae: 0.0950 - val_loss: 0.0132 - val_mae: 0.0935\n", "Epoch 498/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0146 - mae: 0.0970 - val_loss: 0.0129 - val_mae: 0.0919\n", "Epoch 499/500\n", "10/10 [==============================] - 0s 2ms/step - loss: 0.0140 - mae: 0.0938 - val_loss: 0.0128 - val_mae: 0.0921\n", "Epoch 500/500\n", "10/10 [==============================] - 0s 3ms/step - loss: 0.0140 - mae: 0.0940 - val_loss: 0.0132 - val_mae: 0.0925\n" ] } ], "source": [ "history = model.fit(x_train, y_train, epochs=500, batch_size=64,\n", " validation_data=(x_validate, y_validate))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Mc_CQu2_IvOP" }, "source": [ "### 3. Plot Metrics" ] }, { "cell_type": "code", "execution_count": 191, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 851 }, "colab_type": "code", "id": "SYHGswAJJgrC", "outputId": "bdc6e8f7-480d-4d3e-c20b-94776722360f" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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lgV3yVQWPDmPzVuz6e9///su70cFRBrc3AhPVjxghcS116qQUJSW0JptfS+55BKeeeaZeHOgyspKPv74Y4YPH05ZWRlDhgzhhBNO4He/+13K64uLi/n8888BuOOOOzjmmGM49dRT4yXBweY4DB06lP79+3PxxRezfft2li5dyoIFC7jxxhsZMGAA7733HmPHjo3fjBcvXszAgQPp168f48aNi2dCFxcX87vf/Y5BgwbRr18/3nrrrZT7am9lwXMqIETkLBF5W0Q2isivU5y/XkQ2iMgbIrJYRA53xgeISFhE1jvnfpjLfaajtBSWLIHkpNHly7Xiq6Jki9vWt7UqJR900EEMGzaMRYsWAVZ7+MEPfoCIcMcdd7BixQreeOMNXn75Zd54441m11m5ciWPPfYYa9asYeHChSxfvjx+7qKLLmL58uWsXbuW448/ngcffJCTTz6Z888/nzvvvJM1a9Zw5JFHxufX1tYyduxY/va3v7Fu3ToikQj33Xdf/Hz37t1ZtWoVZWVlac1YblnwpUuXNlsW/Pvf/z6XX345c+fOTbj2iiuuiJuYbrzxxuzf0GbImYAQET8wEzgb6AtcLiJ9k6atBoYYY74N/B2Y7oxvB0qMMScAZwEzRGTn9MFWIBCwXecKChrHjNHQV0XJllCo9Ssle81MXvPS448/zqBBgxg4cCDr169PMAcls2TJEi688EL23Xdfunbtyvnnnx8/9+9//5vhw4fTr18/Hn300WbLhbu8/fbb9OnTh2OOOQaAMWPG8Morr8TPX3TRRQAMHjyYysrKZtdpT2XBc6lBDAM2GmPeN8bUA48Bo70TjDEvGWO2O4evA72c8XeMMe86jz8GPgN65HCvGXHLgl9wgTU5uWU4CgtbT21WlL0VN7/I72+98jWjR49m8eLFrFq1iu3btzN48GA++OAD7rrrLhYvXswbb7zBueee22yZ70yMHTuWe+65h3Xr1vG73/1up9dxcTWBTOXC21NZ8FwKiMOAKs9xtTPWHFcCi5IHRWQYUAC8l+JcqYisEJEVW7Zs2cXtZsezz1rtwS3D8fOfa4MhRcmEm190222tVx25S5cujBw5knHjxsW/aW/bto399tuPAw44gE8//TRugmqOESNGMH/+fHbs2MHXX3/NU089FT/39ddfc8ghh9DQ0MCjjz4aH99///35+uuvm6x17LHH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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Draw a graph of the loss, which is the distance between\n", "# the predicted and actual values during training and validation.\n", "loss = history.history['loss']\n", "val_loss = history.history['val_loss']\n", "\n", "epochs = range(1, len(loss) + 1)\n", "\n", "plt.plot(epochs, loss, 'g.', label='Training loss')\n", "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n", "plt.title('Training and validation loss')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Loss')\n", "plt.legend()\n", "plt.show()\n", "\n", "# Exclude the first few epochs so the graph is easier to read\n", "SKIP = 100\n", "\n", "plt.clf()\n", "\n", "plt.plot(epochs[SKIP:], loss[SKIP:], 'g.', label='Training loss')\n", "plt.plot(epochs[SKIP:], val_loss[SKIP:], 'b.', label='Validation loss')\n", "plt.title('Training and validation loss')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Loss')\n", "plt.legend()\n", "plt.show()\n", "\n", "plt.clf()\n", "\n", "# Draw a graph of mean absolute error, which is another way of\n", "# measuring the amount of error in the prediction.\n", "mae = history.history['mae']\n", "val_mae = history.history['val_mae']\n", "\n", "plt.plot(epochs[SKIP:], mae[SKIP:], 'g.', label='Training MAE')\n", "plt.plot(epochs[SKIP:], val_mae[SKIP:], 'b.', label='Validation MAE')\n", "plt.title('Training and validation mean absolute error')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('MAE')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "f86dWOyZKmN9" }, "source": [ "### 4. Check against test set" ] }, { "cell_type": "code", "execution_count": 192, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 318 }, "colab_type": "code", "id": "lZfztKKyhLxX", "outputId": "7ed4e1c5-4d19-4d10-cd65-0cae30486734" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7/7 [==============================] - 0s 569us/step - loss: 0.0107 - mean_absolute_error: 0.0832\n" ] }, { "data": { "image/png": "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5rotuaDUj98w+huz8A3DMEoEE3zDMIwSwVw6hmEYJYJZ+IZhGCVC3hag2mOPPXS//fbLdTMMwzAKiieeeOI9VR2Sbl7eCv5+++3H+vXrc90MwzCMgkJEMvakNpeOYRhGiWCCbxiGUSKY4BuGYZQIeevDNwyjOGlubmbz5s1s3749100paAYPHszw4cMpLy/vemEfE3zDMAaUzZs3s/POO7PffvuRZhwdoxuoKg0NDWzevJmRI0d2vYKPuXQMwxhQtm/fTmVlpYl9HxARKisre/yUZIJfpESjMHu2ezeMfMPEvu/05hyaS6cIiUZh/HhoaoKKCli+HDwv160yDCPXmIVfhEQiTuxjMfceieS6RYaRfyxduhQR4R//6Hy4hnnz5vHpp592ukxn/O53v2PatGm9Xj+bmOAXIaGQs+yDQfceCuW6RYaRfyxevJixY8eyePHiTpfrq+DnEyb4RYjnOTfOL37RPXeO+fuNfCfbv9GPP/6Y1atXs3DhQu66y43AGYvFuOyyy/jKV77CwQcfzHXXXcd///d/s2XLFo499liOPfZYAHbaaafW7dxzzz2ce+65ADzwwAMceeSRjBkzhuOPP5633347O43NIubDL1I8r3t++974+6NR5yYKhSw2YPQ//RGTuv/++znxxBM54IADqKys5IknnmDdunW8+uqrPP3005SVlbFt2zZ23313fv3rX7NixQr22GOPTrc5duxY1q5di4hwyy23MHfuXH71q1/1raFZxgS/xEn199fXdy7mFhA2Bpp0Mam+/uYWL17MD3/4QwC+853vsHjxYl555RWmTJlCWZmTxd13371H29y8eTNnnXUWb731Fk1NTT3Kjx8oTPBLnFDI+frjcQgEYNEi98fKJOad/fnM8jf6g0RMKmFk9DUmtW3bNh577DE2bNiAiBCLxRARvvrVr3Zr/eR0yOQ8+EsuuYRLL72U0047jUgkQm1tbd8a2g+YD7+EyOQHTfx+43FoaXFivn27s/ZTyRQQTlj+V17p3i0eYGSLnsakuuKee+7h+9//Pq+99hqvvvoqb7zxBiNHjuSQQw5hwYIFtLS0AO7GALDzzjvzz3/+s3X9Pffck02bNhGPx7nvvvtav//www/Ze++9Abjtttv61sh+wiz8AqGv1nOyK+aoQJSfj6rngAPgfcawuPFh9mILi2KT2Rio4mgiRDTE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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Calculate and print the loss on our test dataset\n", "loss = model.evaluate(x_test, y_test)\n", "\n", "# Make predictions based on our test dataset\n", "predictions = model.predict(x_test)\n", "\n", "# Graph the predictions against the actual values\n", "plt.clf()\n", "plt.title('Comparison of predictions and actual values')\n", "plt.plot(x_test, y_test, 'b.', label='Actual')\n", "plt.plot(x_test, predictions, 'r.', label='Predicted')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [], "source": [ "# Save the trained model just in case we need it again later.\n", "model.save(\"model.h5\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## NumPy version\n", "\n", "Let's see how we can make predictions by hand. If we grab the weights from the layers, we can do the math ourselves." ] }, { "cell_type": "code", "execution_count": 209, "metadata": {}, "outputs": [], "source": [ "W1, b1 = model.layers[0].get_weights()\n", "W2, b2 = model.layers[1].get_weights()\n", "W3, b3 = model.layers[2].get_weights()" ] }, { "cell_type": "code", "execution_count": 210, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1, 16) (16,)\n", "(16, 16) (16,)\n", "(16, 1) (1,)\n" ] } ], "source": [ "print(W1.shape, b1.shape)\n", "print(W2.shape, b2.shape)\n", "print(W3.shape, b3.shape)" ] }, { "cell_type": "code", "execution_count": 211, "metadata": {}, "outputs": [], "source": [ "xs = x_test" ] }, { "cell_type": "code", "execution_count": 212, "metadata": {}, "outputs": [], "source": [ "# This is what the TF model does internally:\n", "ys = []\n", "for x in xs:\n", " x = np.array([x]) # x should be array\n", " h1 = x @ W1 + b1 # dense layer\n", " h1 = np.maximum(0, h1) # ReLU\n", " h2 = h1 @ W2 + b2 # dense layer\n", " h2 = np.maximum(0, h2) # ReLU\n", " h3 = h2 @ W3 + b3 # dense layer\n", " ys.append(h3)\n", "\n", "ys = np.stack(ys)" ] }, { "cell_type": "code", "execution_count": 213, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 213, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Are our predictions the same as TF's predictions?\n", "# This should print 0 if the results are close enough.\n", "np.sum(np.abs(ys - predictions) > 1e-6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Export the weights" ] }, { "cell_type": "code", "execution_count": 214, "metadata": {}, "outputs": [], "source": [ "# Note that we transpose W2. This makes the inner loop for the\n", "# matrix multiplication a little simpler.\n", "\n", "names = [\"W1_data\", \"b1_data\", \"W2_data\", \"b2_data\", \"W3_data\", \"b3_data\"]\n", "arrays = [W1, b1, W2.T, b2, W3, b3]" ] }, { "cell_type": "code", "execution_count": 217, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "const float W1_data[] PROGMEM = {\n", " -0.39788383f, 0.46116278f, 0.3715687f, -0.07777083f, -0.2472133f, 0.13155949f, 0.6120839f, -0.07711333f, 0.30813938f, 0.0954016f, 0.069017954f, 0.14382412f, 0.50789833f, 0.18803687f, -0.0057444884f, -0.5632218f\n", "};\n", "\n", "const float b1_data[] PROGMEM = {\n", " 0.0f, 0.47112474f, -1.0349379f, 0.0f, 0.0f, 0.018007103f, -0.6069822f, 0.0f, -0.4051202f, 0.33553293f, 0.78297186f, 0.13247779f, 0.08387113f, -0.1520639f, 0.3705848f, 0.0f\n", "};\n", "\n", "const float W2_data[] PROGMEM = {\n", " 0.008752942f, 0.10046681f, -0.5594067f, -0.38656723f, 0.026203513f, 0.3809035f, -0.27524522f, 0.22883019f, -0.54360247f, 0.30872577f, 0.2096457f, -0.2986594f, 0.16710472f, 0.08122665f, 0.49408376f, 0.26714543f, -0.04890293f, 0.23022875f, 1.0559002f, -0.13226247f, 0.36876526f, -0.4758394f, 0.014797875f, 0.19773671f, 0.14072222f, 0.09920495f, -0.28671607f, -0.2952227f, 0.22445521f, -0.1557873f, -0.44671398f, -0.26854938f, -0.079212666f, -0.061804853f, 0.20164743f, 0.033375174f, 0.41258594f, 0.37628275f, -0.47459936f, -0.0540981f, -0.0992337f, 0.17203633f, 0.42368558f, -0.11045875f, -0.6382502f, 0.07229512f, 0.65322745f, -0.00450325f, 0.42651084f, 0.14322363f, -0.06504886f, 0.23714831f, -0.09616521f, -0.012079281f, -0.03893903f, -0.12964973f, -0.080721244f, 0.18545523f, 0.5673849f, 0.35440624f, 0.40770048f, 0.2963744f, 0.23040722f, -0.40284377f, 0.1633878f, -0.17845818f, 0.41858193f, 0.03324738f, -0.07839513f, -0.24564163f, -0.41076794f, -0.011841029f, 0.07035999f, 0.014453096f, -0.09521273f, -0.38453805f, 0.059534963f, 0.31901756f, -0.0018180311f, -0.2622439f, -0.13349813f, 0.4687281f, -0.9387802f, 0.04901907f, 0.2085382f, -0.303582f, -0.048075523f, 0.21998444f, -0.09892515f, 0.29634193f, -0.03009107f, 0.33730397f, 0.17282778f, 0.010907181f, 0.5294982f, 0.3438234f, -0.05536762f, -0.33797836f, -0.06396872f, -0.40171507f, 0.011573434f, -0.33963677f, 0.28419265f, 0.089041024f, -0.14800817f, 0.017468125f, -0.1677407f, -0.3162433f, -0.09961668f, -0.17236248f, -0.40889624f, -0.042404294f, 0.087521404f, 0.3853618f, -0.17944188f, 0.18648282f, -0.2124529f, -0.0745753f, -0.18397354f, -0.084926695f, 0.1374913f, 0.36279848f, -0.1267633f, -0.06970617f, -0.26084384f, -0.5170918f, 0.5406603f, -0.16587976f, -0.037564486f, 0.29767224f, -0.7600049f, -0.38397318f, -0.35034558f, 0.2557612f, -0.45015487f, 0.15666643f, -0.41905773f, -0.4432149f, 0.5227524f, 0.051928133f, 0.06536075f, -0.20488113f, 0.93944883f, 0.22275141f, 0.21884283f, -0.20963274f, -0.28421858f, -0.33921123f, -0.4297228f, 0.33329493f, -0.3863936f, 0.3075181f, 0.06726721f, -0.4954743f, 0.4366714f, 0.081145726f, -0.6088066f, 0.36570713f, 0.49990937f, 0.12871823f, -0.27020234f, 0.3055169f, -0.4178655f, 0.13673994f, 0.3320376f, -0.24873519f, 0.14424029f, -0.2923328f, -0.06564156f, 0.30418956f, 0.25396284f, -0.062110756f, 0.34823626f, -0.35044038f, 0.22929129f, -0.26139465f, 0.042224765f, -0.29030794f, -0.11388543f, -0.22762935f, 0.366491f, 0.4184937f, -0.2679914f, 0.05284396f, 0.31304586f, 0.46836898f, 0.4662841f, -0.3168484f, -0.62202334f, 0.22289956f, 0.25762904f, -0.4111679f, 0.042361856f, 0.32926273f, 0.292555f, 0.2597312f, 0.25294778f, 0.26584086f, 0.39530355f, -0.18725905f, 0.4278392f, -0.42083043f, -0.662066f, 0.020050874f, 0.07275363f, 0.14569889f, -0.2032377f, 0.26153424f, 0.04289168f, 0.28540748f, -0.011160894f, 0.08113453f, -0.3503822f, 0.08603693f, 0.10026496f, -0.36113915f, -0.42191446f, -0.19292475f, 0.059979536f, -0.46330738f, -0.13543011f, -0.031109314f, -0.04798102f, 0.11116436f, -0.19061677f, 0.42657918f, -0.9026991f, -0.2057866f, 0.3852652f, 0.109483086f, -0.5143333f, 0.044659853f, -0.23391826f, 0.013950172f, 0.53942573f, 0.25642928f, -0.25812334f, -0.5175727f, 0.9448253f, -0.22992402f, -0.33865362f, 0.23385412f, -0.14182074f, 0.1301175f, 0.42415115f, 0.24237347f, 0.28174022f, 0.13199261f, -0.28549045f, -0.055565543f, -0.034443192f, -0.18449251f, -0.09318607f, -0.29925725f, 0.21919051f, 0.22934195f\n", "};\n", "\n", "const float b2_data[] PROGMEM = {\n", " 0.26377532f, -0.45455533f, 0.42449933f, 0.27063936f, -0.005065765f, 0.332522f, 0.0f, 0.2209661f, 0.55025387f, 0.45371056f, 0.14686571f, 0.46175304f, -0.32032987f, 0.14935441f, 0.51105094f, 0.2417469f\n", "};\n", "\n", "const float W3_data[] PROGMEM = {\n", " 0.8117f, 0.62595254f, -0.5416186f, -0.17542624f, 0.09408076f, -0.8181666f, -0.38303018f, 0.4873742f, 0.7816993f, -0.7960945f, -0.060853384f, -0.9514488f, 0.5558745f, 0.59897417f, 0.7961271f, -0.16341376f\n", "};\n", "\n", "const float b3_data[] PROGMEM = {\n", " -0.31720653f\n", "};\n", "\n" ] } ], "source": [ "# Copy this into model_data.cpp:\n", "\n", "for name, array in zip(names, arrays):\n", " print(\"const float %s[] PROGMEM = {\" % name)\n", " print(\" \", \", \".join([str(x) + \"f\" for x in array.flatten()]))\n", " print(\"};\\n\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "train_hello_world_model.ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 1 }