From 52940efdb94976c50d83aa75e1961757a0dd3c41 Mon Sep 17 00:00:00 2001 From: Hannes Signer Date: Wed, 26 Mar 2025 13:35:17 +0100 Subject: [PATCH] adapt notebook for new dataset --- src/POET_Training.ipynb | 522 +++++++++++----------------------------- src/preprocessing.py | 169 +++++++------ 2 files changed, 233 insertions(+), 458 deletions(-) diff --git a/src/POET_Training.ipynb b/src/POET_Training.ipynb index 0598b22..a9df098 100644 --- a/src/POET_Training.ipynb +++ b/src/POET_Training.ipynb @@ -54,7 +54,17 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2025-03-26 12:31:31.830359: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n", + "2025-03-26 12:31:31.850199: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", + "To enable the following instructions: SSE4.1 SSE4.2 AVX AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n" + ] + } + ], "source": [ "from preprocessing import *\n", "import numpy as np\n", @@ -99,8 +109,8 @@ "outputs": [], "source": [ "# load data and differentiate between design and results (before and after a simulation step)\n", - "data_file = h5py.File(\"../datasets/barite_50_4_corner.h5\")\n", - "# data_file = h5py.File(\"../datasets/Barite_4c_mdl.h5\")\n", + "# data_file = h5py.File(\"../datasets/barite_50_4_corner.h5\")\n", + "data_file = h5py.File(\"../datasets/Barite_4c_mdl.h5\")\n", "\n", "design = data_file[\"design\"]\n", "results = data_file[\"result\"]\n", @@ -115,220 +125,6 @@ "data_file.close()" ] }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
HOChargeBaClSSrBariteCelestite
0111.01243455.508192-7.779554e-092.041069e-024.082138e-024.938300e-040.0004940.0010001.0
1111.01243455.508427-4.736083e-091.094567e-022.189133e-025.525578e-040.0005530.0010001.0
2111.01243455.508691-1.311169e-092.943745e-045.887491e-046.186462e-040.0006190.0010001.0
3111.01243455.508698-1.220023e-091.091776e-052.183551e-056.204050e-040.0006200.0010001.0
4111.01243455.508699-1.216643e-094.049176e-078.098352e-076.204702e-040.0006200.0010001.0
..............................
629995111.01243455.5062171.725154e-083.553636e-021.453447e-011.536968e-070.0371361.0092800.0
629996111.01243455.5062176.831420e-094.912662e-021.569033e-011.268188e-070.0293251.0035150.0
629997111.01243455.506217-5.813822e-096.575386e-021.710031e-011.085205e-070.0197481.0020060.0
629998111.01243455.506217-2.301308e-088.714450e-021.891176e-018.563122e-080.0074141.0015370.0
629999111.01243455.506217-3.077711e-089.679703e-021.972886e-017.278077e-080.0018471.0012920.0
\n", - "

630000 rows × 9 columns

\n", - "
" - ], - "text/plain": [ - " H O Charge Ba Cl \\\n", - "0 111.012434 55.508192 -7.779554e-09 2.041069e-02 4.082138e-02 \n", - "1 111.012434 55.508427 -4.736083e-09 1.094567e-02 2.189133e-02 \n", - "2 111.012434 55.508691 -1.311169e-09 2.943745e-04 5.887491e-04 \n", - "3 111.012434 55.508698 -1.220023e-09 1.091776e-05 2.183551e-05 \n", - "4 111.012434 55.508699 -1.216643e-09 4.049176e-07 8.098352e-07 \n", - "... ... ... ... ... ... \n", - "629995 111.012434 55.506217 1.725154e-08 3.553636e-02 1.453447e-01 \n", - "629996 111.012434 55.506217 6.831420e-09 4.912662e-02 1.569033e-01 \n", - "629997 111.012434 55.506217 -5.813822e-09 6.575386e-02 1.710031e-01 \n", - "629998 111.012434 55.506217 -2.301308e-08 8.714450e-02 1.891176e-01 \n", - "629999 111.012434 55.506217 -3.077711e-08 9.679703e-02 1.972886e-01 \n", - "\n", - " S Sr Barite Celestite \n", - "0 4.938300e-04 0.000494 0.001000 1.0 \n", - "1 5.525578e-04 0.000553 0.001000 1.0 \n", - "2 6.186462e-04 0.000619 0.001000 1.0 \n", - "3 6.204050e-04 0.000620 0.001000 1.0 \n", - "4 6.204702e-04 0.000620 0.001000 1.0 \n", - "... ... ... ... ... \n", - "629995 1.536968e-07 0.037136 1.009280 0.0 \n", - "629996 1.268188e-07 0.029325 1.003515 0.0 \n", - "629997 1.085205e-07 0.019748 1.002006 0.0 \n", - "629998 8.563122e-08 0.007414 1.001537 0.0 \n", - "629999 7.278077e-08 0.001847 1.001292 0.0 \n", - "\n", - "[630000 rows x 9 columns]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_design" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -354,55 +150,55 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [], + "source": [ + "df_design.drop(\"Charge\", axis=1, inplace=True, errors=\"ignore\")\n", + "df_results.drop(\"Charge\", axis=1, inplace=True, errors=\"ignore\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Index(['H', 'O', 'Ba', 'Cl', 'S', 'Sr', 'Barite', 'Celestite'], dtype='object')\n", + "Index(['O', 'Ba', 'S', 'Sr', 'Barite', 'Celestite'], dtype='object')\n" + ] + } + ], "source": [ "species_columns = [\"H\", \"O\", \"Ba\", \"Cl\", \"S\", \"Sr\", \"Barite\", \"Celestite\"]\n", "\n", - "species_columns_input = [\"H\", \"O\", \"Ba\", \"Cl\", \"S\", \"Sr\", \"Barite\", \"Celestite\"]\n", - "species_columns_output = [\"H\", \"O\", \"Ba\", \"Cl\", \"S\", \"Sr\", \"Barite\", \"Celestite\"]\n", - "\n", - "# species_columns_output = [\"O\", \"Ba\", \"S\", \"Sr\", \"Barite\", \"Celestite\"]" + "print(df_design.columns)\n", + "print(df_results.columns)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/hannessigner/miniconda3/envs/ai/lib/python3.11/site-packages/sklearn/base.py:1473: ConvergenceWarning: Number of distinct clusters (1) found smaller than n_clusters (2). Possibly due to duplicate points in X.\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Amount class 0 before: 0.9521309523809524\n", - "Amount class 1 before: 0.04786904761904762\n", - "No sampling selected. Output equals input.\n" - ] - } - ], + "outputs": [], "source": [ "preprocess = preprocessing() #np.log1p, np.expm1\n", - "X, y = preprocess.cluster(df_design[species_columns_input], df_results[species_columns_output])\n", + "# X, y = preprocess.cluster_kmeans(df_design[df_design.columns], df_design[df_results.columns], \"Cl\")\n", + "X, y = preprocess.cluster_manual(df_design[df_design.columns], df_results[df_results.columns], \"Cl\", 1E-10)\n", "\n", "# optional: perform log transformation\n", "# X, y = preprocess.funcTranform(X, y)\n", "\n", "X_train, X_test, y_train, y_test = preprocess.split(X, y, ratio=0.2)\n", - "X_train, y_train = preprocess.balancer(X_train, y_train, strategy=\"off\")\n", - "X_train, y_train = preprocess.class_selection(X_train, y_train, class_label=0)\n", - "preprocess.scale_fit(X_train, y_train, scaling=\"global\", type=\"standard\")\n", - "X_train, X_test, y_train, y_test = preprocess.scale_transform(\n", - " X_train, X_test, y_train, y_test\n", - ")\n", + "# X_train, y_train = preprocess.balancer(X_train, y_train, strategy=\"off\")\n", + "X_train, y_train = preprocess.class_selection(X_train, y_train, class_label=1.0)\n", + "# preprocess.scale_fit(X_train, y_train, scaling=\"global\", type=\"standard\")\n", + "# X_train, X_test, y_train, y_test = preprocess.scale_transform(\n", + "# X_train, X_test, y_train, y_test\n", + "# )\n", "X_train, X_val, y_train, y_val = preprocess.split(X_train, y_train, ratio=0.1)" ] }, @@ -420,7 +216,7 @@ "outputs": [ { "data": { - "image/png": "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7NhhlC9f3u7znxkpX6/23jtmrl+/bvj7+xuSDIvFYly+fDlNm+TrdPd6m9Hrl5H3n73X8pQpUwxvb2+Hx9WoUcM4dOiQ3XNL+XrdtWuX3ddR/fr101zHsmXLOhyzaNGixqJFi+yOefe6MX78eIfv83feeSdNH1lZr7IqK6+b9NqnrF+wYIHh6+trd/4Wi8WYOXOmYRiGcf78eaNp06am59q2bVsjPj7edE5JSUnGG2+8YXh6ejq8Zs2aNTPOnTtnt49ffvnF8PPzS/e6p3wfpLx+GT0m2ZkzZxyec/I1GjNmjOm9IOW1/u677xy+X/r162fcvn3bbj/btm0zSpUqlaX3KQAAAJBZXgIAAAAAODRv3jydOXNGktSnTx/TdklJSWrevLm6dOmi+vXrq2zZsvLw8NCZM2e0evVqzZo1S3FxcXriiSdUuXJlNW/e3OG4b7zxhnbv3q22bdtqxIgRCgkJUWxsrLZs2ZLunO+55x7t27dP27Zt0/DhwyVJEyZMUK9evVK1uzvde2xsrNq1a2f75OdDDz2kgQMHqnLlyipatKj+/vtv/ec//9G6des0c+ZMSdI333yT7nycqWrVqgoJCdHhw4d1/fp17d69W40bN87w8d98841mzZolSbZPutatW1clSpRQbGysTpw4oc2bN2vp0qWpjps4caJee+01DRs2TNu3b1f58uX1+++/p+k/eWuTu02dOlW7d+9WgwYNNHLkSNWtW1cJCQnavHlzltLuL1++XNu2bdM999yj119/Xc2aNVNSUpLWrl2rjz76SNeuXdPUqVMVFBSkf//735nuPyP27dun8+fP6+GHH5YkPfvss3ruueey1eetW7f00EMPadeuXZKkevXq6eWXX1adOnUUFxenlStX6tNPP1VMTIz+7//+Tx4eHho9erTDPvv06WN7L/Tt21fly5fXxYsXNXPmTC1cuFBXr17VwIEDtX//fnl6emZqvn/88Ydu376tJUuWaMyYMZKkWbNmqWnTprY2xYsXt3199epVtW3b1pbVpXXr1nr22WcVEhKiqKgoLV26VDNmzFBcXJwGDx4sHx8fPfroo6bjR0dHq3fv3rpy5YpefPFFdevWTSVLllR4eHi6nzh3loCAAD3wwAP6/fffZRiG1q1bp0ceeSRDx2bm+r322msOX293v48mTJigt99+W5JUsWJFPf/886pdu7bKly+viIgI/fbbb/ryyy919OhRPfjgg9qxY4fKlCljOtdhw4Zp9+7d6t27t20dj4qK0t9//21rs3r1anXu3FkJCQny9/fXiBEj1KJFCwUHBys+Pl4bNmzQ1KlTdenSJT366KNauXKl6Sf0k6/F+vXr1bhxYz333HOqU6eOkpKStHr1ak2aNEnR0dEaN26cOnTooFatWtmOy+56lVfs3btX8+fPV+nSpTVq1Cg1a9ZMFotFq1at0sSJExUbG6tnnnlGrVq10hNPPKHdu3fr2WefVe/evVWqVCkdO3ZMEyZM0N69e7V27Vp9+OGHttfE3UaMGGG7r91333165plnFBISotKlS+vcuXP6+eef9e2332rr1q3q0qWLNm3aJF9fX9vxkZGRGjhwoGJiYlSkSBE99dRT6tSpk+01denSJe3evVsrVqxIleGmadOm2rdvn8P3gCT5+fml+v7ixYtq0aKFzp07Jw8PD/Xr1089evRQlSpVVKhQIe3du1fTp0/X7t27NWHCBHl7e9v6t2fPnj36/vvv5efnp7Fjx6pt27by9PTUtm3b9MEHHyg8PFwLFixQ0aJFbffQZAkJCXrkkUcUEREhDw8PDR06VN27d1e5cuVUuHBhRUREaN++fVq5cqWOHz+e3tMOAAAApC+3oywAAAAAIDek/ER8kyZNjH379qV67Ny501iyZInx1FNPGV5eXoYko2rVqsapU6dM+zx8+LDDMY8dO2aUKVPGkGR07NjRbpuU2Q0kGc8//7zDPs0yOWS0/m7JmQa8vb2N3377zW4bq9VqvPLKK7Z+N2zYkG6/9mQ1k4NhGMbAgQNtx86dOzdNfXKdvU8JJ2cIqFixonH9+nXTMRITE20ZFlLKTAaEuz+h27t3byMhIcG0fWYyOUgyatasaURERKRpd+zYMaN06dKGJKNQoULGkSNHsnUejq5nenO+W3qZHN555x1bfbdu3ex+anjv3r1GsWLFbOd39OjRNG1SfpLd09PTWLZsmd35pHwt/fLLL+nO30zK13NYWJhpu2HDhtnajRgxwu6nq1etWmUULlzYkGQUK1bMiIqKStMm+flLfr9m9X2YUlYzORiGYbz11lu2YydOnJim3iyTQ7KMXr+Mvt42btxoy37w5JNPmn76fOPGjUaRIkUMScZTTz2Vpj7l61WS8dFHH5mOeePGDdv7rnHjxnYzWhiGYVy6dMkICQmxvYeTkpJS1d+9bgwcONBuxprff/891Sfs7cnM+zyrXJnJQZLRoEED4+rVq2na/PTTT7Y2pUuXNry8vIyVK1emaRcVFWXLdFKmTBm713L+/PmpXld3PyfJfv75Z1smoQkTJqSqmzVrlq2Pn3/+2eH5R0ZGpinL6HsgWXLGpaCgIGPbtm122yQkJBiPPvqoba20t+amvNZlypQxjh07Zne+NWvWtLVbvXp1qvrVq1fb6iZPnuxw3vbOHQAAAMgsD8chEAAAAABQ8G3fvl1169ZN9WjUqJF69eqlb775RgEBAZo4caK2bt2q4OBg035CQkIcjlOtWjW98cYbku582vfatWsO21euXFmTJ0/O/All0fnz522fYh09erS6dOlit53FYtEHH3ygcuXKSZL+85//5Ngck5UqVcr29ZUrVzJ17IULFyRJTZo0UUBAgGk7T09PFStWLEvzs8ff318zZ86Ul5fzkip+8803KlmyZJryatWq6eOPP5Z05xO206dPd9qYrpSQkKDPP/9c0p3sALNnz1ahQoXStKtbt64mTZpkO2batGkO+3322WfVvXt3u3VvvfWW7es1a9ZkceYZExERoblz50qSqlSpos8++yzVJ7qTdejQQa+++qokKSoqKs2npu/26quv6oEHHnD+hDMhO+9JV5g4caKsVquqVq2qGTNm2H0dSVKLFi1s2SD++9//Ki4uzrTPli1b6rXXXjOt/+qrr3T58mV5eHjo+++/T3VNUipdurQ++eQTSdLhw4e1du1a0z5Lly6tr7/+2m6GkU6dOqlJkyaSXP/azU2hoaGpsqEke+SRR2yZKC5fvqyRI0fqwQcfTNMuMDBQQ4cOlXQnm8KhQ4fStBk/frykO5lVxo0bJw8P+78y7dOnj/r27Ssp7b0v+d4iSR07dnR4TiVKlHBYn57t27dr+fLlkqQPP/zQ9jq4m5eXl2bMmKHChQsrISFBoaGhDvv9+OOPVa1aNbvz/frrr23fT506NVV9Tp47AAAAIEkEOQAAAABAOq5evaqZM2dq3rx5mTouIiJCx44d04EDB7R//37t379f/v7+kiTDMLR7926Hxz/22GNZ2sYgq5YtW6bbt29LkgYOHOiwbaFChdSyZUtJ0oYNG1w+t7slX0dJunHjRqaOveeeeyRJa9eu1eHDh506L0d69OihoKAgp/V37733pkpPf7cBAwYoMDBQkrRixQqnjetKu3btUkREhCSpX79+dgM4kg0ePNj2OrCXhj+lIUOGmNbVqlXLlgb+2LFjmZ1ypoSFhdneY8OGDZO3t7dp2+eff972dXrnl/wH3NyUnfeks0VHR9uuWb9+/UwDHJIlbxdx69Ytbd++3bSdo9eRJC1cuFDSnQCqGjVqZGhMyfEa+uijj6baEuFuzZo1k3Rnq4Tr1687HDM/qlOnjho0aGC3zmKxpKp7/PHHTftp1KiR7eu7t0s4fPiwDhw4IOnOfTc9yc/dmTNnbNvOSP+7t0iuD/5Lfq15eHhowIABDtuWKFFCdevWleT4tRYYGKj+/fub1rdu3Vr33nuvJOnPP/9MtR1OynP/5ptvZBhG+icBAAAAZANBDgAAAADcXtu2bWUYRqpHUlKSIiIitGLFCnXu3FknTpzQiy++qGHDhjnsa9myZerZs6eKFy+u0qVLq0aNGqpTp44tQ8SIESNsbSMjIx321bBhQ6ecX0Zt2bLF9nWtWrVksVgcPpL/yJLyE5w55ebNm7avk/+Qn1FPP/20pDvBK/Xq1VOfPn00Y8YM7dmzJ9UfbZzN2c9nixYtHNYXLlzYNuaRI0cUHx/v1PFdYe/evbavk4NozBQpUsT2h8vDhw87PL9atWqZ1lksFlvwiav/OJ+Z86tQoYIqVaokSdqzZ49pOz8/v3SzyOSE7LwnnW3nzp1KTEyUdOdT7umtZT169LAd62g9c/QeTkpKsgVIbN26Nd0xixYtmqExHb12pdSfis/t4BJXSP6jupmUGR7uu+++DLW7+zqlvPc999xz6T53L7zwgq19yueud+/etuwdo0ePVoMGDTR27FitXLnS6c9N8pytVquKFi2a7px37NiRZr53a9SoUbqBlc2bN5ckxcTEpAoKe+CBB2zXf9q0aQoJCdEbb7yhX375Jd2fdQAAAICsIMgBAAAAAOzw8PBQyZIl9fDDD2v58uXq16+fJGn27NmaM2dOmvYJCQkaMGCAevbsqWXLlikqKirdMWJjYx3WO/NT/xlx+fLlLB3nKL27qyR/2l/K/HUaOHCgPvjgAxUpUkS3b9/W4sWL9dxzz6lBgwYKCgpSz5499cMPPzg94MHZz2eZMmXSbVO2bFlJdzKH5IUtBNKTco7Jc3ckecsU6U7QihlHn4SXZEtN78ogFynr5+foubOXxj83ZOc96WxZXcskx+uyo/O6du2aLbDCmWNm9LUruf71mxuSs6yYSXn+jq6Vo+vkrNdLYGCgli9fbgs62rNnj8aPH69OnTqpePHiaty4sd59911dvHgxy+Nld86OXmuZuadIqQM1vby89Msvv6hp06aS7mTF+fDDD9WjRw+VKlVKtWrV0htvvKETJ05kad4AAADA3Zy3ESgAAAAAFGBvvfWWFixYIEn6+uuvNXjw4FT1H3zwgX788UdJUu3atfXSSy+pefPmqlixovz8/Gzp0levXm3brzq9dM729mB3pZR/oNu+fbvDVPq5LWVKeUef3jXz+uuva+jQofrxxx+1evVqbdy4UZcuXdKNGze0bNkyLVu2TO+//76WLl2q4OBgp8zZ2c+nxWJJt03K11hG2ue2/DbfzHLF+eX0OmEmu+9JZ0q5lr399tsOU/DfrUKFCqZ1jq51yjE7d+6sjz76KMNj5pVAFXeV8rmbMWOGw22A7lalSpVU3zdu3FgHDx7U8uXL9csvv+ivv/7SwYMHZbVatXPnTu3cuVOTJk3SV1995XB7jYzOuUSJElqzZk2Gj3OUqSG795SqVatq69atCgsL09KlS7V+/Xrt2bNHiYmJOnTokA4dOqTJkyfrvffe0+jRozM8ZwAAAMAeghwAAAAAIANS/tHOXur4GTNmSLrzS/4tW7aYfvo0L3+aPjnNtiR5e3urTp06uTgbc8eOHdPRo0clScWKFVP9+vWz1E/p0qU1cuRIjRw50tbvihUr9NVXX2n//v3au3ev+vfvnyqVeV6SkU8DX7p0yfb13Z9CT/5ks9VqddhHTExMFmaXNSVLlrR9nZFtUFK2ye3sARlx9/mltxVB8vml3JIgL7p+/bo2btwo6c4fPtu0aZOr80m5lsXGxubIWlaiRAlZLBYZhqGIiIg8u34irZSvl8TExGw/d56enurevbu6d+8uSYqKitK6des0b948/fjjj4qNjdXQoUPVoEGDLI9VqlQpHT58WFevXlWlSpUUEBCQrTlLmb+nmK1L7du3V/v27SXdef/99ddf+umnn/Ttt9/q9u3bev3111WnTh116dIl23MGAACA+2K7CgAAAADIgJSf9Lw7JfmVK1d0/vx5SVKvXr0cptfeunWrayZoIjOfFm/cuLHt699++80V03GKTz75xPb1I488kioNeXZUr15dI0eO1Pbt21W3bl1Jd56v48ePp2qXVzIMbN682WH97du3tWvXLklSzZo15ePjk6q+aNGiku6k2Xfk0KFDDuudeT3q1atn+3rTpk0O28bHx2vnzp2S7J9fXpSZ8zt37pzOnDkjSVkO5MkpX375pS0YpkOHDrkelNGwYUPbupBTa1mhQoVsz++uXbsyFKSTE/LKepWXufreV6xYMds2SBMnTpR0Z8uM+fPnp2qXlfu1YRhasWKFU+a5c+dO3b5922Gb5KA/Pz8/VatWLd0+fX199dBDD+k///mPZs+ebSufN29etuYKAAAAEOQAAAAAABmQ8tP8d29fkDLowdGn3m/cuKFvv/3W+ZNzIOUffm/duuWwba9evWzp2KdOnaobN264dG5ZsXTpUn311VeS7uwB/q9//cvpY3h7e6tdu3a27yMiIlLVJ1/T9K6nqx06dEh//fWXaf2PP/6o69evS5IefvjhNPXJf6CKjo52GMjw3//+1+E8MvMaS0/Dhg1tn6pesGCBw8wn//3vfxUdHS3J/vnlRe3bt7eliw8NDXX4B8UvvvjC9nVePr/t27dr7Nixtu9Tfp1bgoKCbO/hQ4cO2bYacrVHHnlE0p3sKMl/zM5teWW9ysvq169vWw9XrFihbdu2uWyslO9ls3uLlP7zlfxak6RJkyYpISEh23O7fv26fvrpJ9P6DRs22O4VHTt2lJdX5hIEOzp3AAAAILMIcgAAAACAdMTGxqb6Y3rPnj1T1ZcqVcqWKn/p0qWp0jkni4+P16BBg3L8F/v33HOP7esjR444bFulShUNGzZMknT+/Hn17dvX9kdyM6tWrXL4h3ZniYuL06RJk/TII4/Y9gT/9NNP0+yHnhGzZ892+AekuLg42x7nHh4eacZIvqaXL19WVFRUpsd3pqefflpXr15NU37q1CnbnudeXl567rnn0rTp0KGD7etJkybZ7X/58uWaPn26wzmUKFFC3t7ektJ/jaWnUKFCtu1Drl+/ruHDh6fJnCJJBw4c0BtvvGE75oUXXsjWuDmlVKlSGjRokCTpxIkTeuWVV+y2W7NmjT7++GNJdz4FPnz48BybY0YlJibqm2++Ubt27Wzvp1GjRql169a5PLM7xo0bZ/tk/NNPP53uOhUeHq6ZM2dma8wXX3zRtiXJ9OnT9fnnnztsHxMTo08//TTdLWOyIy+tV3mVxWLRO++8I+lOZoR+/fqlm8Hm77//TpOJYfny5bbsK2ZSZoq4OxNCZu7XrVu31oMPPijpTuaQYcOGObyvWa1WLVy4UAcPHnTY72uvvaaTJ0+mKb969apGjBhh+/6ll15KVb9u3bp0r5mjcwcAAAAyK3MhtwAAAABQAMXExGj//v2pyqxWq65du6bt27drxowZti0LKlSooP/7v/9L1dbDw0NDhgzRp59+qosXL6p58+Z6/fXXVb9+fXl4eGjnzp367LPPdPjwYbVu3Vrr16/PsXOrUKGCqlatqhMnTmjmzJmqU6eOmjZtavvEaKFChVJlppgyZYp27typnTt3atWqVapZs6ZGjBihVq1aqXTp0oqLi1N4eLi2bdumRYsW6dixY/r666/1wAMPZGuely9fTvUc3Lp1S1FRUTp58qS2bNmin3/+2fbHfC8vL73zzju2P4Zn1rBhwzRq1Ch1795drVq1UkhIiAIDA3X9+nUdPHhQX331lfbt2ydJevTRR1WmTJlUx7dt21YzZ86U1WrVk08+qZdffllly5a1/UG1TJkytq0gXKlZs2baunWrGjRooNdff13NmjVTUlKS1q1bpw8//NB2vf71r3+pZs2aaY7v3LmzQkJCdOTIEc2ZM0dxcXF68sknVbp0aZ0/f16LFi3S7Nmz1aJFC23YsMF0Hl5eXnrggQe0evVqLV26VFOnTlW7du1SbdtSvXr1DJ/XG2+8ocWLF2vXrl1aunSpmjZtqpdfflm1a9dWXFyc/vzzT02ePNmWxWHixImZ6j+3ffzxx/rzzz919uxZffHFFzp48KCeffZZVa9eXVFRUVq2bJmmT59u+2T2f/7zHwUGBub4PKOiolK9JxMSEhQVFaWzZ89q69atWrx4sc6dO2erf+655/TRRx/l+DzNtG7dWu+9957efPNNRUVFqW3bturfv7969eqlqlWrysPDQ5GRkdq3b59+//13hYWFqXnz5nryySezPGZgYKAWLFigTp066fbt23rhhRc0f/58Pf7446pbt658fX0VFRWlv//+W+vWrdOyZcsUHR2tF154wWnb7twtr6xXed2gQYO0fv16ffXVVzpz5owaNWqkwYMHq3PnzqpUqZKsVqsuX76s3bt367ffftOmTZs0cOBADRgwwNbH/Pnz9d1336l169Z6+OGHVa9ePZUuXVpWq1Xh4eFatGiR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", + "image/png": "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TAcOHNCaNWu0fft29erVSz179jSPsWDBAv34449q0qSJ2rRpoxo1aqhIkSKKj4/XxYsXtXTpUgUHB0t6mCT14osvWsVQp04d+fj4KCoqSp999pmKFi2qatWqmavZ5MmTxyrh4scff9QTTzyh8+fPKzg4WNu3b9frr7+uJ554QgULFtSdO3d07tw57dixQ0uXLtWlS5e0ceNGValSxeY5qFWrlo4dO6Z69epp+PDhCgoKkru7u3bv3q1PP/1Uf/31lySpT58+Vsl4kvTrr79q3Lhxql+/vp555hnVrl1bAQEBcnNz09WrV7V27VpzYqanp6f+9a9/pfMVAwAAALIxAwAAAADgFCdOnDDatWtnSErRo2HDhkZoaGiicQIDAw1JRlBQUJpjmT17dorjkGSYTCajRYsWxq5du5IdO2GfPn362G1L7tGuXTvj1q1bifa/d++eUaNGDbv7zZ4929w3JCTE5nZ7zp49a+4/evToZNsnTpxomEwmu7G8/fbbRnx8vN359u3bZ/j5+dndv0GDBkZERESS59MwDGPz5s2Gh4eH3XEsjR492rz97NmzNseLiIgwmjZtmuTr4+HhYXzyySd2j61Pnz4257fF0e/nkJCQJPv++eefRrVq1ZI8vjx58hhz5861O0ZQUJAhyQgMDExzzI+yfL+m9FG/fn1j/fr1yY6d3DlO6flL7jPyqFmzZhn58uVL0bE888wzifZPyfv1UTt37jTKli2bojnz5ctnxMbGWu2fmutGcvGl5nqVVpbx2rtGPCq5/ikdL6Wf85Sc0/j4eOM///mP4eXllaLXrn///nZjSepRtGhRm/dVwzCMCRMm2N3P1mfnypUrxtNPP52ied3d3Y1t27YlGsPyXP/3v/81cuXKZXeMLl26GA8ePEg0huX7MLn3++LFi5N8rQAAAICcjsoUAAAAAOAkFSpU0Jo1a7Rv3z4tXbpUmzdv1rlz53T9+nXFx8erYMGCqlixoho1aqTu3burTp06mR6jyWRS3rx5lT9/fhUuXFg1atRQ3bp11alTpzQt6/GokydPKiQkRCEhITp27JjCwsIUERGhXLlyqUSJEqpfv7569+6tdu3a2dw/d+7cCg0N1RdffKE1a9bo1KlTun37doaW6rdn5MiRatSokb766itt27ZNYWFhKlCggBo2bKi3335brVu3TnL/2rVr6+DBg/r0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tHtFSYpaoDNFUfOHpI5u3brlrrvuym233ZaKioq8/fbbSZLevXtn1KhR6dq1a4ucq5gCAAAAAAAAAGjTunbtmrFjx35s5ymmAAAAAAAAAKD9K/y/pyXi0myeeuqpVFVV5fjjj8/QoUP3uvbVV1/N888/n379+mX8+PHNmodiCgAAAAAAAACg1b311luZOHFi+vXrl4qKikbX9+vXLxdccEGqqqryxhtvpHfv3s2WS3GzRQIAAAAAAACAtqzQAg/N5ic/+Un+8pe/5Ac/+EEOOeSQRtcfcsghuf3227N169b89Kc/bdZcFFMAAAAAAAAAQBuwbdu2zJo1K4MGDUpJSUl69+6dqVOnpqqqap9jLV68OGeeeWa6d++erl27Zvjw4bn99tuzY8eOemvXrVuXoqKiRp+pU6futu9nP/vZXtdffPHF+5TzsmXL0qtXr5x//vlN3nPuuefmiCOOyOLFi/fprMa45gMAAAAAAACADqGoDXeS2LZtW84444yUl5fnqKOOynnnnZd169Zl7ty5KSsry4oVKzJgwIAmxbrtttty/fXXp7i4OKNHj06vXr2ycuXKXHvttXnyySezaNGidOr0f+UC3bp1y6WXXrrHePPnz8+2bdsyduzYBuePOeaYjBw5st746NGjm5Rvrddeey0nn3zyPu1JkuOPPz7l5eX7vG9vFFMAAAAAAAAA0DG04WKKW265JeXl5RkzZkyWLl2abt26JUnmzJmTmTNnZurUqVm+fHmjcZ577rnccMMNOfDAA1NWVpazzjorSfL+++/n3HPPzdKlSzN79uxcd911u/b07NkzP/vZzxqM99prr2XevHnp0qVLLrzwwgbXnH/++bnpppv27QduQHV1dUpLS/d5X2lpabZs2bLf59flmg8AAAAAAAAAaEXbt2/PXXfdlSS55557dhVSJMk111yTESNG5JlnnklFRUWjse67774UCoVMmTJlVyFF8teCg3vvvTdJMnv27OzcubNJuf33f/93kuS8887LoYce2uSf6aPo0aNHNmzYsM/7NmzYkB49ejRrLoopAAAAAAAAAOgQigrN/zSHZ599Nps3b86AAQNy7LHH1pu/6KKLkiRPPPFEo7FqCy5OO+20enPDhg1Lz549s3HjxiZdi1EoFPLzn/88SfLP//zPja7fX0OHDs3KlSuzdevWJu/58MMPs2LFigwd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uy7/+q//mjvuuCOdOv1fiUFtLj169MjBBx+8x7w3bdqUN998M8OHD28097bkYy+mWPL2iw2OT+g98mPNA+iY9vQdROva25+L9wOwL3zPty/+7QA0xHc9AAAAbdHatWszbNiwBudeeeWVRvdv2bIlSdK1a9cG52uLFWrX7c24ceNSXl6eefPmZfr06bvNzZ8/P1u3bk2SfPDBB7vNHXvssRkzZkxOP/309O3bN3/4wx+yePHi3Hjjjbn33nvTuXPn/PCHP2xyzvuad1tT3NoJAAAAAAAAAMDHotACT3OkVfhroKKior3ON8Xll1+e0tLSrFy5MlOmTMnvfve7bN68OfPnz8/ll1++q7tEcfHu5QJXXXVVpk2bloEDB6ZLly45+uij82//9m955pln0rlz59x11127ulo0Jed9zbutUUwBAAAAAAAAQLtXlL9e89HsT5IBAwbklVdeafBpikMOOSRJUl1d3eD8hx9+mCTp1q1bo7H69OmTRx55JIcddljmzZuXgQMHpkePHrn44ovTr1+/TJ06Nclfr+dois997nM599xzs3Pnzjz55JNNznlf825rPvZrPgAAAAAAAACA/9O/f/8kSVVVVYPzteO16xozfvz4rF27NvPnz8/q1atTXFyc0aNHZ/LkybnkkkuSZI/XkjRk4MCBSZJ33nmnXs7vvfdeqqurd13psT95tyWKKQAAAAAAAADoGNrotRPHHHNMkuSFF15ocL52fMSIEU2O2b1790ybNm23sR07dmT58uUpLi7Oqaee2uRY7733XpLdO0x07949/fv3z5tvvpnKysqccsopu+2pqqrKpk2b0r9//5SWljb5rLbCNR8AAAAAAAAA0IpOPvnklJaWZu3atamsrKw3v3DhwiTJOeecs1/nPPjgg9mwYUPOPvvs9OvXr0l7/vznP2fRokVJklGjRu02N3HixN3yq2vBggVJ9j/n1tJmOlMsefvFPc5N6D3yY8sD+OTb2/cJnzx7+vP0boCOzXd9x+bdAO2f73kAAABaSlHbbEyRzp07Z8aMGfne976XGTNmZOnSpbuuzZgzZ05Wr16dU045JSeccMKuPXfffXfuvvvuXHDBBfn+97+/W7yKioocd9xxKSoq2jW2bNmyXHHFFSkpKcmcOXN2W79mzZq89tprOeecc3LAAQfsGt+4cWMuu+yyvPXWWznmmGNy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iDzzzDOpqKhoNNZ9992XQqGQKVOm7CqkSJLS0tLce++9SZLZs2dn586du+ZOP/30/PznP9+tkKJ2z9y5c5MkK1asyPr16z/6D/kJo5gCAAAAAAAAAFrRs88+m82bN2fAgAH1ChqS5KKLLkqSPPHEE43Gqi24OO200+rNDRs2LD179szGjRv32GXibx111FHp1atXkuTtt99u0p72wDUfAAAAAAAAAHQMzdBFoiW89NJLSZLjjjuuwfna8dp1e1NdXZ0k6dGjR4Pzhx12WDZt2pSXXnopY8eObTTe5s2b89577yVJjjzyyAbXVFRU5Otf/3r+93//N0ceeWROP/30jBs3rtHYbZliCgAAAAAAAAA6hjZaTPHmm28mSfr27dvgfO147bq96dWrV954440Gr+SoqanJW2+9lSRZt25dk3K75557smPHjgwfPjxHH310g2vKyspSVla26/ff+c53Mm7cuMyfPz9HHHFEk85pa1zzAQAAAAAAAAD7Ye3atRk2bFiDT1Ns2bIlSdK1a9cG5w8++ODd1u1NbUeIefPm1ZubP39+tm7dmiT54IMPGo1VWVmZm2++OUly22231Zs/6qijctNNN6WysjLvv/9+/vCHP+Txxx/PkCFDsnz58kycODE7d+5s9Jy2SDEFAAAAAAAAAB1DodD8T7Ok9dc4RUVFe51vissvvzylpaVZuXJlpkyZkt/97nfZvHlz5s+fn8svvzydOv31Aovi4r2XC/zhD3/IF77whWzbti1f/epX8/nPf77emgkTJmTWrFkZOXJkDj300BxxxBGZNGlSnnvuuQwaNCgVFRWZP39+k3NvSxRTAAAAAAAAAMB+GDBgQF555ZUGn6Y45JBDkiTV1dUNzn/44YdJkm7dujUaq0+fPnnkkUdy2GGHZd68eRk4cGB69OiRiy++OP369cvUqVOTJD169NhjjPfffz+f//zns27dukyePDmzZ89u0s9Rq1u3brnyyiuTJEuWLNmnvW1Fp9ZOAAAAAAAAAAA+FjWtnUDD+vfvnySpqqpqcL52vHZdY8aPH5+1a9dm/vz5Wb16dYqLizN69OhMnjw5l1xySZLs8QqSrVu3ZtKkSXnxxRdz1lln5YEHHmi0i0VDBg4cmCR555139nlvW6CYAgAAAAAAAABa0THHHJMkeeGFFxqcrx0fMWJEk2N2794906ZN221sx44dWb58eYqLi3PqqafW27Njx45Mnjw5v/nNb3LSSSfl4YcfTufOnZt8Zl3vvfdekqZ102iLXPMBAAAAAAAAQLtXVEiKCoUWePY/t5NPPjmlpaVZu3ZtKisr680vXLgwSXLOOefs1zkPPvhgNmzYkLPPPjv9+vXbba5QKGTKlClZtGhRRo4cmUWLFuXggw/+yGc99NBDSZJRo0btV86tRTEFAAAAAAAAALSizp07Z8aMGUmSGTNmpLq6etfcnDlzsnr16pxyyik54YQTdo3ffffdGTJkSG644YZ68SoqKlIo7F7lsWzZslxxxRUpKSnJnDlz6u256qqr8uCDD2bIkCFZunRpunfv3mjed955Z7Zs2bLb2Pbt2/Ptb387CxYsSJcuXTJlypRG47RFrvkAAAAAAAAAoGMoNEMbiRZy44035sknn0x5eXkGDhyYsWPHZv369Vm1alUOP/zwzJ07d7f1mzZtypo1a/LOO+/Ui3XhhRdm586dGT58eEpLS7NmzZpUVlamS5cuWbhwYQYPHrzb+sceeyx33XVXkqRfv375+te/3mCO119/fYYMGbLr91dddVWuv/76DB06NJ/61Keybdu2vPjii3n77bdTUlKSBx54IH369Nnfj6ZVKKYAAAAAAAAAoAMoJDUtUUzRPDFLSkry9NNP5/vf/35+/vOf59FHH02PHj1y6aWX5rvf/W69azn2Zvr06Xn00UezatWqbNmyJUcddVQuu+yyXHfddfn0pz9db/17772369fLli3bY9wpU6bsVkzxrW99KytWrMhrr72WV199NYVCIX379s20adNy9dVX1yva+CQpKvxtbw8AAAAAAAAAaEeGDRuWN3+3Iaf83f/X7LGfXfeT9P/MEXnllVeaPTatR2cKAAAAAAAAADoGvQZoouLWTgAAAAAAAAAAoC3RmQIAAAAAAACAjkFnCppIZwoAAAAAAAAAgDp0pgAAAAAAAACg/SukZTpTaHbRLulMAQAAAAAAAABQh84UAAAAAAAAAHQMNdpI0DSKKQAAAAAAAADoAApJoaZl4tLuuOYDAAAAAAAAAKAOnSkAAAAAAAAA6BgKukjQNDpTAAAAAAAAAADUoTMFAAAAAAAAAO1fIUlNC3Sm0OyiXdKZAgAAAAAAAACgDp0pAAAAAAAAAOgYCtpI0DQ6UwAAAAAAAAAA1KEzBQAAAAAAAAAdg84UNJHOFAAAAAAAAAAAdehMAQAAAAAAAEDHoDMFTaSYAgAAAAAAAIAOoJDU1LRMXNod13wAAAAAAAAAANShMwUAAAAAAAAA7V8hLXPNh8YU7ZLOFAAAAAAAAAAAdehMAQAAAAAAAEDH0BKdKWiXdKYAAAAAAAAAAKhDZwoAAAAAAAAAOoYanSloGp0pAAAAAAAAAADq0JkCAAAAAAAAgHavkEIKhZoWiUv7o5gCAAAAAAAAgPavkJa55kMtRbvkmg8AAAAAAAAAgDp0pgAAAAAAAACgYyhoI0HT6EwBAAAAAAAAAFCHzhQAAAAAAAAAdAw1Na2dAZ8QOlMAAAAAAAAAANShMwUAAAAAAAAAHUOh0NoZ8AmhMwUAAAAAAAAAQB06UwAAAAAAAADQ/hUKKdTUtEhc2h/FFAAAAAAAAAB0DAofaCLXfAAAAAAAAAAA1KEzBQAAAAAAAAAdQ43OFDSNzhQAAAAAAAAAAHXoTAEAAAAAAABAx1Coae0M+ITQmQIAAAAAAAAA2oBt27Zl1qxZGTRoUEpKStK7d+9MnTo1VVVV+xxr8eLFOfPMM9O9e/d07do1w4cPz+23354dO3bscU9NTU3+4z/+I8OHD0+XLl3Sq1evTJ48Oa+++upezyorK8u4ceNSWlqaQw89NOPGjUtZWdk+59yWKKYAAAAAAAAAoP0rFFKoaf4nhUKzpLdt27acccYZ+c53vpMtW7bkvPPOS79+/TJ37twcd9xxWbt2bZNj3XbbbfnHf/zHPPXUUxk6dGjOPPPMvPvuu7n22mszceLEBgsqCoVCvvjFL+bqq69OVVVVJk6cmGHDhuWhhx7K8ccfn1WrVjV41p133plJkyalvLw8J510Uk4//fQ899xzmTRpUu68886P/Hm0NsUUAAAAAAAAANDKbrnllpSXl2fMmDF5/fXXM3/+/KxatSqzZ8/Oxo0bM3Xq1CbFee6553LDDTfkwAMPzOLFi1NeXp7HHnssr7/+ek499dQsXbo0s2fPrrdv7ty5WbhwYQYOHJjXXnstCxcuzK9//essWLAgW7duzZe//OV6RRivv/56Zs6cmYMOOijPPPNMFi9enEcffTQvvvhiDj/88MycOTNvvPFGs3w+HzfFFAAAAAAAAAB0DIWa5n+awfbt23PXXXclSe65555069Zt19w111yTESNG5JlnnklFRUWjse67774UCoVMmTIlZ5111q7x0tLS3HvvvUmS2bNnZ+fOnbvtqy2w+MEPfpAjjjhi1/iFF16Yc889N2vXrs1jjz2225477rgjO3bsyPTp0zNmzJhd44MGDco3vvGN7Nix4xPbnUIxBQAAAAAAAAAdQotc89EMnn322WzevDkDBgzIscceW2/+oosuSpI88cQTjcaqLbg47bTT6s0NGzYsPXv2zMaNG1NeXr5r/Pe//31effXVdOnSJRMnTmzy+WVlZbvN1zV58uQm59wWKaYAAAAAAAAAgFb00ksvJUmOO+64Budrx2vX7U11dXWSpEePHg3OH3bYYfVi1f76c5/7XA488MAmnb958+a8+eabSdJgAUjfvn3Ts2fPrF+/Pu+//36jebc1iikAAAAAAAAA6Bja6DUftUUJffv2bXC+drx23d706tUrSbJ+/fp6czU1NXnrrbeSJOvWrduv82t/3aNHjxx88MH7nXdb06m1EwAAAAAAAACAlvZhtmRFYWmLxF27dm2GDRvW4Pwrr7zSaIwtW7YkSbp27drgfG2xQu26vRk3blzKy8szb968TJ8+fbe5+fPnZ+vWrUmSDz74YL/Ob2zPvubd1iimAAAAAAAAAKBdGzBgQIvG39/OC4VCIUlSVFS01/mmuPzyy3Pvvfdm5cqVmTJlSm688cb07NkzS5YsyeWXX55OnTplx44dKS7+v4ssGjv/o+S8r3m3NYopAAAAAAAAAGjXHn/88dZOYa8OOeSQJEl1dXWD8x9++GGSpFu3bo3G6tOnTx555JFcdNFFmTdvXubNm7drbsSIETnxxBNz//33p0ePHk0+v3a87vmN7dnXvNsaxRQAAAAAAAAA0Ir69++fJKmqqmpwvna8dl1jxo8fn7Vr12b+/PlZvXp1iouLM3r06EyePDmXXHJJkux2LclHOb/21++9916qq6t3XemxP3m3JYopAAAAAAAAAKAVHXPMMUmSF154ocH52vERI0Y0OWb37t0zbdq03cZ27NiR5cuXp7i4OKeeemq9819++eVs3749Bx54YKPnd+/ePf3798+bb76ZysrKnHLKKbvtqaqqyqZNm9K/f/+UlpY2Oe+2orjxJQAAAAAAAABASzn55JNTWlqatWvXprKyst78woULkyTnnHPOfp3z4IMPZsOGDTn77LPTr1+/XeNHH310PvvZz2br1q1ZtGhRk8+fOHHibvN1LViwoFlybi2KKQAAAAAAAACgFXXu3DkzZsxIksyYMSPV1dW75ubMmZPVq1fnlFNOyQknnLBr/O67786QIUNyww031ItXUVGRQqGw29iyZctyxRVXpKSkJHPmzKm355prrkmSXHvttXn33Xd3jT/88MN5/PHHc/TRR+f888/fbc9VV12VAw44ID/60Y+ycuXKXeNvvPFGvve97+WAAw7IlVdeuQ+fRNvhmg8AAAAAAAAAaGU33nhjnnzyyZSXl2fgwIEZO3Zs1q9fn1WrVuXwww/P3Llzd1u/adOmrFmzJu+88069WBdeeGF27tyZ4cOHp7S0NGvWrEllZWW6dOmShQsXZvDgwfX2TJ06Nb/85S/zyCOPZMiQITnjjDOyadOmLF++PCUlJXnggQfqXf8xePDg3H777bnmmmsyduzYnHnmmencuXOWLl2arVu3Zs6cOQ2e9UmgMwUAAAAAAAAAtLKSkpI8/fTT+eY3v5muXbvm0Ucfzbp163LppZemsrIyn/nMZ5oca/r06enTp09WrVqVhx9+OH/6059y2WWX5eWXX951NcffKi4uzoIFCzJ79uz07t07ZWVl+Z//+Z9ccMEFef7553PSSSc1uO/qq6/O448/njFjxuQ3v/lNfvWrX2XUqFF57LHHcvXVV3+kz6ItKCr8bW8PAAAAAAAAAIAOTGcKAAAAAAAAAIA6FFMAAAAAAAAAANShmAIAAAAAAAAAoA7FFAAAAAAAAAAAdSimAAAAAAAAAACoQzEFAAAAAAAAAEAdiikAAAAAAAAAAOpQTAEAAAAAAAAAUIdiCgAAAAAAAACAOhRTAAAAAAAAAADUoZgCAAAAAAAAAKAOxRQAAAAAAAAAAHUopgAAAAAAAAAAqEMxBQAAAAAAAABAHYopAAAAAAAAAADqUEwBAAAAAAAAAFCHYgoAAAAAAAAAgDoUUwAAAAAAAAAA1PH/A+xRFkiMKVDpAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -430,13 +226,14 @@ } ], "source": [ - "timesteps = [1, 20, 30, 40, 251]\n", + "species = \"Cl\"\n", + "timesteps = [1, 2, 3, 40, 500]\n", "fig, axes = plt.subplots(1, 5, figsize=(20, 4), dpi=150)\n", "\n", "for i, timestep in enumerate(timesteps):\n", " ax = axes[i]\n", " im = ax.imshow(\n", - " np.array(X[\"Barite\"][(timestep * 2500) : (timestep * 2500 + 2500)]).reshape(\n", + " np.array(X[\"Class\"][(timestep * 2500) : (timestep * 2500 + 2500)]).reshape(\n", " 50, 50\n", " ),\n", " origin=\"lower\",\n", @@ -445,8 +242,8 @@ " ax.set_title(f\"Iteration {timestep}\")\n", " ax.axis(\"off\")\n", "\n", - "fig.colorbar(im, ax=axes.ravel().tolist(), label=\"Barite Concentration\")\n", - "plt.suptitle(\"Barite Distribution for Different Timesteps\", fontsize=14)\n", + "fig.colorbar(im, ax=axes.ravel().tolist(), label=species + \" Concentration\")\n", + "plt.suptitle(species + \" Distribution for Different Timesteps\", fontsize=14)\n", "plt.show()" ] }, @@ -471,8 +268,8 @@ "outputs": [], "source": [ "column_dict = {}\n", - "for i in species_columns:\n", - " column_dict[i] = X.columns.get_loc(i)" + "for i in df_results.columns:\n", + " column_dict[i] = y.columns.get_loc(i)" ] }, { @@ -517,7 +314,7 @@ "outputs": [], "source": [ "# select model architecture\n", - "model = model_definition(\"large\")\n", + "model = model_definition(\"large\", len(df_design.columns), len(df_results.columns)) \n", "\n", "# define learning rate adaptation\n", "lr_schedule = keras.optimizers.schedules.ExponentialDecay(\n", @@ -530,17 +327,17 @@ "h3 = 0.5099528144902471\n", "\n", "\n", - "scaler_type = \"standard\"\n", + "scaler_type = \"none\"\n", "loss_variant = \"huber_mass_balance\"\n", "delta = 1.7642791340966357\n", "\n", "\n", - "optimizer = keras.optimizers.Adam(learning_rate=lr_schedule)\n", + "optimizer_adam = keras.optimizers.Adam(learning_rate=lr_schedule)\n", "optimizer_sgd = keras.optimizers.SGD(learning_rate=lr_schedule)\n", "optimizer_rmsprop = keras.optimizers.RMSprop(learning_rate=lr_schedule)\n", "\n", "model.compile(\n", - " optimizer=optimizer_rmsprop,\n", + " optimizer=optimizer_adam,\n", " loss=custom_loss(preprocess, column_dict, h1, h2, h3, scaler_type, loss_variant, 1),\n", " metrics=[\n", " huber_metric(delta),\n", @@ -551,7 +348,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -559,211 +356,174 @@ "output_type": "stream", "text": [ "Epoch 1/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 0.0705 - loss: 0.0376 - mass_balance: 0.0547 - val_huber: 0.0055 - val_loss: 0.0084 - val_mass_balance: 0.0144\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m28s\u001b[0m 13ms/step - huber: 10.8461 - loss: 13.2621 - mass_balance: 23.5177 - val_huber: 0.3063 - val_loss: 0.8742 - val_mass_balance: 1.6143\n", "Epoch 2/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 0.0048 - loss: 0.0074 - mass_balance: 0.0128 - val_huber: 0.0027 - val_loss: 0.0069 - val_mass_balance: 0.0124\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m28s\u001b[0m 14ms/step - huber: 0.9357 - loss: 2.1683 - mass_balance: 3.9508 - val_huber: 0.0895 - val_loss: 0.8578 - val_mass_balance: 1.6219\n", "Epoch 3/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 0.0027 - loss: 0.0055 - mass_balance: 0.0098 - val_huber: 0.0018 - val_loss: 0.0040 - val_mass_balance: 0.0072\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m47s\u001b[0m 22ms/step - huber: 0.3366 - loss: 1.0700 - mass_balance: 1.9716 - val_huber: 0.1131 - val_loss: 1.1434 - val_mass_balance: 2.1606\n", "Epoch 4/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 11ms/step - huber: 0.0022 - loss: 0.0047 - mass_balance: 0.0084 - val_huber: 0.0015 - val_loss: 0.0051 - val_mass_balance: 0.0094\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m42s\u001b[0m 20ms/step - huber: 0.3350 - loss: 0.8515 - mass_balance: 1.5563 - val_huber: 0.1365 - val_loss: 0.4958 - val_mass_balance: 0.9154\n", "Epoch 5/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step - huber: 0.0019 - loss: 0.0044 - mass_balance: 0.0078 - val_huber: 7.9947e-04 - val_loss: 0.0039 - val_mass_balance: 0.0073\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m28s\u001b[0m 13ms/step - huber: 1.7714 - loss: 2.0194 - mass_balance: 3.5316 - val_huber: 0.0763 - val_loss: 0.8319 - val_mass_balance: 1.5661\n", "Epoch 6/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 0.0014 - loss: 0.0037 - mass_balance: 0.0067 - val_huber: 7.5188e-04 - val_loss: 0.0029 - val_mass_balance: 0.0053\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m36s\u001b[0m 17ms/step - huber: 0.3561 - loss: 0.7516 - mass_balance: 1.3616 - val_huber: 0.0170 - val_loss: 0.2134 - val_mass_balance: 0.4035\n", "Epoch 7/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 0.0013 - loss: 0.0036 - mass_balance: 0.0065 - val_huber: 8.1429e-04 - val_loss: 0.0041 - val_mass_balance: 0.0076\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m44s\u001b[0m 21ms/step - huber: 0.2859 - loss: 0.4038 - mass_balance: 0.7145 - val_huber: 0.0210 - val_loss: 0.1668 - val_mass_balance: 0.3120\n", "Epoch 8/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 11ms/step - huber: 0.0010 - loss: 0.0031 - mass_balance: 0.0056 - val_huber: 9.1488e-04 - val_loss: 0.0026 - val_mass_balance: 0.0046\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 14ms/step - huber: 0.0411 - loss: 0.1087 - mass_balance: 0.1988 - val_huber: 0.6289 - val_loss: 1.0227 - val_mass_balance: 1.7984\n", "Epoch 9/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 0.0010 - loss: 0.0030 - mass_balance: 0.0054 - val_huber: 4.9456e-04 - val_loss: 0.0015 - val_mass_balance: 0.0028\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m37s\u001b[0m 17ms/step - huber: 0.1854 - loss: 0.3976 - mass_balance: 0.7189 - val_huber: 0.0038 - val_loss: 0.0508 - val_mass_balance: 0.0958\n", "Epoch 10/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 8.3918e-04 - loss: 0.0027 - mass_balance: 0.0049 - val_huber: 8.6339e-04 - val_loss: 0.0017 - val_mass_balance: 0.0029\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 21ms/step - huber: 0.0317 - loss: 0.0701 - mass_balance: 0.1267 - val_huber: 0.0018 - val_loss: 0.0119 - val_mass_balance: 0.0224\n", "Epoch 11/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 12ms/step - huber: 7.8853e-04 - loss: 0.0026 - mass_balance: 0.0047 - val_huber: 3.6463e-04 - val_loss: 0.0021 - val_mass_balance: 0.0039\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 14ms/step - huber: 0.0285 - loss: 0.0474 - mass_balance: 0.0836 - val_huber: 19.9204 - val_loss: 2.1856 - val_mass_balance: 0.5440\n", "Epoch 12/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 12ms/step - huber: 7.0225e-04 - loss: 0.0025 - mass_balance: 0.0045 - val_huber: 7.3322e-04 - val_loss: 0.0031 - val_mass_balance: 0.0057\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m37s\u001b[0m 18ms/step - huber: 2.4895 - loss: 0.8235 - mass_balance: 1.1082 - val_huber: 0.0018 - val_loss: 0.0347 - val_mass_balance: 0.0656\n", "Epoch 13/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 6.4799e-04 - loss: 0.0023 - mass_balance: 0.0042 - val_huber: 3.9136e-04 - val_loss: 0.0022 - val_mass_balance: 0.0042\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m51s\u001b[0m 25ms/step - huber: 0.0063 - loss: 0.0464 - mass_balance: 0.0870 - val_huber: 0.0054 - val_loss: 0.0252 - val_mass_balance: 0.0474\n", "Epoch 14/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 6.1216e-04 - loss: 0.0022 - mass_balance: 0.0041 - val_huber: 5.9635e-04 - val_loss: 0.0027 - val_mass_balance: 0.0050\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m34s\u001b[0m 16ms/step - huber: 0.0056 - loss: 0.0373 - mass_balance: 0.0699 - val_huber: 8.3457e-04 - val_loss: 0.0324 - val_mass_balance: 0.0614\n", "Epoch 15/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 5.1730e-04 - loss: 0.0020 - mass_balance: 0.0037 - val_huber: 2.0320e-04 - val_loss: 0.0016 - val_mass_balance: 0.0031\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m50s\u001b[0m 24ms/step - huber: 0.0054 - loss: 0.0266 - mass_balance: 0.0497 - val_huber: 0.0016 - val_loss: 0.0252 - val_mass_balance: 0.0481\n", "Epoch 16/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 5.0061e-04 - loss: 0.0020 - mass_balance: 0.0036 - val_huber: 3.1570e-04 - val_loss: 0.0022 - val_mass_balance: 0.0042\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m52s\u001b[0m 25ms/step - huber: 0.0017 - loss: 0.0196 - mass_balance: 0.0372 - val_huber: 0.0240 - val_loss: 0.0348 - val_mass_balance: 0.0599\n", "Epoch 17/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 3.9930e-04 - loss: 0.0018 - mass_balance: 0.0033 - val_huber: 2.1322e-04 - val_loss: 0.0010 - val_mass_balance: 0.0019\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m31s\u001b[0m 15ms/step - huber: 0.0038 - loss: 0.0190 - mass_balance: 0.0355 - val_huber: 0.0071 - val_loss: 0.0247 - val_mass_balance: 0.0460\n", "Epoch 18/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 11ms/step - huber: 3.9617e-04 - loss: 0.0017 - mass_balance: 0.0032 - val_huber: 7.0048e-04 - val_loss: 0.0023 - val_mass_balance: 0.0042\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m46s\u001b[0m 22ms/step - huber: 0.0024 - loss: 0.0134 - mass_balance: 0.0251 - val_huber: 1.4830e-04 - val_loss: 0.0065 - val_mass_balance: 0.0125\n", "Epoch 19/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 3.4277e-04 - loss: 0.0016 - mass_balance: 0.0030 - val_huber: 1.5957e-04 - val_loss: 0.0015 - val_mass_balance: 0.0028\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m39s\u001b[0m 18ms/step - huber: 0.0462 - loss: 0.0304 - mass_balance: 0.0480 - val_huber: 3.5614e-04 - val_loss: 0.0237 - val_mass_balance: 0.0461\n", "Epoch 20/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 3.1705e-04 - loss: 0.0015 - mass_balance: 0.0029 - val_huber: 2.3869e-04 - val_loss: 0.0019 - val_mass_balance: 0.0036\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 14ms/step - huber: 4.8223e-04 - loss: 0.0109 - mass_balance: 0.0208 - val_huber: 1.5942e-04 - val_loss: 0.0096 - val_mass_balance: 0.0183\n", "Epoch 21/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.9762e-04 - loss: 0.0015 - mass_balance: 0.0027 - val_huber: 2.6323e-04 - val_loss: 0.0017 - val_mass_balance: 0.0032\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m46s\u001b[0m 22ms/step - huber: 6.3014e-04 - loss: 0.0094 - mass_balance: 0.0180 - val_huber: 9.5324e-04 - val_loss: 0.0044 - val_mass_balance: 0.0081\n", "Epoch 22/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step - huber: 2.6150e-04 - loss: 0.0014 - mass_balance: 0.0026 - val_huber: 1.2177e-04 - val_loss: 6.8063e-04 - val_mass_balance: 0.0013\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m40s\u001b[0m 19ms/step - huber: 6.7429e-04 - loss: 0.0078 - mass_balance: 0.0148 - val_huber: 7.4062e-04 - val_loss: 0.0017 - val_mass_balance: 0.0030\n", "Epoch 23/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 2.7570e-04 - loss: 0.0014 - mass_balance: 0.0025 - val_huber: 7.4193e-04 - val_loss: 0.0017 - val_mass_balance: 0.0031\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 14ms/step - huber: 7.6452e-04 - loss: 0.0069 - mass_balance: 0.0130 - val_huber: 7.5919e-04 - val_loss: 0.0105 - val_mass_balance: 0.0201\n", "Epoch 24/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 2.2458e-04 - loss: 0.0012 - mass_balance: 0.0023 - val_huber: 4.6217e-04 - val_loss: 0.0019 - val_mass_balance: 0.0035\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 22ms/step - huber: 4.8279e-04 - loss: 0.0056 - mass_balance: 0.0106 - val_huber: 3.2819e-04 - val_loss: 0.0045 - val_mass_balance: 0.0087\n", "Epoch 25/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step - huber: 2.2827e-04 - loss: 0.0012 - mass_balance: 0.0023 - val_huber: 1.4619e-04 - val_loss: 0.0013 - val_mass_balance: 0.0024\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 19ms/step - huber: 3.6509e-04 - loss: 0.0046 - mass_balance: 0.0087 - val_huber: 5.6645e-04 - val_loss: 0.0069 - val_mass_balance: 0.0131\n", "Epoch 26/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step - huber: 1.8971e-04 - loss: 0.0011 - mass_balance: 0.0021 - val_huber: 9.1612e-05 - val_loss: 7.4290e-04 - val_mass_balance: 0.0014\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 14ms/step - huber: 2.5753e-04 - loss: 0.0040 - mass_balance: 0.0076 - val_huber: 2.2235e-04 - val_loss: 0.0048 - val_mass_balance: 0.0091\n", "Epoch 27/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 12ms/step - huber: 1.8916e-04 - loss: 0.0011 - mass_balance: 0.0021 - val_huber: 1.3871e-04 - val_loss: 0.0012 - val_mass_balance: 0.0023\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 22ms/step - huber: 2.4950e-04 - loss: 0.0035 - mass_balance: 0.0068 - val_huber: 8.4055e-05 - val_loss: 0.0044 - val_mass_balance: 0.0085\n", "Epoch 28/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 1.6124e-04 - loss: 0.0010 - mass_balance: 0.0019 - val_huber: 1.2757e-04 - val_loss: 0.0013 - val_mass_balance: 0.0025\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m40s\u001b[0m 19ms/step - huber: 1.5997e-04 - loss: 0.0030 - mass_balance: 0.0057 - val_huber: 2.4118e-05 - val_loss: 0.0024 - val_mass_balance: 0.0047\n", "Epoch 29/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 1.5497e-04 - loss: 9.9073e-04 - mass_balance: 0.0019 - val_huber: 3.6474e-04 - val_loss: 9.6044e-04 - val_mass_balance: 0.0017\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 14ms/step - huber: 1.4435e-04 - loss: 0.0026 - mass_balance: 0.0050 - val_huber: 7.6881e-05 - val_loss: 0.0018 - val_mass_balance: 0.0035\n", "Epoch 30/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 1.4456e-04 - loss: 9.6936e-04 - mass_balance: 0.0018 - val_huber: 1.6395e-04 - val_loss: 8.2863e-04 - val_mass_balance: 0.0015\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 22ms/step - huber: 1.5654e-04 - loss: 0.0023 - mass_balance: 0.0044 - val_huber: 5.2715e-04 - val_loss: 0.0011 - val_mass_balance: 0.0019\n", "Epoch 31/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 1.2945e-04 - loss: 8.7237e-04 - mass_balance: 0.0016 - val_huber: 1.0211e-04 - val_loss: 8.3225e-04 - val_mass_balance: 0.0016\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m43s\u001b[0m 21ms/step - huber: 1.6509e-04 - loss: 0.0022 - mass_balance: 0.0042 - val_huber: 1.8955e-05 - val_loss: 7.2891e-04 - val_mass_balance: 0.0014\n", "Epoch 32/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 1.3383e-04 - loss: 8.8817e-04 - mass_balance: 0.0017 - val_huber: 1.3947e-04 - val_loss: 8.6029e-04 - val_mass_balance: 0.0016\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 14ms/step - huber: 1.7174e-04 - loss: 0.0018 - mass_balance: 0.0034 - val_huber: 6.5863e-05 - val_loss: 8.0687e-04 - val_mass_balance: 0.0015\n", "Epoch 33/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 1.1013e-04 - loss: 7.9485e-04 - mass_balance: 0.0015 - val_huber: 6.5566e-05 - val_loss: 8.3252e-04 - val_mass_balance: 0.0016\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m40s\u001b[0m 19ms/step - huber: 8.8746e-05 - loss: 0.0015 - mass_balance: 0.0029 - val_huber: 1.9710e-05 - val_loss: 9.7809e-04 - val_mass_balance: 0.0019\n", "Epoch 34/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 1.1124e-04 - loss: 7.9307e-04 - mass_balance: 0.0015 - val_huber: 1.2914e-04 - val_loss: 8.4401e-04 - val_mass_balance: 0.0016\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 22ms/step - huber: 7.2173e-05 - loss: 0.0015 - mass_balance: 0.0028 - val_huber: 1.3188e-04 - val_loss: 0.0037 - val_mass_balance: 0.0071\n", "Epoch 35/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 1.0443e-04 - loss: 7.1706e-04 - mass_balance: 0.0014 - val_huber: 6.9409e-05 - val_loss: 5.0371e-04 - val_mass_balance: 9.4951e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m32s\u001b[0m 15ms/step - huber: 7.3580e-05 - loss: 0.0013 - mass_balance: 0.0025 - val_huber: 2.1425e-05 - val_loss: 4.4396e-04 - val_mass_balance: 8.4780e-04\n", "Epoch 36/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 9.8640e-05 - loss: 7.2031e-04 - mass_balance: 0.0014 - val_huber: 5.5465e-05 - val_loss: 4.5251e-04 - val_mass_balance: 8.5743e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m31s\u001b[0m 15ms/step - huber: 5.3703e-05 - loss: 0.0012 - mass_balance: 0.0022 - val_huber: 2.9752e-05 - val_loss: 0.0018 - val_mass_balance: 0.0034\n", "Epoch 37/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 11ms/step - huber: 9.0942e-05 - loss: 6.7768e-04 - mass_balance: 0.0013 - val_huber: 5.0912e-05 - val_loss: 5.5779e-04 - val_mass_balance: 0.0011\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 21ms/step - huber: 3.8190e-05 - loss: 9.5683e-04 - mass_balance: 0.0018 - val_huber: 6.2777e-05 - val_loss: 4.3809e-04 - val_mass_balance: 8.2015e-04\n", "Epoch 38/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 8.1881e-05 - loss: 6.4645e-04 - mass_balance: 0.0012 - val_huber: 6.0961e-05 - val_loss: 6.9782e-04 - val_mass_balance: 0.0013\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m36s\u001b[0m 17ms/step - huber: 3.0836e-05 - loss: 8.7799e-04 - mass_balance: 0.0017 - val_huber: 9.0076e-05 - val_loss: 4.4936e-04 - val_mass_balance: 8.4384e-04\n", "Epoch 39/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 11ms/step - huber: 7.9824e-05 - loss: 6.4280e-04 - mass_balance: 0.0012 - val_huber: 9.4689e-05 - val_loss: 5.0573e-04 - val_mass_balance: 9.4438e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 14ms/step - huber: 2.9680e-05 - loss: 8.1237e-04 - mass_balance: 0.0016 - val_huber: 2.5011e-05 - val_loss: 6.9414e-04 - val_mass_balance: 0.0013\n", "Epoch 40/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 7.9241e-05 - loss: 5.9208e-04 - mass_balance: 0.0011 - val_huber: 8.6559e-05 - val_loss: 3.5590e-04 - val_mass_balance: 6.6112e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m44s\u001b[0m 21ms/step - huber: 1.8541e-05 - loss: 6.4256e-04 - mass_balance: 0.0012 - val_huber: 1.1962e-05 - val_loss: 5.3013e-04 - val_mass_balance: 0.0010\n", "Epoch 41/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 7.7285e-05 - loss: 5.9197e-04 - mass_balance: 0.0011 - val_huber: 4.1481e-05 - val_loss: 3.4559e-04 - val_mass_balance: 6.5390e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m39s\u001b[0m 19ms/step - huber: 1.8845e-05 - loss: 6.0052e-04 - mass_balance: 0.0012 - val_huber: 1.5053e-05 - val_loss: 6.7192e-04 - val_mass_balance: 0.0013\n", "Epoch 42/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 6.4093e-05 - loss: 5.2739e-04 - mass_balance: 9.9723e-04 - val_huber: 4.7314e-05 - val_loss: 4.4883e-04 - val_mass_balance: 8.5088e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m28s\u001b[0m 13ms/step - huber: 1.7104e-05 - loss: 5.4580e-04 - mass_balance: 0.0010 - val_huber: 1.7086e-05 - val_loss: 5.7896e-04 - val_mass_balance: 0.0011\n", "Epoch 43/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 6.3626e-05 - loss: 5.2942e-04 - mass_balance: 0.0010 - val_huber: 3.8719e-05 - val_loss: 3.5273e-04 - val_mass_balance: 6.6833e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 19ms/step - huber: 1.2895e-05 - loss: 4.5637e-04 - mass_balance: 8.7496e-04 - val_huber: 1.1888e-05 - val_loss: 0.0010 - val_mass_balance: 0.0020\n", "Epoch 44/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 12ms/step - huber: 5.9336e-05 - loss: 4.9010e-04 - mass_balance: 9.2701e-04 - val_huber: 5.0533e-05 - val_loss: 5.5681e-04 - val_mass_balance: 0.0011\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m43s\u001b[0m 20ms/step - huber: 1.2067e-05 - loss: 4.0417e-04 - mass_balance: 7.7486e-04 - val_huber: 9.1827e-06 - val_loss: 4.1447e-04 - val_mass_balance: 7.9037e-04\n", "Epoch 45/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 6.5335e-05 - loss: 4.8230e-04 - mass_balance: 9.1032e-04 - val_huber: 6.0312e-05 - val_loss: 4.3221e-04 - val_mass_balance: 8.1501e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m30s\u001b[0m 14ms/step - huber: 1.0866e-05 - loss: 3.6270e-04 - mass_balance: 6.9504e-04 - val_huber: 8.5339e-06 - val_loss: 3.3376e-04 - val_mass_balance: 6.4930e-04\n", "Epoch 46/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 5.4553e-05 - loss: 4.6042e-04 - mass_balance: 8.7118e-04 - val_huber: 4.0107e-05 - val_loss: 4.4224e-04 - val_mass_balance: 8.4141e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m36s\u001b[0m 17ms/step - huber: 9.0273e-06 - loss: 3.2309e-04 - mass_balance: 6.1995e-04 - val_huber: 7.5166e-06 - val_loss: 1.7943e-04 - val_mass_balance: 3.4666e-04\n", "Epoch 47/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 5.3592e-05 - loss: 4.3683e-04 - mass_balance: 8.2614e-04 - val_huber: 3.8911e-05 - val_loss: 3.8720e-04 - val_mass_balance: 7.3242e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m44s\u001b[0m 21ms/step - huber: 8.3596e-06 - loss: 2.7918e-04 - mass_balance: 5.3579e-04 - val_huber: 7.4216e-06 - val_loss: 3.6327e-04 - val_mass_balance: 6.9840e-04\n", "Epoch 48/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step - huber: 4.9031e-05 - loss: 4.2875e-04 - mass_balance: 8.1180e-04 - val_huber: 3.3141e-05 - val_loss: 2.6060e-04 - val_mass_balance: 4.9409e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m31s\u001b[0m 15ms/step - huber: 7.8433e-06 - loss: 2.7333e-04 - mass_balance: 5.2479e-04 - val_huber: 7.0363e-06 - val_loss: 1.5770e-04 - val_mass_balance: 3.0459e-04\n", "Epoch 49/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 5.1804e-05 - loss: 3.9923e-04 - mass_balance: 7.5477e-04 - val_huber: 4.3680e-05 - val_loss: 6.1061e-04 - val_mass_balance: 0.0012\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m33s\u001b[0m 16ms/step - huber: 7.7623e-06 - loss: 2.6350e-04 - mass_balance: 5.0576e-04 - val_huber: 1.0601e-05 - val_loss: 3.9111e-04 - val_mass_balance: 7.4613e-04\n", "Epoch 50/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 4.6059e-05 - loss: 3.9467e-04 - mass_balance: 7.4728e-04 - val_huber: 3.9279e-05 - val_loss: 4.7099e-04 - val_mass_balance: 8.9619e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 21ms/step - huber: 7.0087e-06 - loss: 2.4429e-04 - mass_balance: 4.6919e-04 - val_huber: 6.5758e-06 - val_loss: 1.4809e-04 - val_mass_balance: 2.8618e-04\n", "Epoch 51/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 5.0427e-05 - loss: 3.6663e-04 - mass_balance: 6.9204e-04 - val_huber: 3.7131e-05 - val_loss: 4.1189e-04 - val_mass_balance: 7.8176e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m33s\u001b[0m 16ms/step - huber: 6.7790e-06 - loss: 2.2239e-04 - mass_balance: 4.2745e-04 - val_huber: 6.0115e-06 - val_loss: 1.8391e-04 - val_mass_balance: 3.5392e-04\n", "Epoch 52/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 13ms/step - huber: 3.9474e-05 - loss: 3.6436e-04 - mass_balance: 6.9074e-04 - val_huber: 3.3401e-05 - val_loss: 3.6578e-04 - val_mass_balance: 6.9520e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m33s\u001b[0m 16ms/step - huber: 6.6140e-06 - loss: 2.1480e-04 - mass_balance: 4.1334e-04 - val_huber: 5.8767e-06 - val_loss: 1.2050e-04 - val_mass_balance: 2.3361e-04\n", "Epoch 53/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 11ms/step - huber: 3.8509e-05 - loss: 3.3790e-04 - mass_balance: 6.4023e-04 - val_huber: 3.0546e-05 - val_loss: 2.9259e-04 - val_mass_balance: 5.5522e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 21ms/step - huber: 6.3392e-06 - loss: 2.0250e-04 - mass_balance: 3.8981e-04 - val_huber: 7.3007e-06 - val_loss: 2.1876e-04 - val_mass_balance: 4.2102e-04\n", "Epoch 54/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 11ms/step - huber: 4.4154e-05 - loss: 3.3650e-04 - mass_balance: 6.3616e-04 - val_huber: 3.2173e-05 - val_loss: 3.8614e-04 - val_mass_balance: 7.3560e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m32s\u001b[0m 15ms/step - huber: 6.0422e-06 - loss: 1.9335e-04 - mass_balance: 3.7237e-04 - val_huber: 5.7014e-06 - val_loss: 1.6393e-04 - val_mass_balance: 3.1597e-04\n", "Epoch 55/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 4.0561e-05 - loss: 3.2498e-04 - mass_balance: 6.1500e-04 - val_huber: 2.7365e-05 - val_loss: 3.4403e-04 - val_mass_balance: 6.5494e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m33s\u001b[0m 16ms/step - huber: 5.7672e-06 - loss: 1.7697e-04 - mass_balance: 3.4124e-04 - val_huber: 5.6026e-06 - val_loss: 1.6796e-04 - val_mass_balance: 3.2332e-04\n", "Epoch 56/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 3.6654e-05 - loss: 3.0816e-04 - mass_balance: 5.8368e-04 - val_huber: 3.7312e-05 - val_loss: 2.6574e-04 - val_mass_balance: 5.0061e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 21ms/step - huber: 5.8208e-06 - loss: 1.7166e-04 - mass_balance: 3.3098e-04 - val_huber: 5.5722e-06 - val_loss: 1.2214e-04 - val_mass_balance: 2.3694e-04\n", "Epoch 57/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 12ms/step - huber: 3.5056e-05 - loss: 3.0545e-04 - mass_balance: 5.7885e-04 - val_huber: 4.6792e-05 - val_loss: 2.2920e-04 - val_mass_balance: 4.2802e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m34s\u001b[0m 16ms/step - huber: 5.6315e-06 - loss: 1.6646e-04 - mass_balance: 3.2118e-04 - val_huber: 5.8447e-06 - val_loss: 1.5159e-04 - val_mass_balance: 2.9322e-04\n", "Epoch 58/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 3.6068e-05 - loss: 2.8670e-04 - mass_balance: 5.4251e-04 - val_huber: 3.1751e-05 - val_loss: 2.8733e-04 - val_mass_balance: 5.4481e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m30s\u001b[0m 14ms/step - huber: 5.5840e-06 - loss: 1.6379e-04 - mass_balance: 3.1604e-04 - val_huber: 5.4126e-06 - val_loss: 1.2279e-04 - val_mass_balance: 2.3795e-04\n", "Epoch 59/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step - huber: 3.6832e-05 - loss: 2.8790e-04 - mass_balance: 5.4469e-04 - val_huber: 2.4118e-05 - val_loss: 2.3764e-04 - val_mass_balance: 4.5079e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 21ms/step - huber: 5.4768e-06 - loss: 1.5892e-04 - mass_balance: 3.0679e-04 - val_huber: 5.2159e-06 - val_loss: 1.4409e-04 - val_mass_balance: 2.7855e-04\n", "Epoch 60/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 3.2742e-05 - loss: 2.6821e-04 - mass_balance: 5.0775e-04 - val_huber: 3.1259e-05 - val_loss: 3.1066e-04 - val_mass_balance: 5.8887e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m38s\u001b[0m 18ms/step - huber: 5.2462e-06 - loss: 1.4862e-04 - mass_balance: 2.8713e-04 - val_huber: 5.1431e-06 - val_loss: 1.4732e-04 - val_mass_balance: 2.8529e-04\n", "Epoch 61/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 3.6154e-05 - loss: 2.6625e-04 - mass_balance: 5.0323e-04 - val_huber: 2.3741e-05 - val_loss: 2.9083e-04 - val_mass_balance: 5.5358e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 14ms/step - huber: 5.0825e-06 - loss: 1.4666e-04 - mass_balance: 2.8343e-04 - val_huber: 5.1209e-06 - val_loss: 1.3327e-04 - val_mass_balance: 2.5772e-04\n", "Epoch 62/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step - huber: 3.1682e-05 - loss: 2.4844e-04 - mass_balance: 4.7011e-04 - val_huber: 2.6166e-05 - val_loss: 2.8237e-04 - val_mass_balance: 5.3732e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m43s\u001b[0m 20ms/step - huber: 5.0889e-06 - loss: 1.3682e-04 - mass_balance: 2.6464e-04 - val_huber: 5.0834e-06 - val_loss: 1.4988e-04 - val_mass_balance: 2.8934e-04\n", "Epoch 63/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 12ms/step - huber: 3.0130e-05 - loss: 2.4775e-04 - mass_balance: 4.6928e-04 - val_huber: 2.4671e-05 - val_loss: 2.3591e-04 - val_mass_balance: 4.4794e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m40s\u001b[0m 19ms/step - huber: 5.0591e-06 - loss: 1.3515e-04 - mass_balance: 2.6139e-04 - val_huber: 5.1470e-06 - val_loss: 1.2799e-04 - val_mass_balance: 2.4773e-04\n", "Epoch 64/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.7064e-05 - loss: 2.3829e-04 - mass_balance: 4.5196e-04 - val_huber: 2.1523e-05 - val_loss: 1.8855e-04 - val_mass_balance: 3.5818e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 14ms/step - huber: 4.9691e-06 - loss: 1.2877e-04 - mass_balance: 2.4919e-04 - val_huber: 5.0298e-06 - val_loss: 1.1693e-04 - val_mass_balance: 2.2647e-04\n", "Epoch 65/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 3.5418e-05 - loss: 2.2991e-04 - mass_balance: 4.3373e-04 - val_huber: 2.2211e-05 - val_loss: 2.4162e-04 - val_mass_balance: 4.5929e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m44s\u001b[0m 21ms/step - huber: 5.0717e-06 - loss: 1.2507e-04 - mass_balance: 2.4207e-04 - val_huber: 5.0533e-06 - val_loss: 1.3526e-04 - val_mass_balance: 2.6120e-04\n", "Epoch 66/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 12ms/step - huber: 2.7332e-05 - loss: 2.2668e-04 - mass_balance: 4.2955e-04 - val_huber: 2.3143e-05 - val_loss: 2.1197e-04 - val_mass_balance: 4.0182e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m607s\u001b[0m 290ms/step - huber: 4.9530e-06 - loss: 1.2144e-04 - mass_balance: 2.3516e-04 - val_huber: 4.8186e-06 - val_loss: 1.2243e-04 - val_mass_balance: 2.3730e-04\n", "Epoch 67/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 12ms/step - huber: 3.1761e-05 - loss: 2.1444e-04 - mass_balance: 4.0479e-04 - val_huber: 2.1088e-05 - val_loss: 2.0780e-04 - val_mass_balance: 3.9437e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m47s\u001b[0m 23ms/step - huber: 4.7682e-06 - loss: 1.1859e-04 - mass_balance: 2.2973e-04 - val_huber: 4.7960e-06 - val_loss: 1.0882e-04 - val_mass_balance: 2.1102e-04\n", "Epoch 68/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.9258e-05 - loss: 2.1371e-04 - mass_balance: 4.0413e-04 - val_huber: 2.0805e-05 - val_loss: 2.2247e-04 - val_mass_balance: 4.2178e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m47s\u001b[0m 23ms/step - huber: 4.7286e-06 - loss: 1.1726e-04 - mass_balance: 2.2717e-04 - val_huber: 4.7613e-06 - val_loss: 1.1103e-04 - val_mass_balance: 2.1515e-04\n", "Epoch 69/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 3.0333e-05 - loss: 1.9963e-04 - mass_balance: 3.7686e-04 - val_huber: 2.0850e-05 - val_loss: 2.4595e-04 - val_mass_balance: 4.6860e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m47s\u001b[0m 22ms/step - huber: 4.7448e-06 - loss: 1.1565e-04 - mass_balance: 2.2412e-04 - val_huber: 4.8272e-06 - val_loss: 1.1786e-04 - val_mass_balance: 2.2812e-04\n", "Epoch 70/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 11ms/step - huber: 2.4570e-05 - loss: 1.9933e-04 - mass_balance: 3.7760e-04 - val_huber: 1.9540e-05 - val_loss: 2.2234e-04 - val_mass_balance: 4.2295e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m47s\u001b[0m 22ms/step - huber: 4.7476e-06 - loss: 1.1466e-04 - mass_balance: 2.2210e-04 - val_huber: 4.7342e-06 - val_loss: 1.0681e-04 - val_mass_balance: 2.0719e-04\n", "Epoch 71/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 2.9600e-05 - loss: 1.8997e-04 - mass_balance: 3.5837e-04 - val_huber: 1.9270e-05 - val_loss: 1.8605e-04 - val_mass_balance: 3.5303e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m47s\u001b[0m 22ms/step - huber: 4.6733e-06 - loss: 1.0968e-04 - mass_balance: 2.1259e-04 - val_huber: 4.6901e-06 - val_loss: 1.0349e-04 - val_mass_balance: 2.0065e-04\n", "Epoch 72/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.9223e-05 - loss: 1.8909e-04 - mass_balance: 3.5671e-04 - val_huber: 1.9539e-05 - val_loss: 2.0576e-04 - val_mass_balance: 3.9015e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m47s\u001b[0m 22ms/step - huber: 4.6537e-06 - loss: 1.0760e-04 - mass_balance: 2.0860e-04 - val_huber: 4.7121e-06 - val_loss: 1.0149e-04 - val_mass_balance: 1.9677e-04\n", "Epoch 73/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.4424e-05 - loss: 1.8592e-04 - mass_balance: 3.5180e-04 - val_huber: 2.0195e-05 - val_loss: 1.4592e-04 - val_mass_balance: 2.7530e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m47s\u001b[0m 22ms/step - huber: 4.6164e-06 - loss: 1.0643e-04 - mass_balance: 2.0635e-04 - val_huber: 4.7181e-06 - val_loss: 1.0357e-04 - val_mass_balance: 2.0071e-04\n", "Epoch 74/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.8129e-05 - loss: 1.7866e-04 - mass_balance: 3.3693e-04 - val_huber: 1.8796e-05 - val_loss: 1.6450e-04 - val_mass_balance: 3.1172e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m51s\u001b[0m 24ms/step - huber: 4.6530e-06 - loss: 1.0524e-04 - mass_balance: 2.0400e-04 - val_huber: 4.7736e-06 - val_loss: 1.0394e-04 - val_mass_balance: 2.0129e-04\n", "Epoch 75/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 11ms/step - huber: 2.8131e-05 - loss: 1.7490e-04 - mass_balance: 3.2968e-04 - val_huber: 1.8508e-05 - val_loss: 1.6301e-04 - val_mass_balance: 3.0866e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m48s\u001b[0m 23ms/step - huber: 4.7250e-06 - loss: 1.0355e-04 - mass_balance: 2.0075e-04 - val_huber: 4.7829e-06 - val_loss: 1.0489e-04 - val_mass_balance: 2.0334e-04\n", "Epoch 76/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 2.4057e-05 - loss: 1.6790e-04 - mass_balance: 3.1727e-04 - val_huber: 1.9083e-05 - val_loss: 1.7234e-04 - val_mass_balance: 3.2680e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 21ms/step - huber: 4.6707e-06 - loss: 1.0087e-04 - mass_balance: 1.9560e-04 - val_huber: 4.8053e-06 - val_loss: 1.0110e-04 - val_mass_balance: 1.9607e-04\n", "Epoch 77/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 11ms/step - huber: 2.9163e-05 - loss: 1.6804e-04 - mass_balance: 3.1613e-04 - val_huber: 1.9127e-05 - val_loss: 1.4898e-04 - val_mass_balance: 2.8119e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m46s\u001b[0m 22ms/step - huber: 4.6710e-06 - loss: 1.0031e-04 - mass_balance: 1.9451e-04 - val_huber: 4.6630e-06 - val_loss: 9.5925e-05 - val_mass_balance: 1.8603e-04\n", "Epoch 78/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 3.2734e-05 - loss: 1.5912e-04 - mass_balance: 2.9818e-04 - val_huber: 1.9169e-05 - val_loss: 1.5775e-04 - val_mass_balance: 2.9927e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m49s\u001b[0m 23ms/step - huber: 4.6283e-06 - loss: 9.8076e-05 - mass_balance: 1.9019e-04 - val_huber: 4.7553e-06 - val_loss: 9.4750e-05 - val_mass_balance: 1.8373e-04\n", "Epoch 79/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.5924e-05 - loss: 1.5885e-04 - mass_balance: 2.9926e-04 - val_huber: 1.9022e-05 - val_loss: 1.7911e-04 - val_mass_balance: 3.4080e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m45s\u001b[0m 22ms/step - huber: 4.6547e-06 - loss: 9.8083e-05 - mass_balance: 1.9018e-04 - val_huber: 4.6744e-06 - val_loss: 9.3940e-05 - val_mass_balance: 1.8219e-04\n", "Epoch 80/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.4396e-05 - loss: 1.5074e-04 - mass_balance: 2.8407e-04 - val_huber: 1.8558e-05 - val_loss: 1.3966e-04 - val_mass_balance: 2.6391e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m43s\u001b[0m 21ms/step - huber: 4.6005e-06 - loss: 9.5971e-05 - mass_balance: 1.8612e-04 - val_huber: 4.6503e-06 - val_loss: 9.8036e-05 - val_mass_balance: 1.8996e-04\n", "Epoch 81/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.7325e-05 - loss: 1.5136e-04 - mass_balance: 2.8449e-04 - val_huber: 2.0540e-05 - val_loss: 1.3134e-04 - val_mass_balance: 2.4671e-04\n", + "\u001b[1m2092/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m44s\u001b[0m 21ms/step - huber: 4.6730e-06 - loss: 9.5571e-05 - mass_balance: 1.8532e-04 - val_huber: 4.5886e-06 - val_loss: 9.7571e-05 - val_mass_balance: 1.8912e-04\n", "Epoch 82/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 12ms/step - huber: 2.6151e-05 - loss: 1.4802e-04 - mass_balance: 2.7826e-04 - val_huber: 1.9531e-05 - val_loss: 1.2805e-04 - val_mass_balance: 2.4077e-04\n", - "Epoch 83/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.7614e-05 - loss: 1.4386e-04 - mass_balance: 2.6984e-04 - val_huber: 1.9598e-05 - val_loss: 1.8651e-04 - val_mass_balance: 3.5418e-04\n", - "Epoch 84/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.7264e-05 - loss: 1.4393e-04 - mass_balance: 2.7011e-04 - val_huber: 1.8636e-05 - val_loss: 1.6764e-04 - val_mass_balance: 3.1838e-04\n", - "Epoch 85/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 10ms/step - huber: 2.4043e-05 - loss: 1.3625e-04 - mass_balance: 2.5608e-04 - val_huber: 1.8908e-05 - val_loss: 1.1168e-04 - val_mass_balance: 2.0970e-04\n", - "Epoch 86/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.5515e-05 - loss: 1.3550e-04 - mass_balance: 2.5437e-04 - val_huber: 1.8760e-05 - val_loss: 1.2953e-04 - val_mass_balance: 2.4397e-04\n", - "Epoch 87/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 12ms/step - huber: 2.7067e-05 - loss: 1.3032e-04 - mass_balance: 2.4385e-04 - val_huber: 1.8677e-05 - val_loss: 1.3273e-04 - val_mass_balance: 2.5018e-04\n", - "Epoch 88/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 3.1999e-05 - loss: 1.3079e-04 - mass_balance: 2.4365e-04 - val_huber: 1.8354e-05 - val_loss: 1.2330e-04 - val_mass_balance: 2.3299e-04\n", - "Epoch 89/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.7458e-05 - loss: 1.2483e-04 - mass_balance: 2.3318e-04 - val_huber: 1.8978e-05 - val_loss: 1.3712e-04 - val_mass_balance: 2.5954e-04\n", - "Epoch 90/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.5748e-05 - loss: 1.2475e-04 - mass_balance: 2.3357e-04 - val_huber: 1.8841e-05 - val_loss: 1.0728e-04 - val_mass_balance: 2.0082e-04\n", - "Epoch 91/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.4423e-05 - loss: 1.2134e-04 - mass_balance: 2.2726e-04 - val_huber: 1.8523e-05 - val_loss: 1.0438e-04 - val_mass_balance: 1.9560e-04\n", - "Epoch 92/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 13ms/step - huber: 2.9029e-05 - loss: 1.1902e-04 - mass_balance: 2.2165e-04 - val_huber: 1.8708e-05 - val_loss: 1.2226e-04 - val_mass_balance: 2.3069e-04\n", - "Epoch 93/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 11ms/step - huber: 2.3506e-05 - loss: 1.1819e-04 - mass_balance: 2.2132e-04 - val_huber: 1.8732e-05 - val_loss: 1.2178e-04 - val_mass_balance: 2.2955e-04\n", - "Epoch 94/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.5712e-05 - loss: 1.1423e-04 - mass_balance: 2.1317e-04 - val_huber: 1.8863e-05 - val_loss: 1.1347e-04 - val_mass_balance: 2.1352e-04\n", - "Epoch 95/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.5301e-05 - loss: 1.1412e-04 - mass_balance: 2.1303e-04 - val_huber: 1.8430e-05 - val_loss: 1.0728e-04 - val_mass_balance: 2.0157e-04\n", - "Epoch 96/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.4672e-05 - loss: 1.0913e-04 - mass_balance: 2.0350e-04 - val_huber: 1.8425e-05 - val_loss: 1.2479e-04 - val_mass_balance: 2.3540e-04\n", - "Epoch 97/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 11ms/step - huber: 2.1816e-05 - loss: 1.0856e-04 - mass_balance: 2.0323e-04 - val_huber: 1.8269e-05 - val_loss: 1.0062e-04 - val_mass_balance: 1.8860e-04\n", - "Epoch 98/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.7558e-05 - loss: 1.0698e-04 - mass_balance: 1.9863e-04 - val_huber: 1.8533e-05 - val_loss: 1.0357e-04 - val_mass_balance: 1.9424e-04\n", - "Epoch 99/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.3566e-05 - loss: 1.0499e-04 - mass_balance: 1.9578e-04 - val_huber: 1.8690e-05 - val_loss: 1.1137e-04 - val_mass_balance: 2.0950e-04\n", - "Epoch 100/100\n", - "\u001b[1m886/886\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 11ms/step - huber: 2.6048e-05 - loss: 1.0412e-04 - mass_balance: 1.9363e-04 - val_huber: 1.8614e-05 - val_loss: 9.9243e-05 - val_mass_balance: 1.8583e-04\n", - "Training took 986.1324112415314 seconds\n" + "\u001b[1m2047/2092\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - huber: 4.5378e-06 - loss: 9.4813e-05 - mass_balance: 1.8389e-04" ] } ], "source": [ - "history = model_training(model, epochs=100)" + "history = model_training(model, epochs=100)\n" ] }, { @@ -1165,7 +925,7 @@ ], "metadata": { "kernelspec": { - "display_name": "ai", + "display_name": "training", "language": "python", "name": "python3" }, diff --git a/src/preprocessing.py b/src/preprocessing.py index d7ecd3e..af21266 100644 --- a/src/preprocessing.py +++ b/src/preprocessing.py @@ -21,7 +21,7 @@ from importlib import reload set_config(transform_output="pandas") -def model_definition(architecture): +def model_definition(architecture, n_input, n_output): """Definition of the respective AI model. Three models are currently being analysed, which are labelled ‘small’, ‘large’ or ‘paper’. Args: @@ -34,66 +34,71 @@ def model_definition(architecture): if architecture == "small": model = keras.Sequential( [ - keras.Input(shape=(8,), dtype=dtype), + keras.Input(shape=(n_input,), dtype=dtype), keras.layers.Dense(units=128, dtype=dtype), LeakyReLU(negative_slope=0.01), # Dropout(0.2), keras.layers.Dense(units=128, dtype=dtype), LeakyReLU(negative_slope=0.01), - keras.layers.Dense(units=8, dtype=dtype), + keras.layers.Dense(units=n_output, dtype=dtype), ] ) elif architecture == "large": model = keras.Sequential( [ - keras.layers.Input(shape=(8,), dtype=dtype), + keras.layers.Input(shape=(n_input,), dtype=dtype), keras.layers.Dense(512, dtype=dtype), LeakyReLU(negative_slope=0.01), keras.layers.Dense(1024, dtype=dtype), LeakyReLU(negative_slope=0.01), keras.layers.Dense(512, dtype=dtype), LeakyReLU(negative_slope=0.01), - keras.layers.Dense(8, dtype=dtype), + keras.layers.Dense(n_output, dtype=dtype), ] ) - + elif architecture == "large_batch_normalization": model = keras.Sequential([ - keras.layers.Input(shape=(8,), dtype=dtype), - BatchNormalization(), + keras.layers.Input(shape=(n_input,), dtype=dtype), + BatchNormalization(), - Dense(512, dtype=dtype), - LeakyReLU(negative_slope=0.01), - # BatchNormalization(), + Dense(512, dtype=dtype), + LeakyReLU(negative_slope=0.01), + Dropout(0.05), + BatchNormalization(), - Dense(1024, dtype=dtype), - LeakyReLU(negative_slope=0.01), - # BatchNormalization(), + Dense(1024, dtype=dtype), + LeakyReLU(negative_slope=0.01), + Dropout(0.05), + BatchNormalization(), - Dense(512, dtype=dtype), - LeakyReLU(negative_slope=0.01), + Dense(512, dtype=dtype), + Dropout(0.05), + LeakyReLU(negative_slope=0.01), - Dense(8, dtype=dtype), + Dense(n_output, dtype=dtype), ]) - - + elif architecture == "large_self_normalization": model = keras.Sequential([ - keras.layers.Input(shape=(8,), dtype=dtype), - Dense(512, activation='selu', kernel_initializer='lecun_normal', dtype=dtype), - AlphaDropout(0.05), - Dense(1024, activation='selu', kernel_initializer='lecun_normal',dtype=dtype), - AlphaDropout(0.05), - Dense(512, activation='selu', kernel_initializer='lecun_normal',dtype=dtype), - AlphaDropout(0.05), - Dense(8, dtype=dtype), + keras.layers.Input(shape=(n_input,), dtype=dtype), + Dense(512, activation='selu', + kernel_initializer='lecun_normal', dtype=dtype), + AlphaDropout(0.05), + Dense(1024, activation='selu', + kernel_initializer='lecun_normal', dtype=dtype), + AlphaDropout(0.05), + Dense(512, activation='selu', + kernel_initializer='lecun_normal', dtype=dtype), + AlphaDropout(0.05), + Dense(n_output, dtype=dtype), ]) elif architecture == "paper": model = keras.Sequential( [ - keras.layers.Input(shape=(8,), dtype=dtype), + keras.layers.Input(shape=(n_input,), dtype=dtype), keras.layers.Dense(128, dtype=dtype), LeakyReLU(negative_slope=0.01), keras.layers.Dense(256, dtype=dtype), @@ -102,14 +107,13 @@ def model_definition(architecture): LeakyReLU(negative_slope=0.01), keras.layers.Dense(256, dtype=dtype), LeakyReLU(negative_slope=0.01), - keras.layers.Dense(8, dtype=dtype), + keras.layers.Dense(n_output, dtype=dtype), ] ) else: raise Exception( "No valid architecture found." - + "Choose between 'small', 'large' or 'paper'." ) return model @@ -139,7 +143,7 @@ def custom_loss( h1: hyperparameter for the importance of the huber loss h2: hyperparameter for the importance of the Barium mass balance term h3: hyperparameter for the importance of the Strontium mass balance term - scaler_type: Normalization approach. Choose between "standard" and "minmax". Defaults to "minmax". + scaler_type: Normalization approach. Choose between "standard", "minmax" and "none". Defaults to "minmax". loss_variant: Loss function approach. Choose between "huber and "huber_mass_balance". Defaults to "huber". delta: Hyperparameter for the Huber function threshold. Defaults to 1.0. @@ -149,40 +153,34 @@ def custom_loss( # as far as I know tensorflow does not directly support the use of scaler objects # therefore, the backtransformation is done manually - + if preprocess.scaler_type != scaler_type: raise Exception( - "Data normalized with scaler different than specified for the training. Compare the scaling approach on preprocessing and training.") - - try: - if scaler_type == "minmax": - scale_X = tf.convert_to_tensor( - preprocess.scaler_X.data_range_, dtype=tf.float32 - ) - min_X = tf.convert_to_tensor( - preprocess.scaler_X.data_min_, dtype=tf.float32 - ) - scale_y = tf.convert_to_tensor( - preprocess.scaler_y.data_range_, dtype=tf.float32 - ) - min_y = tf.convert_to_tensor( - preprocess.scaler_y.data_min_, dtype=tf.float32 - ) + "Data normalized with scaler different than specified for the training. Compare the scaling approach on preprocessing and training. Scaler type on preprocessing was {0} and on training {1}.".format( + preprocess.scaler_type, scaler_type)) - elif scaler_type == "standard": - scale_X = tf.convert_to_tensor( - preprocess.scaler_X.scale_, dtype=tf.float32) - mean_X = tf.convert_to_tensor( - preprocess.scaler_X.mean_, dtype=tf.float32) - scale_y = tf.convert_to_tensor( - preprocess.scaler_y.scale_, dtype=tf.float32) - mean_y = tf.convert_to_tensor( - preprocess.scaler_y.mean_, dtype=tf.float32) - - except AttributeError: - raise Exception( - "Data normalized with scaler different than specified for the training. Compare the scaling approach on preprocessing and training." + if scaler_type == "minmax": + scale_X = tf.convert_to_tensor( + preprocess.scaler_X.data_range_, dtype=tf.float32 ) + min_X = tf.convert_to_tensor( + preprocess.scaler_X.data_min_, dtype=tf.float32 + ) + scale_y = tf.convert_to_tensor( + preprocess.scaler_y.data_range_, dtype=tf.float32 + ) + min_y = tf.convert_to_tensor( + preprocess.scaler_y.data_min_, dtype=tf.float32 + ) + elif scaler_type == "standard": + scale_X = tf.convert_to_tensor( + preprocess.scaler_X.scale_, dtype=tf.float32) + mean_X = tf.convert_to_tensor( + preprocess.scaler_X.mean_, dtype=tf.float32) + scale_y = tf.convert_to_tensor( + preprocess.scaler_y.scale_, dtype=tf.float32) + mean_y = tf.convert_to_tensor( + preprocess.scaler_y.mean_, dtype=tf.float32) def loss(results, predicted): # inverse min/max scaling @@ -194,7 +192,7 @@ def custom_loss( elif scaler_type == "standard": predicted_inverse = predicted * scale_y + mean_y results_inverse = results * scale_X + mean_X - + elif scaler_type == "none": predicted_inverse = predicted results_inverse = results @@ -288,7 +286,7 @@ def mass_balance_metric(preprocess, column_dict, scaler_type="minmax"): elif scaler_type == "standard": predicted_inverse = predicted * scale_y + mean_y results_inverse = results * scale_X + mean_X - + elif scaler_type == "none": predicted_inverse = predicted results_inverse = results @@ -357,16 +355,16 @@ def mass_balance_evaluation(model, X, preprocess): classes.reset_index(drop=True, inplace=True) prediction = pd.DataFrame(model.predict(X[columns]), columns=columns) # backtransform min/max or standard scaler - - + if preprocess.scaler_X is None: X = pd.DataFrame( - preprocess.scaler_X.inverse_transform(X.iloc[:, X.columns != "Class"]), - columns=columns, + preprocess.scaler_X.inverse_transform( + X.iloc[:, X.columns != "Class"]), + columns=columns, ) prediction = pd.DataFrame( preprocess.scaler_y.inverse_transform(prediction), columns=columns - ) + ) # apply backtransformation if log transformation was applied if preprocess.func_dict_out is not None: @@ -429,6 +427,7 @@ class preprocessing: self.func_dict_out = func_dict_out if func_dict_out is not None else None self.state = {"cluster": False, "log": False, "balance": False, "scale": False} + self.scaler_type = "none" def funcTranform(self, *args): """Apply the transformation function to the data columnwise. @@ -456,7 +455,7 @@ class preprocessing: self.state["log"] = False return args - def cluster(self, X, y, species="Barite", n_clusters=2, x_length=50, y_length=50): + def cluster_kmeans(self, X, y, species="Barite", n_clusters=2, x_length=50, y_length=50): """Apply k-means clustering to the data to differentiate betweeen reactive and non-reactive cells. Args: @@ -470,10 +469,10 @@ class preprocessing: Returns: X, y dataframes with an additional column "Class" containing the cluster labels. """ + class_labels = np.array([]) grid_length = x_length * y_length iterations = int(len(X) / grid_length) - # calculate the cluster for each chemical iteration step for i in range(0, iterations): field = np.array( @@ -483,16 +482,31 @@ class preprocessing: field.reshape(-1, 1) ) class_labels = np.append(class_labels.astype(int), kmeans.labels_) - if "Class" in X.columns and "Class" in y.columns: print("Class column already exists") else: class_labels_df = pd.DataFrame(class_labels, columns=["Class"]) X = pd.concat([X, class_labels_df], axis=1) y = pd.concat([y, class_labels_df], axis=1) - self.state["cluster"] = True - + self.state["cluster"] = True + return X, y + + + def cluster_manual(self, X, y, species="Cl", threshold=1E-10): + + if "Class" in X.columns or "Class" in y.columns: + raise Exception("Class column already exists") + + label = np.zeros(len(X)) + label[X[species] > threshold] = 1 + X["Class"] = label + y["Class"] = label + + return X, y + + + def balancer(self, X, y, strategy, sample_fraction=0.5): """Apply sampling strategies to balance the dataset. @@ -570,7 +584,7 @@ class preprocessing: self.state["balance"] = True return design_resampled, target_resampled - def scale_fit(self, X, y, scaling, type="Standard"): + def scale_fit(self, X, y, scaling, type="standard"): self.scaler_type = type """Fit a scaler for data preprocessing. @@ -697,7 +711,8 @@ class preprocessing: Returns: Elements with selected class label. """ + result = [] for i in args: - i = i[i["Class"] == class_label] - - return args + result.append(i[i["Class"] == class_label]) + + return result