Last active
February 20, 2020 21:48
-
-
Save stoerr/ae51a7957e332b785fa48adfb64fa495 to your computer and use it in GitHub Desktop.
Estimation of mean and variance / standard deviation of a stochastic process with a neural network
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"nbformat": 4, | |
"nbformat_minor": 0, | |
"metadata": { | |
"colab": { | |
"name": "PredictVariability.ipynb", | |
"provenance": [], | |
"collapsed_sections": [ | |
"h0xpx4NfR5e7", | |
"GtREWDEOR5fR", | |
"L3rnKj5tR5fj", | |
"s4o9bV5qR5gI", | |
"e9trZJQiR5gp" | |
], | |
"include_colab_link": true | |
}, | |
"kernelspec": { | |
"name": "python3", | |
"display_name": "Python 3" | |
}, | |
"pycharm": { | |
"stem_cell": { | |
"cell_type": "raw", | |
"source": [], | |
"metadata": { | |
"collapsed": false | |
} | |
} | |
} | |
}, | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "view-in-github", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/stoerr/ae51a7957e332b785fa48adfb64fa495/predictvariability.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "VB1T9okqR5dx", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# Estimation of mean and standard deviation of a stochastic process with a neural network\n", | |
"\n", | |
"While it's obvious how to estimate something with a neural network, [I](http://www.stoerr.net) had some trouble finding a way to [asess the correctness of that estimation](https://stackoverflow.com/questions/56206942/how-can-i-predict-the-expected-value-and-the-variance-simultaneously-with-a-neur) - which amounts to estimating the variance or standard deviation of the result. So let's do it ourselves.\n", | |
"\n", | |
"Lets try to estimate the mean $\\mu$ and the standard deviation $\\sigma$ (the square root of the variance) of a partially random value. We assume that a variable $y$ is the sum of a function $f(x)$ and a random number of a gaussian distribution with a standard deviation being another function $g(x)$, and try to approximate both $f(x)$ and $g(x)$ by outputs of the neural network.\n", | |
"\n", | |
"The basic idea is here to use the [definitions of the standard deviation](https://en.wikipedia.org/wiki/Standard_deviation):\n", | |
"$\\sigma = \\sqrt{E[(X-E[X])^2]}$ or, alternatively, $\\sigma = \\sqrt{E[X^2] - E[X]^2}$ , where $E[something]$ is the [expected value](https://en.wikipedia.org/wiki/Expected_value) of something. If we use a neural net with the mean_squared_error loss function, the network approximates the expected value of the outputs for each given input, given enough samples, of course.\n", | |
"\n", | |
"(Note that this normally not the case for loss functions other than mean squared error. This happens because the first derivation of the mean squared error is just the error - each sample's contribution to the gradient is proportional to the difference of the neural networks output and the true value, and this gets zero when the output is just the expected value for the input.)\n", | |
"\n", | |
"A third way using a maximum likelihood estimation is also presented below." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "p41u_0Z4R5d2", | |
"colab_type": "code", | |
"outputId": "55a67deb-984c-4e61-8e90-916d491b3a9f", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 50 | |
} | |
}, | |
"source": [ | |
"#@title Imports and utilities {display-mode: \"form\"}\n", | |
"%tensorflow_version 2.x\n", | |
"\n", | |
"import tensorflow as tf\n", | |
"from tensorflow import keras\n", | |
"from tensorflow.python.keras import backend as K\n", | |
"from tensorflow.python.ops import array_ops\n", | |
"from tensorflow.python.ops import math_ops\n", | |
"\n", | |
"import pandas as pd\n", | |
"import matplotlib.pyplot as plt\n", | |
"import seaborn as sns\n", | |
"import sklearn as sk\n", | |
"import numpy as np\n", | |
"import functools\n", | |
"import itertools\n", | |
"import time\n", | |
"import os\n", | |
"import datetime\n", | |
"\n", | |
"print([tf.__version__, pd.__version__, sns.__version__ ,plt.matplotlib.__version__])\n", | |
"\n", | |
"\n", | |
"# Display training progress by printing a single dot for each completed epoch\n", | |
"class PrintDot(tf.keras.callbacks.Callback):\n", | |
" def on_epoch_end(self, epoch, logs):\n", | |
" if epoch % 100 == 0: print('')\n", | |
" print('.', end='')\n", | |
"\n", | |
"early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=100, min_delta=1e-10, verbose=1)\n", | |
"terminate_nan = keras.callbacks.TerminateOnNaN()\n", | |
"\n", | |
"def plot_history(history):\n", | |
" hist = pd.DataFrame(history.history)\n", | |
" hist['epoch'] = history.epoch\n", | |
"\n", | |
" plt.figure()\n", | |
" plt.xlabel('Epoch')\n", | |
" plt.ylabel('Val Loss')\n", | |
" plt.semilogy(hist['epoch'], hist['loss'], label='Train Error')\n", | |
" plt.plot(hist['epoch'], hist['val_loss'], label='Val Error')\n", | |
" # plt.ylim([0,5])\n", | |
" plt.legend()\n", | |
"\n", | |
"from IPython.core.pylabtools import figsize\n", | |
"figsize(12.5, 3)\n", | |
"\n", | |
"begintime = datetime.datetime.now()" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"TensorFlow 2.x selected.\n", | |
"['2.1.0', '0.25.3', '0.10.0', '3.1.3']\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "ebqghUQeR5d8", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Define the function\n", | |
"\n", | |
"As a simple test we use $f(x)=2x+1$ and $g(x)=0.7-0.5$ and try to recreate these functions from random samples in the interval [0,1)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "o63yYZO1R5d9", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"dim = 10000 # size of dataset for training purposes\n", | |
"x = np.random.random([dim,1])\n", | |
"f = x*2+1\n", | |
"g = (0.7-0.5*x)\n", | |
"y=np.random.normal(loc=f,scale=g)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "vz9sLtmXR5eI", | |
"colab_type": "code", | |
"outputId": "8e2d522d-49c8-4259-fdf5-97dd88266141", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 211 | |
} | |
}, | |
"source": [ | |
"plotdim = 500 # number of points for plotting purposes\n", | |
"xs = x[:plotdim,:]\n", | |
"plt.subplot(121)\n", | |
"plt.plot(xs,f[:plotdim], label='mean')\n", | |
"plt.legend()\n", | |
"plt.subplot(122)\n", | |
"plt.plot(xs,g[:plotdim], label='stddev')\n", | |
"plt.legend()\n", | |
"plt.show()" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAt4AAADCCAYAAAB+H8WWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3dd3hU1drG4d+bEAgdpEOo0qSX0HtR\nkCjYAfUgHpWjgoodO/YoFlCxoCIfRxEVPIJK772E3qRHCCAdpAVS1vdHwlCkBEhmJ5nnvq5czF6z\nZuZZyWTxZs/ae5tzDhERERERSVtBXgcQEREREQkEKrxFRERERPxAhbeIiIiIiB+o8BYRERER8QMV\n3iIiIiIifqDCW0RERETED7J49cIFCxZ0ZcqU8erlRUT8atGiRXucc4W8zuEVzfkiEkjON+d7VniX\nKVOGqKgor15eRMSvzOxPrzN4SXO+iASS8835WmoiIiIiIuIHKrxFRERERPzgooW3mYWa2QIzW2Zm\nq8zs1XP0yWZmP5jZBjObb2Zl0iKsiIikLTNrb2Zrk+fzPue4/0MzW5r8tc7MDniRU0QkI0rJGu/j\nQGvn3GEzCwFmmdlY59y80/rcB+x3zpU3sy7AO0DnSw0TFxdHTEwMsbGxl/rQDC80NJSwsDBCQkK8\njiIiAcrMgoGBwLVADLDQzEY751af7OOce/y0/o8Atf0eVEQ8Ech12vlcav120cLbOeeAw8mbIclf\n7qxunYC+ybdHAJ+YmSU/NsViYmLInTs3ZcqUwcwu5aEZmnOOvXv3EhMTQ9myZb2OIyLnsGHXIV78\nZSUv3VCFqsXzeh0nrdQHNjjnNgGY2XCS5vfV5+nfFXglrcIs2LyPDyaupX/n2hTNG5pWLyMiKRSo\nddr5XE79lqI13mYWbGZLgV3AROfc/LO6lAC2JoeIBw4CBc7xPD3MLMrMonbv3v2P14mNjaVAgQIB\n98M0MwoUKKC/IEXSoa37jlKmz++0/WAG8zbtY9X2v72OlJZ8c3mymOS2fzCz0kBZYMr5nuxic/7F\nTF27i3mb9tHw7cnUfm0Cew8fv+TnEJHUE6h12vlcTv2WosLbOZfgnKsFhAH1zaza5QR0zg1yzoU7\n58ILFTr36WwD9YcZqOMWSa92/h1LxRfH0uzdqb62z++uyx3hJT1Mla50AUY45xLO1yElc/6FPNu+\nMq/flPTfzf6jcdR9YxLN3p3CwWNxlx1aRK6M6pUzXer345LOauKcOwBMBdqfddc2oGRygCxAXmDv\nJSUREUkH9h05QfgbE2nw1mROxCcC8P7tNYmOjKB9taIep0tzvrk8WVhy27l0Ab5P60D/alia6MgI\n+lxfGYCt+45R89UJdBgwk6Mn4tP65UUknevfvz9Hjx49531DhgyhV69e57wvV65caRnrvFJyVpNC\nZpYv+XZ2kg66+eOsbqOBe5Jv3wZMudT13SIiXvo7No6W/aZS5/WJ7Dl8AoDXOlUlOjKCW+uGeZzO\nbxYCFcysrJllJam4Hn12JzOrDOQH5vor2IMtriY6MoJercoDsHrH31R5eTydv5jL8fjz7nQXkUzu\nQoV3epSSPd7FgKlmtpykSXmic+43M3vNzDom9/kaKGBmG4AngH+cgiqjiI6OpnLlynTv3p2KFSty\n1113MWnSJJo0aUKFChVYsGABR44c4d///jf169endu3ajBo1yvfYZs2aUadOHerUqcOcOXMAmDZt\nGi1btuS2226jcuXK3HXXXejvEpH04diJBG78eBY1+k4gem/S5P1M+0pER0bQrVEZb8P5WfIxOr2A\n8cAa4Efn3Kqz5ntIKsiHe7GD5al2ldj8dge6Ny4DwPzN+6j04jju/7+FxCck+juOiPjRkSNHiIiI\noGbNmlSrVo1XX32V7du306pVK1q1agXAN998Q8WKFalfvz6zZ8/2PXbz5s00atSI6tWr8+KLL57x\nvP369aNevXrUqFGDV15JOl68T58+DBw40Nenb9++vPfee1c8hpSc1WQ55zhdlHPu5dNuxwK3X3Ga\n07z66ypWp/JBTFWK5+GVG6tetN+GDRv46aefGDx4MPXq1WPYsGHMmjWL0aNH89Zbb1GlShVat27N\n4MGDOXDgAPXr16dt27YULlyYiRMnEhoayvr16+natavvEslLlixh1apVFC9enCZNmjB79myaNm2a\nquMTkZQ7Hp/Avd8sZM7GU6viHm55NU+3qxTQaxidc2OAMWe1vXzWdl9/ZjqbmdG3Y1VevqEKT/20\njJ+XbGPSml2Uf2Est9QuwXu31yQoKHB/hiL+4EWdNm7cOIoXL87vv/8OwMGDB/nmm2+YOnUqBQsW\nZMeOHbzyyissWrSIvHnz0qpVK2rXTiphH3vsMR566CG6det2RkE9YcIE1q9fz4IFC3DO0bFjR2bM\n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\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "KSoERXNhR5eL", | |
"colab_type": "code", | |
"outputId": "c105ea2f-0f55-4451-e325-8d348f85ff2d", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 211 | |
} | |
}, | |
"source": [ | |
"plt.scatter(x,y)\n", | |
"plt.show()" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "21oTUdwtR5eQ", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# Define the network and training procedures\n", | |
"\n", | |
"For experimenting with the variants it is helpful to define the model creation, training and plotting as procedures, so that it is easy to modify parameters for all variants simultaneously. We define a procedure makeModel that creates a model, singleTrainedModel that creates and trains a model, and trainedModel that repeats singleTrainedModel a number of times and returns the best model. plot does various plots to see how good our approximation of the real probabilities is." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "VoxylR7pR5eR", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"def makeModel(numoutputs=2, loss=tf.keras.losses.mean_squared_error) -> tf.keras.Model:\n", | |
" model = tf.keras.Sequential()\n", | |
" model.add(tf.keras.layers.Dense(32, input_shape=[1] , activation=tf.nn.softsign\n", | |
" , kernel_regularizer=keras.regularizers.l2(0.01)\n", | |
" ))\n", | |
" model.add(keras.layers.Dropout(0.1))\n", | |
" model.add(tf.keras.layers.Dense(8, input_shape=[1] , activation=tf.nn.softsign\n", | |
" , kernel_regularizer=keras.regularizers.l2(0.01)\n", | |
" ))\n", | |
" model.add(keras.layers.Dropout(0.1))\n", | |
" model.add(tf.keras.layers.Dense(numoutputs))\n", | |
" model.compile(optimizer=\"adam\", loss=loss)\n", | |
" # model.summary()\n", | |
" return model" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "HWA5-mKPR5eV", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"def singleTrainedModel(modelgenerator = makeModel) -> tf.keras.Model:\n", | |
" model = modelgenerator()\n", | |
" # print(datetime.datetime.now())\n", | |
" history = model.fit(x, y, epochs=250, batch_size=128, validation_split=0.1, verbose=0, callbacks=[terminate_nan,early_stop,PrintDot()])\n", | |
" # print(datetime.datetime.now())\n", | |
" print(history.history['loss'][-1])\n", | |
" return model" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "5MM9vAgUR5eZ", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"def trainedModel(modelgenerator = makeModel, tries=20) -> tf.keras.Model:\n", | |
" def evalmodel(model: tf.keras.Model):\n", | |
" # return np.min(model.history.history['val_loss'])\n", | |
" return model.evaluate(x,y)\n", | |
"\n", | |
" print(datetime.datetime.now())\n", | |
" bestmodel = singleTrainedModel(modelgenerator)\n", | |
" besteval = evalmodel(bestmodel)\n", | |
" for i in range(tries):\n", | |
" model = singleTrainedModel(modelgenerator)\n", | |
" modeleval = evalmodel(model)\n", | |
" havenan = np.any(np.isnan(model.history.history['loss']))\n", | |
" if (modeleval < besteval and not havenan):\n", | |
" bestmodel = model\n", | |
" besteval = modeleval\n", | |
" print(datetime.datetime.now())\n", | |
" bestmodel.summary()\n", | |
" plot_history(bestmodel.history)\n", | |
" return bestmodel" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "Xw4jXnPOR5ec", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"def plot(model):\n", | |
" \"\"\"Produces various plots to verify the quality of the approximation\"\"\"\n", | |
" xs = x[:plotdim,:]\n", | |
" predictMean = model.predict(xs)[:,0:1]\n", | |
" predictStdDev = np.abs(model.predict(xs)[:,1:2])\n", | |
" plotpredictions(xs, predictMean, predictStdDev)\n", | |
"\n", | |
"def plotpredictions(xs, predictMean, predictStdDev):\n", | |
" plt.subplot(221)\n", | |
" plt.scatter(xs,predictMean, label='pred. mean', color='b')\n", | |
" plt.plot(xs,f[:plotdim,:], label='mean', color='r')\n", | |
" plt.legend()\n", | |
"\n", | |
" plt.subplot(222)\n", | |
" plt.scatter(xs, predictMean/f[:plotdim],label='mean ratio')\n", | |
" plt.legend()\n", | |
"\n", | |
" plt.subplot(223)\n", | |
" plt.scatter(xs,predictStdDev, label='pred. var.', color='b')\n", | |
" plt.plot(xs,g[:plotdim,:], label='stddev', color='r')\n", | |
" plt.legend()\n", | |
"\n", | |
" plt.subplot(224)\n", | |
" plt.scatter(xs,predictStdDev/g[:plotdim,:], label='var ratio')\n", | |
" plt.legend()\n", | |
" plt.show()" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "ukVSqtpmR5ef", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# Direct approximation of $f$ and $g$\n", | |
"\n", | |
"A quick check that our type of model is able to approximate $f$ and $g$ directly." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "9ygxJ7WgR5eh", | |
"colab_type": "code", | |
"outputId": "5e08e35e-2edc-4f45-f366-23c9d9eb9c04", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 386 | |
} | |
}, | |
"source": [ | |
"fg = np.concatenate((f,g),axis=1)\n", | |
"fgmodel = makeModel(numoutputs=2, loss=tf.keras.losses.mean_squared_error)\n", | |
"fgmodel.summary()\n", | |
"fghistory = fgmodel.fit(x, fg, epochs=250, batch_size=128, validation_split=0.1, verbose=0, callbacks=[terminate_nan,early_stop,PrintDot()])\n", | |
"print(' ',fghistory.history['loss'][-1], ' ', fghistory.history['val_loss'][-1])" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"Model: \"sequential\"\n", | |
"_________________________________________________________________\n", | |
"Layer (type) Output Shape Param # \n", | |
"=================================================================\n", | |
"dense (Dense) (None, 32) 64 \n", | |
"_________________________________________________________________\n", | |
"dropout (Dropout) (None, 32) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_1 (Dense) (None, 8) 264 \n", | |
"_________________________________________________________________\n", | |
"dropout_1 (Dropout) (None, 8) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_2 (Dense) (None, 2) 18 \n", | |
"=================================================================\n", | |
"Total params: 346\n", | |
"Trainable params: 346\n", | |
"Non-trainable params: 0\n", | |
"_________________________________________________________________\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
".................................................. 0.005974109184410837 0.0028347711339592936\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "Y-L48nUnR5ex", | |
"colab_type": "code", | |
"outputId": "d57b1746-6fa6-4921-c8cb-f367f2e6d121", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 225 | |
} | |
}, | |
"source": [ | |
"plot_history(fgmodel.history) " | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\nv7eu3wAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "I7k-HQXXR5e2", | |
"colab_type": "code", | |
"outputId": "049dc0b9-3fbd-4400-e844-4524cab03d0d", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 211 | |
} | |
}, | |
"source": [ | |
"plot(fgmodel)" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuUAAADCCAYAAADuDLxZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeXhTVfrA8e/bUig7WNBhLzLKZoFC\nWRQUFBRURBxhWIq7IhQUf44IEUZwZrAouIAUARVFiaKgFhx1AFFcENSyyzaALLYwgBWQpUCX8/sj\naWjapE3apGnS9/M8eei999x7z23L6ZuT95wjxhiUUkoppZRSgRMW6AoopZRSSilV3mlQrpRSSiml\nVIBpUK6UUkoppVSAaVCulFJKKaVUgGlQrpRSSimlVIBpUK6UUkoppVSAVfD3DUQkEvgGqGS/3xJj\nzCR35evUqWOio6P9XS2llCoT1q9f/5sxpm6g6xEo2uYrpcqTwtp8vwflwHngBmPMaRGJAL4Tkc+N\nMetcFY6OjiYlJaUUqqWUUsVjtcKECXDwIDRuDFOmQHx88a4lIgd8W7vgom2+Uqo8KazN93tQbmyr\nE522b0bYX7pikVIqaDRoAIcOOe8LJ4uanOLAgdoMH27bV9zAXCmllCqVnHIRCReRTcBRYKUx5ofS\nuK9SShVHQgKEh4OI7XXoENTgJOOYynFqYRCyiOA4l1CFM5w9a+s5V0oppYqrVIJyY0y2MaYd0BDo\nJCJX5T0uIsNFJEVEUo4dO1YaVVJKKcCWihIdfTEAF4FXX4VGOft5hdEYBINwklpMxUItTjrOnco4\nzlIVsKWyKKWUUsVVGjnlDsaYEyLyFdAH+DnP/nnAPIC4uLgCqS2ZmZmkpqZy7ty5UqtreRcZGUnD\nhg2JiIgIdFWU8pmEBJg7F3JyCh7rxA9YSKQ/S92eP5/7mMZYdtKywLHGjX1ZU6WU8h+Nq/yvOHFU\nacy+UhfItAfklYEbgee8uUZqairVq1cnOjoaEfFLPdVFxhjS09NJTU2ladOmga6OUsWWkABz5oDJ\n91ZfyOEOPsZCInGsd3luJhVIxMIrPMJvFD45iohtsKdSSgUDjav8q7hxVGn0lNcDFohIOLZ0mQ+M\nMf/25gLnzp3TX5xSJCJERUWhqUQq2PTqBatWFdxfhTM8xGuMZyp/4ojLc/cRTSIW3uZuzhPp8T1F\nYMQIHeSplAoeGlf5V3HjqNKYfWULEFvS6+gvTunS77cqy6xWuP9+uHDB9fF6HOJxXuQJXnB7jW/p\nRiIWPudmoHi/702alGw6RKWUChT9O+9fxfn+lmpOuVJKFYfVCmPGQHq66+Nt2IyFRAbzvttrvMsQ\nnmMcW2hborqMHAmzZ5foEkoppYLA6tWrqVixItdccw0Ac+bMoUqVKtx9991+uZ8G5UqpMishwTYT\nijPDLXyGhUS6scbtuc8zlpd5jMPUL/b969eHtLRin66UUqqMy8rKokIF1+Hw6tWrqVatmiMoHzFi\nhF/rUipTIoaC/fv306JFC+69916uvPJK4uPj+eKLL+jatStXXHEFP/74I2fOnOH++++nU6dOxMbG\nsnTpUse51157Le3bt6d9+/Z8//33gO2H3aNHDwYMGECLFi2Ij4/H5B+RplSIs1qhTh3nKQnzTk1Y\niXMMZy77iLZPTxjGp/R1CsgP8yceZQZVOW2fwNAwjue9CsgrVICFC22DQnNfGpArpRQkb0yj69Qv\naTr+U7pO/ZLkjSVrHD2JqQC/xVU9evTgscceIy4ujhkzZvDJJ5/QuXNnYmNj6dWrF0eOHGH//v3M\nmTOHl156iXbt2vHtt98yefJkpk+fDsCmTZvo0qULbdq04Y477uD48eMl+p5AMPaUP/YYbNrk22u2\nawcvv1xksT179rB48WLmz59Px44deffdd/nuu+9YtmwZzz77LK1ateKGG25g/vz5nDhxgk6dOtGr\nVy8uvfRSVq5cSWRkJLt372bIkCGOZaU3btzItm3bqF+/Pl27dmXNmjV069bNt8+nVBmRd3n6iAjX\nOeF1OMajzMRCIhXIdnmdn4gjEQtLuZ0cwotVl8hIeP11zQdXSqnCJG9Mw/LRVjIybe1x2okMLB9t\nBaB/bINiX7eomCo5OZkpU6b4La66cOGC45zjx4+zbt06RITXX3+d559/nhdeeIERI0ZQrVo1nnji\nCQBW5ZlJ4O677+aVV16he/fuPP300zzzzDO87EEsWZjgC8oDqGnTpsTExADQunVrevbsiYgQExPD\n/v37SU1NZdmyZY53UefOnePgwYPUr1+f0aNHs2nTJsLDw/nvf//ruGanTp1o2LAhAO3atWP//v0a\nlKuQYbXCww/DmTMFj+UG5M3ZyTie4z7ecnudj7iD5xjHj3QuVj169oQvvijWqUopVa5NW77LEZDn\n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\nzqEb37KIQU7lerGKj/kLWUQ4AvW3uYvOrANMgdQXEQgP12BdKX8rLChXpaIB8Gue7VT7PoBIEUkR\nkXUi0r/0q6aUUs6MMeTk5Lg9np2d7fZY/qD8H//4B7169fJp/fIKqaD8iy88C8ydCWvoxhAWOXrT\nI7jAQD5gNd2dSt7FQtZxNYYwDMIZqvAcTxLNPgBycigQrEdGap66UsV15swZbr31Vtq2bctVV13F\nM888w6FDh7j++uu5/vrrAXjzzTe58sor6dSpE2vWrHGcu2/fPq6++mpiYmKYOHGi03WnTZtGx44d\nadOmDZMmTQJg/PjxJCUlOcpMnjyZ6dOnl8JThpQmxpg4YCjwsog0c1VIRIbbg/eUY8eOlW4NlVJ+\nl7wxja5Tv6Tp+E/pOvVLkje6W3PSM+7a59OnT9OzZ0/at29PTEwMS5cuBWD//v00b96cu+++m6uu\nuopff/3V6XrR0dGMGzeO9u3bs3jxYl577TU6duxI27ZtufPOOzl79izff/89y5YtY+zYsbRr1469\ne/dy7733smTJEgBWrVpFbGwsMTEx3H///Zw/f75EzwjY3kGUpVeHDh2Mr7VqZQyU7FWDE+YRZpid\nXFlowT1cbv6PF0wtfndZJCrKmIULff6ISvnF9u3bL26MGWNM9+6+fY0ZU+j9lyxZYh588EHH9okT\nJ0yTJk3MsWPHjDHGHDp0yDRq1MgcPXrUnD9/3lxzzTVm1KhRxhhjbrvtNrNgwQJjjDGzZs0yVatW\nNcYYs3z5cvPQQw+ZnJwck52dbW699Vbz9ddfmw0bNpjrrrvOca+WLVuagwcPev09K4zT99MO23oP\nAW97876AaOBnN8fmAkPybO8C6rko9xYwoKh7+aPNV0r5lqu2y52PN6SaFhM/N03G/dvxajHxc/Px\nhtRi399d+5yZmWlOnjxpjDHm2LFjplmzZiYnJ8fs27fPiIhZu3aty+s1adLEPPfcc47t3377zfH1\nhAkTzMyZM40xxtxzzz1m8eLFjmO52xkZGaZhw4Zm165dxhhj7rrrLvPSSy8VuI+3bX5I9ZS7s22b\nc2i8cCE0aeLdNf6gJq/wKC3Y5ehRb8J+nsXCH1R3lGvGL7zI3zjOJY60l2/pxiAWEcEF0tNxOZhU\nZ39RqqCYmBhWrlzJuHHj+Pbbb6lZs6bT8R9++IEePXpQt25dKlasyKBBF9PQ1qxZw5AhQwC46667\n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\ngH8uMGQz8FhkDgDvkPTecqJbMlKv+anXe0i/5rveZ1zv21Tnpvx9wN+nPT6XPzfnmMiWjz4PrCwl\nuu4okuN0w2T/e6uLlvnlXwtdFRG/KjOwLipyDq8Grpa0X9IBSbeWFl13FMnxAeAuSeeAXwNfKie0\n0iz2b9UWL/Wan3q9h/Rrvut95gFc79vS1403sepJugsYAj5SdSzdIuktwLeBeyoOpdf6yL7SvJns\nytc+SddGxOuVRtVddwI/jIhHJN0A/FjSxoj4X9WBmdVNivUelkzNd723edX5SvkEcNW0x6vz5+Yc\nI6mP7GuUV0uJrjuK5IikjwP3AbdHxH9Kiq0bWuW3AtgI7JV0muzerdGaTfwpcg7PAaMR8UZE/A04\nSVa066JIjsPAkwAR8QxwBTBQSnTlKPS3ah1JveanXu8h/Zrvep9xvW9TnZvyPwLrJb1f0uVkk3pG\nZ4wZBT6X738a2BP5Xfo10TJHSZuA75MV6Lrdm7ZgfhFxPiIGImJtRKwlu4fy9ogYrybcthT5nP6S\n7KoJkgbIvt58vswgO1Qkx7PALQCSriEr0i+XGmVvjQKfzWflXw+cj4gXqw4qManX/NTrPaRf813v\nM6737SpzRmu3N7IZsCfJZgLflz+3g+yPGLIPwlPAKeAPwLqqY+5Bjr8D/gEcyrfRqmPuZn4zxu6l\nRjPxF3EORfaV7QngKHBH1TH3IMcNwH6ymfqHgE9UHfMi8/sp8CLwBtmVrmFgK7B12jncmed/tI6f\n0zpsqdf81Ot9kRxnjK1dzXe9d73vZPOKnmZmZmZmFavz7StmZmZmZklwU25mZmZmVjE35WZmZmZm\nFXNTbmZmZmZWMTflZmZmZmYVc1NuZmZmZlYxN+VmZmZmZhVzU25mZmZmVrH/AzIcbKl7oq+rAAAA\nAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 4 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "onejfEzkR5e6", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# Estimate the mean\n", | |
"First, we try to estimate only the mean f, ignoring g for now. This is easy: if we use a neural net with the mean_squared_error loss function, the network approximates the expected value of the outputs." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "h0xpx4NfR5e7", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Training" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "IVn8xzm2R5e8", | |
"colab_type": "code", | |
"outputId": "88f357b0-8cbd-4984-ab4d-f157f870c42a", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 1000 | |
} | |
}, | |
"source": [ | |
"modelMean = trainedModel(lambda : makeModel(numoutputs=1, loss=tf.keras.losses.mean_squared_error))" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"2020-02-19 21:12:17.005114\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23294255210293663\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.2277\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23296751798523796\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.2276\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23470601461993323\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.2287\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23286635157797073\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 0.2293\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23521481023894417\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.2272\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23274287501970928\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.2277\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.2330258166525099\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.2279\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23575681959258185\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 0.2271\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.2314003070725335\n", | |
"10000/10000 [==============================] - 0s 35us/sample - loss: 0.2271\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23342301898532444\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.2277\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.2328083441125022\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.2271\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23466099868880377\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.2299\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23302876353263854\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.2272\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.2333166225221422\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.2279\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23417448284890915\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.2275\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23335937285423278\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.2279\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.2335246061484019\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.2279\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.2341982272333569\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.2282\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.2338576789961921\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.2292\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23356080559889475\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.2271\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.23291722264554765\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 0.2275\n", | |
"2020-02-19 21:22:56.003972\n", | |
"Model: \"sequential_20\"\n", | |
"_________________________________________________________________\n", | |
"Layer (type) Output Shape Param # \n", | |
"=================================================================\n", | |
"dense_60 (Dense) (None, 32) 64 \n", | |
"_________________________________________________________________\n", | |
"dropout_40 (Dropout) (None, 32) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_61 (Dense) (None, 8) 264 \n", | |
"_________________________________________________________________\n", | |
"dropout_41 (Dropout) (None, 8) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_62 (Dense) (None, 1) 9 \n", | |
"=================================================================\n", | |
"Total params: 337\n", | |
"Trainable params: 337\n", | |
"Non-trainable params: 0\n", | |
"_________________________________________________________________\n" | |
], | |
"name": "stdout" | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAu8AAADQCAYAAAC3MI8AAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deXxcdb3/8dd39mSSmaxN0qRtShe6\nU0rZ98ULqKVwRaWCcvFeuXr150WvC3o3r/d6f1yX309cfveKCogiCAoigoAKiKzdKN33pm3a7Gkm\nmSSzf39/nDS0pUuaZpJM8n4+HvNI5syZcz4zZ87M53zO9/s9xlqLiIiIiIiMfq6RDkBERERERAZG\nybuIiIiISI5Q8i4iIiIikiOUvIuIiIiI5Agl7yIiIiIiOULJu4iIiIhIjvCMdACnoqyszNbW1o50\nGCIiIiIiQ2rVqlWt1tryI6fndPJeW1vLypUrRzoMEREREZEhZYzZfbTpajYjIiIiIpIjlLyLiIiI\niOQIJe8iIiIiIjkip9u8i4iIiEj2JJNJ6uvricViIx3KmBUIBKipqcHr9Q5ofiXvg5BMZ/jHx9dx\n9dxKrpxdMdLhiIiIiGRFfX09hYWF1NbWYowZ6XDGHGstbW1t1NfXM3Xq1AE9R81mBsFtDI+srGf9\nvs6RDkVEREQka2KxGKWlpUrcs8QYQ2lp6Umd2VDyPggul8HndhFLpUc6FBEREZGsUuKeXSf7/ip5\nHyS/10U8mRnpMERERETGrLa2NhYuXMjChQuprKykurq6/34ikRjQMm677Ta2bNky4HX+6Ec/ory8\nvH89CxcuPKnnZ5vavA+S3+NW5V1EREQki0pLS1mzZg0AX/nKVygoKOBzn/vcYfNYa7HW4nIdvSZ9\n3333nfR6b775Zr797W8f8/FUKoXH83YafaIYDpVOp3G73Scd00GqvA9SQJV3ERERkRGxfft25syZ\nw80338zcuXNpaGjg9ttvZ/HixcydO5evfvWr/fNedNFFrFmzhlQqRVFREXfeeSdnnHEG559/Ps3N\nzQNe5x/+8Acuu+wy3vve9zJ//vyjxvCzn/2M+fPnM2/ePL785S8D9K/3jjvuYMGCBSxfvvyUXrsq\n74Pk96jNu4iIiIwf//bkBjbuH9rBOuZMDPGvS+YO6rmbN2/mgQceYPHixQDcddddlJSUkEqluPzy\ny7nxxhuZM2fOYc+JRCJceuml3HXXXXz2s5/l3nvv5c4773zHsh988EFefPHF/vsHE+6VK1eyceNG\nJk+ezPbt2w+Lob6+nn/6p39i5cqVhMNhrrrqKn77299yzTXXEIlEuOSSS45bzR8oVd4HKeB1q/Iu\nIiIiMkKmTZvWn7gDPPTQQyxatIhFixaxadMmNm7c+I7n5OXlce211wJw1llnUVdXd9Rl33zzzaxZ\ns6b/5vP5ADj//POZPHnyUWN44403uOKKKygrK8Pr9fKhD32Il156CQCfz8cNN9wwJK87Jyvvxpgl\nwJLp06ePWAx+j4u4Ku8iIiIyTgy2Qp4twWCw//9t27Zx9913s3z5coqKirjllluOOvziwSQcwO12\nk0qlBr3Oo90/lry8vCEbtScnK+/W2iettbeHw+ERi0GVdxEREZHRobOzk8LCQkKhEA0NDTz77LPD\nHsO5557LCy+8QFtbG6lUiocffphLL710yNeTk5X30cDvcRGND2yIIhERERHJnkWLFjFnzhxmzZrF\nlClTuPDCC09peUe2ef/BD35wwufU1NTw7//+71x22WVYa1myZAnvec97Trq6fyLGWjukCxxOixcv\ntitXrhyRdX/8p6vY1drNs5+5ZETWLyIiIpJtmzZtYvbs2SMdxph3tPfZGLPKWrv4yHlzstnMaBDw\narQZERERERleSt4Hye9Rm3cRERERGV5K3gdJlXcRERERGW5K3gfJr9FmRERERGSYKXkfpEDfFVZz\nucOviIiIiOQWJe+D5Pe6sRaSaSXvIiIiIjI8lLwPkt/jvHVq9y4iIiKSHZdffvk7Lrj07W9/m098\n4hPHfV5BQcFRp7vdbhYuXNh/u+uuu4Ys1uGiizQNkt/rBnDavQdGOBgRERGRMWjZsmU8/PDDXH31\n1f3THn74Yb7+9a8Panl5eXmsWbPmuPOk02ncbnf//VQqhcdz4pR5oPOdKlXeBylwsPKeVOVdRERE\nJBtuvPFGnnrqKRIJ56r2dXV17N+/n4svvphoNMqVV17JokWLmD9/Pk888cSg11NbW8sXv/hFFi1a\nxKOPPspll13GHXfcweLFi7n77rupq6vjiiuuYMGCBVx55ZXs2bMHgL/6q7/i4x//OOeeey5f+MIX\nhuQ1n4gq74PUX3lPacQZERERGQd+dyc0rhvaZVbOh2uP3XSlpKSEc845h9/97ncsXbqUhx9+mA98\n4AMYYwgEAjz++OOEQiFaW1s577zzuO666zDGHHN5vb29LFy4sP/+l770JT74wQ8CUFpayurVqwH4\nn//5HxKJBCtXrgRgyZIl3Hrrrdx6663ce++9fPrTn+bXv/41APX19bz66quHVeuzScn7IKnyLiIi\nIpJ9B5vOHEzef/zjHwNgreXLX/4yL730Ei6Xi3379tHU1ERlZeUxl3W8ZjMHk/ij3X/ttdd47LHH\nAPjwhz98WJX9/e9//7Al7qDkfdBUeRcREZFx5TgV8mxaunQpn/nMZ1i9ejU9PT2cddZZADz44IO0\ntLSwatUqvF4vtbW1xGKxQa8nGAwe9/5An5dtavM+SAcr73FV3kVERESypqCggMsvv5yPfvSjLFu2\nrH96JBJhwoQJeL1eXnjhBXbv3p21GC644AIefvhhwDlouPjii7O2rhNR5X2QVHkXERERGR7Lli3j\nhhtu6E+gAW6++WaWLFnC/PnzWbx4MbNmzTrhco5s837NNdcMaLjI7373u9x222184xvfoLy8nPvu\nu29wL2QIKHkfpIBXbd5FREREhsP111//jqval5WV8dprrx11/mg0etTp6fTR87a6urrD7r/44ouH\n3Z8yZQrPP//8O553//33Hz3gLFKzmUHye1R5FxEREZHhpeR9kFR5FxEREZHhpuR9kFR5FxEREZHh\npuR9kFR5FxERkfHgyLbmMrRO9v1V8j5IqryLiIjIWBcIBGhra1MCnyXWWtra2ggEAgN+jkabGSS3\ny+B1G1XeRUREZMyqqamhvr6elpaWkQ5lzAoEAtTU1Ax4fiXvp8DvcavyLiIiImOW1+tl6tSpIx2G\nHELNZk5BwOtS5V1EREREho2S91OgyruIiIiIDCcl76fAr8q7iIiIiAwjJe+nQJV3ERERERlOSt5P\ngdq8i4iIiMhwUvJ+CvwelyrvIiIiIjJslLyfgoDXTVyVdxEREREZJkreT4Eq7yIiIiIynJS8n4KA\n16027yIiIiIybJS8nwJV3kVERERkOCl5PwWqvIuIiIjIcFLyfgpUeRcRERGR4aTk/RQcrLxba0c6\nFBEREREZB5S8nwK/x0XGQiqj5F1EREREsk/J+ykIeN0AavcuIiIiIsNCyfsp8Huct0/t3kVERERk\nOHhGOoCDjDFB4P8BCeBFa+2DIxzSCflVeRcRERGRYZTVyrsx5l5jTLMxZv0R068xxmwxxmw3xtzZ\n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\nSqMMsKjKP1UAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "6VdP57j-R5fA", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Result \n", | |
"We get a quite close match between our original mean function $f(x)$ and the predicted value." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "kL6pgmTCR5fB", | |
"colab_type": "code", | |
"outputId": "309511d9-efc7-4368-ce41-19ebe79aa9c3", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 211 | |
} | |
}, | |
"source": [ | |
"xs = x[:plotdim,:]\n", | |
"predictedMean = modelMean.predict(xs)\n", | |
"\n", | |
"plt.subplot(121)\n", | |
"plt.scatter(xs, predictedMean, label='predict mean', color='b')\n", | |
"plt.plot(xs,f[:plotdim],label='mean', color='r')\n", | |
"plt.legend()\n", | |
"\n", | |
"plt.subplot(122)\n", | |
"plt.scatter(xs, predictedMean/f[:plotdim],label='mean ratio')\n", | |
"plt.show()\n", | |
"\n", | |
"del predictedMean,xs" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\n6u7u48eP9z59+vi3337rGzZs8P3228/d3V9++WW/9NJLvbi42IuKinz06NH+n//8p8x7bN++3Xv3\n7u1fffWVu7sDPmfOHHd3v+aaa/zmm2+u9P1r87URqU52trtZ8DPbi/fL/hCD9+e98k2VPrKzE30m\ntQMs9gRdbxvDo7JrvohIqqrqmp+0M94TJ0L5dOjt24P2+jjwwAMZOnQoAFlZWbzxxhuRbWeffTYA\nW7du5c033+TnP/85/fv357LLLuOLL74AYMGCBZx7brAuxfnnn1/pe8ybN4/LLruMZs2CTJ999903\nqrGddtppAPTp04ejjjqKtm3b0rFjR1q0aMHmzZt55ZVXeOWVVxgwYAADBw5k5cqVfPzxxwDcc889\nkVntzz//PNLevHlzTjnlFACOOOII1qxZE/X/lUi0QiFo0yaY3Z42Dbr6GhxjOXtWKj+O1zCcfAZU\neZySGW535XCLiEjySdoc77Vra9ceLTOr8nXr1q0BKC4upl27duTnV75CcvljNJQWLVoAkJaWFnle\n8rqwsBB359prr+Wyyy4rs99rr73GvHnzWLhwIa1atWLYsGHs3LkTgIyMjMh409PTKSwsjMnYpWkK\nheCSSyD87cZ+fMkqDqYtWyN9TuM5/slp1R6nKS7pLiIiqSdpZ7y7dq1de7TWrl3LwoULAXj00Uc5\n5phjKvTZe++96d69O08++SQQpOssWbIEgKFDh/L4448DEKoi6XzkyJE88MADkSD366+/BqBt27Z8\n9913dR77SSedxIwZM9i6NQhqCgoK2LBhA1u2bGGfffahVatWrFy5kkWLFtX5PUSiFQrBhRcGQffe\nbGEVPfiSH0aC7gt4CMOrDbrbtw+qlCjoFhGRVJC0gffkyUGt39JatQra6+PQQw/lvvvuo2fPnnzz\nzTdkZ2dX2i8UCvHggw/Sr18/evfuzXPPPQfA3XffzX333UefPn0oqCJauOSSS+jatSt9+/alX79+\nPProowCMGzeOUaNGVXpzZTROPPFEzjvvvMjNnWeddRbfffcdo0aNorCwkJ49ezJhwgSGDBlSp+OL\nRKNkafesLGhWuIOFDGEL7ejBJwD8hrswnEe4oNL909MhOztIJ/nqK602KSIiqcOC/O/4GzRokC9e\nvLhM2wcffEDPnj2jPkYoFOR0r10bzHRPnly/X9Jr1qzhlFNO4f3336/7QVJUbb820vTk5MADD0Bx\n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\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "JE0PQQASR5fM", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Prediction of the standard deviation, variant 1\n", | |
"\n", | |
"This applies $\\mu = E[X]$ and thus $E[X-\\mu] = 0$ for the mean, and $\\sigma = \\sqrt{E[X^2] - E[X]^2}$ and thus $E[(X-\\mu)^2- \\sigma^2] = 0$." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "rkwNTi-XR5fN", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"def meanAndStddev(y_true, y_pred):\n", | |
" y_pred = tf.convert_to_tensor(y_pred)\n", | |
" y_true = math_ops.cast(y_true, y_pred.dtype)\n", | |
" mean = y_pred[..., 0::2]\n", | |
" stddev = y_pred[..., 1::2]\n", | |
" res = K.square(y_true - mean) + K.square(K.square(mean - y_true) - K.square(stddev))\n", | |
" return K.mean(res, axis=-1)\n" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "GtREWDEOR5fR", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Training" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "m-MsjjKjR5fU", | |
"colab_type": "code", | |
"outputId": "717cb11e-3f0f-464e-d884-0eaf76e91040", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 1000 | |
} | |
}, | |
"source": [ | |
"modelStddev = trainedModel(lambda : makeModel(loss=meanAndStddev))" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"2020-02-19 21:22:56.759837\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.37141615255673727\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3566\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3708849832481808\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.3567\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3705990894238154\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.3584\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3668006727165646\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.3566\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.37378610844082305\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.3569\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3703171979321374\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.3589\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3731499750614166\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 0.3572\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3690561830467648\n", | |
"10000/10000 [==============================] - 0s 37us/sample - loss: 0.3569\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3696774322986603\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 0.3567\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.36718917679786683\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.3582\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3675629750887553\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3569\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.37303005713886683\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.3605\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.36664730678664315\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.3607\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.36919329240587023\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3582\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.36472825778855217\n", | |
"10000/10000 [==============================] - 1s 69us/sample - loss: 0.3582\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.37006781531704797\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3575\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3661950995657179\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3598\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3689397569232517\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.3650\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.37242246442370947\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.3569\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.37095615201526216\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.3577\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3693386841615041\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 0.3602\n", | |
"2020-02-19 21:33:52.791010\n", | |
"Model: \"sequential_25\"\n", | |
"_________________________________________________________________\n", | |
"Layer (type) Output Shape Param # \n", | |
"=================================================================\n", | |
"dense_75 (Dense) (None, 32) 64 \n", | |
"_________________________________________________________________\n", | |
"dropout_50 (Dropout) (None, 32) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_76 (Dense) (None, 8) 264 \n", | |
"_________________________________________________________________\n", | |
"dropout_51 (Dropout) (None, 8) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_77 (Dense) (None, 2) 18 \n", | |
"=================================================================\n", | |
"Total params: 346\n", | |
"Trainable params: 346\n", | |
"Non-trainable params: 0\n", | |
"_________________________________________________________________\n" | |
], | |
"name": "stdout" | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\npGkuiyp5FxERESmq2267jU2bNvHa1752fNmmTZv4zGc+c0rbi0ajbNmy5bjreJ6H3+8fv5/L5QgE\nTpwyT3e906We91MUGU/eVfMuIiIiUgxvfvOb+clPfkImkwFg7969dHZ2cvXVVzMyMsINN9zA+vXr\nWbNmDT/84Q9P+XXa2tr46Ec/yvr16/nud7/Ltddeywc/+EE2bNjA5z//efbu3cv111/P2rVrueGG\nG9i/fz8A73rXu3jve9/LpZdeykc+8pEz8p5PpCx73o0xG4GNy5cvL1kM4zXv6nkXERGRs8FP74Ku\n58/sNlvWwM1Tl67U1dVxySWX8NOf/pRbbrmFTZs28Za3vAVjDJFIhO9///tUVVXR09PDZZddxhve\n8AaMMVNuL5lMsm7duvH7H/vYx3jrW98KQH19Pc8++ywA//zP/0wmk2Hz5s0AbNy4kXe+8528853v\n5N577+UDH/gAP/jBDwBob2/nscceO6K3vpjKMnm31j4APLBhw4b3lCqG8dlmlLyLiIiIFM1Y6cxY\n8v7Vr34VAGstd999N48++ig+n4+Ojg4OHTpES0vLlNs6XtnMWBJ/rPuPP/443/ve9wD4/d///SN6\n2X/v935vxhJ3KNPkfTaIqOddREREzibH6SEvpltuuYUPfehDPPvssyQSCS666CIA7r//frq7u3nm\nmWcIBoO0tbWRSqVO+XUqKiqOe3+6zys21byfoogGrIqIiIgUXWVlJddddx3vfve7ue2228aXDw4O\n0tTURDAY5OGHH2bfvn1Fi+GKK65g06ZNgGs0XH311UV7rRNRz/spioZc8p7WgFURERGRorrtttu4\n9dZbxxNogNtvv52NGzeyZs0aNmzYwMqVK0+4naNr3m+66aZpTRf5hS98gTvuuIO//du/pbGxkfvu\nu+/U3sgZoOT9FEUC7qCFymZEREREiuuNb3wj1tojljU0NPD4448fc/2RkZFjLve8Y+dte/fuPeL+\nI488csT9xYsX89BDD73ieV/72teOHXARlWXZjDFmozHmnsHBwZLFoLIZEREREZlpZZm8W2sfsNbe\nWV1dXbIYNGBVRERERGZaWSbvs4HfZwj5fTpJk4iIiIjMGCXvpyES9KlsRkREROa0o2vN5cw62c9X\nyftpiAT9St5FRERkzopEIvT29iqBLxJrLb29vUQikWk/R7PNnIZoyK+adxEREZmzWltbaW9vp7u7\nu9ShzFmRSITW1tZpr6/k/TREAup5FxERkbkrGAyyZMmSUochk6hs5jREQn6SGrAqIiIiIjOkLJP3\n2TDPO7gTNannXURERERmSlkm77NhnndwNe9pJe8iIiIiMkPKMnmfLSIBDVgVERERkZmj5P00REN+\nnaRJRERERGaMkvfTEAn61PMuIiIiIjNGyftpCGuqSBERERGZQUreT4Mrm1HyLiIiIiIzQ8n7aYgE\n/GQ9S85T3buIiIiIFJ+S99MQDbmPL5VT8i4iIiIixafk/TREgn4Alc6IiIiIyIwoy+R91pxhtZC8\nJzNK3kVERESk+MoyeS/5GVa9LDz6d8wf/A0A6ZySdxEREREpvrJM3kvO+OChTzKv7ykAnahJRERE\nRGaEkvdT4fNDqJKwNwqgEzWJiIiIyIxQ8n6qwvHx5F0DVkVERERkJih5P1XhOKGxnncNWBURERGR\nGaDk/VSF4wRyI4DmeRcRERGRmaHk/VSFKglkC2Uz6nkXERERkRmg5P1UheP4s2M970reRURERKT4\nlLyfqnAVvswwoJp3EREREZkZSt5PVTiOKSTvmuddRERERGbCCZN3Y8wyY0y4cPtaY8wHjDE1xQ9t\nlgvHMelhQn6jshkRERERmRHT6Xn/N8AzxiwH7gEWAt8qalQnYIzZaIy5Z3BwsHRBhONg89QEsyqb\nEREREZEZMZ3kPW+tzQG3Al+w1v4ZMK+4YR2ftfYBa+2d1dXVpQsiHAegPpAhrZ53EREREZkB00ne\ns8aY24B3Aj8uLAsWL6QyEa4CoC6QVs+7iIiIiMyI6STvdwCXA39trd1jjFkC/O/ihlUGCj3vdf6U\nBqyKiIiIyIwInGgFa+1W4AMAxphaIG6t/XSxA5v1Csl7jT/F/qx63kVERESk+KYz28wjxpgqY0wd\n8CzwL8aYzxY/tFmukLxX+1OklLyLiIiIyAyYTtlMtbV2CPhd4BvW2kuBG4sbVhkoJO9VRsm7iIiI\niMyM6STvAWPMPOAtTAxYlcKA1SpfUjXvIiIiIjIjppO8/yXwILDLWvu0MWYpsKO4YZWBcCUAlaRI\nquddRERERGbAdAasfhf47qT7u4E3FTOoshAIgz9MpUmqbEZEREREZsR0Bqy2GmO+b4w5XLj8mzGm\ndSaCm/XCcSpsQsm7iIiIiMyI6ZTN3Af8CJhfuDxQWCbhOFGrmncRERERmRnTSd4brbX3WWtzhcvX\ngMYix1UewnFidpSMl8fL21JHIyIiIiJz3HSS915jzDuMMf7C5R1Ab7EDKwvhKmI2CUDfaKbEwYiI\niIjIXDed5P3duGkiu4CDwJuBdxUxpvIRjhOzCQA6B5IlDkZERERE5roTJu/W2n3W2jdYaxuttU3W\n2jei2WaccJxwfhRQ8i4iIiIixTednvdj+fAZjaJcheMEcy5571DyLiIiIiJFdqrJuzmjUZSrcByT\nHiYW8tM5kCp1NCIiIiIyx51q8l7SqVWMMRuNMfcMDg6WMgyXvHtpFlcHVDYjIiIiIkU3ZfJujBk2\nxgwd4zKMm++9ZKy1D1hr76yuri5lGBCuAmBJlaVzUMm7iIiIiBRXYKoHrLXxmQykLIXdR9RW6fHU\nISXvIiIiIlJcp1o2IwDhSgAWxnL0jGRIZb0SByQiIiIic5mS99NR6HmfH80B0DWoQasiIiIiUjxK\n3k9HIXlvCruzq2rQqoiIiIgUk5L301EYsNoYdMm75noXERERkWKacsBqYVaZY00JaQBrra0qWlTl\notDzXu1PYQya611EREREikqzzZyOQvIezI7QWBlW2YyIiIiIFNWUyfvRjDFNQGTsvrV2f1EiKifB\nGBgfpIeZXxPVXO8iIiIiUlQnrHk3xrzBGLMD2AP8J7AX+GmR4yoPxrje9/QwC2qiqnkXERERkaKa\nzoDVTwKXAS9ba5cANwBPFDWqchKuKvS8R+gcSGLtsYYJiIiIiIicvukk71lrbS/gM8b4rLUPAxuK\nHFf5CMchPcT8miipbJ7+RLbUEYmIiIjIHDWdmvcBY0wl8ChwvzHmMDBa3LDKSKFsZl51FHBzvddV\nhEoclIiIiIjMRdPpeb8FSAIfAn4G7AI2FjOosjKp5h0017uIiIiIFM/x5nn/IvAta+2vJy3+evFD\nKjPhOPTvY36Nm4hH00WKiIiISLEcr+f9ZeDvjDF7jTGfMcZcOFNBlZVCz3tdRYhI0Mf+vkSpIxIR\nERGROWrK5N1a+3lr7eXANUAvcK8xZpsx5uPGmHNmLMLZrjDbjDGGdQtreHxXb6kjEhEREZE56oQ1\n79bafdbaT1trLwRuA94IvFT0yMpFOA7ZUfBy3LCymW1dw6p7FxEREZGimM5JmgLGmI3GmPtxJ2fa\nDvxu0SMrFzWL3XXPy1y3sgmAh7YdLmFAIiIiIjJXTZm8G2NebYy5F2gH3gP8BFhmrX2btfaHMxXg\nrNd6sbtuf5pljRUsqovxsJJ3ERERESmC4/W8fwx4DDjPWvsGa+23rLWa3/1o9csgUgPtT2OM4fqV\nTfx6Zw/JjFfqyERERERkjjnegNXrrbVfsdb2z2RAZccY1/vevhmA61c2kc7leXx3T4kDExEREZG5\nZjonaZITab0YurdBapBLl9YRC/lV9y4iIiIiZ5yS9zOhdQNgoeNZwgE/Vy1v4OFt3VhrSx2ZiIiI\niMwhSt7PhNYNgBkvnXn1qmY6BpL8fOuh0sYlIiIiInPKrEnejTEVxpivG2P+xRhze6njOSmRamg8\nF9qfBuCNFy5gZUucv/jhCwylsiUOTkRERETmiqIm78aYe40xh40xLxy1/CZjzHZjzE5jzF2Fxb8L\n/Ku19j3AG4oZV1G0bnDJu7UE/T4+/aa1dA+n+fRPt5U6MhERERGZI4rd8/414KbJC4wxfuCLwM3A\nKuA2Y8wqoBU4UFit/OZZbL0Ykn3QtxuACxbW8O4rl3D/k/t5cndviYMTERERkbmgqMm7tfZRoO+o\nxZcAO621u621GWATcAvuZFCtMxFXUYyfrGnz+KIPv+YcFtXF+B/3P8u2rqESBSYiIiIic0UpkuQF\nTPSwg0vaFwDfA95kjPkS8MBUTzbG3GmM2WyM2dzd3V3cSE9G40oIxWHvo+OLYqEAX3/3JQT9Pt7+\nL0+ytVMJvIiIiIiculnTw22tHbXW3mGtfZ+19v7jrHePtXaDtXZDY2PjTIZ4fD4/rLoFXvwhZCZO\nRLukoYJNd15GOODj7V95gu88fYCcly9hoCIiIiJSrkqRvHcACyfdby0sK38XvgMyw7D1h0csbisk\n8IvrK/jIvz3Haz/3KD9+rhMvr3ngRURERGT6SpG8Pw2sMMYsMcaEgLcBPypBHGfeosugbhn85puv\neGhxfQU/+B9X8M/vuAhjDO//1m949Wf/k+9sPkAqW37jc0VERERk5hV7qshvA48D5xpj2o0xf2Ct\nzQHvBx4EXgK+Y6198SS3u9EYc8/g4OCZD/p0GON63/f9Gnp3HeNhw02rW3jwg6/ii29fTyTo5yP/\n+hyX/s0v+fgPX+DlQ8MlCFpEREREyoWxtnxLNzZs2GA3b9584hVn0tBB+F+r4MoPwo0fP+6q1loe\n29XLpqcP8OALXWTzed60vpU/ec05zKuOzlDAIiIiIjLbGGOesdZuOHr5rBmwOmdUzYPlr4Yt34Jc\n5rirGmO4cnkDX7jtQp68+wbec/VSfrSlk+v+7hG+92z7DAUsIiIiIuVCyXsxXHInjHTBTz8C0zyy\nUVsR4u7Xnccv/+Qa1i2s4cPf+S3feHxvUcMUERERkfKi5L0YVtzoymaeuQ+e/spJPXVhXYyv3XEJ\nr17VzF/88EX+/ufbSWY0oFVEREREyjR5n7UDVie74S/gnJvhpx+Flx88qadGgn6+dPt63rS+lS88\ntJOrPv0Q//jQDnpH0kUKVkRERETKgQasFlN6GO69CQ69ABf/Idz4CQjHT2oTT+3p40uP7OTh7d34\nfYarVzTw5otaef2aeRhjihK2iIiIiJTWVANWlbwXW2YUHvoreOJLULUAXvNJOP9WN63kSXj50DDf\n/00HP9rSScdAkqtXNPDpN61lfk2UVNZjKJmlqSpSpDchIiIiIjNJyXupHXgafvwhOPQ8LLwMbvob\nWHDRSW8mn7fc/+Q+/ubftxHwGVrrYrx8aBgvb3nrhoV87HUrqYmFivAGRERERGSmKHmfDfKeO/vq\nQ5+E0W5Y+zZXG1+94KQ3ta93lL/+yUukc3nWLKgmkfH4+uN7qY0F+dPXnMut6xcQDvjP/HsQERER\nkaJT8j6bpIbgvz4Lj/8T+Pzwqj+Fy/8YAqfXY/5i5yB3f/8FfntggKZ4mLdsWMhIOseu7hEAVrbE\nOac5TkM8TE00yLzqKM1VYdXOi4iIiMwycyp5N8ZsBDYuX778PTt27Ch1OKeufy88+P/Ath9Dwznw\nur+Dpdec1iattfxqRw9ffnQXv97ZSyzkZ1ljJXlr2XF4hEwuf8T6jfEwaxdU88YLF3Dz6hYC/rKc\ngEhERERkTplTyfuYsu15P9qOX8C//xn074HVb4bX/jXEW057s0OpLPFwYLxnPeflOdCfpG80w1Ay\ny77eUZ7rGOSpPX209ydZWBflnZe3cdPqFlprY6f9+iIiIiJyapS8z3bZFPz6c/Crz4I/5EppLv3v\nEIwW/aXzecsvXjrEPY/u5pl9/QCsmlfF71wwj1svXMC86ijt/Qke29VLa22Uy5fWq9RGREREpIiU\nvJeL3l3w4N3w8s+gqhWuuxvWvgX8wRl5+d3dI/xi6yEefLGLZ/cPYAzMr47SMZAcX2dFUyX/7Yo2\n3ry+lWjIDYp9Zl8fP9zSyatXNXPV8gYl9yIiIiKnQcl7udnzK/jF/wudv4HqRXDFH8OF74DQzJWz\n7Osd5XvPdvDSwSEuWVLHVSsaeKFjiK8/tpfnOwaprwjxriva2N0zyvd/04ExYC2sX1TDzavnkc55\n5PKWm1a3sLKlasbiFhERESl3St7LkbXw8oNuZpoDT0KsAS57L1z8HojWlDAsy9N7+/mnR3byyPZu\nQn4fd75qKX949RIeeO4gX3p4J52DqSOec+N5zbz3mqVctLhWvfIiIiIiJ6Dkvdzte8zVw+/8BQRj\ncO7NbnDr8hsgEC5ZWLu6R4iF/MyrnqjN9/KWkVSOaMhPIpPja4/t5b5f72UwmeXc5jhvuXghq+dX\nUVcRoikeoTo2MyVBIiIiIuViTiXvc2aqyFNx8DnYfC9s/QEk+yFUCcuugxWvhcVXQN1SmIU926Pp\nHD/6bSebntrPb9sHj3isMR7mnOZKmqsi1ERDBPyG/b0J9vclOG9eFe+/fjlLGipKFLmIiIjIzJtT\nyfuYs6rn/WheFnY/Att+4kprhjvd8lg9tF4CCy+GhZfC/AshNLsS3z09o3QOuCkrDw4mefnQCDsO\nDdMzkmEgkSGbtyysjTK/JsrTe/vIepbrzm1iJJ1lT88oFeEAly6p4+K2OpY2VrKwNkpdRUjlOCIi\nIjJnKHmfy6yF7m1w4KnC5UnoLRyRMH5oWe0S+taLoXUDVDS6Hnvf7D8h0+HhFP/8yG4efLGLluoI\nbfUVDCQyPLWnj+F0bny9lqoIN61u4bXnt1AR9jOa9ohHAqyaV4XP98qkPpnxxmfKEREREZltlLyf\nbRJ90P60S+bbn4KOZyEzcuQ6tW2w9m2w7u1Qu7gkYZ4qL2/ZeXiEfb2jHOhP8sTuXv7z5e5XnEG2\nviLEVSsaqI4GyXp5ekYybO0comMgyS3r5vPZt6zDf4zkXkRERKSUlLyf7fIeHH4JDm5xtfLpEddD\nv/sRwLpa+XkXQNP5UN0K1QugagFUzZ+RE0WdCcOpLE/u7sMYiIUCHBpK8cj2wzy2q5eMlyfk91EV\nDXLevCoiAR/ffaad2y9dxF+9cfV4yU0q67Gta5jOgSSXL62ntiJU4nclIiIiZ6OpkvdAKYKREvAV\nymdaVh+5fOAAvPBv0PGMu7z4/Vc+t2oBrHgNrHw9tF0NwcjMxHyS4pEgN65qPmLZGy9cMOX6dZUh\nvvyfu8nk8gT8Pp7vGGB71zBZzzVoAz7D1SsauHn1PK4+p+GIGXVERERESkE973KkTAKGOmGow10G\nO6DrOdj5S8iOgj/kBsEuusz10jethIZzyqZ3fjJrLR/73vNsevoA8UiAta3VrG2tYe2Capqqwvx8\n6yF+/NuD42eXXdFUycVL6rhoUS3LmyqpCPuJBP2vKLvxGUNTPKwBtCIiInLKVDYjpyebgj2Pwt5f\nwf7HoXML5LOFB42rn286DxrPhcbzyiqp7xlJUxcLHXNgq7WW7YeGefTlbv5rZy+/2dd/xEDZqSxt\nrODtlyzijRcuoKFyYh7+fN6SzecJBzRYVkRERKY2p5L3s3qe99nCy0LvLuh+Cbq3u3r67m3QuxPy\nY8ltIalvWQ0ta6FlDTSvdjX1Zdornc9bdhwe4UBfgkTWI5XxyB/1G0pkPH7y/EGe2dcPQDwcYH5N\nlGTWo2swRd5arlzewO+snUc46Oe3BwbY0zNKc1WYhXUxljVWsmpeFa21UfXei4iInKXmVPI+Rj3v\ns9Arkvqt0PUC9O2aWCda6xL5eRdA0yo3KDY+D2qXQGDuDBDd1jXEoy9309GfpGMg5c5EWxPB8yw/\ne7GL9n5XjhMO+FjSUEH3cJre0cz486siAZY0VrKkPsbKeVVcvrSe1Quqx8t08nnL4eE0nYNJltRX\naHCtiIjIHKLkXUorPQyHtrr6+a7n3JliD28FbyJZxRd0pTfzLpi4NJwD0ZrSxV0k1lpe6BjCGDi3\nJU7Q7+bcH0nn2HFomBc7h3jp4BB7e0fZ25MYr7uvCPmJhgLkrWUknRufGtMYuKC1hkuX1tEcj1Bf\nGaKlKsLCuhjNVRFNhykiIlJmlLzL7ONlYWB/YYBsp0vmD/7WXZJ9E+uFq6Fm0cSldrHrpa9ZWNhO\nBmINE/fnoMPDKZ7Y3cez+/rJeHl8BipCAVrrYjTHw2w9OMQj27t5vmMQL3/kbzoU8LGiqZLz5lVh\ngAP9CQ4Pp/EbQ9DvY3F9jBvOa+b6lU3UFXrv0zmPx3b18sSuXs5fUM2N5zURC2lyKhERkZmi5F3K\nh7VuppuDv4W+3S7BH7v073Oz3hxLbRssvsrNUR+pgcom13NfvxxCsRl9C6WSz1sGk1l6R9N0DqQ4\n0J9gb88o27qGeengMH4ftNbGaKmKYLGks3le6Bzk0FAacPX59ZUhekcyDKdzGON2RyTo46LFtUSD\nfsIBP2taq7nxvGaWNVZwaCjNjsPDHBxM0T2cJp31uHhJHRe31REJamCuiIjIqVDyLnODtTDaA/17\nYLDdzV/vD7nEfs+jsP8JSPS88nmhOESqIVYL1YtcL32k2j03WgvLrnMnqjoLjZXw/NfOHg4Npegd\nzVAZ9vPqVc1cvrSB59oHeOC5Tp7vGCKby5PI5NjbmwAgGvSTzHpHbM9nIG9dLf+aBdWsaI6zuD5G\nKusxlMyRt5Z4JEA44KNrKITjmPIAABpTSURBVEV7f5LqaJA/vGopa1qrS/ERiIiIzDpK3uXskfcg\nNQjDB6HnZejZCYleSA/BaLc7MdXgAciMHPm8hnNdWY6XBuOHtithxWvd4NqpZn2x1pXtZEbdtJhl\nMDXmmdA5kOSX2w6z6/AISxoqWNFcycLaGI3xMHlreXJ3H4/u6OaFjkFePjTCYNJNK1oZDmCA0UyO\nvIXqaJDW2ij7+xIMp3JcvaKBZY2VGOOOIiQyHqlcnmjQR20sRHUsSE00RG0sSCTkJ+T3EfAZggEf\nIb+PhsowzVWaY19ERMqfkneRo40l3oPtsOPn7pLsB3/YJeOHnnfrGR+E46733ucGluJl3QmtsqMT\nU2MGK2DdbXDpe6FhRWne0yxkC4Nro0E/gcLAXGstGW9ivvuhVJZvPrGP+5/Yz1DKJfo+Y4iF/IQD\nPpJZj/5EdnyA7vFUhgMsaXCz71RHgxhgOJVlJJ1jOOUuoYCPZY2VLG+qpLU2yvyaCJXhIH2jGfoT\nGVqqI6yeX01jPIy1rhER8JvxeMfKk6Ihv0qDRESkKJS8i5ys4UOw8z9c3X162F0o/F58AQhVQDDm\n6umDFdD1PLzwr65BUNkM1QuhosHd97KuPKe2zV3qlrjriia3HfUUT0sy4zGQzNA/miWV88h5lqyX\nJ+PlyeTyHBpKsevwCHt6EwwmMgwms1ggHgkQDwepjASIRwKksh47D4+wp2eUrDf138DKcIBk1hsf\nBBwJ+ogE/Qwls4yNC55fHaG1NkbGyzOazlEZCXD+/CrObY4zmvE4NJRiJJUj4PcR8hsW1VdwXkuc\ntoYKokE/wYCPnYdHeGZfPx39SdoaYixvrCTt5dnXM0rPSIaaWJCmqghrFlSzpKFiBj5pEREptTmV\nvOskTTJrjXTDc5vcHPeDB1y5jj/sautHu2Fg35HTY8JEz364yl0bH2QTkMu4uvyKetdI8LKulz+f\nc7dj9XDeRlj5One/6zlX+z+2zcaVsOAi8Adn/nMoEzkvT/dImoODKUbTOWpjIWpiQdr7k7zQMUh7\nf5LKcIDKSICcl2colSOZ8aiJBamJhRhN59jbM0r7QJJwwEdFKEBfIsNLnUPjZ+KtDAeoDAfwrCWd\n9RhKTX2G3nDAR/qoowtjg4bHbFhcy+vXzsPLW7qH0wwksiSyHumsR3NVhEV1MaIhP12DKQ4OphhM\nZhktDD5eXF/BkoYYBsNwKstQKsdQKstwKsf86giXLq3ngoU1GCCV9Ujn8qSyHomMR3t/gn29CYJ+\nHxe31XHhohpyeUvfaIZU1iMc8BEN+WmpiryibMlaS+dgiq7BFM1VYVqqIuNHYURE5NjmVPI+Rj3v\nUnbyeRjuhP697pLohdTQRM9+eshlaqGYS/iTA24AbjbpknBfsHDtn5iJB8P4EYGjheKw+HKoW+YG\n6SZ6oeMZN2tP6wZYdoNrMBz8rTtDrpcFm3e1+7WLoWaxa1QEI255oteVFlUUZvKpW+IaGIHwid97\nLgP7H3fva9Flc/pow9gJtCojLnGfrGckzbaDwxzoT4wnyIvqYqxfVEtzVZhDQ2l2dY8QDvhYXF9B\nQ2WIoWSOrqEUD28/zHc3H2BXt5txKRTwURMNUhEOEPQbugZT440Dv8/QFA9THQ0SjwTI5S37ehP0\nFU4EZoxrWFRF3OP7+xIkMkcOPj5awGfIW0v+OP822upjvPmiVtYtrGXzvj6e2N3Li51DDE9qtPh9\nhsX1Mc6fX805TZUE/D4sFmsLJVW5PLu6R9l+aJh0zmNxXQWL62O01bvr+soQqWyeZMajbzRD90ia\n0XSOcMBPNOSjJhaiKR6mKhpkOJVjoHAUZiCRJZn1mF8Tpa2wvfk1Ufw+Q9bLs78vwf6+BIcG3cDt\nqkiA5qoILdURWqoi1FeG6RpKse3gED0jaVprYyyqi41vYzq8/MTRomwuTyjgIx45dgN77P9zuY3h\n8PJW55YQOQOUvIvMNdZC57Pw8oMTZ62tWwoYyGeh8zew62E48OTEFJvGD83nu4G5B550RwPA9dTX\nLXU9/MbnGhID+912psMfcmVCTee5ciBwA4et544UJHpdLOkh91jtEjj/Vje/f/tTbp0Vr4VzbnJH\nGqx1A4r797kjGPEWmLduYixB3pvYfi7ttp/odZ9D8/nHbkx4WVfuZAwk+uD578JLD7hGyvIbYdEV\nrszJN0UNu7Xuc8mMurIo3zF6jrMpSA1ALuXWr1l87PVOg7WWjoEk8XCQqqgbAMxvvgmP/QMsuIiR\nNe9iNNJA4/b/g2/7T2DptXDtR10jCxhMZl3iHgrgm5RgZb08z3cMsrVziIDPEAn6iQR9hYTYz4Ka\nKPOqIySzHs/uH+D59gEiQT+1sRDRkJ9MLs9AIsPPXuziid3uPA3GwPnzq1i3sIZzW6pYUBPh8FCa\n9v4kLxdORjZ2ArKjLaqLcW5LnGjQz76+BPt6RxlITP19DPgMueO1KqZYL+g3NMUjHB5OHbeE6niC\nfsPCWndCtFw+P37E4ujrTC5/zIZPRchPc3WE6mjQHaXJu33cOZAk61l8BiJBP/OqI8yvieIVjngM\np3JEgj4qwgFCfh8+YzDGNY6Ovu0zbhxJOOinOhqgMhxkOJWlezhN3sLqBVWsmldFz0iG5zsG2dc7\nOn7Ep64ixOL6GPOqI+St+670jWboHEjSl8jSWhtlaUMFg8ksj77szjexvKmSK5c3sGpeFb5C42Mk\nnaM/kSGdy48fkVpQE2VZUyX1lSH29ybY0zNKKusR9Pvw+wwBnyFQGJge8Bv8PjP+WDqbpz+RYSCR\nHX+vAZ8pXPsI+A2hgI9o0E9DZYi6Cvd3IZX1SGY9khmPVNZzDcGsR95aljVW0FZfccwjQ+mcR3t/\nkq7BFC3VERbXxfCs5Tf7B3h6Tx99iQzJjIfPZ1jaUMHypkqqo0GChX3j5S25fL7QgHP7dVF97JhH\nq1JZj+7hNIeHU/SNZqmrCDK/JkpNNEQmlyftue9TOpcfv05nPQ4Pp+kYSDKSyrF6QRUXLqqloTJM\n1nNH9MIB3zEbg8mMR+9ouvA9tSyqj413PGS9PPt6E/h9hpqoKz8c28LxjqBZ676newu/XS9vyVtL\nLm/x8pZo0M/8wt+VuorQCRupA4lM4e/S8ccZpQozoE21Xv9ohlTOreP3GaoiQcIBHz0jGXYeHiGR\nyXHp0vpXdLyUgpJ3kbOZta7HfPKMOPk8HHrBlfE0rXrlXPh5D0YOuWQ1lwKMK9WJVMNIF/TscAl+\nesjN7tO3x5ULDex3DQBfwCXCvoB7zSWvgnNvdgnws/8b9v2X68FfeImLb/fDrlzodPmC0HiuG0vg\nD7n4BtsnSphi9e5ohpeBxvNcAyI96J5rfO7xiiaXyAdjbt2RQzByuPA5AIGIO39AtNZ9Tl4aBjvc\n5zJZrAGWXe8aHcNdbjvRGtfQwbijIAe3uO3Vtk3ENtLt9kfNIrduzaJCQ8DvGh7pocK+jMEz98Hu\nR6B5tTuaMz6LkoH5F7pGXEUDXPEBt51ojfu8cyn3GRifa9Qlety+S/S5Rtj89e41hjpd3P6gizMY\nnbge+2ebTbr3N9oDlU10hdvYO+ixNr+d2KHNbl80roT6ZRCqdHEXvoupvA+bSeDLjmCyo5j0CD4v\njb96vmtYhSZq/AcSGfb1JhhIZokUynRqYyEa42EiQT85L08ynWaoax8jXTvIjvZhmlYSbj6Xmsoo\n1dEg/vQggy89TPrlhxjIGJ6OXsWz3nLm1URYHU+wqNJSX1dLbU0tI8OD9PV20zOS5kCulvZkiKbq\nKKvmxWmsjLhSoj5XTrS/b5TDQ2lCAR8Rv6UiCMFAgFAwRLiQcAT9PkIBH0G/j2AhsUxmPLqGUhwa\nSjGcyjGayuDHo6WumgU1UcIBH56XJ5nJ0jmUoXMwRdBnqKsIEY8ESeU8RtM5sl6efB48a7HWFhIl\nl0B51pLPQz6fJ5PzGEh5DKeyVEWCNMbD5PKWXd0j48l6VSTAOY1RzvV2sjrzGw5mYvxgZBX78w3j\n+yLgMzRXRaiP+ajr+y2X5DYTIUt33XpCS6/k2d4AT+3pI53LEyPFhb4ddNoG9tgWAj7ftBpaYxbQ\njTHQbhsAQ5wEl/texE+ex/OrGCBOmAwXmF0s83VSzShxkyCHn7QN0UMVz+TPYZed734X47+QPI0M\nMkyUJJHx5SG/j6poEGvt+JGmfN4ykskdUcIWCvjwGUhl8xgD8ZCPhmCGrJfnQDI06R1YwmRJM3nZ\nhGjQT11FiKDfYIyhdyRNLjVCi+mjmlEqTZJRG2GASipIcZHvZdb5dtJmumg1bmrk73lXc793Awkb\n5jzffurNMI95qzhEHQBhMsw3vbTTRDQcJl444hYK+MbP0XG0tvoY8UiQ7YeGp5wsoDIcoLkqTF2F\na1SksnlSOdcoGknlGD3B0bwxdRUhVrbEqYkF2XV4lD29o1QEfVxbeYAl5iD/OrKG/YkgxsDCwhGv\neNByTu5llmW3szCzi3immx9xDV/uuxB8AS5bWs8Vy+rx+wyjaY99vaM8va+PA32v7DBo8Q3Sm68g\ni0vYQ34fVyyv520XL+Km1S3Teg/FoORdRGaX9MiRg3WzSXc0IJNwy4Ixl7xVLXAn7erc4pJTn98l\nm76A69X2hyBa5xLfkUMuWe3e5rbnZV0SXL0Q4vPc0YdErzuJ1wW3Qctq8HITSfRot0vSR3vc7WzC\nJb6VzVDR6K6DURdHzw7XEPH5XWJbNd8l2LF61/Ofz8G+x2DnL11iHK11z08OTCT5jStdkpzPTpRR\nVTS6S2bUJdODB145TmKyUBxe/Qm46N3u/T3/XRjthbVvcZ9fx7Pw049A+9Mn3ifG57Y31pg5E8JV\n7uiI98rkYFqCMbe/jc/t77HGhs8/cdsYV9aVGpw4ujNZIOK2k01CrvCPO1hRGD+Sdg3STOLER5pC\nla7MLBBx3z8v7crBAiF3Jmh/wA10HznkjgpN/gwiNe676Au6eDOjE2Vy0VqIVLnv3VCniyNS7b4v\n2ZT7LuaS7rmTGj7uduG9TW6QBSITjfFs0r3WaE/hHBhmYuD8WEPey+CN9pEZ6SNgLAG/D5PocQ3+\nSbwqdxZr46UxNo/x+d3200NYXwB8AcxYA7d6IV7T+WTSKSIdj2MK+9/GGjBN55H3cni5DOm8j1HP\nT8oGCEdiRKMx/KEoni+IySaJdD5BaPgAALlQFemK+cQGdmAKn6/F4NUuwz90YPw1AKzxj68zJhmq\nIxlyR9cCNkNFogO/l8IaP6nac0nWr6I/G6Q3ZUl6PvK+IBg/4XyScD5BBUmq/WlipBjy19KRrydv\nLeewj7qRHfgSPe57CHj159BXtw4SvVT1bCGU7mOk+hwGmzaQrZiP8QWweY9U/0G8oS582WFM3iNg\nMzTlOqnOdh/3qzgaaWa4cimpylYi2UGaOh/CZ185nqYnfh5e3tKQ2IHfeqT9FRyoWE2Xfz5pD7LW\nhy9aTaiqkVisgpAvj9/m6B9O0DMwgs2lmB/zaI7kCORGIT2CyYwQ8hIEvQQDgQZ2+Zey186jyoxS\na4fw+31kglX4gyHa8h20pHYR8kawgRg2EMafHcWXGSbvCzFY0UZXaCGHkgEOjWRJZC21lVEaY4Zz\ne3/JvNQuADImzJ6Wm+gNNJMdOkxl4gCrsi8SxX3fuqkhQYTFdNEfbmVrzTXs7PfoGoU0QdIEqQgH\nWVYbZHGNn5jfw++liSQP0tS7mXi6i4y/gsH5VzHaeAH7uvo4eLib2LLLecNt7zvuvigmJe8iIqWQ\nz7uEKjjRs+eS2SyEK6f3/JFDLpG3nuvNj1QVkqZh17ipqD/+Nqx15z1I9ruL8bkEzx9yyYb1XAJZ\ntcAlpYPtrhHkZaC61SWRec8lkNnUxPXYWItAGCpbXENn+KA7ApMedkdVGs9z642N88gmC5dEoYGV\ndslnOF5IjitdXEOFsSHJfhe/HSuVKsRr8+6zGbtvfC5Bjta4hlRtm0uau7e5maCySZfQRqph8ZWw\nYINLdnf83B25iNW7xk64yh29yCRc4zJS7eIfbHdHVzIjbv/ls4XPMOgS+PSQWx5vcQ3FUGxi36eH\nXKMtm5go9wpVuNcC9x5Tg+7zq251DYuRQiMgGHPLw1Uu3smf3fh10jUIxuNJufixhRmxKgpHlBrd\na/ftcZ+tV2is+AOuARytcfvf5t1zll7njhyN9rjPqfNZt28CYddosp5bf/GVsPwG9/qdW9zYlq7n\n3QULK17jtjXU7k6k17fbbccXmCh9G7t4k24bn/sOLXmVe19dz7tSugXrXVy+oDti177ZHd1afCXM\nW+u+y8HYxG9t8IBrSO9/wn3OY3GPNWJGDkPHZji8rdAAyrr9m0tPfIbj38+4a/SMHHbfCXBHqppX\nQ9U899rZBOx/0jWYKxqg9RJ35u+OZ+DAU0eeYyQYc9+ZcNzF5A+5mOqXuyNlkRr3WGYUkn1unYWX\nuO/JZMNdruHuC7pOiXCVmy1txy/c/l2wwY1R6tziPouRLrefvdzUZy0fE4i632WowjXux24HY+7v\n0uGtEx0M/rD7zMbux+rdZxOrn/i+hird7yo7Ct0vQ+/OYzecW9bChjvc87fcD8991z0nUviNL74C\nllwDCy+FeLP7vb38U/jV30PXCyfuMDA+9/d00WXuM+3d6T6voQ4AbLCC/IZ343/tXx1/O0Wk5F1E\nRETkZOTzU49bsdYlwFONk5lqe7lU4ciMmR1TBXtZ14DMJl3jwR+caEj4Qy75P9Hzh7tcw2WszC2X\ncpdIzYnfnxupPqmB7rn7R3du5AoNgsCxy49eYazxnEu5hpjNu4ZnIFyYBe4Y78ta18ALVZ74fc+A\nqZL30kcmIiIiMhsdb8C5Me4IxMlu7+jxRaXmD0Jl0+k9v2bhkctO5ozjxhQSfN/xpzaebtI+xucD\nX+TIo57TiSVac3KvUwKaaFdEREREpEwoeRcRERERKRNK3kVEREREyoSSdxERERGRMqHkXURERESk\nTJT1VJHGmG5gXwlDaAB6Svj6Ujra92cv7fuzm/b/2Uv7/uxVqn2/2FrbePTCsk7eS80Ys/lY82/K\n3Kd9f/bSvj+7af+fvbTvz16zbd+rbEZEREREpEwoeRcRERERKRNK3k/PPaUOQEpG+/7spX1/dtP+\nP3tp35+9ZtW+V827iIiIiEiZUM+7iIiIiEiZUPJ+CowxNxljthtjdhpj7ip1PFJ8xpi9xpjnjTFb\njDGbC8vqjDG/MMbsKFzXljpOOX3GmHuNMYeNMS9MWnbMfW2cfyj8LXjOGLO+dJHL6Zpi33/CGNNR\n+O1vMca8btJjHyvs++3GmNeWJmo5E4wxC40xDxtjthpjXjTG/M/Ccv32zwLH2f+z8vev5P0kGWP8\nwBeBm4FVwG3GmFWljUpmyHXW2nWTpou6C/iltXYF8MvCfSl/XwNuOmrZVPv6ZmBF4XIn8KUZilGK\n42u8ct8D/K/Cb3+dtfbfAQp/998GnF94zj8V/j9IecoBf2KtXQVcBvxRYR/rt392mGr/wyz8/St5\nP3mXADuttbuttRlgE3BLiWOS0rgF+Hrh9teBN5YwFjlDrLWPAn1HLZ5qX98CfMM6TwA1xph5MxOp\nnGlT7Pup3AJsstamrbV7gJ24/w9Shqy1B621zxZuDwMvAQvQb/+scJz9P5WS/v6VvJ+8BcCBSffb\nOf4OlrnBAj83xjxjjLmzsKzZWnuwcLsLaC5NaDIDptrX+ntwdnh/oTTi3knlcdr3c5Qxpg24EHgS\n/fbPOkftf5iFv38l7yLTc5W1dj3uUOkfGWNeNflB66Zt0tRNZwHt67POl4BlwDrgIPD3pQ1HiskY\nUwn8G/BBa+3Q5Mf025/7jrH/Z+XvX8n7yesAFk6631pYJnOYtbajcH0Y+D7u8NihscOkhevDpYtQ\nimyqfa2/B3OctfaQtdaz1uaBf2Hi0Lj2/RxjjAniErf7rbXfKyzWb/8scaz9P1t//0reT97TwApj\nzBJjTAg3YOFHJY5JisgYU2GMiY/dBl4DvIDb7+8srPZO4IeliVBmwFT7+kfAfyvMPHEZMDjpELvM\nAUfVMd+K++2D2/dvM8aEjTFLcAMXn5rp+OTMMMYY4KvAS9baz056SL/9s8BU+3+2/v4DM/VCc4W1\nNmeMeT/wIOAH7rXWvljisKS4moHvu982AeBb1tqfGWOeBr5jjPkDYB/wlhLGKGeIMebbwLVAgzGm\nHfg48CmOva//HXgdbrBSArhjxgOWM2aKfX+tMWYdrlxiL/DfAay1LxpjvgNsxc1U8UfWWq8UccsZ\ncSXw+8DzxpgthWV3o9/+2WKq/X/bbPz96wyrIiIiIiJlQmUzIiIiIiJlQsm7iIiIiEiZUPIuIiIi\nIlImlLyLiIiIiJQJJe8iIiIiImVCybuIyFnGGOMZY7ZMutx1BrfdZox54cRriojIqdA87yIiZ5+k\ntXZdqYMQEZGTp553EREBwBiz1xjzGWPM88aYp4wxywvL24wxDxljnjPG/NIYs6iwvNkY831jzG8L\nlysKm/IbY/7FGPOiMebnxphoyd6UiMgco+RdROTsEz2qbOatkx4btNauAf4R+Fxh2ReAr1tr1wL3\nA/9QWP4PwH9aay8A1gNjZ5teAXzRWns+MAC8qcjvR0TkrKEzrIqInGWMMSPW2spjLN8LXG+t3W2M\nCQJd1tp6Y0wPMM9amy0sP2itbTDGdAOt1tr0pG20Ab+w1q4o3P8oELTW/lXx35mIyNynnncREZnM\nTnH7ZKQn3fbQ+CoRkTNGybuIiEz21knXjxduPwa8rXD7duBXhdu/BN4HYIzxG2OqZypIEZGzlXpD\nRETOPlFjzJZJ939mrR2bLrLWGPMcrvf8tsKyPwbuM8b8GdAN3FFY/j+Be4wxf4DrYX8fcLDo0YuI\nnMVU8y4iIsB4zfsGa21PqWMREZFjU9mMiIiIiEiZUM+7iIiIiEiZUM+7iIiIiEiZUPIuIiIiIlIm\nlLyLiIiIiJQJJe8iIiIiImVCybuIiIiISJlQ8i4iIiIiUib+L9FMfxza5gMNAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "QaPZk3N3R5fY", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Result\n", | |
"If we plot the result in comparison to $f$ and $g$, the result is quite satisfying. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "mHdHLoqnR5fZ", | |
"colab_type": "code", | |
"outputId": "8c2b04fd-30ce-4b29-bb30-0459c6daea42", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 214 | |
} | |
}, | |
"source": [ | |
"plot(modelStddev)" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\nTkSuQmCC\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 4 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "Hp7LwagCR5fd", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Prediction of the standard deviation, variant 2\n", | |
"\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "Nr_f7oxcR5fe", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"The usage of K.abs decreases the difference in magnitude between the difference of the standard deviation and the difference of the mean, which might help in case of small standard deviations. On the other hand, it introduces a systematic error since we are not measuring the standard deviation but the mean absolute error." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "48ycBFx8R5ff", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"def meanAndMAE(y_true, y_pred):\n", | |
" y_pred = tf.convert_to_tensor(y_pred)\n", | |
" y_true = math_ops.cast(y_true, y_pred.dtype)\n", | |
" mean = y_pred[..., 0::2]\n", | |
" mae = y_pred[..., 1::2]\n", | |
" res = K.square(y_true - mean) + K.square(K.abs(y_true - mean) - K.abs(mae))\n", | |
" return K.mean(res, axis=-1)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "L3rnKj5tR5fj", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Training" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "oMG_bhunR5fk", | |
"colab_type": "code", | |
"outputId": "d15c89d1-99fc-4856-e178-24c0001602f8", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 1000 | |
} | |
}, | |
"source": [ | |
"modelMae = trainedModel(lambda : makeModel(loss=meanAndMAE))" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"2020-02-19 21:33:53.899721\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.31284191613727147\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3072\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3161439434952206\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3076\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.31591241228580474\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3082\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3145999742084079\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.3093\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3146785855690638\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3069\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3142423422601488\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3086\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.31467371054490406\n", | |
"10000/10000 [==============================] - 0s 34us/sample - loss: 0.3080\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3158275372982025\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.3084\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.31472395017411975\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3078\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3164746170308855\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3094\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.314980344136556\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.3079\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.31465358768569096\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 0.3071\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3154983862373564\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.3069\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3147702782948812\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.3082\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3157428775893317\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3073\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3139340462684631\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3070\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.31565696540143756\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3075\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3145218078825209\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.3091\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3176092011663649\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.3099\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.31577170297834606\n", | |
"10000/10000 [==============================] - 0s 34us/sample - loss: 0.3108\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.31502249834272594\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.3081\n", | |
"2020-02-19 21:44:43.763396\n", | |
"Model: \"sequential_47\"\n", | |
"_________________________________________________________________\n", | |
"Layer (type) Output Shape Param # \n", | |
"=================================================================\n", | |
"dense_141 (Dense) (None, 32) 64 \n", | |
"_________________________________________________________________\n", | |
"dropout_94 (Dropout) (None, 32) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_142 (Dense) (None, 8) 264 \n", | |
"_________________________________________________________________\n", | |
"dropout_95 (Dropout) (None, 8) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_143 (Dense) (None, 2) 18 \n", | |
"=================================================================\n", | |
"Total params: 346\n", | |
"Trainable params: 346\n", | |
"Non-trainable params: 0\n", | |
"_________________________________________________________________\n" | |
], | |
"name": "stdout" | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\nAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "NEe0gRsuR5fq", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Result\n", | |
"\n", | |
"As expected, the result is systematically different from the standard deviation (a [constant factor](https://math.stackexchange.com/a/1850703/115514) of about 0.8 if it's really a normal distribution)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "1Cj-zKN8R5fs", | |
"colab_type": "code", | |
"outputId": "b3c26776-c2cb-48a9-8c7b-75506c504b1e", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 211 | |
} | |
}, | |
"source": [ | |
"plot(modelMae)" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\nQmCC\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 4 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "zNfMXFeXR5f_", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Prediction of the standard deviation, variant 2\n", | |
"\n", | |
"We can also use the formula $\\sigma = \\sqrt{E[X^2] - E[X]^2}$ . It is not quite clear to me what's better, but I'd hazard a guess that this is less stable - it might easily get you negative values if the NN is not trained good enough. But on the other hand, it might be easier for the NN to learn this, since in variant 1 the standard deviation output depends on the mean output. Variant 2 is easier to disentangle. But that might not matter at all. \n", | |
"\n", | |
"Anyway, let's try on our toy example. Of course, this simple example is not conclusive, but it seems that the standard deviation estimated not as precise as in variant 1." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "MmUbGvEcR5gB", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"def meanAndMeanSquare(y_true, y_pred):\n", | |
" y_pred = tf.convert_to_tensor(y_pred)\n", | |
" y_true = math_ops.cast(y_true, y_pred.dtype)\n", | |
" mean = y_pred[..., 0::2]\n", | |
" meanSquare = y_pred[..., 1::2]\n", | |
" return tf.keras.losses.mean_squared_error(mean, y_true) + tf.keras.losses.mean_squared_error(K.square(meanSquare), K.square(y_true))" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "s4o9bV5qR5gI", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Training" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "Hfx0QKJ4R5gI", | |
"colab_type": "code", | |
"outputId": "2d43402c-4bde-4c3b-afde-615d9bfeee91", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 1000 | |
} | |
}, | |
"source": [ | |
"modelMeanAndSquare = trainedModel(lambda : makeModel(loss=meanAndMeanSquare))" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"2020-02-19 21:44:44.793994\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
".Epoch 00201: early stopping\n", | |
"3.1152033797370065\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 3.0452\n", | |
"\n", | |
"....................................................................................................\n", | |
"..........................................................................................Epoch 00190: early stopping\n", | |
"3.127818479961819\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 3.0520\n", | |
"\n", | |
"....................................................................................................\n", | |
"...........................................................................................Epoch 00191: early stopping\n", | |
"3.1066794208950466\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 3.0437\n", | |
"\n", | |
"....................................................................................................\n", | |
"........................................................................................Epoch 00188: early stopping\n", | |
"3.119806109746297\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 3.0605\n", | |
"\n", | |
"....................................................................................................\n", | |
"............................................................................................Epoch 00192: early stopping\n", | |
"3.101514456431071\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 3.0516\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................Epoch 00200: early stopping\n", | |
"3.093540424770779\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 3.0482\n", | |
"\n", | |
"....................................................................................................\n", | |
".........................................................................................Epoch 00189: early stopping\n", | |
"3.1012719362046983\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 3.0588\n", | |
"\n", | |
"....................................................................................................\n", | |
".................................................................................................Epoch 00197: early stopping\n", | |
"3.1270865228441025\n", | |
"10000/10000 [==============================] - 0s 35us/sample - loss: 3.0480\n", | |
"\n", | |
"....................................................................................................\n", | |
"......................................................................................Epoch 00186: early stopping\n", | |
"3.111818958706326\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 3.0425\n", | |
"\n", | |
"....................................................................................................\n", | |
"............................................................................................Epoch 00192: early stopping\n", | |
"3.1283221598731146\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 3.0673\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"....Epoch 00204: early stopping\n", | |
"3.1103158092498777\n", | |
"10000/10000 [==============================] - 0s 34us/sample - loss: 3.0646\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
".......Epoch 00207: early stopping\n", | |
"3.103761951658461\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 3.0460\n", | |
"\n", | |
"....................................................................................................\n", | |
"............................................................................Epoch 00176: early stopping\n", | |
"3.1224654615190293\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 3.0435\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
".......Epoch 00207: early stopping\n", | |
"3.1108281525505914\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 3.0459\n", | |
"\n", | |
"....................................................................................................\n", | |
"..........................................................................................Epoch 00190: early stopping\n", | |
"3.1075711216396757\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 3.0444\n", | |
"\n", | |
"....................................................................................................\n", | |
".........................................................................................Epoch 00189: early stopping\n", | |
"3.11130305396186\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 3.0592\n", | |
"\n", | |
"....................................................................................................\n", | |
".......................................................................................Epoch 00187: early stopping\n", | |
"3.1233806949191623\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 3.0555\n", | |
"\n", | |
"....................................................................................................\n", | |
"..............................................................................................Epoch 00194: early stopping\n", | |
"3.108940562778049\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 3.0561\n", | |
"\n", | |
"....................................................................................................\n", | |
".........................................................................................Epoch 00189: early stopping\n", | |
"3.1080016746520998\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 3.0454\n", | |
"\n", | |
"....................................................................................................\n", | |
"..................................................................................................Epoch 00198: early stopping\n", | |
"3.1007701157463923\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 3.0436\n", | |
"\n", | |
"....................................................................................................\n", | |
".....................................................................Epoch 00169: early stopping\n", | |
"3.0977654989030627\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 3.0432\n", | |
"2020-02-19 21:53:12.709511\n", | |
"Model: \"sequential_72\"\n", | |
"_________________________________________________________________\n", | |
"Layer (type) Output Shape Param # \n", | |
"=================================================================\n", | |
"dense_216 (Dense) (None, 32) 64 \n", | |
"_________________________________________________________________\n", | |
"dropout_144 (Dropout) (None, 32) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_217 (Dense) (None, 8) 264 \n", | |
"_________________________________________________________________\n", | |
"dropout_145 (Dropout) (None, 8) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_218 (Dense) (None, 2) 18 \n", | |
"=================================================================\n", | |
"Total params: 346\n", | |
"Trainable params: 346\n", | |
"Non-trainable params: 0\n", | |
"_________________________________________________________________\n" | |
], | |
"name": "stdout" | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\njd91paqqivPOO4/f/e533HDDDdx77728853vxBhDKBTi/vvvJx6P097ezgUXXMD111+PMWbc+Q0O\nDrJ69erh55/97Gd517veBUB1dTUbN24E4Jvf/CbpdJr169cDsHbtWm655RZuueUW7rrrLj75yU/y\ny1/+EoDm5maeeOKJQ1rrp5OS90kabnnXWO8iIiIi02ao68xQ8v69730PAGstn/vc51i3bh0ej4d9\n+/Zx8OBB5syZM+68jtZtZiiJH+v5k08+yX333QfA+973vkNa2d/xjnfMWOIOSt4nbbjlXWO9i4iI\nyGvBUVrIp9MNN9zApz71KTZu3EgikeDcc88F4J577qGtrY0NGzbg9/tpaGggmUxOejnRaPSozyf6\nuemmPu+TFC0k72p5FxEREZk+sViMK6+8kg9+8IPcdNNNw9N7enqYNWsWfr+fRx99lN27d09bDBdd\ndBH33nsv4CoNl1566bQt61jU8j5JkUK3GfV5FxEREZleN910E29729uGE2iAm2++mbVr17Jq1Soa\nGxtZvnz5MedzeJ/3a6+9dkLDRX7961/n1ltv5Stf+Qq1tbXcfffdk1uRKaDkfZKiwyesquVdRERE\nZDq99a1vxdpDr2pfU1PDk08+Oeb7+/v7x5yey42dtzU1NR3y/LHHHjvk+cKFC3nkkUeO+Nz3v//9\nsQOeRuo2M0khvwdj1OddRERERGaOkvdJMsYQDfjU511EREREZoyS9xMQCXjV511EREREZoyS9xMQ\nCXh1hVURERE5pR3e11ymzmTKVsn7CYgEfGp5FxERkVNWKBSio6NDCfw0sNbS0dFBKBQ6rs9ptJkT\nEA2q5V1EREROXfX19TQ3N9PW1lbsUE5JoVCI+vr64/qMkvcTEAn46E6kix2GiIiIyLTw+/0sWrSo\n2GHIKOo2cwKiQa9GmxERERGRGaPk/QREAj6N8y4iIiIiM0bJ+wmIBtTyLiIiIiIzR8n7CYgENdqM\niIiIiMwcJe8nIBrwkslZ0tl8sUMRERERkdcAJe8nIBJwg/Wo9V1EREREZoKS9xMQDXoBSKjfu4iI\niIjMACXvJ0At7yIiIiIyk5S8n4ChlnddZVVEREREZoKS98k4sAm+dRmzejYBMKCWdxERERGZAUre\nJ8NaaHmBskwnAAm1vIuIiIjIDFDyPhmhuLvL9wFqeRcRERGRmaHkfTJC5e4uNwBotBkRERERmRlK\n3icj6Freg9lCy3tKLe8iIiIiMv2UvE+GxwuBGP5sP6CWdxERERGZGUreJytUjjfVS8DnUZ93ERER\nEZkRSt4nKxiHVA/RgFejzYiIiIjIjFDyPlmhckj2EAn41PIuIiIiIjNCyftkheKQ7CUaVMu7iIiI\niMwMJe+TpZZ3EREREZlhSt4nKxiHlGt5H9RoMyIiIiIyA5S8T9ZQy7vfy4CSdxERERGZAcdM3o0x\nS4wxwcLjK4wxnzTGVEx/aCe5UBzyWSr8WRLqNiMiIiIiM2AiLe//CeSMMUuBbwPzgR9Pa1SlIFQO\nQJUvyYBOWBURERGRGTCR5D1vrc0CbwO+bq39X8Dc6Q2rBATjAFR6BtXyLiIiIiIzYiLJe8YYcxNw\nC/CbwjT/9IVUIkKu51CFSZBI58jnbZEDEhEREZFT3USS91uBC4F/tta+aoxZBPy/6Q2rBIRcy3vc\nJAAYzKjrjIiIiIhML9+x3mCt3Qx8EsAYUwmUWWu/NN2BnfQKfd7LTAKoZiCdJRo8ZnGKiIiIiEza\nREabecwYEzfGVAEbge8YY/5t+kM7yRX6vMesa3nXVVZFREREZLpNpNtMubW2F3g78ENr7fnA66c6\nEGPMYmPM94wxv5jqeU+LQst7xA4A6CqrIiIiIjLtJpK8+4wxc4F3MnLC6oQYY+4yxrQaY146bPq1\nxphXjDE7jDG3A1hrd1lrP3Q88y8qfxg8PsL5fgASulCTiIiIiEyziSTvXwD+AOy01j5rjFkMbJ/g\n/L8PXDt6gjHGC3wDuA5YAdxkjFkx4YhPFsZAqJxQrtDynlLLu4iIiIhMr4mcsPpz4Oejnu8C/mIi\nM7fWrjPGNBw2+TxgR2E+GGPuBW4ANk8s5JNIME4w2weo5V1EREREpt9ETlitN8bcX+j+0mqM+U9j\nTP0JLHMesHfU82ZgnjGm2hjzTeAcY8xnjxLPR4wx640x69va2k4gjCkQihPIum4zankXERERkek2\nkW4zdwO/BuoKtwcK06aUtbbDWvtRa+0Sa+2/HOV937bWNlprG2tra6c6jOMTKseX6QU0zruIiIiI\nTL+JJO+11tq7rbXZwu37wIlkzfuA+aOe1xemlZ5gHG/adZsZ0FCRIiIiIjLNJpK8dxhj3muM8RZu\n7wU6TmCZzwKnGWMWGWMCwLtxLfulJ1SBSfXiMZDQUJEiIiIiMs0mkrx/EDdM5AGgBbgR+MBEZm6M\n+QnwJHC6MabZGPMha20W+ARuBJstwM+stS9PIvbiC8UxyV6iAZ9a3kVERERk2k1ktJndwPWjpxlj\nbgPunMBnbxpn+m+B304wxpNXqBzSfcQCankXERERkek3kZb3sfzNlEZRqoJxAGoDGQY0VKSIiIiI\nTLPJJu9mSqM43oUbs9YY8+2enp5ihuFa3oFa/yB9yUxxYxERERGRU95kk3c7pVEc78KtfcBa+5Hy\n8vJihgEh1/K+KJZnT2eiuLGIiIiIyClv3D7vxpg+xk7SDRCetohKSaHlfWk8y927EqSzeQK+ydaH\nRERERESObtzk3VpbNpOBlKRCn/eGWI5c3rKnc4Cls1RsIiIiIjI91Ex8Igot7/NCaQB2tPYXMxoR\nEREROcUpeT8RheR9ViAFKHkXERERkeml5P1EFLrNBHMD1JWH2Nk2UOSARERERORUpuT9RHh94I9C\nsocls2JqeRcRERGRaTVu8m6M6TPG9I5x6zPG9M5kkGPEdnKM8w6u60yyhyW1MXa29ZPPF3UUTRER\nERE5hY2bvFtry6y18TFuZdba+EwGOUZsJ8c47+DGei+0vCfSOQ70JosdkYiIiIicosYdKvJwxphZ\nQGjoubV2z7REVGpC5ZDqZWltDHAnrdZVaBh8EREREZl6x+zzboy53hizHXgVeBxoAn43zXGVjqBr\neV86yyXvO9vU711EREREpsdETlj9InABsM1auwi4GnhqWqMqJaE4JHupiQWIh3w6aVVEREREps1E\nkveMtbYD8BhjPNbaR4HGaY6rdBROWDXGsFQjzoiIiIjINJpIn/duY0wMWAfcY4xpBTSg+ZBgHFK9\nYC1LZ8V4ZGtbsSMSERERkVPURFrebwAGgU8Bvwd2AmunM6iSEiqHXBqySZbUxmjvT9GTyBQ7KhER\nERE5BR1tnPdvGGMuttYOWGtz1tqstfYH1tqvFbrRCLg+7wDJ3uGTVne09RUxIBERERE5VR2t5X0b\n8H+MMU3GmC8bY86ZqaBKSqjC3Rcu1ASws1W9ikRERERk6h3tIk1ftdZeCFwOdAB3GWO2GmP+0Riz\nbMYiHMNJdYXVYKHlPdXL/KoIAZ+HHRouUkRERESmwTH7vFtrd1trv2StPQe4CXgrsGXaIzt6TCfR\nFVYLMSS78XoMi2ui7NSIMyIiIiIyDSZykSZfoaX7HtzFmV4B3j7tkZWKUX3eAZbUxtTyLiIiIiLT\n4mgnrF5jjLkLaAY+DDwILLHWvtta+6uZCvCkN9zy7rrwLJkVY29ngmQmV8SgRERERORUdLSW988C\nTwBnWGuvt9b+2FqrMzEPN6rPO8DKujh5C0/u1IA8IiIiIjK1jnbC6lXW2u9aa7tmMqCSE4iC8Q63\nvF95+ixmlQW5+4mm4sYlIiIiIqeciVykSY7GGNfvvdDnPeDz8L4LFrJuWxs7dOKqiIiIiEwhJe9T\nIVQ+3G0G4KbzFxDwevjhk01FC0lERERETj1K3qdCqAISI33ca2JB1p5dxy82NNMzmCliYCIiIiJy\nKlHyPhVmnQEtL4K1w5NuvbiBRDrHz9fvLWJgIiIiInIqUfI+FeadCwOt0DOSqJ85r5zXNVTywyd3\nk8vbo3xYRERERGRiSjJ5L1w06ts9PT3FDsWZd667b15/yOQPXLSIPZ0JHtnaWoSgRERERORUU5LJ\nu7X2AWvtR8rLy4sdijP7TPAGYd+GQya/ceVs6spDfGfdriIFJiIiIiKnkpJM3k86vgDMPfuIlnef\n18OHL1vMM02drG/qLFJwIiIiInKqUPI+VeoboeV5yB06usy7X7eAqmiA//vYziIFJiIiIiKnCiXv\nU2XeuZBNwsGXD5kcDni59aIGHtnayub9veN8WERERETk2JS8T5X6Rne/b/0RL73/wgaiAS//8bha\n30VERERk8pS8T5WKhRCpgeYNR7xUHvHz3gsW8uCL+2lqHyhCcCIiIiJyKlDyPlWMca3vY7S8A3zo\nkkX4vB6+pZFnRERERGSSlLxPpXmN0L4NBruPeGlWPMQ7G+v56bN7+Mkze4oQnIiIiIiUOiXvU6m+\ncLGm/RvHfPmz153BZctq+ex9m/i3P23DWl15VUREREQmzlfsAE4pdWvc/b4NsOSqI16OBn185/2N\n/N39m/jaw9vZ3z3Im8+aS9dAms6BNHUVYa5dOQePx8xw4CIiIiJSCpS8T6VwBdQsG/Ok1SF+r4cv\n/cVZzC0P89WHt/OLDc2HvH7uwkq+cMNKVtadJFePFREREZGTRkkm78aYtcDapUuXFjuUI81rhB1/\nAmvdSaxjMMbwqWuW8caVc0hmc1RFAlRGAvxh8wG+9LutrP36n3nX6xZwVn05kYCXaMDHqvpyZsdD\nM7wyIiIiInIyMaXc77qxsdGuXz/26C5F8+z34MG/gY8/A7WnH/fHexIZ/u1Pr/D/ntpNftRXE/J7\n+PgVS/nwZYsJ+b1TGLCIiIiInEyMMRustY1jvqbkfYr1HYB/WwEXfQKu+cKkZzOQytKbzDCQytEz\nmOZ7f36V3246wPyqMJ+5djnnL6qmJhbAGEMml+fpXZ38afMB9nUnuXBJNVecXsvimihmnNZ/ERER\nETk5KXmfaffeDHufhk9tBl9gymb7xI52Pv/Ay2w72A9AedjPopooO9v66UtmCfk9zCoLsaczAcD8\nqjAfvHgR771gIX6vBhYSERERKQVK3mfatj/Cj98B7/whrLhhSmc91Mq+vbWP7a397GrrZ35lhDes\nnMMlS2sIB7zs7Uzw+LY2HnhhP0+/2snSWTH+4S0ruHxZ7ZTGIiIiIiJTT8n7TMvn4M5VULsc3ndf\n0cKw1vLQllb+6cHN7O5IcNmyWj562WIuXFI93J0mmcnxxM52KiMBzllQWbRYRURERMQ5WvJekqPN\nnPQ8XjjnvfD4l6FrN1QuLEoYxhiuWTGby5bV8IMnmvj2ul2857tPs7Iuzo3n1vPC3m4e2tJKfyoL\nwHmLqvjElUu59LQa9ZUXEREROQmp5X26dO+BO8+Cyz8NV36u2NEArpX9l8/t4zv/tYudbQNURPy8\nccUcrls1h11tA3x73S4O9CZpqI7g83roT2ZJpLNcuqyWz163nPrKSLFXQUREROSUp24zxfKjv4DW\nLXDbJtcaf5LI5y272vtZWB095ETWVDbHfRv38afNBwn6PMSCPoyBX7+wH2vhLy9fwscuX0I4cPKs\ni4iIiMipRsl7sWz+NfzsffCen8GyNxY7mknb1z3Iv/x2C795sYWykI8Vc+OcMTfO6XPKWD6njGWz\ny4gG1QNLREREZCooeS+WXMaduFpeDx/8I3hKe7jGZ17t5P7nmtl6oI9tB/oYSOeGX1tQFWFRTZTq\naICqaICqWKDwOEh1LMDCqgjVsWARoxcREREpDTphtVi8frj6H+GXH4UXfwqrbyp2RCfkvEVVnLeo\nCnBdb5q7Btl6oJetB/rYeqCX5q5BdrT20zGQIpnJH/H5eRVhzqovZ+msGKlsnr7CRajOXVjJOxrr\niQS0OYqIiIgcjVrep1s+D3e9wY0681cbIBQvdkQzIpHO0tGfpnMgTcdAih2t/bzQ3MOm5h72dCYI\n+T2Uhfz4PYb9PUkqI37ed2EDt1y4UC30IiIi8pqmbjPFtm8DfOdquOgT8IZ/KnY0RZfLW7yekaEo\n1zd18s3Hd/HQloN4PYbV8yu4fFktl5xWQ3V05Aq1NbGg+taLiIjIKU/J+8ngV5+AF34CH3sSapcV\nO5qT0o7WPn753H7WbW9j074eDt80Y0EfH7iogQ9dsojKQlLfl8zw5M4OuhMZIkEvkYCXWWUhzpxX\nXoQ1EBERETlxSt5PBv1t8PU1ULMMXvc/YPYK93igHdq2ulv1Ujj9umJHelLo6E/xzKudDGbcSbF5\nC49ubeW3L7UQ8Xu5fnUdO9sG2Li7i2z+yG34kqU13H7dciXxIiIiUnJOueTdGLMWWLt06dIPb9++\nvdjhTNzzP4bffAqyyfHf8/bvwlnvmLmYSsy2g338+yM7eHBTC8vnlHH5slouW1bLvIowg5kciXSO\n9U2dfOPRHXQlMtywuo5ls8to7hpkX/cgA6ks1dEAtWVBasuCLKyOsLgmxuLaKGUhf7FXT0REROTU\nS96HlFTL+5BcFjp3wcGXoH07xGqhdjlULoL7Pgx7noL33QeLLit2pCe1fN7iGdVv/nC9yQzffGwn\n3/vzq6SyeaqiAeZVhIkFfXQMpGgvnEw72pLaKG9dPY+3njOP+VW6mqyIiIgUh5L3UjHYDXe9EXpb\n4IO/d11r5IT0p7J4DGMOQ5nK5tjbmWBn2wA72/p5/JU2nn61E4Cz51dQEw3g8xp8Xg/1lWEaF1bR\nuLByuL99Pm9JZHJEA16MGb8iISIiInI8lLyXku698N3Xg8cLF98GDRdD7RkjF3iyFnqaYcdD7rbr\ncahqgDW3wKobIVxZ1PBLXXNXgl89v5/HXmklkc6RzVkyuTx7uxJkcu63MiceYjCTozeZwVo4Y26c\nj1+5hOvOnHvIKDoiIiIik6HkvdS0vAg/ez90veqeh6sgWguDnTDYBfmsm14+HxZfDgc2QcsL4AvB\nGWvhzBthyVXgGxlmkcwgpPohVH7odJmQZCbHi809PNvUyc7WfmIhHxVhPwGfh/ue28eutgEWF7rd\npAsXoOpLZulNZuhNZukdzBAN+lg1r5zV8ys4c145dRUhXZhKREREjqDkvVR17YamP8PuJyDVC5Eq\nl8iXzXF94muXw1B3jf3Pw8Yfwkv/Cclul6QvuxYyCTi42VUEbOGqp/4oRGvgzLdD44egYv7E4kn1\nuQpAfO70rG+JyuUtv3/pAP/+6A62tPRiDJQFfcTDfspCfuIhH2UhPz2DaV7a1zs8gg644S9nlQWZ\nXxXhtFkxTpsdY0FVlKDfg9/jwec1VET81MSC+L2eIq6liIiIzBQl768l2TTsegxevg+2/cEl/LPO\ngFkrIFIDyR6X3HfshO1/cJ9Z/mb3esdO6NzpkvQz1sI574PqJa61/+lvwVP/4SoRl/5PuPwz4B1n\ndJZcFg5uglkrJ9/Kby3seRLmng2B6OTmMcOstSTSOcJ+77gn02Zzeba39rOlpZcDvUlae1O09iVp\nak+ws62fVDY/5ueMgapIgNNmx7j14kVcc8bs4WWks3n+vKONSMDHBYurp239REREZGYoeZexde+B\nZ78HG3/gkvryeqha4jLFXY+5lvr689wY9KleOP3NECyDF++FeefC27/jkvshuSxs+hms+4obUSc2\nGxo/COfeCmWzJx5Xx043pOarj7tReN72TVhwwdjvzedgywOuC1H9uSdUHMWWy1uauxLs7Rwkk88P\n97fvSqQLSX6KP+9oY2/nIEtqo7z/wga2Hujjt5ta6BnMAPDms+by+bUrqS0LFnltREREZLKUvMvR\n5TIuUfeNSvh697tx6V++31086rK/hTmr3Gsv3w8P/LVL1utWQ6gCwhWue0/XqzDnLDj3Ftfyv/2P\n4PFD7ekMXzLV4yl8ptIdGSirg4oF7tb8DDx2B3gDcMH/By/82J3Ee/En4YrPgT/k5pHPuS5Cj38J\nOnaANwjv+D4sf9Oh65bPgfGMdC8qcdlcngc3tfAfj+1k64E+wn4v16yYzQ2r69jS0svXHt5BOODl\nttefhs/roal9gKb2AdoH0gyksgyksvi9Hq4/u453nzef+srxh8TM5S0eg0bSERERmWFK3mXq9TTD\nI//sWu8Hu1xXnLK5rkvN6deNJMsdO2H9XdDVNPLZfM69f7ALEh0w0HbovM9YC9d9GeJ1rgvPH/8e\nNnzfnZAbrnT9+dMJ6NnjuuZc8il4+j9cv/+3fctd5CrZA3++03X1qVoM13wBll49tUl8ZhCe/iZE\nqt1JwoGZGxveWsvWA30sqIoQDY6c9LqjtZ/P3beJZ5rckJchv4eG6iiz4iFiQS/RgI+2/hTrtrVh\ngcuX1XJWfQVlQR+xkI9EOsfL+3t4eV8vO9r6sdYSCfgIB7zMKgtyZl05Z86Ls3JeOWfMiRMOeGds\nnUVERF4rlLzLyS2bcpWB7t3gC8PCC498z67H3NCYg90u8c9l4Oyb4IzrXUt+qg9+cpM7wfec98LW\n37jKwRnXw4EXXeVh0eXwug+56T37XKWhvhGWv8UdOQB3dODAi7D3GddFKFrjRvqpXnpo3/u2bfDz\nD0Dry+55qMIt93UfcpWFIsrnLZtbeqmOBZhdFhqz//2+7kF++swe/nPjPvb3DDJ6NzCrLMjKujjL\n58bxGkMinSOZTnGgs4/nWr5PxmcAABz0SURBVJJ0JVwXHY+BpbNinFlXTnUsgLWQt+D1QHUsSG0s\nSE1ZEL/XkM9D3lp6kxlebRvg1fYB9nUPsrg2xusaKnldQxX1lWG18ouIiKDkXV4rMoMuod72e1h8\nJVzzv90Jr9m0a/1//EtuuE1wXWkCZZDqcd16ll7tWtB3PAT9B4+cty8ES652RwVsDn77adeF523f\nBn8Ynv2O63tvLZz7AbjidojNcp/d8zQ89Q03pKfNu5s34EYDWn3zoRfjyufcCEHBsiNjsBZy6UO7\nN41XDgc3u5OPO3e5W6jcnTcw/wIon3fI24cuNtWfzOL1mCP7y+952l39t+8A9rRr6Fx8PRuD5/HK\nvk6a9+2h/cA+mtNR9po5eIyHTD5PMjP2ibdD5paHmFseYntrP31JN/RpwOtG1/F6DD6Pwevx4C88\nb6iOcslpNVyytIblc8po6Umyq32APR0DhPxe6irCzC0PUVcRJuTX0YAZsf85ePwrsOJ6OPvdxY2l\nq8n9puJ107eMbAr6Drj9QzYFCy9y1+MY/fpj/wI7H3En9J/+pqk50pfscSOEeV9Dw8rm8647ZPWS\nQ8tYjt9Udh3N59z2vW8jLHuj+39Vg8u0UfIurx25rEtWa5cd+VqyF9pecUNtls0Bjw/2b4SX7nP9\n+NP9bnz8094ADZe41v2BNvdn3fTfLjnv2+/mteAiuPF7hyYLvS3wX/8KG+52yX7jrS7xbX7Gtcwv\nucqN0GM8rrvQzkfcmP1zV0N8XiHZfhVyKahZ5pLt+vNgoBX2Pgt7n3aVj0i1e398nutGFCxzt0S7\n26m2bh65FgDGnYic6ITMgJtUsRCWvt7tfBsuHb+7Ty7rTj5e92V3QvBpb4Atvy5Ubgxw2L6jbK4r\nt/rzSIZn0WUqaM9HCXTvIt66nrK2DfiyCbxnvAn/qrfD7JXkLOzYu5/tW16gr7udvLVk865bkDc7\nQCAzgD/bz8t9YX7duYA2KjAGjrbbqoz4mVsepq4ixLxIjvPTT7Oq+yE8+QybYpewzncBe1Jl1JYF\nmVcRpq4iTHnYj9djCJgc5babpfVzKY9XjFwcLZ9zR3e8gentHpXPQe8+tx30H3TlOZ0J6eFyWXee\nybY/uIrl6C5wQxKd8MgXYf3dLrHKZ935Kdd8cewEs+0VePIb7vd26f88ovJ49Hgybnve/5y7pQeg\n7hyof507uf6V38JzP4K9T4Hxwuqb4NK/hapFJ1YOQ9IJdxL+M9+Bgy8d+lrtGXDV37kjd61b4L6P\nuFG2yurcfmLxlXDtv7jRvg6Xz7kKRy49Mi2TcGWb6HDbQMsLbp2790C8Hi74GKx5P4TiU7Nuo1nr\njkh27nIxRKoKt5qxlzd0scDR8UdrXCPBsWSSbp26d7v1jM+D2We6fXKyG567B579rjt/qnyB24+u\nuQWi1W65yR5XVmVzjz9xzCQLQx73Qjbp9muj1y+bdttbxw63LGMKia9n5LE3OHJENlo7ch7W4fJ5\ntx107HDdRwMxmH8eVDYcGncu467tsvcpN8LaYLfb157xlskfxc1lYOej8OJPYeuDbh9y9k1w1juh\ncuGxP5/ohOZnAePWzxuEV9e54ah79oy8r/YMOPtd7n+keon7P8rn3e9gx8PuCHbt6e6/pv68kf1D\nJln4L6sZe0S6fN79n/U0u22kZx/0Nrt7m3fluOBCd37dVFZqrXW/zZOkoqzkXeRYhn4HR/szyOfd\nn2nPHli+dvwfePsOePjzLtmvbIALPg7n3HzkkJcD7bDpF270nsyg65pTtRiCcdi33u3Ikz3uvdWn\nwfzz3Um9fS1uh9a7372e6nV/SMEyqFvjRgKqO8dVACoXupb6oeE79zwFr/6X64aUGXCVjKH3VTa4\nSsZgl/sDOfCCO1pw1rvhTV9xf3L5HOz+b7cjD8bd0YVozcg1CZr+7Cobh/MGXEzegPu8zbt1yQwe\nec7DUQxE6tkTPoN8RQOR2oWUz11COm/o6u2ju7efgb5usn2tmIE2YoP7ODezgRBpmm0NKetniaeF\nPIZtvtPZk5/FnkyM9nycWaabszy7WGmaCBuXkOTwkPJE8NksAZsEIIuPndHV7Ki4hD2VF9A3MEi+\nZx+e/hbmebs4s2yABb5u4raHhInRno/RnAqTD1ezcMECFsybjydW4ypgQ4lRywuw8xGy2x/Ge+BF\nTH5UQmS87iTsxg/CvEbob4X+A+57L5vrktRwpUuGtjzgbh07YcmVbgjYJVe7JHHrg/DKg9DfBvNf\n5yqfC86H2By33fgjsPUBePiL0LHdHZVK97n3veGL7rva/YS7bfq5W/55H4HLPw2Pf9mdc7LocviL\n77rvODPoYnry311MvpA7YmU8Lgm95FNu+8kWkql8ziX3Hq/7Xex8BHY+7LanTMKVRajC/YZ69x26\nUVSf5n5ffQdchSKfdUcDYrPd8sBtY127XcKYTRaSo7WuEuuPuN/QQLt739CtfTu88BP3e5i9yr0/\nXufKfbCrcLL8dpd4tm9ziev1/+6O4q2/Cx79Z3ddjNrl7nuqbHCx7NsILc+PrNd4Khvcb2b2Stj5\nGOz+syuz5W9x5ZRLu1uwrLA9VbvfVddu9533H3TzmHMWzD3LvZ4ecMtN9rgKYueukSN0Q/uaw5Uv\ncNvK/PPdd9v0X+73P9YRyuqlbh9Uu8yte6J9pEIy0O7uk91jLydS4+LLDrojhCuuh1d+55bnDbpK\nX9+BkXIrXwBLrnCVpHid24Zs3jV+JHsPHRa5fbv7joaOvI5WNtfFnR5wFbTRFZKJCIzqXukNFPaf\nhfO5cqkj3x+b7Sp0g11ufQbaRq7BUrHQfZ9DFcVZK9y6eXzu5vW7I8Ve/2HTfCP70oF2aH/FLT9c\n6bbbzlddOQ7N0+sHjNuO4nXuf6dqsdvvb/u9ayiyYxw9XXylO7K88CLXNfWFe917h4Sr3H9oosM9\nr1rs9gP5rPv9Vixw/1uJ9sIHjCuP8noXy1C32MGuI78Hb9DFanNunuCOSJXNcet5+C1Y5so/kxzZ\nZnwhd/N43ZGy7KArt979roy6mtx7Y7PcdhGfBxd81F1XpwiUvIsUQ99Bt1Of7GHfoUPHkWrX6nQ0\nE6l8jJZNucRox8NuR9+12+0Qcyl33kG4EmK1cNEnYdWNE4/Z2sIfUqtLFBPt7g+p7pyRFqr+Npco\n7njYLad6iWtFjdYU1sMCBoIxtwMOlLmd6t6nXOXjwIuFFpjc+HH4wm540iVXkzvzRjqrzgEM1Yld\neLb+2lVe+lqw/a2YTIK8L0SyehUDtWfRFV5AW0cX3V3tJHq7SFsvaW+EjDdKle2kMf0MDXbfEYvM\nY2i35bTYKrpsGWUmQSV91Hj6iDNw1GLL4eGF/GKeyS+nyc5ht53NoInx/vh6rk0/RCQ3TmIFJD1R\nQnk3//7KMzC1pxPZuw4z2OmSV5vHYkjOXsNAuI5420YCA0fGD0DN6XD1P7guXRt/6EZ+Gl0Z80dc\nkn71P7ikcshzP3LDux72h2uDccz5fwnnf9QlR4/8k2vJ9gYKrVyZ8Quleqk7WrXgArf9VC5y23ff\nAWhe77bbhktdK/zQdt/bAv/9VVfByGUA65KQSJVLZCsWuuev/M4lct5Cq99YCZvxugrQBR9zrXyH\n/7ZyWdeyue4rrizecqf7zQwZ6ICn/q9LxIYSA3CJ9LxzXVI9+iiOL+QS2EjV2K3Y+zbCE193ibPX\n72L3+gtJcsdIWYYr3XrGZrvEvGMnRxwlA7dtVCwYSdyGbpGakeSz/4AbCGDv067RACA6yyUzCy90\nlQkotMTvgX3PuaOZfS0uyYzWjFQsItUjSW7FQrfseJ1rXT34kvtde4NupLK5Z4/E2brFVcoGWt1R\njfhcN++hSkSqd+ztZ0ikxrX+1pxWaGkvd/sVr9/t99q3u0qYL+S2s7pzXHLt8Y90cxy6YV0ymGh3\nFemhZHmowpdLuwR2aCS1qkVu3zZ0vZS9T7ujsR3bXVxDR4Fnr3QVlqELIHbtdsnxjodcJSSXcQlw\nLuO+53xu5HEu6+79YVe2kRqXDK+4HpZeM9Ky3bUbXvwZ7Nswsi75rCv/0UeB5pzlfv9LrhypiGeT\nhcalMY5ode+BAy+NbGu5tNs+Fl9ROJrS444CbP+Tq/CVz3NHkiJVrux69rqbzY+MXBeucolzeeEI\nc3m9236Gf+f7XUNC83q3XQxVmIZuh1REjSsbjEvWR1dKvEH3v1Q21+1fKhvcttF/wC2jt8Xt606/\n7ujb2DRR8i4ix5YvtFr5w8WO5NjyOZcg9DSPDHPqDbpkKDrLJf4Tlep3f9zHc6i0Y6er/ARjhS5M\ndRCbQ1/W8MTODjbv72XZ7DLOWVDB3PIQ/YlBnnhpB+s3b+dAyz7K8j2U53soo5+e6CIG6i5mft1c\nasuCDKTd+QddiTQvNnezeW8rV+SeYa7p4KCtpJUK+myEuaaD+aaVJf4O9uaqeTDbyB7rrqcQ8ua5\nNr6bq3yb2JWt4ae9Z9KSG+keUEc7Z3t2UmX6qQtnmBfO0BZcyG/tRbQO5OhNZigL+pgdzvH2/J+I\n+uFA5Rr6K1cRi4aI+L1EAj5CAS/pbJ7+ZIZw+0tUHVjH/n7Y3Qdt6QAbAo00zJvLqnnupOa+ZJZY\n58usbP8d/kAYf7ScULSCQMCPlzxeY8l6w+yKraEpV0NbX4rqWIAltTGWzooRCfh4tX2AV9v72d+d\n5Mx55Vy4pJpYcOzvbiCVZX/3ID6vh9qy4PD7kqkUXVvWkd/2B3IYMsFq0qFqMiF3nw1WkwlWYr0j\nh/Rnx0OcNis27gXYDmetpXcwSzafx+f14PdYgl6D1zfOxe1OhLXuCAb2yKQ/1Q8HX3avByKuAhYs\nc4nsRC+iZ61L0rIplwQfq5EgnXD7kenuD53LuiNXyW7XSGK8LuEMxQtJevz49gWvVfmc25d6A6fG\nFdSHujn6Qu6/4ZBuSoXKjjc40i3yJKXkXUSkRGVyeba09NLaO3II3us1zC0PMa8iTFnITz5vOdCb\nZHdHgt0dA+zudPd7OwepiQVYNqeM02eXMSceIpXNM5jJ0Z/K0tw1yO4Ody2AdM5SEwtQGwsSD/vp\nS2bpGczQM5imO5GhezBDdyJNJjf+f0Y85OP0OWUsm13GwuoITR0JXtrXw9aWPtK5PMZALOgj6PPQ\nlciQyx/9/yfg9ZDOHf3kZ7/XsGZBJQurI/Qls/SnsnQnMuzrHqRz4NAW9UjAS8jvPWL6RJWFfKxZ\nUMmqeeV4PIZMLk82lydTuKBaJpenP5Vld0eCPR0J+lLZI+YRCXgpC/mIh/zMrQgzvzLMgqoIqWye\nbQf72H6wn9a+JCvrymksjMRUHvaTSOcYSGdJpIbusyQyObI5Sy5vyVtLOpcnlckzmM4xmHG3ZOEW\nD/k5fU4Zy+fGWVwTxZhCfd2OfD6bc/e5vCVnLfn8yGu5wnuHpg0/LrzfYwwBr4eAz4Mx0Nqb4kBv\nkoO9SRLp3HD5eD2GqmiQmliAmsK2NjSMbUUkwOx4kFlloTGHoU1mcvQlswymc/i8hoDPLS/gdTeP\nx2CtZTCTo3cwS28yQzqbJ5e3ZPO28PkMvcks/cns8Hrk8pbysJ+G6igNNRGqo0GaOgbY0drPrrYB\n8tYSKwynWxUNcNqsGAuro3jHqMhlcnkO9iZp6XG3Az2DtPQksRbKw34qI37ihXNsjDEYwGNM4Zoa\nbsQu953lSaSzdA6kaetL0dafIujzcM6CStYsqGRlXZy+ZJaDvUkO9LpufVXRAFXRAPGQvzAv6w4+\n4R5b65YV9nsJB7z4vS4Ge8h37r5ngGjAe8QIYMlMjq5EmoDXQ9DvJeD1kMzm6Elk6Bl0v+lZcTfa\nmM974slxXzJDNmcJ+j2FQQ0mP09rLalsnry1hP1HrtvhEuksHmOKNgiCkncRETlh1lqSGZf8J9JZ\nkpkcQZ+XaNBHNOgl6Bv7Ty6dzZPK5ogGfMMt17m8pWMgRWtvikQ6RzaXJ53L4zGG2fEQc8pDxEM+\negez7GjrZ2drP4l0loaaKItrYsyKB9m4p4t129pZt62NjoEUZSE/ZSEf5WE/dRVh5lWEqa8Mk8tb\n2vrcVYoHMznmxkPDIxQFj/hjPvI/0Vpo6kiwYXcn65u62N7aD7iKg9/rwedxiaTf6yEc8DK/MsLC\n6gjzKyP4vYbsqOSxP5kdrhjt6x5kb1eC7sLwq/OrwiybVUZNLMiL+3rYeqD3qCdnj2YM+D1u+UPJ\nWcjvJeT3EPK5CsvOtn6yx6gwTaWw38vseJBYyIff68Hv8ZCzlo7+FO39afrHqNwMiQa8w8mxBVKZ\n/DErcr7C+2diHYM+D4trYwS8hnSh8tYzmKG9P3XEdxYNePF4zPDIWsfD5zHUxILUlgXpS2Zo6jjG\nuRLHwWNc2Y63jQV8HmoLy87k8rT0JCdc8TUGqqNB4iEfocL2CNBfqGD3pwqVp0KloSzoY25FiDnx\nMGUhH3s6EzS1D9Bx2PL8XkN5OEB52Ec87CeZydM7mKG3kORHg4Wjgn4P6awb+SyZdRXYVDY/vK5D\n86mM+JlTHmJBVYT5VRF8HsPL+3t5aV8PO9v6ufPd53D92TM4aMAoSt5FRESmyFRffbg3mcHnMUQC\nviOmP7+nm1Q2TyTgJRJwFaWw391HAt7CsKpmQrGks3l2tvWzu5AADg3L6vEYvMbg8YDXuPkNTfN6\nDJ7CvdfD8GOPMW5oV+Pem8+7lv90No8FasuClAV9R40rmXFdtAZSOQZSrpW5tS9Fa1+S9r60azku\nCPo9xEN+4iEf4YCvcMQjTyqbH17u0LLjIT/lYVeRC/qGhqD1EPS5eZSFfJSFfPi8HjzGrVNXIs2r\n7QPs7kjQ0Z9iQXWUpbUxFtVECfg8DKTdFapbe1NsO9jHtoN97Cy0yvsLLf+xQgI6tzzEnPJw4T5E\nPOS6SmULCX5vMjvcEm6tHW4Zz+cLFyD3uYpX2O+O0ozuqtXRn+K5Pd28crCP8rCfOYWKLkDnQJrO\ngTS9yQwGYFTLvjFujLBcoQKezOQYTOcwhlHf79B37RL6oVb/1r4Ufq9hbkWYuvIQVdEg2bw7ypPK\n5gj5vcTDrsw9xtDal+Rgb4rW3iQD6RyD6SyDmRzWuqNXsaCfaNCLz+MZ3qZ6kxl3tKI7SV8yw/yq\nCItroyysjhL0eQoNAHkS6dzwEcG+ZNYtO+QnHva565JkciRSWZKZPAGfx1Ve/YWKrM8dLRhaXnfC\nlVdLT5K9nYnha5jMjg9dkLCcN62ay+lzxhi6eQYoeRcRERERGUdfMkMqm6cmdoxrqcyQoyXvJ3dv\n/XEYY9YaY77d0zP+CAwiIiIiIhNRFvKfNIn7sZRk8m6tfcBa+5Hy8glcEEJERERE5BRRksm7iIiI\niMhrkZJ3EREREZESoeRdRERERKREKHkXERERESkRJT1UpDGmDdhdxBBqgPYiLv9UpDKdHirX6aFy\nnXoq0+mhcp0eKteppzJ1Flpra8d6oaST92IzxqwfbwxOmRyV6fRQuU4PlevUU5lOD5Xr9FC5Tj2V\n6bGp24yIiIiISIlQ8i4iIiIiUiKUvJ+Ybxc7gFOQynR6qFynh8p16qlMp4fKdXqoXKeeyvQY1Odd\nRERERKREqOVdRERERKREKHmfBGPMtcaYV4wxO4wxtxc7nlJljJlvjHnUGLPZGPOyMeavC9M/b4zZ\nZ4x5vnB7U7FjLSXGmCZjzKZC2a0vTKsyxvzJGLO9cF9Z7DhLiTHm9FHb4/PGmF5jzG3aVo+fMeYu\nY0yrMealUdPG3D6N87XCvvZFY8ya4kV+chunXL9ijNlaKLv7jTEVhekNxpjBUdvtN4sX+clrnDId\n9zdvjPlsYVt9xRjzxuJEffIbp1x/OqpMm4wxzxema1sdg7rNHCdjjBfYBlwDNAPPAjdZazcXNbAS\nZIyZC8y11m40xpQBG4C3Au8E+q21/6eoAZYoY0wT0GitbR817ctAp7X2jkKFs9Ja+5lixVjKCvuA\nfcD5wK1oWz0uxpjLgH7gh9baMwvTxtw+C4nRXwFvwpX3V6215xcr9pPZOOX6BuARa23WGPMlgEK5\nNgC/GXqfjG2cMv08Y/zmjTErgJ8A5wF1wEPAMmttbkaDLgFjlethr/8r0GOt/YK21bGp5f34nQfs\nsNbustamgXuBG4ocU0my1rZYazcWHvcBW4B5xY3qlHUD8IPC4x/gKkkyOVcDO621xbxAXMmy1q4D\nOg+bPN72eQPuD95aa58CKgqVfjnMWOVqrf2jtTZbePoUUD/jgZWwcbbV8dwA3GutTVlrXwV24PIF\nOczRytUYY3ANeD+Z0aBKjJL34zcP2DvqeTNKOE9YoXZ9DvB0YdInCod671IXj+NmgT8aYzYYYz5S\nmDbbWttSeHwAmF2c0E4J7+bQPxZtqyduvO1T+9up80Hgd6OeLzLGPGeMedwYc2mxgipRY/3mta1O\njUuBg9ba7aOmaVs9jJJ3KTpjTAz4T+A2a20v8B/AEmA10AL8axHDK0WXWGvXANcBHy8cohxmXV85\n9ZebBGNMALge+HlhkrbVKabtc+oZY/4OyAL3FCa1AAustecAfwP82BgTL1Z8JUa/+el1E4c2jmhb\nHYOS9+O3D5g/6nl9YZpMgjHGj0vc77HW3gdgrT1orc1Za/PAd9Chx+Nird1XuG8F7seV38Gh7gaF\n+9biRVjSrgM2WmsPgrbVKTTe9qn97QkyxnwAeAtwc6FiRKFrR0fh8QZgJ7CsaEGWkKP85rWtniBj\njA94O/DToWnaVsem5P34PQucZoxZVGiFezfw6yLHVJIKfdu+B2yx1v7bqOmj+7S+DXjp8M/K2Iwx\n0cLJvxhjosAbcOX3a+CWwttuAX5VnAhL3iGtQtpWp8x42+evgfcXRp25AHcSW8tYM5AjGWOuBT4N\nXG+tTYyaXls48RpjzGLgNGBXcaIsLUf5zf8aeLcxJmiMWYQr02dmOr4S93pgq7W2eWiCttWx+Yod\nQKkpnLX/CeAPgBe4y1r7cpHDKlUXA+8DNg0NCwV8DrjJGLMad+i8CfjL4oRXkmYD97t6ET7gx9ba\n3xtjngV+Zoz5ELAbd0KQHIdCZegaDt0ev6xt9fgYY34CXAHUGGOagX8E7mDs7fO3uJFmdgAJ3Og+\nMoZxyvWzQBD4U2Gf8JS19qPAZcAXjDEZIA981Fo70RMzXzPGKdMrxvrNW2tfNsb8DNiM66L0cY00\nM7axytVa+z2OPJ8ItK2OSUNFioiIiIiUCHWbEREREREpEUreRURERERKhJJ3EREREZESoeRdRERE\nRKREKHkXERERESkRSt5FRF5DjDE5Y8zzo263T+G8G4wxGuteRGQaaZx3EZHXlkFr7epiByEiIpOj\nlncREcEY02SM+bIxZpMx5hljzNLC9AZjzCPGmBeNMQ8bYxYUps82xtxvjHmhcLuoMCuvMeY7xpiX\njTF/NMaEi7ZSIiKnICXvIiKvLeHDus28a9RrPdbaVcC/A3cWpn0d+IG19izgHuBrhelfAx631p4N\nrAGGrjR9GvANa+1KoBv4i2leHxGR1xRdYVVE5DXEGNNvrY2NMb0JuMpau8sY4wcOWGurjTHtwFxr\nbaYwvcVaW2OMaQPqrbWpUfNoAP5krT2t8PwzgN9a+0/Tv2YiIq8NankXEZEhdpzHxyM16nEOnVsl\nIjKllLyLiMiQd426f7Lw+Ang3YXHNwP/VXj8MPAxAGOM1xhTPlNBioi8lqlFRETktSVsjHl+1PPf\nW2uHhousNMa8iGs9v6kw7a+Au40x/wtoA24tTP9r4NvGmA/hWtg/BrRMe/QiIq9x6vMuIiJDfd4b\nrbXtxY5FRETGp24zIiIiIiIlQi3vIiIiIiIlQi3vIiIiIiIlQsm7iIiIiEiJUPIuIiIiIlIilLyL\niIiIiJQIJe8iIiIiIiVCybuIiIiISIn4/wFz20/stU9knAAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "8AI4ftPxR5gM", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Result\n", | |
"Here, we have to calculate the std deviation from the result. The result isn't that great, anyway - but no surprise there since we are approximating two numbers of about the same size and taking their difference." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "mDIt9A0CR5gP", | |
"colab_type": "code", | |
"outputId": "4a1b7981-b9e4-4be9-b809-acb419cda32a", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 211 | |
} | |
}, | |
"source": [ | |
"def plotVariant2Model(model):\n", | |
" xs = x[:plotdim,:]\n", | |
" prediction = model.predict(xs)\n", | |
" predictMean = prediction[:,0:1]\n", | |
" predictStdDev = np.square(prediction[:,1:2])-np.square(predictMean)\n", | |
" plotpredictions(xs, predictMean, predictStdDev)\n", | |
"\n", | |
"plotVariant2Model(modelMeanAndSquare)" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\n7dtH48aNWVRma77mzZuzc+dORo0axbhx43jhhRfYsWMHTz/9NEnmhNRJkyYxceJE9uzZY9cW8IMH\nD2b79u1cuHABgBUrVjBq1CgA5s6dS1paGrt37+bzzz9n9+7dVusihC8pOyo+caLxh7G7ffed5IYL\nIURtNyc+kvkJUdQPqX7S5fJtWXT8+xqP5317dHKl1nqJ1jpGax3TsmVLp841fTqYB6MtLl40nndG\n27ZtiY2NBWDMmDF8+eWXltcSEhIAOH/+PF999RUjR44kKiqK8ePHc/z4cQC2bNnC6NGjAbjnnnuq\nvV6dOnWIi4vjww8/pLCwkDVr1nDnncYXCu+99x69evUiOjqavXv38t1331WqixC+bNEiI02k4hKG\n7grGK+aGl9wkGBdCiNohPjqclN9H0rR+SLVlC4ph8ooMj671bc+vvxygbZnHbczPWS2jlKoDNAFy\nXVFBW7KyHHveXhUzZMo+btjQmDlbXFxM06ZNycjIsNz27dtn8xzVGTVqFO+99x6ffvopMTExhIWF\nceTIEZ5++mk2btzI7t27ueOOO8jPz69UFyH8jbVgfNAg916zbDAuu2oKIURgi48OJ2PmbXYvN7jl\n8GmPpZ7YE3h/A3RUSnVQStUFRgGrK5RZDdxnvj8C+FRrrV1Xzcra2UjjsfW8vbKysti61fjL5+23\n3+amm26qVKZx48Z06NDBkl+ttWbXrl0AxMbG8u677wJgsvO3+6233srOnTtZunSpJXXkl19+oWHD\nhjRp0oQTJ07w8ccfO9cwIXzYhg2eWzGl7K6aSkG9ehKIAyilrlJKrVdKHTT/28xGuSKlVIb5VvF3\ngRBC+Izds+O4JqyuXWWXb3Ny5NZO1Qbe5pzth4C1wD7gPa31XqXUP5VSw83FXgWaK6UOAVOASksO\nutrcudCgQfnnGjQwnndG586dWbhwIV27duXMmTNMtLG1n8lk4tVXX6Vnz550796dDz74AIAFCxaw\ncOFCIiMjyckp/8VAVFSU1XMFBwczbNgwPv74Y8vEyp49exIdHU2XLl24++67Lekv1ixevJjFixfX\npLlC+IyKK6Z4anv7K1fKB+K1OC1lGrBRa90R2IjtfvyS1jrKfBtuo4wQQviE7dOH2D3p0hNLDSo3\nD0zbFBMTo9PS0so9t2/fPrp27Wr3OUwmI6c7K8sY6Z471/jlXVOZmZkMGzaMb7/9tuYn8TGOvqdC\n+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\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 4 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "uQv3usV4R5gh", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# Prediction using the Maximum Likelihood principle\n", | |
"\n", | |
"The normal distribution has a probability density function $p(v | \\mu, \\sigma) = \\frac{1}{\\sqrt{2*\\pi*\\sigma^2}}e^{-\\frac{(x-\\mu)^2}{2\\sigma^2}}$ for some value $v$ of the random variable. In our case, the mean $\\mu$ and standard deviation $\\sigma$ would be our functions $f$ and $g$ and depend on the inputs of our training examples.\n", | |
"\n", | |
"We would now try to train our network such that it maximizes the likelihood of the expected outputs of the training examples. Assuming that all examples are statistically independent (which is, admittedly, not very realistic, but what can we do?), this would be the product of all likelihoods of the individual examples. It is easier to calculate if we take the logarithm and maximize the log-likelihood, or, since we want a loss function, minimize the negative logarithm:\n", | |
"\n", | |
"$-\\prod_x{p\\bigl(y|f(x),g(x)\\bigr)} = \\sum_x{-\\ln p\\bigl(y|f(x),g(x)\\bigr)} $\n", | |
"\n", | |
"Using\n", | |
"\n", | |
"$- \\ln p(v | \\mu, \\sigma) = \\frac{\\ln 2\\pi}{2} + \\frac12 \\ln(\\sigma^2) + \\frac{(v-\\mu)^2}{2\\sigma^2}$\n", | |
"\n", | |
"we arrive at the following loss function. (We do not simplify $\\frac12 \\ln(\\sigma^2)=\\sigma$ since the output of the NN might be negative, leave out the constant summand and constant factor $\\frac12$ and use the mean - all these do not affect minimization.)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "Us4U3MaQR5gj", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"def maxLikelihoodGaussian(y_true, y_pred):\n", | |
" y_pred = tf.convert_to_tensor(y_pred)\n", | |
" y_true = math_ops.cast(y_true, y_pred.dtype)\n", | |
" mean = y_pred[..., 0::2]\n", | |
" stddev = y_pred[..., 1::2]\n", | |
" stddevSq = stddev * stddev + 1e-10\n", | |
" return K.mean(K.log(stddevSq) + K.square(y_true - mean) / stddevSq)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "e9trZJQiR5gp", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Training" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "sY8zJFZOR5g1", | |
"colab_type": "code", | |
"outputId": "ba57dfdc-cfcb-49d9-94e0-0bf93edfcbef", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 1000 | |
} | |
}, | |
"source": [ | |
"modelMaxLikely = trainedModel(lambda : makeModel(loss=maxLikelihoodGaussian))" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"2020-02-19 21:53:13.738203\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................15.29320299275716\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 12.9863\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................5.111457897610134\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 4.1651\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3573123860889011\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: -0.0115\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................28.0471079627143\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 24.7527\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................26.845578096177842\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 23.0490\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................20.925679317898222\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 16.9928\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................-0.6449138677385118\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: -0.6948\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................22.43995302327474\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 18.4336\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................9.830547586229113\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 8.4089\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................14.643105880737306\n", | |
"10000/10000 [==============================] - 0s 34us/sample - loss: 12.1623\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................0.3913966228432125\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 0.1513\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................2.9970163646274144\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 1.2653\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................18.51766458468967\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 13.9436\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................23.832974461873373\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 20.3971\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................9.825251021491157\n", | |
"10000/10000 [==============================] - 0s 33us/sample - loss: 0.7615\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................25.36968029446072\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 18.5765\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................2.2710710510677763\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 0.6155\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................35.59706588066949\n", | |
"10000/10000 [==============================] - 0s 30us/sample - loss: 28.9588\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................15841.83808295356\n", | |
"10000/10000 [==============================] - 0s 34us/sample - loss: 109.5421\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"...........Epoch 00211: early stopping\n", | |
"91.53810868326823\n", | |
"10000/10000 [==============================] - 0s 32us/sample - loss: 94.3985\n", | |
"\n", | |
"....................................................................................................\n", | |
"....................................................................................................\n", | |
"..................................................1.315274834950765\n", | |
"10000/10000 [==============================] - 0s 31us/sample - loss: 0.5856\n", | |
"2020-02-19 22:03:56.091152\n", | |
"Model: \"sequential_91\"\n", | |
"_________________________________________________________________\n", | |
"Layer (type) Output Shape Param # \n", | |
"=================================================================\n", | |
"dense_273 (Dense) (None, 32) 64 \n", | |
"_________________________________________________________________\n", | |
"dropout_182 (Dropout) (None, 32) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_274 (Dense) (None, 8) 264 \n", | |
"_________________________________________________________________\n", | |
"dropout_183 (Dropout) (None, 8) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_275 (Dense) (None, 2) 18 \n", | |
"=================================================================\n", | |
"Total params: 346\n", | |
"Trainable params: 346\n", | |
"Non-trainable params: 0\n", | |
"_________________________________________________________________\n" | |
], | |
"name": "stdout" | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAvUAAADQCAYAAACHvJ4hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deXhU5d3/8fc3k5VsQAIkECBAQEBA\nligCKiBoQUVtiwtStWq1Wq3aHX18qra2tb8+7eP6uONSUVp3ccO6o6IQEFlFwiZhSwiQkITs9++P\nGTBgAiHM5CSTz+u6zjVzljnnMznXwHfuuc99zDmHiIiIiIi0XhFeBxARERERkaOjol5EREREpJVT\nUS8iIiIi0sqpqBcRERERaeVU1IuIiIiItHIq6kVEREREWrlIrwOEQmpqqsvMzPQ6hoiIiIhI0Cxa\ntGiHc65TfevCqqg3synAlKysLHJycryOIyIiIiISNGa2saF1YdX9xjk3xzl3VXJystdRRERERESa\nTVgV9SIiIiIibZGKehERERGRVi6s+tSLiIiISOhVVVWRl5dHeXm511HCUmxsLBkZGURFRTX6NSrq\ng2jRxp08NX8jfzx3EEmxjT8JIiIiIq1JXl4eiYmJZGZmYmZexwkrzjkKCwvJy8ujV69ejX6dut8E\nUWFJJa8s2cL6glKvo4iIiIiETHl5OSkpKSroQ8DMSElJOeJfQVp8UW9m55rZI2b2LzM73es8h9K7\nUwIA63aUeJxEREREJLRU0IdOU/62nhT1ZjbTzPLNbPlByyeZ2WozyzWzGQDOuZedc1cCVwMXeJG3\nsXp0bIcvwlinlnoRERGRkCksLGTo0KEMHTqUtLQ0unXrtn++srKyUfu47LLLWL16daOP+eijj9Kp\nU6f9xxk6dOgRvT7UvOpT/wRwH/DUvgVm5gPuB04D8oCFZvaqc25lYJNbAutbrOjICLp3iFNRLyIi\nIhJCKSkpLFmyBIDbbruNhIQEfv3rXx+wjXMO5xwREfW3YT/++ONHfNzp06dz1113Nbi+urqayMhv\ny+vDZairpqYGn893xJn28aSl3jn3EbDzoMUnALnOuXXOuUpgNnCO+f0VeNM5t7i5sx6p3p0SWFug\n7jciIiIizS03N5eBAwcyffp0jj32WLZu3cpVV11FdnY2xx57LH/4wx/2b3vSSSexZMkSqqurad++\n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\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "dfF1_5k6R5hf", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Result\n", | |
"Again plotting our results show this works quite good." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "XRNrvYZyR5hg", | |
"colab_type": "code", | |
"outputId": "3dfeee8a-7324-47e6-8edb-28a0c29b6bb1", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 212 | |
} | |
}, | |
"source": [ | |
"plot(modelMaxLikely)" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 900x216 with 4 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false, | |
"id": "xRwRuqjAR5hn", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# Conclusion\n", | |
"\n", | |
"At least with our example, it seems quite possible to estimate simultaneously both the expected value (= mean) and the standard deviation (= square root of the expected value of the square of the deviation from the mean) for a stochastic value for which both depend on some parameters. We have tested various variants for this - for our example, the variant 1 seems to be best, while variant 1b seems best when the standard deviation is small in comparison to the range the mean can take. How practicable the approach is remains to be tested. :-)\n", | |
"\n", | |
"[Hans-Peter Störr](http://www.stoerr.net/), 5/2019" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"pycharm": { | |
"name": "#%%\n" | |
}, | |
"id": "sCG3j53pR5hy", | |
"colab_type": "code", | |
"outputId": "305a7730-5d05-45c8-cabc-eca6439e7e87", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 67 | |
} | |
}, | |
"source": [ | |
"print(begintime)\n", | |
"print(datetime.datetime.now())\n", | |
"print(datetime.datetime.now() - begintime)" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"2020-02-19 21:11:44.439209\n", | |
"2020-02-19 22:03:57.295331\n", | |
"0:52:12.856357\n" | |
], | |
"name": "stdout" | |
} | |
] | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment