{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Regression Neural Network\n", "This notebook shows a structured workflow to optimize and interpret a three layer neural network. The tutorial starts with some theory and data preparation. This is followed by a simple three-layer neural network, that is used to determine a suitable dimensionality for the hidden layer. Afterwards, we build an ensemble of this model. To determine the relevant input features, a sensitivity analysis is performed.\n", "At the end, a deep version of a three-layer neural network is constructed, and we calculate an ensemble of it.\n", "\n", "## Theory\n", "It is proven that three-layer neural networks can approximate any continuous function on a compact domain to any given level, if the hidden layer is big enough (Hornik, Stinchcombe, White 1989). Nevertheless, it is often complex to create a well performing neural network for a regression task. One problem is to find a suitable hidden layer size or the relevant input features. The notebook presents approaches to alleviate these problems." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "hide_cell" ] }, "outputs": [], "source": [ "import sys\n", "import os\n", "\n", "sys.path.append(os.path.abspath(\"../../..\"))\n", "sys.path.append(os.path.abspath(\"..\"))" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import matplotlib.pyplot as plt\n", "from sklearn.model_selection import train_test_split\n", "import pandas as pd\n", "import torch\n", "import torch.optim as optim\n", "import torch.nn as nn\n", "\n", "from prosper_nn.utils.neuron_correlation_hidden_layers import (\n", " hl_size_analysis_Sequential,\n", ")\n", "from prosper_nn.utils.sensitivity_analysis import sensitivity_analysis\n", "import prosper_nn.models.ensemble as ensemble\n", "import prosper_nn.models.deep_feed_forward as deepff\n", "import prosper_nn.models.feedforward as feedforward\n", "import tutorials.dataset as dataset\n", "torch.manual_seed(0)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Data Preparation\n", "To show the workflow with Prosper_nn, a dataset with 1599 different red wines and 11 features about chemical properties `X` is loaded (see [1]). We rank the quality `y` of the wine. The dataset can be downloaded from [2].\n", "\n", "The dataset is shuffled and split into training and test sets. Afterwards we normalize them independently of each other.\n", "At the end, the training set is formatted into batches with the chosen **batchsize**. The remaining instances are dropped.\n", "\n", "### References\n", "\n", "[1] P. Cortez, A. Cerdeira, F. Almeida, T. Matos and J. Reis. Modeling wine preferences by data mining from physicochemical properties. In Decision Support Systems, Elsevier, 47(4):547-553, 2009\n", "\n", "[2] Dua, D. and Graff, C. (2019). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "batchsize = 16" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(\"data/winequality-red.csv\", sep=\";\").sample(frac=1)\n", "\n", "X = torch.tensor(df.drop(columns=[\"quality\"]).values).float()\n", "y = torch.tensor(df[\"quality\"].values).float()\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)\n", "\n", "# Normalize data\n", "normalize_data = lambda x: (x - x.mean(dim=0)) / x.std(dim=0)\n", "X_train = normalize_data(X_train)\n", "X_test = normalize_data(X_test)\n", "y_train = normalize_data(y_train).reshape(-1, 1)\n", "y_test = normalize_data(y_test).reshape(-1, 1)\n", "\n", "# Bring the data in batch format\n", "X_train = X_train[: -(X_train.shape[0] % batchsize)]\n", "y_train = y_train[: -(y_train.shape[0] % batchsize)]\n", "X_train = X_train.reshape(int(X_train.shape[0] / batchsize), batchsize, -1)\n", "y_train = y_train.reshape(int(y_train.shape[0] / batchsize), batchsize, -1)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Single Three-Layer Feedforward Neural Network\n", "A [three-layer feedforward neural network](../api/feedforward.rst) is the simplest non-linear neural network. It can be described by using two matrices and a non-linearity like e.g. $\\tanh$.\n", "The architecture is shown below.\n", "\n", "\n", "\n", "### Initialization\n", "To initialize a three-layer Feedforward Neural Network there are some parameters to chose. Some are already given by the data. As instance, the **input_dimension** is equal to the number of input features - 11 in our case. The **output_dimension** is defined by the task. Here, we predict one feature, the wine quality. Setting the right value for **hidden_dimension** gets more complicated. The first choice is more or less a guess. But the [Pearson Correlation Coefficient](../api/neuron_correlation_hidden_layer.rst) is presented later that estimates if the value should be increased or decreased. " ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "input_dim = 11\n", "hidden_dim = 20\n", "output_dim = 1\n", "\n", "n_epochs = 400" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "ffnn = feedforward.FFNN(\n", " input_dim=input_dim, hidden_dim=hidden_dim, output_dim=output_dim\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set the optimizer and the loss function." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "optimizer = optim.Adam(ffnn.parameters(), lr=0.001)\n", "loss_function = nn.MSELoss()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Training Loop\n", "In PyTorch, a training loop consists of several steps. For each epoch and for each batch in the training set, the saved gradients in the model parameters are set to zero.\n", "Then a batch is given to the model, and it calculates the predictions. They are compared to the true values using a loss function. This loss is backpropagated through the model and new gradients are set to the model weights. At the end, an optimizer step is executed and the weights are updated." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "losses = [0] * n_epochs\n", "\n", "for epoch in range(n_epochs):\n", " for X_batch, y_batch in zip(X_train, y_train):\n", " ffnn.zero_grad()\n", " y_pred = ffnn(X_batch)\n", " loss = loss_function(y_pred, y_batch)\n", " loss.backward()\n", " optimizer.step()\n", " losses[epoch] += loss.detach()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def visualize_learning_process(n_epochs, losses):\n", " plt.plot(range(n_epochs), losses)\n", " plt.title(\"Loss during training\")\n", " plt.xlabel(\"Epoch\")\n", " plt.ylabel(\"MSE\")\n", " plt.show()\n", "\n", "\n", "visualize_learning_process(n_epochs, losses)\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Prediction\n", "To verify if the model is well-trained, calculate and print out the Mean Squared Error Loss for the training and test data set. Here, the model might be overfitted." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Error training data: 0.390196\n", "Error test data: 0.661699\n" ] } ], "source": [ "with torch.no_grad():\n", " y_pred_train = ffnn(X_train)\n", " y_pred_test = ffnn(X_test)\n", " error_train = loss_function(y_pred_train, y_train)\n", " error_test = loss_function(y_pred_test, y_test)\n", "\n", "print(\"Error training data: \" + str(round(error_train.item(), 6)))\n", "print(\"Error test data: \" + str(round(error_test.item(), 6)))" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Evaluation\n", "#### Determine Hidden Layer Dimensionality\n", "\n", "As already mentioned, the hidden layer size is only a guess a priori. But after the model is trained, we can check if the model is trained well.\n", "Therefore, we look at the Pearson correlation coefficient between the neurons of the hidden state:\n", "\n", "$$\\langle f_i, f_j \\rangle = \\frac{\\sum_t \\left (f_i(t)-\\overline{f}_i \\right ) \\left( f_j(t) - \\overline{f}_j \\right)}{\\sqrt{\\sum_t \\left (f_i(t)-\\overline{f}_i \\right )^2 \\sum_t \\left( f_j(t) - \\overline{f}_j \\right)^2}}$$\n", "\n", "where $f_i$ is the value and $\\overline{f}_i$ the mean of the i-th neuron.\n", "\n", "If two or more neurons are highly correlated, only one of them is needed and the others are redundant, if the neuron weight is increased. Then the size of the hidden layer (i.e. hidden_dim) can be reduced. On the other hand, if none of the neurons have outputs with a strongly correlation, we should set hidden_dim to a larger number. The [hidden layer size analysis](../api/neuron_correlation_hidden_layer.rst) gives us a plot of the correlations between neurons with color coding and the values of the correlation for relatively strong ones. \n", "\n", "As a rule of thumb, we have a suitable dimensionality when the highest correlation is around 80 percent." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The analysis refers to the last module of the following model: \n", "Sequential(\n", " (0): Linear(in_features=11, out_features=20, bias=True)\n", ")\n" ] }, { "data": { "image/png": "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V3n/vEtTYT9/AICSKz//VwNQZM8995xSUlL03nvveSU//2rUqJHuvfdez+vs7GxNnjxZDRs2lMPhUL169fTII4/I6XR6XVevXj1dfvnlWrhwodq3b6+goCC99dZbWrp0qQzD0OzZs/XYY4+pVq1aCg4OVnJysiRp5cqV6tu3ryIiIhQcHKzu3bvr999/P+V9fPXVV7rssstUs2ZNORwONWzYUJMnT5bL5fLUueiii/Ttt99qz549MgxDhmF4ntko6Bmgn376SV27dlVISIgiIyM1YMAAbdq0yavOxIkTZRiGtm/fruHDhysyMlIREREaMWKE0tLSThm7JH322WeKiYlRUFCQqlatqiFDhujAgQNesQ8bNkySdP7558swDA0fPrzA9oob04cffujpv3Llyho8eLD27dvnVadevXr59nnRRRfpoosu8rw+1Wd8qnuVcp6nCQ0N1YEDBzRw4ECFhoaqWrVqeuCBB7w+U0maPXu2YmJiFBYWpvDwcLVq1UrTpk0r8L3513+fASqNz/G/XnjhBXXu3FlVqlRRUFCQYmJi9Pnnn3vV6d69u9q0aZPv9U2aNFGfPn08r91ut6ZOnaoWLVooMDBQNWrU0G233abjx497XVfQzx+AM89mN8rtgdPHCBBwFvr666/VoEEDde7cuUj1b7nlFs2aNUvXXHON7r//fq1cuVKxsbHatGmTvvzyS6+6W7Zs0fXXX6/bbrtNo0aNUpMmTTznJk+erICAAD3wwANyOp0KCAjQTz/9pH79+ikmJkYTJkyQzWbTjBkz1KNHD/3666/q0KFDgXHNnDlToaGhGjt2rEJDQ/XTTz/piSeeUHJysp5//nlJ0qOPPqqkpCTt379fL7/8siQpNDS0wDZ//PFH9evXTw0aNNDEiROVnp6uV199VV26dNGaNWvyPPA+aNAg1a9fX7GxsVqzZo3effddVa9eXVOmTCn0PZ05c6ZGjBih888/X7GxsYqPj9e0adP0+++/66+//lJkZKQeffRRNWnSRG+//baefPJJ1a9fXw0bNiy03aLG9PTTT+vxxx/XoEGDdMstt+jIkSN69dVX1a1bN0//JZHfZ1yUe/2Xy+VSnz591LFjR73wwgv68ccf9eKLL6phw4a6/fbbJUmLFi3S9ddfr549e3ruadOmTfr999+9EvfiKOnnmJ9p06apf//+uvHGG5WZmanZs2fr2muv1TfffKPLLrtMknTTTTdp1KhRWr9+vVq2bOm59o8//tDWrVv12GOPecpuu+02z3t4zz33aNeuXZo+fbr++usv/f77715TOAv7+QMAlBITwFklKSnJlGQOGDCgSPXXrl1rSjJvueUWr/IHHnjAlGT+9NNPnrK6deuakswFCxZ41V2yZIkpyWzQoIGZlpbmKXe73Wbjxo3NPn36mG6321OelpZm1q9f37zkkks8ZTNmzDAlmbt27fKq91+33XabGRwcbGZkZHjKLrvsMrNu3bp56u7atcuUZM6YMcNT1rZtW7N69epmQkKCp+zvv/82bTabOXToUE/ZhAkTTEnmyJEjvdq88sorzSpVquTpK7fMzEyzevXqZsuWLc309HRP+TfffGNKMp944ok89/3HH38U2mZxYtq9e7dpt9vNp59+2qveP//8Y/r5+XmV161b1xw2bFievrp37252797d87qgz7g49zps2DBTkvnkk0969XXeeeeZMTExntf33nuvGR4ebmZnZ5/iHclLkjlhwgTP69P5HP+N+b9/t/779zIzM9Ns2bKl2aNHD09ZYmKiGRgYaD788MNede+55x4zJCTETElJMU3TNH/99VdTkvnRRx951VuwYEGe8oJ+/gCceX9dcmG5PXD6mAIHnGX+nZIUFhZWpPrfffedJGns2LFe5ffff78k5XlWqH79+l7Td3IbNmyY1/MIa9eu1bZt23TDDTcoISFBR48e1dGjR5WamqqePXvql19+kdvtLjC23G2dOHFCR48eVdeuXZWWlqbNmzcX6f5yO3TokNauXavhw4ercuXKnvLWrVvrkksu8bwXuY0ePdrrddeuXZWQkOB5n/Pz559/6vDhw7rjjju8nkm57LLL1LRp09N+/upUMc2dO1dut1uDBg3yvOdHjx5VVFSUGjdurCVLlpS47/9+xiW51/zi37lzp+d1ZGSkUlNTtWjRohLHWZQ+T/U5FiT3/R8/flxJSUnq2rWr1qxZ4ymPiIjQgAED9Mknn8g0TUk5o19z5szRwIEDPSv9ffbZZ4qIiNAll1zi9VnFxMQoNDQ0z2dV2M8fgDPH6pXeWAWubDEFDjjLhIeHS8pJGIpiz549stlsatSokVd5VFSUIiMjtWfPHq/y+vXrF9jWf89t27ZNkjzPueQnKSlJlSpVyvfchg0b9Nhjj+mnn37K80U1KSmpwDYL8u+95DdtqFmzZlq4cKFSU1O9lqE+55xzvOr9G+vx48c973Vx+mnatKl+++23Ysee26li2rZtm0zTVOPGjfO9/nRWxfvvZ1zcew0MDFS1atXyxJ/7eZc77rhDn376qfr166datWqpd+/eGjRokPr27VviuEvyORbkm2++0VNPPaW1a9d6PSdnGN5fPIYOHao5c+bo119/Vbdu3fTjjz8qPj5eN910k6fOtm3blJSUpOrVq+fb17+LZPyrsJ8/AEDpIAECzjLh4eGqWbOm1q9fX6zr/vvlrSCFrTj133P/ju48//zzatu2bb7XFPS8TmJiorp3767w8HA9+eSTatiwoQIDA7VmzRo9/PDDhY4clSa73Z5v+b+/1bfCqWJyu90yDEPff/99vnVzv+cFfe4ulyvfa093xbGCYs+tevXqWrt2rRYuXKjvv/9e33//vWbMmKGhQ4dq1qxZpdpvcT/HX3/9Vf3791e3bt30+uuvKzo6Wv7+/poxY4Y+/vhjr7p9+vRRjRo19OGHH6pbt2768MMPFRUV5bXcudvtVvXq1fXRRx/l299/k0VWfAOAskcCBJyFLr/8cr399ttavny5OnXqVGjdunXryu12a9u2bWrWrJmnPD4+XomJiapbt26J4/j3gf7w8PBi73GzdOlSJSQkaO7cuerWrZunfNeuXXnqFjV5+/detmzZkufc5s2bVbVq1VLZhDR3Pz169PA6t2XLltN6T4uiYcOGMk1T9evX17nnnlto3UqVKikxMTFP+Z49e9SgQYNT9lVW9xoQEKArrrhCV1xxhdxut+644w699dZbevzxx/OMVp5JX3zxhQIDA7Vw4UI5HA5P+YwZM/LUtdvtuuGGGzRz5kxNmTJF8+bN06hRo7ySsYYNG+rHH39Uly5dSG6As4hRjpb/R+nj0wXOQg899JBCQkJ0yy23KD4+Ps/5HTt2eJYUvvTSSyVJU6dO9arz0ksvSZJnVauSiImJUcOGDfXCCy8oJSUlz/kjR44UeO2/XxJz/4Y+MzNTr7/+ep66ISEhRZoSFx0drbZt22rWrFleX/rXr1+vH374wfNenK727durevXqevPNN72mSH3//ffatGnTab2nRXHVVVfJbrdr0qRJeUY4TNNUQkKC53XDhg21YsUKZWZmesq++eabPMtlF6Qs7jV3fJJks9nUunVrScqzNPuZZrfbZRiG17Ldu3fv1rx58/Ktf9NNN+n48eO67bbblJKSoiFDhnidHzRokFwulyZPnpzn2uzs7HyTUwBA2WIECDgLNWzYUB9//LGuu+46NWvWTEOHDlXLli2VmZmpZcuW6bPPPvPs/dKmTRsNGzZMb7/9tmfa2apVqzRr1iwNHDhQF198cYnjsNlsevfdd9WvXz+1aNFCI0aMUK1atXTgwAEtWbJE4eHh+vrrr/O9tnPnzqpUqZKGDRume+65R4Zh6H//+1++U5ZiYmI0Z84cjR07Vueff75CQ0N1xRVX5Nvu888/r379+qlTp066+eabPctgR0REeO0fczr8/f01ZcoUjRgxQt27d9f111/vWRq6Xr16GjNmTKn0U5CGDRvqqaee0vjx47V7924NHDhQYWFh2rVrl7788kvdeuuteuCBByTlLIH++eefq2/fvho0aJB27NihDz/8sEjLcUtlc6+33HKLjh07ph49eqh27dras2ePXn31VbVt29ZrlNIKl112mV566SX17dtXN9xwgw4fPqzXXntNjRo10rp16/LUP++889SyZUt99tlnatasmdq1a+d1vnv37rrtttsUGxurtWvXqnfv3vL399e2bdv02Wefadq0abrmmmvO1O0BAEQCBJy1+vfvr3Xr1un555/XV199pTfeeEMOh0OtW7fWiy++qFGjRnnqvvvuu2rQoIFmzpypL7/8UlFRURo/frwmTJhw2nFcdNFFWr58uSZPnqzp06crJSVFUVFR6tixo2677bYCr6tSpYq++eYb3X///XrsscdUqVIlDRkyRD179syzCtYdd9yhtWvXasaMGXr55ZdVt27dAhOgXr16acGCBZowYYKeeOIJ+fv7q3v37poyZUqpPmA+fPhwBQcH69lnn9XDDz+skJAQXXnllZoyZUqJ9+ApjnHjxuncc8/Vyy+/rEmTJkmS6tSpo969e6t///6een369NGLL76ol156Sffdd5/at2/ved+LqrTvdciQIXr77bf1+uuvKzExUVFRUbruuus0ceJE2SyedtKjRw+99957evbZZ3Xfffepfv36mjJlinbv3p1vAiTlLIbw0EMPeS1+kNubb76pmJgYvfXWW3rkkUfk5+enevXqaciQIerSpUtZ3g6AEmK1tYrNMK180hcAgLPctGnTNGbMGO3evTvPanQA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Y4tV/7XXXtPzzz+vuLg4tWnTRq+++qo6dOiQb92ZM2dqxIgRXmUOh0MZGRme16ZpasKECXrnnXeUmJioLl266I033lDjxo2LfzMWsfwZIAAAAKA8MQxbuT2KY86cORo7dqwmTJigNWvWqE2bNurTp48OHz5c4DXh4eE6dOiQ59izZ4/X+eeee06vvPKK3nzzTa1cuVIhISHq06ePV5JU3pEAAQAAABXQSy+9pFGjRmnEiBFq3ry53nzzTQUHB+v9998v8BrDMBQVFeU5atSo4TlnmqamTp2qxx57TAMGDFDr1q31wQcf6ODBg5o3b94ZuKPSQQIEAAAAnCWcTqeSk5O9DqfTmadeZmamVq9erV69ennKbDabevXqpeXLlxfYfkpKiurWras6depowIAB2rBhg+fcrl27FBcX59VmRESEOnbsWGib5Q0JEAAAAJCbzSi3R2xsrCIiIryO2Ni8zwUdPXpULpfLawRHkmrUqKG4uLh8b7tJkyZ6//339dVXX+nDDz+U2+1W586dtX//fknyXFecNssjS1eBAwAAAFB048eP19ixY73KSmsPzE6dOqlTp06e1507d1azZs301ltvafLk/FcKPhuRAAEAAABnCYfDUaSEp2rVqrLb7YqPj/cqj4+PV1RUVJH68vf313nnnaft27dLkue6+Ph4r7064+Pj1bZt2yLegfWYAgcAAADkYths5fYoqoCAAMXExGjx4sWeMrfbrcWLF3uN8hTG5XLpn3/+8SQ79evXV1RUlFebycnJWrlyZZHbLA8YAQIAAAAqoLFjx2rYsGFq3769OnTooKlTpyo1NdWz18/QoUNVq1YtzzNETz75pC644AI1atRIiYmJev7557Vnzx7dcsstknJWiLvvvvv01FNPqXHjxqpfv74ef/xx1axZUwMHDrTqNouNBAgAAACogK677jodOXJETzzxhOLi4tS2bVstWLDAs4jB3r17Zcs1qnT8+HGNGjVKcXFxqlSpkmJiYrRs2TI1b97cU+ehhx5Samqqbr31ViUmJurCCy/UggULFBgYeMbvr6QM0zRNq4Mobdt37LKs75r7V1rW97HPvrCs79rTP7OsbwAAgNKU9v4Eq0MoUPDISVaHcNarkCNAy/bXt6zvzrUt61qxNXpa1nf3ny3rWkO7W9c3AAAAzi4sggAAAADAZ1TIESAAAACgxIqx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yAIcP37c60hJSdGWLVt04YUX6pNPPilxIPk5duyYZs2aVaptAgAAACj/Lr/8ct16661auXKlTNOUaZpasWKFRo8erf79+5e43WKPAOWncePGevbZZzVkyBBt3ry5yNfNnz+/0PM7d+483dAAAACAYmEVuPLhlVde0bBhw9SpUyfPJqjZ2dnq37+/pk2bVuJ2SyUBkiQ/Pz8dPHiwWNcMHDjQs4R2Qf5dGAEAAACA74iMjNRXX32l7du3e5bBbtasmRo1anRa7RY7AfrvqI1pmjp06JCmT59e7IeRoqOj9frrr2vAgAH5nl+7dq1iYmKKGyIAAACACqJRo0Zq1KiRXC6X/vnnHx0/flyVKlUqcXvFToAGDhzo9dowDFWrVk09evTQiy++WKy2YmJitHr16gIToFONDgEAAACljSlw5cN9992nVq1a6eabb5bL5VL37t21bNkyBQcH65tvvtFFF11UonaLnQC53e4SdZSfBx98UKmpqQWeb9SokZYsWVJq/QEAAAA4O3z++ecaMmSIJOnrr7/Wzp07tXnzZv3vf//To48+qt9//71E7RZ7Fbh/ZWZmasuWLcrOzi5pE+ratav69u1b4PmQkBB1727dBpsAAAAArHH06FFFRUVJkr777jsNGjRI5557rkaOHKl//vmnxO0WOwFKS0vTyJEjFRwcrBYtWmjv3r2SpLvvvlvPPvtsiQMBAAAAygNTRrk9fEmNGjW0ceNGuVwuLViwQJdccomknHzEbreXuN1iT4EbP3681q1bp6VLl3qN3vTq1UsTJ07UuHHjShxMaVl3rJ5lfX80p8SDaqft+fuetqzvHQqzrO8RzbIs67tB2q+W9Z2d6bCs76yI6pb17be08OXzy9L/mhXvOcfS1H7rMcv6jjm38qkrAQBQykaMGKFBgwYpOjpahmGoV69ekqSVK1eqadOmJW632AnQvHnzNGfOHF1wwQVeS1S3aNFCO3bsKHEgAAAAAPCviRMnqlWrVtq7d6+uvfZaORw5v/y12+2nNehS7AToyJEjql49729/U1NT2bMHAAAAZz3T5Dut1bKystS3b1+9+eabuvrqq73ODRs27LTaLvZ8rfbt2+vbb7/1vP436Xn33XfVqVOn0woGAAAAAPz9/bVu3boyabvYI0DPPPOM+vXrp40bNyo7O1vTpk3Txo0btWzZMv38889lESMA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VVqlXgabiIiIiIioIsk6AmQrLw73kS12rIObbLHrChdki304s6VssTOC/iNb7Kb6m7LFNiSkyBb7+PVA2WI/lb1StthZNZvLFtvlQoxssZODusoW28HZSbbY6Qr5fpeI/f9Pttj7LtSULXbbOumyxc44vku22G6tH5ctNlF1VCUTICIiIiKiB8VFuKo2ToEjIiIiIqJqgwkQERERERFVG5wCR0RERERUjChyClxVxhEgIiIiIiKqNpgAERERERFRtcEpcERERERExXARuKqNI0BERERERFRtMAEiIiIiIqJqg1PgiKoAx07h0If1hcLZFaakq8jetBKm+Iul1he0jnDq/Qy0zdtB4aiH+eYNZG1ejYIzfwEAvKf/F0oP77uOM/y5HdkbV9isH0RERJWBxFXgqjQmQESPOG2rDnB+ahiy/rcMBVfPQx/aC+4vTsWND6IgGrLuPkCphMfYaTDnZCFj1acQM29C4e4FKS/XUuXGgpkQFLcHiB18A+AxdjqMfx22R5eIiIiIbIYJENEjzrFrb+Qe2o28o/sAAFkblkHTJBi69mEw7P7prvq6dmEQHPXI+Gw2IJoBAOabN6zqSIZsFL/2pen+FApvpKDgYqzN+kFERERkD0yAiB5lSiVUNevCsKtYoiNJKIg7BVVgUImHaJu2genKebgMeB6aZiEQDVnIP36gKFkqadkbpRK6Np1h2PerjTpBRERUuYhcBq5Kk30RhC1btmDmzJn4448/AAC7du1Cnz590KtXLyxZsqTc441GI7Kysqy2ggKjrZtNVCko9M4QlEqIOZlW5eacTCicXUs8RunpA22LdoBCgZtLP4Rhxybou/aGPjyyxPraZm0haB0tI0xEREREjzJZE6Avv/wSAwYMwC+//II+ffpg9erViIyMRM2aNVGnTh1MmjQJn376aZnnmDt3LlxdXa22dV9/aKceED2CBAFiThayfliKwsTLyP/rEHJ2bYbjYz1KrK5rHwbj2b8gZmXYt51ERERENiDrFLgFCxbgiy++wJgxY7B792706dMH8+fPxyuvvAIAeOyxx/DBBx9g4sSJpZ5j+vTpmDx5slXZH3EctqTqQTRkQzKboXCyHu1ROrlCzM4s+ZisDEii2Wq6W2FKIpQuboBSCZjNlnKFmyfUDZojY+Untmg+ERFRpcRV4Ko2WUeALl26hIiICABA9+7d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iIiIqNrgPUBERERERMVwglTVxhEgIiIiIiKqNpgAERERERFRtcEpcERERERExdj7WXFkXxwBIiIiIiKiaoMJEBERERERVRucAkdEREREVIwkchW4qowjQEREZGXPnj0QBAEZGRlyN4WIiKjCMQEiompn5MiREAQB77//vlX5pk2bIAiCTK2qGHXq1MEnn3widzOIiIgqLSZARFQtabVazJs3Dzdv3rR7bJPJZPeYRER07yRJrLQbPTwmQERULYWHh8PX1xdz584ts97+/fsRGhoKnU6HWrVqYcKECTAYDJb9giBg06ZNVse4ublh+fLlAIDLly9DEASsX78eYWFh0Gq1WLNmDURRxH/+8x8EBARAo9EgODgYW7dutZzj1nEbNmxA9+7d4ejoiFatWuHAgQP31U9BEPD1119jwIABcHR0RIMGDbB582arOr/88gsaNmwInU6H7t274/Lly/f1c1i5ciWcnJwQFxdnqf/KK6+gcePGyM3Nva/2EhER2RoTICKqlpRKJebMmYOFCxciISGhxDoXLlxAr169MGjQIJw4cQLr16/H/v37MX78+PuON23aNEycOBGxsbGIiIjAp59+ivnz5+Ojjz7CiRMnEBERgX79+lklEQDw73//G6+//jpiYmLQsGFDDB06FIWFhfcVe/bs2Rg8eDBOnDiBPn36YNiwYUhPTwcAxMfHY+DAgXjqqacQExODF198EdOmTbuvn8OIESMs5y0sLMTPP/+Mr7/+GmvWrIGjo+N9/6yIiIhsiQkQEVVbAwYMQHBwMGbNmlXi/rlz52LYsGGYNGkSGjRogE6dOmHBggVYuXIl8vPz7yvWpEmTMHDgQNStWxd+fn746KOPMHXqVAwZMgSNGjXCvHnzEBwcfNf9O6+//jr69u2Lhg0bYvbs2bhy5QrOnz9/X7FHjhyJoUOHIigoCHPmzEFOTg4OHz4MAFi0aBHq16+P+fPno1GjRhg2bBhGjhx53z+HL7/8EklJSZgwYQJGjx6Nt99+GyEhIffVTiKiykISpUq70cNjAkRE1dq8efOwYsUKxMbG3rXvr7/+wvLly+Hk5GTZIiIiIIoiLl26dF9x2rZta/l3VlYWrl27hs6dO1vV6dy5813taNmypeXffn5+AIDU1NT7il38HHq9Hi4uLpZzxMbGokOHDlb1O3bsaPX6Xn4O7u7uWLp0qSWhunMUiYiIqLLgc4CIqFrr2rUrIiIiMH369LtGPnJycvB///d/mDBhwl3H1a5dG0DRPTaSZH1FrqRFDvR6/QO1T6VSWf59a4U6Uby/m2CLn+PWee7nHPfycwCAffv2QalUIikpCQaDAc7OzvfVTiIiIntgAkRE1d7777+P4OBgNGrUyKq8TZs2OH36NIKCgko91tvbG0lJSZbXcXFx5d747+LiAn9/f/zxxx8ICwuzlP/xxx9o3779A/biwTRp0uSuRREOHjxo9fpefg5//vkn5s2bh59++glTp07F+PHjsWLFCpu0mYjI1jjVrGrjFDgiqvZatGiBYcOGYcGCBVblU6dOxZ9//onx48cjJiYGcXFx+PHHH60WQXj88cfx2Wef4fjx4zh69Cheeumlu0ZcShIVFYV58+Zh/fr1OHv2LKZNm4aYmBhMnDixwvtXlpdeeglxcXGIiorC2bNnsXbtWssKdreU93PIzs7G8OHDMWHCBPTu3Rtr1qzB+vXr8cMPP9i1L0RERPeCCRAREYD//Oc/d00La9myJfbu3Ytz584hNDQUrVu3xsyZM+Hv72+pM3/+fNSqVQuhoaH417/+hddff/2eVj6bMGECJk+ejClTpqBFixbYunUrNm/ejAYNGlR438pSu3Zt/O9//8OmTZvQqlUrLF68GHPmzLGqU97PYeLEidDr9ZbjWrRogTlz5uD//u//kJiYaNf+EBERlUeQ7py8TkRERERUjUU8HyN3E0q1bUWw3E145HEEiIiIiIiIqg0mQEREREREVG1wFTgiIiIiomK4ClzVxhEgIiIiIiKqNpgAERERERFRtcEpcERERERExUh3PBaBqhaOABERERERUbXBBIiIiIiIiKoNToEjIiIiIiqGq8BVbRwBIiIiIiKiaoMJEBERERERVRucAkdEREREVIwkcRW4qowjQEREREREVG0wASIiIiIiomqDU+CIiIiIiIoRuQpclcYRICIiIiIiqjaYABERERERUbXBKXBERERERMVIIleBq8o4AkRERERERNUGEyAiIiIiIqo2OAWOiIiIiKgYiavAVWkcASIiIiIiomqDCRAREREREVUbnAJHRERERFSMJHEVuKqMI0BERERERFRtMAEiIiIiIqJqg1PgiIiIiIiK4SpwVRtHgIiIiIiIqNpgAkRERERERNUGEyAiIiIiomIkUay0m62899576NSpExwdHeHm5nZvPydJwsyZM+Hn5wedTofw8HDExcVZ1UlPT8ewYcPg4uICNzc3jB49Gjk5OTbowb1jAkREREREVM0VFBTgmWeewcsvv3zPx3zwwQdYsGABFi9ejEOHDkGv1yMiIgL5+fmWOsOGDcOpU6ewfft2bNmyBfv27cPYsWNt0YV7JkiSxLu8iIiIiIj+0eWpvXI3oVT7fwqz6fmXL1+OSZMmISMjo8x6kiTB398fU6ZMweuvvw4AyMzMRI0aNbB8+XIMGTIEsbGxaNq0KY4cOYK2bdsCALZu3Yo+ffogISEB/v7+Nu1LaTgCRERERET0iDAajcjKyrLajEaj3dtx6dIlJCcnIzw83FLm6uqKDh064MCBAwCAAwcOwM3NzZL8AEB4eDgUCgUOHTpk9zbfwmWwiYiIiIiKsfUoy8N4++23MXv2bKuyWbNm4e2337ZrO5KTkwEANWrUsCqvUaOGZV9ycjJ8fHys9js4OMDDw8NSRw4cASIiIiIiekRMnz4dmZmZVtv06dNLrDtt2jQIglDmdubMGTv3QH4cASIiIiIiekRoNBpoNJp7qjtlyhSMHDmyzDr16tV7oHb4+voCAFJSUuDn52cpT0lJQXBwsKVOamqq1XGFhYVIT0+3HC8HJkBERERERFWQt7c3vL29bXLuunXrwtfXFzt37rQkPFlZWTh06JBlJbmOHTsiIyMD0dHRCAkJAQDs2rULoiiiQ4cONmnXveAUOCIiIiKiau7q1auIiYnB1atXYTabERMTg5iYGKtn9jRu3BgbN24EAAiCgEmTJuHdd9/F5s2bcfLkSYwYMQL+/v6IjIwEADRp0gS9evXCmDFjcPjwYfzxxx8YP348hgwZItsKcABHgIiIiIiIqr2ZM2dixYoVltetW7cGAOzevRvdunUDAJw9exaZmZmWOm+88QYMBgPGjh2LjIwMdOnSBVu3boVWq7XUWbNmDcaPH48ePXpAoVBg0KBBWLBggX06VQo+B4iIiIiIiKoNToEjIiIiIqJqgwkQERERERFVG0yAiIiIiIio2mACRERERERE1QYTICIiIiIiqjaYABERERERUbXBBIiIiIiIiKoNJkBERERERFRtMAEiIiIiIqJqgwkQERERERFVG0yAiIiIiIio2vh/W/UHrhAhuiMAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The Neurons tensor([[15, 13],\n", " [11, 1]]) have the highest correlation with tensor([[-0.8300],\n", " [ 0.8300]])\n" ] } ], "source": [ "corr_matrix, max_corr, ind_neurons = hl_size_analysis_Sequential(\n", " ffnn,\n", " X_train.view(X_train.shape[0] * X_train.shape[1], -1),\n", " min_absolute_corr=0.5,\n", " print_values=False,\n", " name_layer=\"hidden\",\n", ")\n", "\n", "print(f'The Neurons {ind_neurons} have the highest correlation with {max_corr}')" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Result: Highest Pearson correlation coefficient for a neuron is ~0.83. The size of the hidden layer is already a good guess, but maybe the size could be decreased a little bit." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Ensemble of Three-Layer feedforward neural network\n", "Training the same model multiple times will give strongly differing predictions due to over-parametrization and the random initialization of the model. It is unclear which of these models gives the best prediction, because they all perform equally well on the training set and therefore are equally right.\n", "One approach to handle this issue is building an [ensemble](../api/ensemble.rst) of these models. Several Feedforward Neural Networks are trained independently. As a final prediction, their output is combined by calculating the median or mean of the individual model outputs. In this way, the error decreases and the model predicts more reliable.\n", "\n", "\n", "\n", "As with the single model we first initialize the ensemble, then train it and then use it for forecasting. Lastly, we evaluate the trained ensemble.\n", "\n", "### Initialization\n", "First, we initialize a three-layer feedforward neural network as the base model. Then the number of models in the ensemble (**n_models**) is set. It is recommended to use more than 25 models to get trustworthy results.\n" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "base_model = feedforward.FFNN(\n", " input_dim=input_dim, hidden_dim=hidden_dim, output_dim=output_dim\n", ")" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\bkn\\Projekte\\Prosper\\prosper\\prosper_nn\\models\\ensemble\\ensemble.py:37: UserWarning: Bias could not be initialized with wished init function.Instead torch.nn.init.normal_ is chosen.\n", " ----------\n" ] } ], "source": [ "n_models = 5\n", "ensemble_model = ensemble.Ensemble(model=base_model, n_models=n_models)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Reset the optimizer." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "optimizer = optim.Adam(ensemble_model.parameters(), lr=0.001)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Training Loop\n", "The training loop is similar to that of the single feedforward model. The difference lies in the output of the ensemble model and the loss calculation. The ensemble output is composed of the individual model outputs in the first n_models entries, and the combined output in the last entry. So, the output of the ensemble has to be split in the submodel predictions `y_preds` and the mean prediction `mean`. Add the loss of all predictions in y_preds and use this value for backpropagation. The mean prediction is used for the final prediction." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "losses = [0] * n_epochs\n", "\n", "# Training\n", "for epoch in range(n_epochs):\n", " for X_batch, y_batch in zip(X_train, y_train):\n", " ensemble_model.zero_grad()\n", " y_preds, mean = torch.split(ensemble_model(X_batch), n_models)\n", " loss = sum([loss_function(y_pred, y_batch) for y_pred in y_preds]) / n_models\n", " loss.backward()\n", " optimizer.step()\n", " loss_mean = loss_function(mean.squeeze(0), y_batch)\n", " losses[epoch] += loss_mean.detach()" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLYUlEQVR4nO3deXxU1f3/8fdMlsk6E7IHSAKEfRURMYJoJQporSgWtVhxqVZA6t5K6/61pdWqrbagdQG1Ij+x4oYboKBikEX2JSwCCZAFAtmTyTL390eS0TEJSxJyZ5LX8/G4j8zce+fmc3IDeT/OPedei2EYhgAAAHyQ1ewCAAAAmosgAwAAfBZBBgAA+CyCDAAA8FkEGQAA4LMIMgAAwGcRZAAAgM8iyAAAAJ9FkAEAAD6LIAOgWW644QZ169bNZ45rtuXLl8tisWj58uWn/Nl9+/bJYrFo3rx5rV4X4OsIMoBJ5s2bJ4vForVr15pdCurMnj2bsAD4GH+zCwCAH3vxxRflcrlM+d6zZ89WdHS0brjhhlY/9ujRo1VeXq7AwMBT/mxycrLKy8sVEBDQ6nUBvo4eGQBeobS0VJIUEBAgm81mcjUnVl/vybJarQoKCpLVeur/7VosFgUFBcnPz++UPwu0dwQZwMutX79e48ePl91uV1hYmMaMGaNVq1Z57FNVVaVHH31UvXr1UlBQkKKiojRq1CgtWbLEvU9OTo5uvPFGde3aVTabTQkJCbr88su1b9++E9bw7rvvauDAgQoKCtLAgQO1aNGiBvs0NQaksfEdN9xwg8LCwrRnzx5dcsklCg8P1+TJk93bfjxGpv7zf//73/Wf//xHKSkpstlsGj58uNasWdOgjoULF6p///4etZ7MuJtu3bpp69atWrFihSwWiywWiy644AJJP1wGXLFihaZNm6bY2Fh17dpVkrR//35NmzZNffr0UXBwsKKiovTLX/6ywc+1sZ/PBRdcoIEDB2rbtm362c9+ppCQEHXp0kVPPPHESf8MDx48qAkTJigsLEwxMTG69957VVNT4/H5/Px8/frXv5bdbldERISmTJmijRs3Mu4G7QKXlgAvtnXrVp133nmy2+36/e9/r4CAAL3wwgu64IILtGLFCo0YMUKS9Mgjj2jWrFn6zW9+o7PPPltFRUVau3atvvvuO1100UWSpIkTJ2rr1q2aMWOGunXrpry8PC1ZskSZmZnH/SP/2WefaeLEierfv79mzZql/Px8dyBqierqao0dO1ajRo3S3//+d4WEhBx3//nz56u4uFi//e1vZbFY9MQTT+jKK6/U999/777ksnjxYl199dUaNGiQZs2apWPHjunmm29Wly5dTljPP/7xD82YMUNhYWH605/+JEmKi4vz2GfatGmKiYnRQw895O6RWbNmjb755htdc8016tq1q/bt26c5c+boggsu0LZt207YrmPHjmncuHG68sorNWnSJL399tv6wx/+oEGDBmn8+PHH/WxNTY3Gjh2rESNG6O9//7uWLl2qp556SikpKZo6daokyeVy6bLLLtPq1as1depU9e3bV++9956mTJlywp8J4BMMAKaYO3euIclYs2ZNk/tMmDDBCAwMNPbs2eNed+jQISM8PNwYPXq0e92QIUOMSy+9tMnjHDt2zJBkPPnkk6dc5xlnnGEkJCQYBQUF7nWfffaZIclITk52r/viiy8MScYXX3zh8fm9e/cakoy5c+e6102ZMsWQZNx///0Nvt+UKVM8jlv/+aioKOPo0aPu9e+9954hyfjggw/c6wYNGmR07drVKC4udq9bvnx5g1qbMmDAAOP8889vsL7+XI0aNcqorq722FZWVtZg//T0dEOS8dprr7nXNfbzOf/88xvs53Q6jfj4eGPixIkNfgaN/Qwfe+wxj+89dOhQY9iwYe73//vf/wxJxj/+8Q/3upqaGuPCCy9scEzAF3FpCfBSNTU1+uyzzzRhwgT16NHDvT4hIUG/+tWv9PXXX6uoqEiSFBERoa1bt2rXrl2NHis4OFiBgYFavny5jh07dtI1ZGdna8OGDZoyZYocDod7/UUXXaT+/fs3s2U/qO81OBlXX321OnXq5H5/3nnnSZK+//57SdKhQ4e0efNmXX/99QoLC3Pvd/7552vQoEEtrlWSbrnllgbjVIKDg92vq6qqlJ+fr549eyoiIkLffffdCY8ZFham6667zv0+MDBQZ599trtdJ3Lbbbd5vD/vvPM8PvvJJ58oICBAt9xyi3ud1WrV9OnTT+r4gLcjyABe6vDhwyorK1OfPn0abOvXr59cLpeysrIkSY899pgKCgrUu3dvDRo0SPfdd582bdrk3t9ms+lvf/ubPv74Y8XFxWn06NF64oknlJOTc9wa9u/fL0nq1atXg22N1XUq/P39T+nyVFJSksf7+lBTH8zqa+3Zs2eDzza2rjm6d+/eYF15ebkeeughJSYmymazKTo6WjExMSooKFBhYeEJj9m1a1dZLBaPdZ06dTqpwBkUFKSYmJjjfnb//v1KSEhocImrtX4mgNkIMkA7MHr0aO3Zs0evvPKKBg4cqJdeeklnnnmmXnrpJfc+d955p3bu3KlZs2YpKChIDz74oPr166f169e3Sg0//WNc76cDT+vZbLZTmsHT1IwdwzBO+hgt9ePel3ozZszQn//8Z02aNElvvfWWPvvsMy1ZskRRUVEnNY28Je1iFhNAkAG8VkxMjEJCQpSRkdFg244dO2S1WpWYmOheFxkZqRtvvFFvvvmmsrKyNHjwYD3yyCMen0tJSdE999yjzz77TFu2bFFlZaWeeuqpJmtITk6WpEYvWf20rvoekoKCAo/19T0lp1t9rbt3726wrbF1jWkqjB3P22+/rSlTpuipp57SVVddpYsuukijRo1q8HMwS3JysrKzs1VWVuax/mR/JoC3I8gAXsrPz08XX3yx3nvvPY+pvLm5uZo/f75GjRolu90uqXZ67Y+FhYWpZ8+ecjqdkqSysjJVVFR47JOSkqLw8HD3Po1JSEjQGWecoVdffdXjMsmSJUu0bds2j32Tk5Pl5+enL7/80mP97NmzT77RLdC5c2cNHDhQr732mkpKStzrV6xYoc2bN5/UMUJDQ085gPj5+TXoPXnuueea7Ilqa2PHjlVVVZVefPFF9zqXy6V///vfJlYFtB6mXwMme+WVV/TJJ580WH/HHXfo8ccf15IlSzRq1ChNmzZN/v7+euGFF+R0Oj3uNdK/f39dcMEFGjZsmCIjI7V27Vq9/fbbuv322yVJO3fu1JgxYzRp0iT1799f/v7+WrRokXJzc3XNNdcct75Zs2bp0ksv1ahRo3TTTTfp6NGjeu655zRgwACPwOBwOPTLX/5Szz33nCwWi1JSUvThhx8qLy+vlX5SJ/aXv/xFl19+uUaOHKkbb7xRx44d07/+9S8NHDjQo9amDBs2THPmzNHjjz+unj17KjY2VhdeeOFxP/Pzn/9cr7/+uhwOh/r376/09HQtXbpUUVFRrdWsFpkwYYLOPvts3XPPPdq9e7f69u2r999/X0ePHpXUvF4owJsQZACTzZkzp9H1N9xwgwYMGKCvvvpKM2fO1KxZs+RyuTRixAj997//dd9DRpJ+97vf6f3339dnn30mp9Op5ORkPf7447rvvvskSYmJibr22mu1bNkyvf766/L391ffvn311ltvaeLEicetb9y4cVq4cKEeeOABzZw5UykpKZo7d67ee++9Bje/e+6551RVVaXnn39eNptNkyZN0pNPPqmBAwe27Id0ki677DK9+eabeuSRR3T//ferV69emjdvnl599VVt3br1hJ9/6KGHtH//fj3xxBMqLi7W+eeff8Ig889//lN+fn564403VFFRoZEjR2rp0qUaO3ZsazWrRfz8/LR48WLdcccdevXVV2W1WnXFFVfo4Ycf1siRIxUUFGR2iUCLWIy2HCkHACY444wzFBMT43Gn447u3Xff1RVXXKGvv/5aI0eONLscoNkYIwOg3aiqqlJ1dbXHuuXLl2vjxo3uxw10ROXl5R7va2pq9Nxzz8lut+vMM880qSqgdXBpCUC7cfDgQaWlpem6665T586dtWPHDj3//POKj49vcOO4jmTGjBkqLy9XamqqnE6n3nnnHX3zzTf6y1/+0uiUcsCXcGkJQLtRWFioW2+9VStXrtThw4cVGhqqMWPG6K9//atSUlLMLs808+fP11NPPaXdu3eroqJCPXv21NSpU92DwQFfRpABAAA+izEyAADAZ5kaZLp16yaLxdJgqX+YWUVFhaZPn66oqCiFhYVp4sSJys3NNbNkAADgRUy9tHT48GGPu19u2bJFF110kb744gtdcMEFmjp1qhYvXqx58+bJ4XDo9ttvl9Vq1cqVK0/6e7hcLh06dEjh4eHc+AkAAB9hGIaKi4vVuXPn4z+XzfAid9xxh5GSkmK4XC6joKDACAgIMBYuXOjevn37dkOSkZ6eftLHzMrKMiSxsLCwsLCw+OCSlZV13L/zXjP9urKyUv/973919913y2KxaN26daqqqlJaWpp7n759+yopKUnp6ek655xzGj2O0+n0eHaMUdfhlJWV5X4uDQAA8G5FRUVKTExUeHj4cffzmiDz7rvvqqCgQDfccIMkKScnR4GBgYqIiPDYLy4uTjk5OU0eZ9asWXr00UcbrLfb7QQZAAB8zImGhXjNrKWXX35Z48ePV+fOnVt0nJkzZ6qwsNC9ZGVltVKFAADA23hFj8z+/fu1dOlSvfPOO+518fHxqqysVEFBgUevTG5uruLj45s8ls1mk81mO53lAgAAL+EVPTJz585VbGysLr30Uve6YcOGKSAgQMuWLXOvy8jIUGZmplJTU80oEwAAeBnTe2RcLpfmzp2rKVOmyN//h3IcDoduvvlm3X333YqMjJTdbteMGTOUmpra5EBfAADQsZgeZJYuXarMzEzddNNNDbY988wzslqtmjhxopxOp8aOHavZs2ebUCUAAPBG7f5ZS0VFRXI4HCosLGTWEgAAPuJk/357xRgZAACA5iDIAAAAn0WQAQAAPosgAwAAfBZBBgAA+CyCDAAA8Fmm30fGVxWUVarEWa3woAA5ggPMLgcAgA6JHplm+tsnGRr1ty/02jf7zC4FAIAOiyDTTNa6p4rXtO/7CQIA4NUIMs3kV5dkXOQYAABMQ5BpJqulLsiQZAAAMA1BppncQYZLSwAAmIYg00yMkQEAwHwEmWay1iUZcgwAAOYhyDQTY2QAADAfQaaZuLQEAID5CDLN5MelJQAATEeQaSZL3aWlGi4tAQBgGoJMM/kx/RoAANMRZJqpfowMQQYAAPMQZJqpfvq1y2VyIQAAdGAEmWaqn37NrCUAAMxDkGkmLi0BAGA+gkwzMf0aAADzEWSaienXAACYjyDTTH5cWgIAwHQEmWZyz1oiyAAAYBqCTDP98NBIkwsBAKADI8g0E9OvAQAwH0GmmeqnXxsEGQAATEOQaab6MTLMWgIAwDwEmWZyj5EhxwAAYBqCTDP51f3kmLUEAIB5CDLN9EOPDEEGAACzEGSaienXAACYjyDTTEy/BgDAfASZZqofI8P0awAAzEOQaSYeGgkAgPkIMs3E9GsAAMxHkGkmpl8DAGA+gkwzWZh+DQCA6QgyzeTnHiNjciEAAHRgBJlmqh8jw6wlAADMQ5BpJitjZAAAMB1BppmsTL8GAMB0BJlm+uHSksmFAADQgRFkmql++jWPKAAAwDwEmWZi+jUAAOYjyDSTH0+/BgDAdASZZrLSIwMAgOkIMs1UP/2aWUsAAJiHINNMPDQSAADzEWSayc/KnX0BADAbQaaZ6nIM068BADARQaaZ3NOvubYEAIBpCDLN5McYGQAATEeQaSamXwMAYD6CTDMx/RoAAPMRZJqJh0YCAGA+gkwz1U+/ZtYSAADmMT3IHDx4UNddd52ioqIUHBysQYMGae3ate7thmHooYceUkJCgoKDg5WWlqZdu3aZWHGtug4ZxsgAAGAiU4PMsWPHNHLkSAUEBOjjjz/Wtm3b9NRTT6lTp07ufZ544gk9++yzev755/Xtt98qNDRUY8eOVUVFhYmV/zBryTC4KR4AAGbxN/Ob/+1vf1NiYqLmzp3rXte9e3f3a8Mw9I9//EMPPPCALr/8cknSa6+9pri4OL377ru65ppr2rzmevVjZKTaKdh+luPsDAAATgtTe2Tef/99nXXWWfrlL3+p2NhYDR06VC+++KJ7+969e5WTk6O0tDT3OofDoREjRig9Pb3RYzqdThUVFXksp4NnkKFHBgAAM5gaZL7//nvNmTNHvXr10qeffqqpU6fqd7/7nV599VVJUk5OjiQpLi7O43NxcXHubT81a9YsORwO95KYmHhaarf+6CfHFGwAAMxhapBxuVw688wz9Ze//EVDhw7VrbfeqltuuUXPP/98s485c+ZMFRYWupesrKxWrPgHP+6RoUMGAABzmBpkEhIS1L9/f491/fr1U2ZmpiQpPj5ekpSbm+uxT25urnvbT9lsNtntdo/ldKiffi0xBRsAALOYGmRGjhypjIwMj3U7d+5UcnKypNqBv/Hx8Vq2bJl7e1FRkb799lulpqa2aa0/9aMOGcbIAABgElNnLd11110699xz9Ze//EWTJk3S6tWr9Z///Ef/+c9/JNU+YfrOO+/U448/rl69eql79+568MEH1blzZ02YMMHM0t3TryWegA0AgFlMDTLDhw/XokWLNHPmTD322GPq3r27/vGPf2jy5MnufX7/+9+rtLRUt956qwoKCjRq1Ch98sknCgoKMrHyhtOvAQBA27MY7fxubkVFRXI4HCosLGzV8TKGYaj7zI8kSWv+lKaYcFurHRsAgI7uZP9+m/6IAl9lsVhUP963nWdBAAC8FkGmBeovL3FpCQAAcxBkWsDKE7ABADAVQaYF6i8tMWsJAABzEGRawM99aYkgAwCAGQgyLcAYGQAAzEWQaQH3GBmSDAAApiDItADTrwEAMBdBpgXqLy0xawkAAHMQZFqg/tKSy2VyIQAAdFAEmRZwT7+mRwYAAFMQZFqA6dcAAJiLINMCFqZfAwBgKoJMC/gx/RoAAFMRZFqA6dcAAJiLINMC3BAPAABzEWRagEcUAABgLoJMCzD9GgAAcxFkWsDK9GsAAExFkGkB9yMKuLYEAIApCDItUD/9mg4ZAADMQZBpAcbIAABgLoJMCzD9GgAAcxFkWoDp1wAAmIsg0wJcWgIAwFwEmRZg+jUAAOYiyLQA068BADAXQaYFmH4NAIC5CDItUNchQ48MAAAmIci0QH2PDGNkAAAwB0GmBerHyJBjAAAwB0GmBdyDfUkyAACYgiDTAtxHBgAAcxFkWsB9HxkG+wIAYAqCTAv8MNjX5EIAAOigCDItwPRrAADMRZBpAaZfAwBgLoJMC/CsJQAAzEWQaYEfgozJhQAA0EERZFqA6dcAAJiLINMC7jEydMkAAGAKgkwLWLi0BACAqQgyLWBl+jUAAKYiyLRA/aUlgzEyAACYgiDTAjw0EgAAcxFkWoDp1wAAmIsg0wLu6dckGQAATEGQaQEeUQAAgLkIMi1QP/26xmVyIQAAdFAEmRbgzr4AAJiLINMCTL8GAMBcBJkWsDD9GgAAUxFkWsCP6dcAAJiKINMCTL8GAMBcBJkWsDL9GgAAUxFkWsC/LshU1RBkAAAwA0GmBYIC/CRJldXcSAYAADMQZFrA5l/746uoqjG5EgAAOiaCTAvU98hUVBNkAAAwA0GmBep7ZJxVXFoCAMAMpgaZRx55RBaLxWPp27eve3tFRYWmT5+uqKgohYWFaeLEicrNzTWxYk/0yAAAYC7Te2QGDBig7Oxs9/L111+7t91111364IMPtHDhQq1YsUKHDh3SlVdeaWK1nuiRAQDAXP6mF+Dvr/j4+AbrCwsL9fLLL2v+/Pm68MILJUlz585Vv379tGrVKp1zzjltXWoDNnpkAAAwlek9Mrt27VLnzp3Vo0cPTZ48WZmZmZKkdevWqaqqSmlpae59+/btq6SkJKWnp5tVrgd6ZAAAMJepPTIjRozQvHnz1KdPH2VnZ+vRRx/Veeedpy1btignJ0eBgYGKiIjw+ExcXJxycnKaPKbT6ZTT6XS/LyoqOl3l/zBGhunXAACYwtQgM378ePfrwYMHa8SIEUpOTtZbb72l4ODgZh1z1qxZevTRR1urxONy98hwQzwAAExh+qWlH4uIiFDv3r21e/duxcfHq7KyUgUFBR775ObmNjqmpt7MmTNVWFjoXrKysk5bvfU9Ms5qlwyetwQAQJvzqiBTUlKiPXv2KCEhQcOGDVNAQICWLVvm3p6RkaHMzEylpqY2eQybzSa73e6xnC62gB9+fPTKAADQ9ky9tHTvvffqsssuU3Jysg4dOqSHH35Yfn5+uvbaa+VwOHTzzTfr7rvvVmRkpOx2u2bMmKHU1FSvmLEkSUH+fu7XziqXu4cGAAC0DVODzIEDB3TttdcqPz9fMTExGjVqlFatWqWYmBhJ0jPPPCOr1aqJEyfK6XRq7Nixmj17tpklewjws8hikQxDclbXSAowuyQAADoUi9HOB3cUFRXJ4XCosLDwtFxm6vfgJyqvqtGX9/1MSVEhrX58AAA6opP9++1VY2R8UVBA/cwlpmADANDWCDItZPOvv5cMg30BAGhrBJkWokcGAADzEGRaiB4ZAADMQ5BpIXpkAAAwD0GmheiRAQDAPASZFrLRIwMAgGkIMi1EjwwAAOYhyLQQY2QAADAPQaaF6JEBAMA8BJkWokcGAADzEGRaiB4ZAADMQ5BpIXpkAAAwD0GmheiRAQDAPASZFqJHBgAA8xBkWsjmXxdk6JEBAKDNEWRaKCig9tISPTIAALQ9gkwL1T+igDEyAAC0PYJMC4UG+kuSip3VJlcCAEDHQ5BpocjQQEnSsdJKkysBAKDjIci0UCeCDAAApiHItFBkSG2QKXZWq7KacTIAALQlgkwLOYIDZLXUvi4oo1cGAIC2dEpB5oknnlB5ebn7/cqVK+V0Ot3vi4uLNW3atNarzgdYrRZ1quuVyefyEgAAbeqUgszMmTNVXFzsfj9+/HgdPHjQ/b6srEwvvPBC61XnIxgnAwCAOU4pyBiGcdz3HVX9OJmjXFoCAKBNMUamFXQKDZBEjwwAAG2NINMKIkNtkqSjpVUmVwIAQMfif6ofeOmllxQWFiZJqq6u1rx58xQdHS1JHuNnOpLIuh6Zo6XOE+wJAABa0ykFmaSkJL344ovu9/Hx8Xr99dcb7NPRdHKPkaFHBgCAtnRKQWbfvn2nqQzfxmMKAAAwB2NkWkH99OujBBkAANrUKQWZ9PR0ffjhhx7rXnvtNXXv3l2xsbG69dZbPW6Q11FE1w32zSvueG0HAMBMpxRkHnvsMW3dutX9fvPmzbr55puVlpam+++/Xx988IFmzZrV6kV6u6TIEEnSkRKnyiqrTa4GAICO45SCzIYNGzRmzBj3+wULFmjEiBF68cUXdffdd+vZZ5/VW2+91epFejtHSIAiQmpnLu3PLzO5GgAAOo5TCjLHjh1TXFyc+/2KFSs0fvx49/vhw4crKyur9arzIclRoZKk/fmlJlcCAEDHcUpBJi4uTnv37pUkVVZW6rvvvtM555zj3l5cXKyAgIDWrdBHJNddXtpHjwwAAG3mlILMJZdcovvvv19fffWVZs6cqZCQEJ133nnu7Zs2bVJKSkqrF+kLukXVBhkuLQEA0HZO6T4y//d//6crr7xS559/vsLCwjRv3jwFBga6t7/yyiu6+OKLW71IX8ClJQAA2t4pBZno6Gh9+eWXKiwsVFhYmPz8/Dy2L1y4UOHh4a1aoK/oFk2PDAAAbe2UgsxNN910Uvu98sorzSrGl3Wr65E5VFiuUme1Qm2n/BgrAABwik7pr+28efOUnJysoUOHyjCM01WTT4oKsyneHqScogptOVioET2izC4JAIB275SCzNSpU/Xmm29q7969uvHGG3XdddcpMjLydNXmc4YkOpSztUIbDxQQZAAAaAOnNGvp3//+t7Kzs/X73/9eH3zwgRITEzVp0iR9+umn9NBIGpIYIUnaeKDQ3EIAAOggTvmhkTabTddee62WLFmibdu2acCAAZo2bZq6deumkpKS01Gjzzija4QkaWNWgal1AADQUbTo6ddWq1UWi0WGYaimpqa1avJZA7s6JEkHjpXrMA+QBADgtDvlION0OvXmm2/qoosuUu/evbV582b961//UmZmpsLCwk5HjT7DHhSgfgl2SdLXuw+bXA0AAO3fKQ32nTZtmhYsWKDExETddNNNevPNNxUdHX26avNJP+sTo+3ZRVqecVhXDO1qdjkAALRrFuMURularVYlJSVp6NChslgsTe73zjvvtEpxraGoqEgOh0OFhYWy2+2n/fut3ntUk15IV6eQAK194CL5WZv+OQEAgMad7N/vU+qRuf76648bYCCdmRSh8CB/HSur0vrMYzqrG9PTAQA4XU75hng4Pn8/q9L6xWnR+oN6b8MhggwAAKdRi2YtoXFXDO0iSfpg0yFVVrtMrgYAgPaLIHMajOwZrdhwmwrKqvT5jjyzywEAoN0iyJwGflaLrjyzdsbS66v2mVsMAADtGEHmNPl1arKsFmnl7nztzC02uxwAANolgsxp0iUiWGMHxEuSnl+xx+RqAABonwgyp9HUC1IkSe+uP6jdeR37OVQAAJwOBJnTaHDXCF3UP04uQ/rH0p1mlwMAQLtDkDnN7r6otyTpw03Z2pFTZHI1AAC0LwSZ06xfgl2XDk6QJP390wyTqwEAoH0hyLSBu9J6y99q0dLteVqxk6diAwDQWrwmyPz1r3+VxWLRnXfe6V5XUVGh6dOnKyoqSmFhYZo4caJyc3PNK7KZesaGacq53SRJj76/lbv9AgDQSrwiyKxZs0YvvPCCBg8e7LH+rrvu0gcffKCFCxdqxYoVOnTokK688kqTqmyZO9J6KTrMpu+PlOqVlXvNLgcAgHbB9CBTUlKiyZMn68UXX1SnTp3c6wsLC/Xyyy/r6aef1oUXXqhhw4Zp7ty5+uabb7Rq1SoTK24ee1CA7h/fV5L07LJdyjpaZnJFAAD4PtODzPTp03XppZcqLS3NY/26detUVVXlsb5v375KSkpSenp6k8dzOp0qKiryWLzFlUO76OxukSqrrNH972ySYRhmlwQAgE8zNcgsWLBA3333nWbNmtVgW05OjgIDAxUREeGxPi4uTjk5OU0ec9asWXI4HO4lMTGxtctuNqvVor9dNVhBAVat3J2vN1dnmV0SAAA+zbQgk5WVpTvuuENvvPGGgoKCWu24M2fOVGFhoXvJyvKusNA9OlT3XtxHkvSXj7brYEG5yRUBAOC7TAsy69atU15ens4880z5+/vL399fK1as0LPPPit/f3/FxcWpsrJSBQUFHp/Lzc1VfHx8k8e12Wyy2+0ei7e5cWR3DUvupBJnte7/H5eYAABoLtOCzJgxY7R582Zt2LDBvZx11lmaPHmy+3VAQICWLVvm/kxGRoYyMzOVmppqVtmtws9q0RNXDZbN36qvdh3R/NWZZpcEAIBP8jfrG4eHh2vgwIEe60JDQxUVFeVef/PNN+vuu+9WZGSk7Ha7ZsyYodTUVJ1zzjlmlNyqUmLCdN/YPnp88XY99sE2De8Wqd5x4WaXBQCATzF91tLxPPPMM/r5z3+uiRMnavTo0YqPj9c777xjdlmt5qaR3TW6d4yc1S7NmL9eFVU1ZpcEAIBPsRjtfIBGUVGRHA6HCgsLvXK8zOFip8b/8ysdKXHqunOS9PiEQWaXBACA6U7277dX98h0BDHhNj09aYgk6b+rMvXJlmyTKwIAwHcQZLzA6N4x+u3oHpKk+97epP35pSZXBACAbyDIeIl7Lu6jM5MiVFxRrdv++53KKxkvAwDAiRBkvESgv1WzJw9TdFigtmcX6U/vbub+MgAAnABBxovEO4L07LVDZbVI73x3UG98y/1lAAA4HoKMlzk3JVq/H1f7lOzHPtimDVkF5hYEAIAXI8h4od+O7qGxA+JUWePStP+u05ESp9klAQDglQgyXshisejJXw5R9+hQHSqs0G9fX8fN8gAAaARBxkvZgwL04vXDFB7kr3X7j2nmOwz+BQDgpwgyXqxnbLjmTB4mP6tFi9Yf1L+/2G12SQAAeBWCjJcb1Staj/5igCTp75/t1OJN3PkXAIB6BBkfcN05ybppZHdJ0t1vbdBGZjIBACCJIOMz/nRpP13YN1bOapdufnUNjzEAAEAEGZ/hZ7Xo2WuHqn+CXUdKKnX9K6t1uJhp2QCAjo0g40PCbP6ad9NwJUYGa39+mW6ct1olzmqzywIAwDQEGR8TGx6k124aoajQQG05WKTfvr5WzmruMQMA6JgIMj6oe3So5t44XCGBflq5O1/3vLVRLhf3mAEAdDwEGR81uGuEXvj1MAX4WfThpmw98N4WbpgHAOhwCDI+7LxeMXpq0hmyWKT532bq/z7cTpgBAHQoBBkf94shnfW3KwdLkl5ZuVd//yzD5IoAAGg7BJl2YNLwRD12ee3df//9xR49t2yXyRUBANA2CDLtxPWp3fSnS/pJkp5aslMvfvm9yRUBAHD6EWTakVtG99DdF/WWJP35o+16PX2fuQUBAHCaEWTamRkX9tTUC1IkSQ++t1WvfrPP3IIAADiNCDLtjMVi0e/H9tEt59U+ZPLh97fqpa+4zAQAaJ8IMu2QxWLRHy/pp2l1PTOPL96u2ct3m1wVAACtjyDTTlksFt03to/uTOslSXrikwz9c+ku7jMDAGhXCDLtmMVi0Z1pvXXf2D6SpGeW7tRfP95BmAEAtBsEmQ5g+s966oFLa6dmv/Dl97p34SZV1bhMrgoAgJYjyHQQvzmvh564arD8rBb977sDuvW1tSqrrDa7LAAAWoQg04FMOitR//n1MAUFWPVFxmFNfulbHSutNLssAACajSDTwYzpF6c3fjNCjuAArc8s0FXPf6PM/DKzywIAoFkIMh3QsORILbwtVfH2IO05XKoJs1dqzb6jZpcFAMApI8h0UL3jwvXu9JEa1MWho6WVmvzit/rfugNmlwUAwCkhyHRg8Y4gvfXbVI0fGK/KGpfuWbhRT3yyQy4X07MBAL6BINPBBQf66d+/OlPTf1Z7F+DZy/fo1tfXqrC8yuTKAAA4MYIMZLVadN/Yvnp60hAF+lu1dHuefvGvr7U9u8js0gAAOC6CDNyuPLOr/nfbueoSEaz9+WW6YvZKLVrPuBkAgPciyMDDoK4OfThjlEb3jlFFlUt3/b+Neui9LaqoqjG7NAAAGiDIoIFOoYGae8Nw/e7CnpKk19L368rZ32h3XonJlQEA4Ikgg0b5WS26++I+mnvDcEWFBmpbdpEue+5r/b81mTx0EgDgNQgyOK6f9Y3Vx3ecp5E9o1ReVaM//G+zbn9zPbOaAABegSCDE4q1B+n1m0boD+P6yt9q0eJN2Rr7zJdanpFndmkAgA6OIIOTYrVaNPWCFL099Vx1iwpRTlGFbpi7Rvf/b5OKK+idAQCYgyCDU3JGYoQ+vmO0bhrZXRaLtGBNlsY+86W+2nXY7NIAAB0QQQanLDjQTw9d1l8LbjlHSZEhOlRYoV+/vFp/XLRZRfTOAADaEEEGzTaiR5Q+ufM8TUlNliTN/zZTY55aofc2HGRmEwCgTRBk0CIhgf569PKBevOWc9QjOlSHi526Y8EG/frl1dp7pNTs8gAA7RxBBq0iNSVKH995nu6+qLcC/a36evcRjX3mSz29ZCd3BQYAnDYEGbQam7+ffjeml5bcNVrn945RZY1Lzy7bpYueWaGPNmdzuQkA0OosRjv/61JUVCSHw6HCwkLZ7Xazy+kwDMPQR5tz9NiHW5Vb5JQkDe/WSQ9c2l9DEiPMLQ4A4PVO9u83QQanVVlltV5Y8b1e+HKPKqpckqQrhnbR78f1UYIj2OTqAADeiiBThyDjHbILy/Xkpxl657uDkqSgAKtuGtldvx2dIkdIgMnVAQC8DUGmDkHGu2w6UKDHF2/X6r1HJUnhQf767egeunFkd4Xa/E2uDgDgLQgydQgy3scwDC3dnqenPsvQjpxiSVJUaKCm/6ynfjUiSUEBfiZXCAAwG0GmDkHGe7lchj7cnK2nP8vQvvwySVKCI0i3nZ+iq4cnEmgAoAMjyNQhyHi/qhqX/rfugP65bJeyCyskSdFhNt06ursmj0jmkhMAdEAEmToEGd9RUVWjt9cd0Jzle3SwoFyS1CkkQDeP6q7rz+0mexCDggGgoyDI1CHI+J6qGpcWrT+o2V/sdl9yCg/y1/WpyZpybjfFhgeZXCEA4HQjyNQhyPiu6hqXFm/O1r+/2K2duSWSpEA/qyYM7azfnNdDvePCTa4QAHC6nOzfb1MfUTBnzhwNHjxYdrtddrtdqamp+vjjj93bKyoqNH36dEVFRSksLEwTJ05Ubm6uiRWjLfn7WXX5GV30yR2j9fx1wzQsuZMqa1x6a+0BXfzMl5ryymp9vesIjz4AgA7M1B6ZDz74QH5+furVq5cMw9Crr76qJ598UuvXr9eAAQM0depULV68WPPmzZPD4dDtt98uq9WqlStXnvT3oEemfVm3/5he+up7fbI1R/W/uf0S7LppZDddNqQzM50AoJ3w2UtLkZGRevLJJ3XVVVcpJiZG8+fP11VXXSVJ2rFjh/r166f09HSdc845J3U8gkz7tD+/VK98vVdvrT2g8rqna0eEBOjqsxJ13TnJSowMMblCAEBL+MSlpR+rqanRggULVFpaqtTUVK1bt05VVVVKS0tz79O3b18lJSUpPT3dxErhDZKjQvXo5QOVPvNC3Te2j7pEBKugrEovfPm9Rj/5hW6at0bLM/LkcnlVTgcAtDLTb9CxefNmpaamqqKiQmFhYVq0aJH69++vDRs2KDAwUBERER77x8XFKScnp8njOZ1OOZ1O9/uioqLTVTq8QERI7R2Bbzs/Rcu25+r1Vfv11a4j+nxHnj7fkafkqBBdNyJZvzyrqyJCAs0uFwDQykwPMn369NGGDRtUWFiot99+W1OmTNGKFSuafbxZs2bp0UcfbcUK4Qv8rBZdPCBeFw+I1/eHS/T6qv16e90B7c8v058/2q4nP83Q2IHxuvqsRJ2bEiWr1WJ2yQCAVuB1Y2TS0tKUkpKiq6++WmPGjNGxY8c8emWSk5N155136q677mr08431yCQmJjJGpgMqq6zWu+sP6b+r9mtb9g89c107BWvSWYm6alhXdY4INrFCAEBTTnaMjOk9Mj/lcrnkdDo1bNgwBQQEaNmyZZo4caIkKSMjQ5mZmUpNTW3y8zabTTabra3KhRcLCfTXr0Yk6VcjkrTlYKEWrMnUexsO6cCxcj29ZKeeWbpTo3vF6OrhiRrTL1Y2f2Y8AYCvMbVHZubMmRo/frySkpJUXFys+fPn629/+5s+/fRTXXTRRZo6dao++ugjzZs3T3a7XTNmzJAkffPNNyf9PZi1hB8rr6zRJ1uz9f/WZGnV90fd6x3BAbp0cIKuHNpFw5I7yWLh0hMAmMknemTy8vJ0/fXXKzs7Ww6HQ4MHD3aHGEl65plnZLVaNXHiRDmdTo0dO1azZ882s2T4uOBAP10xtKuuGNpV+46U6q21WfrfdweUW+TU/G8zNf/bTCVGBuuKM7powtAu6hETZnbJAIDj8LoxMq2NHhmcSI3LUPqefC1af1CfbMlWaWWNe9uQxAhdcUZnXTaks6LCuGQJAG3FZ2+I19oIMjgVZZXVWrItV4vWH9RXu46opu4+NP5Wi0b2jNalgxM0tn+8HCE8iRsATieCTB2CDJrrcLFTH2w8pHc3HNSmA4Xu9QF+Fp3XK0Y/H5ygtP5xsgcRagCgtRFk6hBk0Br2HC7R4k3ZWrwpWxm5xe71gX5Wje4do8uGJGhMvziF2bxuIiAA+CSCTB2CDFrbrtxifbgpWx9uOqQ9h0vd623+Vv2sT6zGD4rXhX1jFU5PDQA0G0GmDkEGp4thGMrILdbiTdn6cFO29h75IdQE+ll1bs8ojR0Qr4v6xymagcIAcEoIMnUIMmgLhmFoe3axFm8+pI+35Oj7H/XUWC3SWcmRGjswXmMHxKlrJ57MDQAnQpCpQ5CBGXbnFevTrbn6ZEuONh8s9Ng2sItdY/vHa9zAePWMDePmewDQCIJMHYIMzHbgWJk+25qrT7fmaM2+o3L96F9c9+hQjekbqwv7xWp4t0gF+FnNKxQAvAhBpg5BBt4kv8Sppdtre2pW7s5XZY3LvS08yF/n945RWr84nd87Rp1CA02sFADMRZCpQ5CBtyquqNJXu45o2fY8fZGRp6Olle5t9eNqLuwXq7R+sUqJ4RIUgI6FIFOHIANfUOMytCGrQMu25+rzHXnakVPssT0pMkQX9o1VWr84De/eiSd1A2j3CDJ1CDLwRVlHy/RFRp6Wbs/Tqj2el6CCA/yUmhKl83vHaHTvGHWLCqG3BkC7Q5CpQ5CBryt1VuurXUf0+Y5cfb7jsI6UOD22J0YG14aaXjE6t2c0dxcG0C4QZOoQZNCeuFyGtucU6cudR/TlzsNau/+oqmp++Cfsb7VoWHInje4do/N7x6h/gl1WK701AHwPQaYOQQbtWamzWul78vXlrsNasfOw9ueXeWyPDgvUqJ7ROrdntM5NieJmfAB8BkGmDkEGHcn+/FJ9ubM21HyzJ19llTUe25OjQnRuSpTOTYlWakoUj04A4LUIMnUIMuioKqtdWrf/mFbuPqJv9hzRxgOFqnF5/nPvGx+uc1Nqe2tG9IjkQZcAvAZBpg5BBqhVXFGl1XuP6ps9+Vq5+0iDKd5+VosGd3XUhpruURqW3EmhDBwGYBKCTB2CDNC4/BKn0r/P18rd+Urfc0T7fjK+xs9q0cAuDo3oHqmzu0VqeLdIOULosQHQNggydQgywMk5WFCub3YfUfqefK3ed1QHjpV7bLdYpD5x4TqnR5TO7l4bbGLCGWMD4PQgyNQhyADNc7CgXKv35mv13qP6du9RfX+4tME+PWJCa3ts6oJNl4hgbs4HoFUQZOoQZIDWcbjYqTX7jrqDzY6cIv30f484u03DkjvpzKROOqtbpPon2BXozxO9AZw6gkwdggxwehSUVWrtvmNave+ovv0+X1sPFan6J7OibP5WDekaoTOTO9UFnAhFMeUbwEkgyNQhyABto7yyRpsOFGhd5jF9t/+Y1u0/pmNlVQ326x4dqjOTaoPNsORO6hUbxt2HATRAkKlDkAHMYRiG9h4p1bq6ULNu/zHtyitpsF94kL/OSIzQkK4RtV8TIxhEDIAgU48gA3iPwrIqfZf1Q4/NhqyCBncflqQuEcE6I/GHYDOoi0PBgX4mVAzALASZOgQZwHtV17i0I6dYGw8UaENmgTYeKNCuvJIGg4j9rBb1jgvXGYkOd7jpFRsuPy5JAe0WQaYOQQbwLcUVVdp8sFAbsgq0MatAG7IKlFvkbLBfSKCfBnVx6Iyk2h6bQV0cSooMYfo30E4QZOoQZADfl1NYoQ11oWZjVoE2HShQaSOXpOxB/hrYxeFeBnVxKDkyhMHEgA8iyNQhyADtT43L0J7DJe5gs+VgobbnFKuy2tVg33CbvwZ0sWtgZ4cGda0NON2jQgk3gJcjyNQhyAAdQ1WNSztzi7XlYKE2HyzU5oNF2p5d1Gi4CbP5q39nuwZ1cWhgl9qv3aPDGHMDeBGCTB2CDNBxVdW4tDuvRJsPFroDzrZDRXI2Em6CAqzqE29X/wS7+ne2q39CuPrG23kCOGASgkwdggyAH6uucWn34RJtOVjkEW7KqxqOubFYpOTIkLpgY1e/upATbw9iUDFwmhFk6hBkAJxIjcvQvvxSbc8u0rZDRdqWXXtZqrHZUpLUKSSgNtTUBZt+CXb1jA1TgB/PlQJaC0GmDkEGQHMdKXFqe12o2XaoSNuzi7X7cIlqXA3/2wz0s6pnbJj6xoerd3y4+sTVfu3soPcGaA6CTB2CDIDWVFFVo125JbXhxh1wilTsrG50/3Cbv3rFhalPfLh6x/0QcKJ5eCZwXASZOgQZAKebYRg6cKxc27KLtDOnWBm5xdqZW6zvD5c2eCJ4vajQwNpgUx9w4sPUKy5c9qCANq4e8E4EmToEGQBmqax2aV9+qTJyaoNN/df9R8saPIahXmdHkFJiw5QSE6aeP/oaHRbIJSp0KASZOgQZAN6mvLJGu/NK3D039QEnu7Ciyc/Yg/zdwSYlNkw9674mdgqWP4OM0Q4RZOoQZAD4isLyKu3KLdaewyXac7hUu/NKtOdwibKOlqmJK1QK9LOqW3TIDyGnrgenW3SowrgHDnwYQaYOQQaAr6uoqtG+/Lpgk1eq3YdLtCevRN8fKVFFVcOb+9WLDrOpe3SIukWFqlt0qLpHh9a9DlFIICEH3o0gU4cgA6C9crkMHSwo157DJXW9N6XugHOkpPK4n42z29Qtqi7c1AWc7tGhSo4KUVCAXxu1AGgaQaYOQQZAR1RUUaX9R8r0/ZES7TtSpn35pdp7pFT78ktVUFbV5OcsFinBHqRu0aFKigxRYmSIkn60RIQEMOgYbYIgU4cgAwCeCsoq3aFm75Ey7XO/LlVxReP3w6kXbvP/IdxEeQadLhHBCvRn4DFaB0GmDkEGAE6OYRg6Wlqpffml2nekTFnHypR5tExZR2u/NvXIhnoWi9TZEazEyGB3uEmsW7p2ClZMmI3eHJw0gkwdggwAtI6KqhodqAs3mfllyjxa7hF0Gnvw5o/Z/K3qEhGsLp2C1SUiWF071b+uDTpx9iD5WQk6qHWyf78Ztg4AOClBAX7qGRuunrHhDbYZhqEjJZUewaZ+yTpappyiCjmrXfr+SKm+P1La6PH9rRbFO4LqQk6IunQKVtcfBZ4EB5eu0BA9MgCA066y2qWcwgodKCjTwWPlOnCsXAcLynWw7uuhgvImH+dQz2KRYsNttSHnRz07nSOC1DmiNujYg/y5fNVO0CMDAPAagf5WJUXVDhBuTI3LUF5xhUfIOXCsXAeOlbkDj7Papdwip3KLnFq3/1ijxwkN9FNCRLASHEHq7AiuDTgRta/rvwYHMr28PSHIAABM52e1KMFR26tyVreG2+svXf3Qi1OmA8dqe3IOFVToUGG5CsqqVFr3+IfdeSVNfq+IkIC6kBNU+z0jfhR6HEGKdwQpgMc++AyCDADA61ksFsWE2xQTbtMZiRGN7lNWWa3swgpl1wWb7IIKZRfW9u7Uri9XaWWNCsqqVFBWpW3ZRU18LykmzKaEiGB1dgS5A86Pv0aH2RiY7CUIMgCAdiEk0N/9vKnGGIahoopqZdeFnNqAU/5D8KkLQZU1LuUVO5VX7NTGrMa/l5/Vothwm+IdQYq3BynOHuTuzal/HWcP4i7JbYAgAwDoECwWixzBAXIEB6hvfOODRw3DUH5ppfuSVXZdwDlU8MPX3KIK1biM2uBznCeWS7WXseLtQe7A4/G17rUjmLsltwRBBgCAOhaLRdFhNkWH2TS4a+P7VNe4dKSkUjlFFcopLFdOYYVyipy1r4sq6t5XqKLK5b6MtSOnuMnvGRRg9ejViasLOPW9OvGOIMWE2eTPuJ1GEWQAADgF/n5Wd4+KmhivYxiGisqrlV1UG3Ryi2p7b3Lrgk7962NlVaqocmlffpn25Zc1+T2tFikm3OYOPHH2IMWG2xRnD1KM3aa48CDF2m2KDAmUtYON3SHIAADQyiwWixwhAXKENH0ZS6q9W3Luj3pxfvo1t7BCucVO1bgM99RzqbDJ4/lbawdFx7qDjk2x4UG1X38UftpT4CHIAABgkqAAPyVHhSo5KrTJfWpchvJLnMr5Ua9OXpFTecUVyi2qHZScV1Sh/NJKVZ/k2B134An3DDjuXp66r1Gh3h94CDIAAHgxP6ulNmzYg5octyPV3j35SEltsMktqnAHnLwip3KLfwg/DQNP0z08flaLYsJsiq3r2an9Wvu6fjp8bHjtmCKzHh9BkAEAoB0I9Leqc0Ttjf2Op6qmLvAU/STw/CgA5RY5lV9ae0krp6j2MtfxAs8Dl/bTb87r0cotOjkEGQAAOpAAP6v7LsrHUz8764dLWLVfDxc7dbi4Qofr7rVzuNipmHBbG1XfEEEGAAA04DE76zhcLkMuE58/beqk9FmzZmn48OEKDw9XbGysJkyYoIyMDI99KioqNH36dEVFRSksLEwTJ05Ubm6uSRUDAIAfs1otpt7jxtQgs2LFCk2fPl2rVq3SkiVLVFVVpYsvvlilpaXufe666y598MEHWrhwoVasWKFDhw7pyiuvNLFqAADgLSyGYWJ/0E8cPnxYsbGxWrFihUaPHq3CwkLFxMRo/vz5uuqqqyRJO3bsUL9+/ZSenq5zzjnnhMcsKiqSw+FQYWGh7Pam5/IDAADvcbJ/v73qfseFhbUjoiMjIyVJ69atU1VVldLS0tz79O3bV0lJSUpPT2/0GE6nU0VFRR4LAABon7wmyLhcLt15550aOXKkBg4cKEnKyclRYGCgIiIiPPaNi4tTTk5Oo8eZNWuWHA6He0lMTDzdpQMAAJN4TZCZPn26tmzZogULFrToODNnzlRhYaF7ycpq4hnsAADA53nF9Ovbb79dH374ob788kt17frDbQvj4+NVWVmpgoICj16Z3NxcxcfHN3osm80mm828+ewAAKDtmNojYxiGbr/9di1atEiff/65unfv7rF92LBhCggI0LJly9zrMjIylJmZqdTU1LYuFwAAeBlTe2SmT5+u+fPn67333lN4eLh73IvD4VBwcLAcDoduvvlm3X333YqMjJTdbteMGTOUmpp6UjOWAABA+2bq9GuLpfEnas6dO1c33HCDpNob4t1zzz1688035XQ6NXbsWM2ePbvJS0s/xfRrAAB8z8n+/faq+8icDgQZAAB8j0/eRwYAAOBUEGQAAIDPIsgAAACf5RX3kTmd6ocA8agCAAB8R/3f7RMN5W33Qaa4uFiSeFQBAAA+qLi4WA6Ho8nt7X7Wksvl0qFDhxQeHt7kdO/mKCoqUmJiorKystrtbKj23sb23j6p/bexvbdPav9tbO/tk9p/G09X+wzDUHFxsTp37iyrtemRMO2+R8ZqtXo89qC12e32dvmL+WPtvY3tvX1S+29je2+f1P7b2N7bJ7X/Np6O9h2vJ6Yeg30BAIDPIsgAAACfRZBpJpvNpocffrhdP2m7vbexvbdPav9tbO/tk9p/G9t7+6T230az29fuB/sCAID2ix4ZAADgswgyAADAZxFkAACAzyLIAAAAn0WQaaZ///vf6tatm4KCgjRixAitXr3a7JKa5ZFHHpHFYvFY+vbt695eUVGh6dOnKyoqSmFhYZo4caJyc3NNrPjEvvzyS1122WXq3LmzLBaL3n33XY/thmHooYceUkJCgoKDg5WWlqZdu3Z57HP06FFNnjxZdrtdERERuvnmm1VSUtKGrWjaidp3ww03NDin48aN89jHm9s3a9YsDR8+XOHh4YqNjdWECROUkZHhsc/J/F5mZmbq0ksvVUhIiGJjY3Xfffepurq6LZvSpJNp4wUXXNDgPN52220e+3hrG+fMmaPBgwe7b5CWmpqqjz/+2L3d18+fdOI2+vL5a8xf//pXWSwW3Xnnne51XnMeDZyyBQsWGIGBgcYrr7xibN261bjllluMiIgIIzc31+zSTtnDDz9sDBgwwMjOznYvhw8fdm+/7bbbjMTERGPZsmXG2rVrjXPOOcc499xzTaz4xD766CPjT3/6k/HOO+8YkoxFixZ5bP/rX/9qOBwO49133zU2btxo/OIXvzC6d+9ulJeXu/cZN26cMWTIEGPVqlXGV199ZfTs2dO49tpr27gljTtR+6ZMmWKMGzfO45wePXrUYx9vbt/YsWONuXPnGlu2bDE2bNhgXHLJJUZSUpJRUlLi3udEv5fV1dXGwIEDjbS0NGP9+vXGRx99ZERHRxszZ840o0kNnEwbzz//fOOWW27xOI+FhYXu7d7cxvfff99YvHixsXPnTiMjI8P44x//aAQEBBhbtmwxDMP3z59hnLiNvnz+fmr16tVGt27djMGDBxt33HGHe723nEeCTDOcffbZxvTp093va2pqjM6dOxuzZs0ysarmefjhh40hQ4Y0uq2goMAICAgwFi5c6F63fft2Q5KRnp7eRhW2zE//0LtcLiM+Pt548skn3esKCgoMm81mvPnmm4ZhGMa2bdsMScaaNWvc+3z88ceGxWIxDh482Ga1n4ymgszll1/e5Gd8qX2GYRh5eXmGJGPFihWGYZzc7+VHH31kWK1WIycnx73PnDlzDLvdbjidzrZtwEn4aRsNo/YP4Y//aPyUr7WxU6dOxksvvdQuz1+9+jYaRvs5f8XFxUavXr2MJUuWeLTJm84jl5ZOUWVlpdatW6e0tDT3OqvVqrS0NKWnp5tYWfPt2rVLnTt3Vo8ePTR58mRlZmZKktatW6eqqiqPtvbt21dJSUk+29a9e/cqJyfHo00Oh0MjRoxwtyk9PV0RERE666yz3PukpaXJarXq22+/bfOam2P58uWKjY1Vnz59NHXqVOXn57u3+Vr7CgsLJUmRkZGSTu73Mj09XYMGDVJcXJx7n7Fjx6qoqEhbt25tw+pPzk/bWO+NN95QdHS0Bg4cqJkzZ6qsrMy9zVfaWFNTowULFqi0tFSpqant8vz9tI312sP5mz59ui699FKP8yV517/Ddv/QyNZ25MgR1dTUeJwYSYqLi9OOHTtMqqr5RowYoXnz5qlPnz7Kzs7Wo48+qvPOO09btmxRTk6OAgMDFRER4fGZuLg45eTkmFNwC9XX3dj5q9+Wk5Oj2NhYj+3+/v6KjIz0iXaPGzdOV155pbp37649e/boj3/8o8aPH6/09HT5+fn5VPtcLpfuvPNOjRw5UgMHDpSkk/q9zMnJafQc12/zJo21UZJ+9atfKTk5WZ07d9amTZv0hz/8QRkZGXrnnXckeX8bN2/erNTUVFVUVCgsLEyLFi1S//79tWHDhnZz/ppqo+T750+SFixYoO+++05r1qxpsM2b/h0SZDq48ePHu18PHjxYI0aMUHJyst566y0FBwebWBma65prrnG/HjRokAYPHqyUlBQtX75cY8aMMbGyUzd9+nRt2bJFX3/9tdmlnDZNtfHWW291vx40aJASEhI0ZswY7dmzRykpKW1d5inr06ePNmzYoMLCQr399tuaMmWKVqxYYXZZraqpNvbv39/nz19WVpbuuOMOLVmyREFBQWaXc1xcWjpF0dHR8vPzazAyOzc3V/Hx8SZV1XoiIiLUu3dv7d69W/Hx8aqsrFRBQYHHPr7c1vq6j3f+4uPjlZeX57G9urpaR48e9cl29+jRQ9HR0dq9e7ck32nf7bffrg8//FBffPGFunbt6l5/Mr+X8fHxjZ7j+m3eoqk2NmbEiBGS5HEevbmNgYGB6tmzp4YNG6ZZs2ZpyJAh+uc//9muzl9TbWyMr52/devWKS8vT2eeeab8/f3l7++vFStW6Nlnn5W/v7/i4uK85jwSZE5RYGCghg0bpmXLlrnXuVwuLVu2zOPaqK8qKSnRnj17lJCQoGHDhikgIMCjrRkZGcrMzPTZtnbv3l3x8fEebSoqKtK3337rblNqaqoKCgq0bt069z6ff/65XC6X+z8jX3LgwAHl5+crISFBkve3zzAM3X777Vq0aJE+//xzde/e3WP7yfxepqamavPmzR6BbcmSJbLb7e6ufzOdqI2N2bBhgyR5nEdvbuNPuVwuOZ3OdnH+mlLfxsb42vkbM2aMNm/erA0bNriXs846S5MnT3a/9prz2GrDhjuQBQsWGDabzZg3b56xbds249ZbbzUiIiI8Rmb7invuucdYvny5sXfvXmPlypVGWlqaER0dbeTl5RmGUTu9Likpyfj888+NtWvXGqmpqUZqaqrJVR9fcXGxsX79emP9+vWGJOPpp5821q9fb+zfv98wjNrp1xEREcZ7771nbNq0ybj88ssbnX49dOhQ49tvvzW+/vpro1evXl4zPfl47SsuLjbuvfdeIz093di7d6+xdOlS48wzzzR69eplVFRUuI/hze2bOnWq4XA4jOXLl3tMXS0rK3Pvc6Lfy/ppnxdffLGxYcMG45NPPjFiYmK8Zmrridq4e/du47HHHjPWrl1r7N2713jvvfeMHj16GKNHj3Yfw5vbeP/99xsrVqww9u7da2zatMm4//77DYvFYnz22WeGYfj++TOM47fR189fU346E8tbziNBppmee+45IykpyQgMDDTOPvtsY9WqVWaX1CxXX321kZCQYAQGBhpdunQxrr76amP37t3u7eXl5ca0adOMTp06GSEhIcYVV1xhZGdnm1jxiX3xxReGpAbLlClTDMOonYL94IMPGnFxcYbNZjPGjBljZGRkeBwjPz/fuPbaa42wsDDDbrcbN954o1FcXGxCaxo6XvvKysqMiy++2IiJiTECAgKM5ORk45ZbbmkQsr25fY21TZIxd+5c9z4n83u5b98+Y/z48UZwcLARHR1t3HPPPUZVVVUbt6ZxJ2pjZmamMXr0aCMyMtKw2WxGz549jfvuu8/jPiSG4b1tvOmmm4zk5GQjMDDQiImJMcaMGeMOMYbh++fPMI7fRl8/f035aZDxlvNoMQzDaL3+HQAAgLbDGBkAAOCzCDIAAMBnEWQAAIDPIsgAAACfRZABAAA+iyADAAB8FkEGAAD4LIIMgA7HYrHo3XffNbsMAK2AIAOgTd1www2yWCwNlnHjxpldGgAf5G92AQA6nnHjxmnu3Lke62w2m0nVAPBl9MgAaHM2m03x8fEeS6dOnSTVXvaZM2eOxo8fr+DgYPXo0UNvv/22x+c3b96sCy+8UMHBwYqKitKtt96qkpISj31eeeUVDRgwQDabTQkJCbr99ts9th85ckRXXHGFQkJC1KtXL73//vunt9EATguCDACv8+CDD2rixInauHGjJk+erGuuuUbbt2+XJJWWlmrs2LHq1KmT1qxZo4ULF2rp0qUeQWXOnDmaPn26br31Vm3evFnvv/++evbs6fE9Hn30UU2aNEmbNm3SJZdcosmTJ+vo0aNt2k4AraBVH0EJACcwZcoUw8/PzwgNDfVY/vznPxuGUftk6Ntuu83jMyNGjDCmTp1qGIZh/Oc//zE6depklJSUuLcvXrzYsFqt7qd8d+7c2fjTn/7UZA2SjAceeMD9vqSkxJBkfPzxx63WTgBtgzEyANrcz372M82ZM8djXWRkpPt1amqqx7bU1FRt2LBBkrR9+3YNGTJEoaGh7u0jR46Uy+VSRkaGLBaLDh06pDFjxhy3hsGDB7tfh4aGym63Ky8vr7lNAmASggyANhcaGtrgUk9rCQ4OPqn9AgICPN5bLBa5XK7TURKA04gxMgC8zqpVqxq879evnySpX79+2rhxo0pLS93bV65cKavVqj59+ig8PFzdunXTsmXL2rRmAOagRwZAm3M6ncrJyfFY5+/vr+joaEnSwoULddZZZ2nUqFF64403tHr1ar388suSpMmTJ+vhhx/WlClT9Mgjj+jw4cOaMWOGfv3rXysuLk6S9Mgjj+i2225TbGysxo8fr+LiYq1cuVIzZsxo24YCOO0IMgDa3CeffKKEhASPdX369NGOHTsk1c4oWrBggaZNm6aEhAS9+eab6t+/vyQpJCREn376qe644w4NHz5cISEhmjhxop5++mn3saZMmaKKigo988wzuvfeexUdHa2rrrqq7RoIoM1YDMMwzC4CAOpZLBYtWrRIEyZMMLsUAD6AMTIAAMBnEWQAAIDPYowMAK/C1W4Ap4IeGQAA4LMIMgAAwGcRZAAAgM8iyAAAAJ9FkAEAAD6LIAMAAHwWQQYAAPgsggwAAPBZBBkAAOCz/j88HIDNLw24pgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "visualize_learning_process(n_epochs, losses)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Prediction\n", "Calculate the error for train and test data with the mean prediction using the ensemble_model, and print out the Mean Squared Error Loss for the training and test data set." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Error training data: 0.309446\n", "Error test data: 0.597933\n" ] } ], "source": [ "with torch.no_grad():\n", " _, y_pred_train_mean = torch.split(ensemble_model(X_train), n_models)\n", " _, y_pred_test_mean = torch.split(ensemble_model(X_test), n_models)\n", " error_train = loss_function(y_pred_train_mean.squeeze(0), y_train)\n", " error_test = loss_function(y_pred_test_mean.squeeze(0), y_test)\n", "\n", "print(\"Error training data: \" + str(round(error_train.item(), 6)))\n", "print(\"Error test data: \" + str(round(error_test.item(), 6)))" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Evaluation\n", "\n", "#### Check Input/Output Sensitivity\n", "\n", "The [sensitivity analysis](../api/sensitivity_analysis.rst#prosper_nn.utils.sensitivity_analysis.sensitivity_analysis) function allows us to investigate the relationship between input features and output. For that, the gradient of the output with respect to the input $\\frac{\\partial output}{\\partial input}$ is calculated. For one observation this means that there exists a neighborhood around the input vector for which we know if the output will increase or decrease when we change an input feature a little. If the derivation is positive, the output will increase when the feature increases and will decrease when the feature decreases. If the derivation is negative, the relationship is reversed (input increased $\\rightarrow$ output decreases, input decreased $\\rightarrow$ output increases). \n", "\n", "If observations cover the input space, global relations follow. The relationship of one feature to the output can be determined by looking at the derivations of one feature for all observations. The sensitivity analysis function allows to investigate this graphically by representing positive gradients red and negative ones blue. Stronger colors represent a stronger relation of the feature to the output.\n", "\n", "* derivations w.r.t. the feature constant, i.e. color across observations in row of feature roughly the same $\\longrightarrow$ linear relationship between input feature and output\n", "* derivations monotone, i.e. all red or all blue across observations in row of features $\\longrightarrow$ monotonic relationship between input feature and output\n", "* derivations with changing signum, i.e. there's both red and blue in the feature's row $\\longrightarrow$ non-monotonic relationship between input feature and output, e.g. quadratic or sine\n", "* derivations close to 0, i.e. very light color in the feature's row $\\longrightarrow$ unnecessary feature as no influence of input feature on output is found\n", "\n", "\n", "With the `output_neuron` parameter it can be navigated in the model output to the neuron for which the analysis should be performed. It is used as a slice on the model output. In this example this means to use the mean prediction of the ensemble for the analysis. This should always be done because an individual model can create wrong results.\n" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "image/png": "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AtRTTz3VpE6Xy6VCQ0PV5ZdffsRzWFpaqmJjY9XcuXPVc889px5++GHVs2dPZTQam3x5HPyDHzRokEpPT1cPPfSQevjhh1VERIRKSEhokoz885//VGPHjlULFixQL7zwgrrxxhuVxWJRw4cPV36//7Dn8ptvvlGA+vTTT5vEWFhYqPR6vVqwYIFSSqlt27Y1ftg88cQTavHixerWW29V48aNaxbvbxOb0aNHK7vdrv7v//5PvfTSS+qBBx5QJ554olq5cuURz9HMmTNVQECA6tOnj7r88svVc889p8477zwFNEsErrzySmUwGNScOXPU4sWL1d/+9jdltVrVsGHDmpyjs88+W02bNk098sgj6rnnnlMXXHCBAtStt97auM3XX3+tBg4cqCIiIhp/5x999JFS6r/X1sCBA9WoUaPUk08+qW644QalaZq68MIL1cUXX6xOPfVU9cwzz6jLLrtMAWr+/PlNYh02bJiaNWuWeuyxx9RTTz2lTj75ZAWop59+usl2ycnJqkePHiokJETdcccd6tFHH1X9+vVTOp2u8Vo/lKKiIvX666+riIgINXDgwMb3UFdXpxwOh+rVq5cyGo3q5ptvVk8++aQaO3asAtTjjz/e7PfYu3dvlZaWph588EH12GOPqby8vCP+vg7+HT/zzDNqxowZClBnn312s/fVs2dPFR0dre6880719NNPq8GDBytN09S2bdsat6uvr1f9+/dX4eHh6s4771SLFy9WM2bMUJqmNX5pHsk999yjADVp0iT11FNPqeuuu07p9fpm18SxJDZH+iw4uG1cXJyKiopS1113nXryySfVCSecoIAmCcOxJgtHugYPB1ADBgxQsbGx6t5771WPP/64SktLU4GBgU3+uSkqKlIJCQkqMTFRLViwQD333HPqzDPPVIB67LHHWhzrwfcfExOjIiMj1fXXX6+ef/559fHHH7f4ejuWzzlxfDmuE5uvv/5a6fV6pdfr1ahRo9Ttt9+uvvrqq2YX1N69e5Ver1f3339/k/KtW7cqg8HQpPzgfx2vvfZaY5nL5VIxMTHqvPPOayw766yzVJ8+fY4Y36H+yPr06dP4wfNbv//D8/v9Kj4+vskxlVLq3XffVYD6/vvvm8T82zrXrl3b7Iv6oFGjRqkRI0Y0Kfvwww+b/dEfitfrVS6Xq0lZZWWlio6ObpIUHfyDDw8P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Q3V1Na+88sohty8oKGjsHgSoqanhtddeY+DAgcTExLT4+KeddhpFRUW88847jWVer5ennnoKm8121LFhR6oXml9vjz76KACnn356i+ucNm0aq1at4quvvmq2rqqqqsm4pd+bNGkSJpOJJ598ssm5/te//kV1dXWTeLp168Yvv/zSODknwGeffcb+/fub1Hm0zwKv18vzzz/f+NrtdvP8888TGRnJkCFDGo8FNBkf5PP5eOGFF5rV1x7XoF6v57zzzuODDz5g27ZtzdaXlpY2/tySWA+nva43cfw4rltsrr/+ehwOB+eccw4ZGRm43W5+/vnnxpaNg/2v3bp147777mPevHns3buXs88+m6CgIHJzc/noo4+46qqruPXWW1t07JNPPpmYmBjGjBlDdHQ0O3fu5Omnn+b0008nKCjosPsNGTKE5557jvvuu4/09HSioqI46aSTDrv94MGDSU9P5+9//zsul+uYuqG6detGSEgIixcvJigoCKvVyogRIxrHHhiNRi688EKefvpp9Hp9k0FyR3LGGWfw4Ycfcs4553D66aeTm5vL4sWL6d27d6tm2g0ODm4cv+LxeIiPj+frr78+ZGvE4URGRnLKKafw3nvvERIS0uzLaMGCBXz//fecfvrpJCcnU1JSwrPPPktCQsJhB2Dv3r2biRMnMm3aNHr37o3BYOCjjz6iuLiYCy+8sMXv81DGjx/PX/7yFxYuXMimTZs4+eSTMRqNZGVl8d577/HEE09w/vnnM3r0aEJDQ5k5cyY33HADmqbx+uuvHzKhHzJkCO+88w5z585l2LBh2Gw2pk6d+odjPfnkkzGZTEydOpW//OUv1NXV8eKLLxIVFdXYKvpbPXr04IorrmDt2rVER0fz8ssvU1xcfNhE6Giuuuoqnn/+eWbNmsX69etJSUnh/fff56effuLxxx8/4t/bkQwYMICZM2fywgsvNHb5rVmzhldffZWzzz6bE088scV13nbbbXzyySecccYZzJo1iyFDhlBfX8/WrVt5//332bt3LxEREYfcNzIyknnz5jF//nxOOeUUzjzzTDIzM3n22WcZNmxYk6T9yiuv5P333+eUU05h2rRp5OTk8MYbbzQZhAtH/yyIi4vjoYceYu/evfTo0YN33nmHTZs28cILLzQONO/Tpw8jR45k3rx5VFRUEBYWxttvv33IJK29rsEH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8uTJDBw4kJycHB544IFm3VNCCCGEaE5mHv6vXbt2MWXKFN59911SUlIYMWIE999/P1u3bm2T+o85sVm6dCkA77zzDr179yYsLOyQixBCCCGOH8888wwpKSkEBAQwYsSIoz6u4L333iMjI4OAgAD69evHF1980abxJCUlcf311/Ptt99SXFzMTTfdxNatWxk7dixpaWncdNNNfPfdd61+uvcxj7F55ZVXWnWAlqivr+fdd98lOzub2NhYLrroIsLDw9v9uEIIIUR76qxupHfeeYe5c+eyePFiRowYweOPP86UKVPIzMwkKiqq2fY///wzF110EQsXLuSMM87grbfe4uyzz2bDhg307du3zeOz2+1cdNFFXHTRRXg8HlasWMEnn3zC7Nmzqa2t5amnnuKSSy5pUZ3HnNi0xx1PvXv35scffyQsLIz9+/czbtw4Kisr6dGjBzk5Odx777388ssvpKamtvmxhRBCiI7SWd1Ijz76KHPmzGH27NkALF68mM8//5yXX36ZO+64o9n2TzzxBKeccgq33XYbAPfeey/ffPMNTz/9NIsXL27XWI1GI5MnT2by5Mk89dRTbNy4sVVz43XqSKRdu3Y1Bj1v3jzi4uLIy8tjzZo15OXl0b9/f/7+978fsQ6Xy0VNTU2TxeVydUT4QgghRIdqyXee2+1m/fr1TJo0qbFMp9MxadIkVq1adch9Vq1a1WR7gClTphx2+/Y0aNAghg0b1uL9jpsh1qtWreIf//hH44Bkm83G/Pnz+fHHH4+438KFC7Hb7U2W5xY/3xEhCyGEEMdEaVqbLIf6zlu4cOEhj1lWVobP5yM6OrpJeXR09GHvRioqKmrR9sejVs1j05YOPo7B6XQSGxvbZF18fDylpaVH3H/evHnMnTu3SVnBgf342zZMIYQQotWUapuuqEN958mUK011emIzceJEDAYDNTU1ZGZmNhmclJeXd9TBw2azudkvtdxspkG1S7hCCCFEpznUd97hREREoNfrKS4ublJeXFxMTEzMIfeJiYlp0fbHoxZ3RS1YsACHw9GsvKGhgQULFrSornvuuYfzzjuPs846i1tvvRWbzdZk/aeffsrYsWNbGqIQQghxXFHo2mRpCZPJxJAhQ1i2bFljmd/vZ9myZYwaNeqQ+4waNarJ9gDffPPNYbf/I0466SSqqqqaldfU1HDSSSe1ut4W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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sensitivity = sensitivity_analysis(\n", " model=ensemble_model,\n", " data=X_train.view(X_train.shape[0] * X_train.shape[1], -1),\n", " output_neuron=[-1],\n", " batchsize=1,\n", ")" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "In the output we see that there is no feature with a linear relation to the wine quality. But there are features with a monotone relation to the output. For example, feature 9 has a strong positive monotonic relationship. Trying to increase this feature will improve the wine quality.\n", "We also conclude that feature 7 is not important for the output. Leaving this feature out of the model might not affect the error or will even increase the performance.\n", "\n", "After the sensitivity analysis, the steps presented in the notebook have to be repeated until the model has a correct hidden layer dimension and no unnecessary input features. " ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Deep Feedforward Neural Network\n", "If the results are still not good enough, the [Deep Feedforward Neural Network](../api/deepff.rst) is an option to improve the performance. We use a feedforward model as the base estimator. The output of the model is propagated to another feedforward network with the goal to only explain the remaining error of the first model. This approach can be continued with further feedforward networks. There is no backward connection between the output layer and the layer before, so the prediction is only propagated in the forward direction to the output layer of the next level.\n", "\n", "\n", "\n", "### Initialization\n", "The initialization of the model is identical except for the additional **deepness** parameter. It represents the number of hidden layers in the neural network. It corresponds with the number of feedforward neural network paths to an output layer. A deepness of one creates a simple feedforward neural network." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "deepness = 3" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "deep_ff = deepff.DeepFeedForward(\n", " input_dim=input_dim, hidden_dim=hidden_dim, output_dim=output_dim, deepness=deepness\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Reset the optimizer." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "optimizer = optim.Adam(deep_ff.parameters(), lr=0.001)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Training Loop\n", "Again, the training loop has to be modified a little. The output of the model consists of the outputs from the different levels. The losses of all the deepness levels have to be added and the sum is used for backpropagation.\n", "As final prediction, we use the output of the highest level." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "losses = [0] * n_epochs\n", "\n", "# Training\n", "for epoch in range(n_epochs):\n", " for X_batch, y_batch in zip(X_train, y_train):\n", " deep_ff.zero_grad()\n", " y_preds = deep_ff(X_batch)\n", " loss = [loss_function(y_preds[j], y_batch) for j in range(deepness)]\n", " loss = sum(loss) / deepness\n", " loss.backward()\n", " optimizer.step()\n", " loss_mean = loss_function(y_preds[-1], y_batch)\n", " losses[epoch] += loss_mean.detach()" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFVElEQVR4nO3deXxU1f3/8fedmWSyJ2RPWMIqyOZClaJsFVTQ8nOhXyzFFtFqBbRo1a/QVgG/tvi1Wm39WrRaRPtT+bki1uUrqGBVUFBRQEVBdghbyEaSSTJzfn+EDIxhSWYCJxNez8djHmTuvXPzObnRvB/nnnOuY4wxAgAAiEIu2wUAAACEiyADAACiFkEGAABELYIMAACIWgQZAAAQtQgyAAAgahFkAABA1CLIAACAqEWQAQAAUYsgAyAsV111lTp27Bg157Vt8eLFchxHixcvbvJnN27cKMdxNHfu3GavC4h2BBnAkrlz58pxHK1YscJ2KTjgb3/7G2EBiDIe2wUAwKEee+wxBQIBK9/7b3/7mzIzM3XVVVc1+7kHDx6syspKxcbGNvmzBQUFqqysVExMTLPXBUQ7emQAtAj79++XJMXExMjr9Vqu5tjq620sl8uluLg4uVxN/9+u4ziKi4uT2+1u8meB1o4gA7Rwn332mUaOHKmUlBQlJSVp2LBhWrZsWcgxNTU1mjlzprp166a4uDhlZGRo4MCBWrhwYfCYwsJCTZgwQe3atZPX61VeXp4uueQSbdy48Zg1zJ8/X71791ZcXJx69+6tl19+ucExRxoDcrjxHVdddZWSkpK0fv16XXTRRUpOTta4ceOC+w4dI1P/+fvuu09///vf1aVLF3m9Xp111llavnx5gzqef/559ezZM6TWxoy76dixo9asWaMlS5bIcRw5jqOhQ4dKOngbcMmSJZo0aZKys7PVrl07SdKmTZs0adIkde/eXfHx8crIyNB//Md/NPi5Hu7nM3ToUPXu3VtffvmlfvSjHykhIUFt27bVvffe2+if4bZt23TppZcqKSlJWVlZuvXWW+X3+0M+v3fvXv385z9XSkqK0tLSNH78eH3++eeMu0GrwK0loAVbs2aNBg0apJSUFP3nf/6nYmJi9Oijj2ro0KFasmSJ+vfvL0maMWOGZs2apV/+8pc6++yzVVpaqhUrVujTTz/V+eefL0kaPXq01qxZoxtvvFEdO3bUrl27tHDhQm3evPmof+TfeustjR49Wj179tSsWbO0d+/eYCCKRG1trS688EINHDhQ9913nxISEo56/DPPPKOysjL96le/kuM4uvfee3X55Zfru+++C95yee2113TFFVeoT58+mjVrlvbt26drrrlGbdu2PWY9Dz74oG688UYlJSXpd7/7nSQpJycn5JhJkyYpKytLd955Z7BHZvny5frwww/105/+VO3atdPGjRs1e/ZsDR06VF9++eUx27Vv3z6NGDFCl19+ucaMGaMXXnhBt99+u/r06aORI0ce9bN+v18XXnih+vfvr/vuu0+LFi3S/fffry5dumjixImSpEAgoFGjRunjjz/WxIkT1aNHD73yyisaP378MX8mQFQwAKx44oknjCSzfPnyIx5z6aWXmtjYWLN+/frgtu3bt5vk5GQzePDg4LbTTjvNXHzxxUc8z759+4wk86c//anJdZ5++ukmLy/PFBcXB7e99dZbRpIpKCgIbnv33XeNJPPuu++GfH7Dhg1GknniiSeC28aPH28kmalTpzb4fuPHjw85b/3nMzIyTFFRUXD7K6+8YiSZV199NbitT58+pl27dqasrCy4bfHixQ1qPZJevXqZIUOGNNhef60GDhxoamtrQ/ZVVFQ0OH7p0qVGknnqqaeC2w738xkyZEiD43w+n8nNzTWjR49u8DM43M/wrrvuCvneZ5xxhunXr1/w/YsvvmgkmQcffDC4ze/3m/POO6/BOYFoxK0loIXy+/166623dOmll6pz587B7Xl5efrZz36m999/X6WlpZKktLQ0rVmzRt9+++1hzxUfH6/Y2FgtXrxY+/bta3QNO3bs0MqVKzV+/HilpqYGt59//vnq2bNnmC07qL7XoDGuuOIKtWnTJvh+0KBBkqTvvvtOkrR9+3atWrVKv/jFL5SUlBQ8bsiQIerTp0/EtUrStdde22CcSnx8fPDrmpoa7d27V127dlVaWpo+/fTTY54zKSlJV155ZfB9bGyszj777GC7juX6668PeT9o0KCQz7755puKiYnRtddeG9zmcrk0efLkRp0faOkIMkALtXv3blVUVKh79+4N9p166qkKBALasmWLJOmuu+5ScXGxTjnlFPXp00e33Xabvvjii+DxXq9X//3f/6033nhDOTk5Gjx4sO69914VFhYetYZNmzZJkrp169Zg3+HqagqPx9Ok21MdOnQIeV8fauqDWX2tXbt2bfDZw20LR6dOnRpsq6ys1J133qn27dvL6/UqMzNTWVlZKi4uVklJyTHP2a5dOzmOE7KtTZs2jQqccXFxysrKOupnN23apLy8vAa3uJrrZwLYRpABWoHBgwdr/fr1mjNnjnr37q3HH39cZ555ph5//PHgMTfddJO++eYbzZo1S3Fxcbrjjjt06qmn6rPPPmuWGr7/x7je9wee1vN6vU2awXOkGTvGmEafI1KH9r7Uu/HGG/WHP/xBY8aM0XPPPae33npLCxcuVEZGRqOmkUfSLmYxAQQZoMXKyspSQkKC1q5d22Df119/LZfLpfbt2we3paena8KECXr22We1ZcsW9e3bVzNmzAj5XJcuXXTLLbforbfe0urVq1VdXa3777//iDUUFBRI0mFvWX2/rvoekuLi4pDt9T0lx1t9revWrWuw73DbDudIYexoXnjhBY0fP17333+/fvKTn+j888/XwIEDG/wcbCkoKNCOHTtUUVERsr2xPxOgpSPIAC2U2+3WBRdcoFdeeSVkKu/OnTv1zDPPaODAgUpJSZFUN732UElJSeratat8Pp8kqaKiQlVVVSHHdOnSRcnJycFjDicvL0+nn366nnzyyZDbJAsXLtSXX34ZcmxBQYHcbrfee++9kO1/+9vfGt/oCOTn56t379566qmnVF5eHty+ZMkSrVq1qlHnSExMbHIAcbvdDXpPHnrooSP2RJ1oF154oWpqavTYY48FtwUCAT388MMWqwKaD9OvAcvmzJmjN998s8H2KVOm6O6779bChQs1cOBATZo0SR6PR48++qh8Pl/IWiM9e/bU0KFD1a9fP6Wnp2vFihV64YUXdMMNN0iSvvnmGw0bNkxjxoxRz5495fF49PLLL2vnzp366U9/etT6Zs2apYsvvlgDBw7U1VdfraKiIj300EPq1atXSGBITU3Vf/zHf+ihhx6S4zjq0qWL/vWvf2nXrl3N9JM6tj/+8Y+65JJLdO6552rChAnat2+f/ud//ke9e/cOqfVI+vXrp9mzZ+vuu+9W165dlZ2drfPOO++on/nxj3+sf/7zn0pNTVXPnj21dOlSLVq0SBkZGc3VrIhceumlOvvss3XLLbdo3bp16tGjhxYsWKCioiJJ4fVCAS0JQQawbPbs2YfdftVVV6lXr17697//rWnTpmnWrFkKBALq37+//u///b/BNWQk6de//rUWLFigt956Sz6fTwUFBbr77rt12223SZLat2+vsWPH6u2339Y///lPeTwe9ejRQ88995xGjx591PpGjBih559/Xr///e81bdo0denSRU888YReeeWVBovfPfTQQ6qpqdEjjzwir9erMWPG6E9/+pN69+4d2Q+pkUaNGqVnn31WM2bM0NSpU9WtWzfNnTtXTz75pNasWXPMz995553atGmT7r33XpWVlWnIkCHHDDJ/+ctf5Ha79fTTT6uqqkrnnnuuFi1apAsvvLC5mhURt9ut1157TVOmTNGTTz4pl8ulyy67TNOnT9e5556ruLg42yUCEXHMiRwpBwAWnH766crKygpZ6fhkN3/+fF122WV6//33de6559ouBwgbY2QAtBo1NTWqra0N2bZ48WJ9/vnnwccNnIwqKytD3vv9fj300ENKSUnRmWeeaakqoHlwawlAq7Ft2zYNHz5cV155pfLz8/X111/rkUceUW5uboOF404mN954oyorKzVgwAD5fD699NJL+vDDD/XHP/7xsFPKgWjCrSUArUZJSYmuu+46ffDBB9q9e7cSExM1bNgw3XPPPerSpYvt8qx55plndP/992vdunWqqqpS165dNXHixOBgcCCaEWQAAEDUYowMAACIWgQZAAAQtVr9YN9AIKDt27crOTmZhZ8AAIgSxhiVlZUpPz//qM9la/VBZvv27SHPowEAANFjy5Ytateu3RH3t/ogk5ycLKnuB1H/XBoAANCylZaWqn379sG/40fS6oNM/e2klJQUggwAAFHmWMNCGOwLAACiFkEGAABELYIMAACIWlaDzIwZM+Q4TsirR48eDY4zxmjkyJFyHEfz588/8YUCAIAWyfpg3169emnRokXB9x5Pw5IefPBB1oABAAANWA8yHo9Hubm5R9y/cuVK3X///VqxYoXy8vJOYGUAAKClsz5G5ttvv1V+fr46d+6scePGafPmzcF9FRUV+tnPfqaHH374qGEHAACcnKz2yPTv319z585V9+7dtWPHDs2cOVODBg3S6tWrlZycrJtvvlnnnHOOLrnkkkaf0+fzyefzBd+XlpYej9IBAEALYDXIjBw5Mvh137591b9/fxUUFOi5555TVlaW3nnnHX322WdNOuesWbM0c+bM5i4VAAC0QI4xxtgu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AACiFkEGAABELYJMmB5++GF17NhRcXFx6t+/vz7++GPbJYVlxowZchwn5NWjR4/g/qqqKk2ePFkZGRlKSkrS6NGjtXPnTosVH9t7772nUaNGKT8/X47jaP78+SH7jTG68847lZeXp/j4eA0fPlzffvttyDFFRUUaN26cUlJSlJaWpmuuuUbl5eUnsBVHdqz2XXXVVQ2u6YgRI0KOacntmzVrls466ywlJycrOztbl156qdauXRtyTGN+Lzdv3qyLL75YCQkJys7O1m233aba2toT2ZQjakwbhw4d2uA6Xn/99SHHtNQ2zp49W3379g0ukDZgwAC98cYbwf3Rfv2kY7cxmq/f4dxzzz1yHEc33XRTcFuLuY4GTTZv3jwTGxtr5syZY9asWWOuvfZak5aWZnbu3Gm7tCabPn266dWrl9mxY0fwtXv37uD+66+/3rRv3968/fbbZsWKFeaHP/yhOeeccyxWfGyvv/66+d3vfmdeeuklI8m8/PLLIfvvuecek5qaaubPn28+//xz83/+z/8xnTp1MpWVlcFjRowYYU477TSzbNky8+9//9t07drVjB079gS35PCO1b7x48ebESNGhFzToqKikGNacvsuvPBC88QTT5jVq1eblStXmosuush06NDBlJeXB4851u9lbW2t6d27txk+fLj57LPPzOuvv24yMzPNtGnTbDSpgca0cciQIebaa68NuY4lJSXB/S25jQsWLDCvvfaa+eabb8zatWvNb3/7WxMTE2NWr15tjIn+62fMsdsYzdfv+z7++GPTsWNH07dvXzNlypTg9pZyHQkyYTj77LPN5MmTg+/9fr/Jz883s2bNslhVeKZPn25OO+20w+4rLi42MTEx5vnnnw9u++qrr4wks3Tp0hNUYWS+/4c+EAiY3Nxc86c//Sm4rbi42Hi9XvPss88aY4z58ssvjSSzfPny4DFvvPGGcRzHbNu27YTV3hhHCjKXXHLJET8TTe0zxphdu3YZSWbJkiXGmMb9Xr7++uvG5XKZwsLC4DGzZ882KSkpxufzndgGNML322hM3R/CQ/9ofF+0tbFNmzbm8ccfb5XXr159G41pPdevrKzMdOvWzSxcuDCkTS3pOnJrqYmqq6v1ySefaPjw4cFtLpdLw4cP19KlSy1WFr5vv/1W+fn56ty5s8aNG6fNmzdLkj755BPV1NSEtLVH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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "visualize_learning_process(n_epochs, losses)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Prediction\n", "Calculate error for train and test data using the just trained model and print out the Mean Squared Error Loss for the training and test data set." ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Error training data: 0.6456071138381958\n", "Error test data: 0.6243733763694763\n" ] } ], "source": [ "with torch.no_grad():\n", " y_pred_train = deep_ff(X_train.view(-1, 11))\n", " y_pred_test = deep_ff(X_test)\n", " error_train = loss_function(y_pred_train[-1], y_train.view(-1, 1))\n", " error_test = loss_function(y_pred_test[-1], y_test)\n", "\n", "print(\"Error training data: \" + str(error_train.item()))\n", "print(\"Error test data: \" + str(error_test.item()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ensemble of Deep Feedforward Neural Network\n", "To increase the performance of the deep feedforward network, it is again recommended to build an ensemble of these models.\n", "\n", "\n", "\n", "### Initialization\n", "The initialization of the ensemble is identical to that of a simple feedforward network." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "deep_ff = deepff.DeepFeedForward(\n", " input_dim=input_dim, hidden_dim=hidden_dim, output_dim=output_dim, deepness=deepness\n", ")\n", "\n", "ens_deep_ff = ensemble.Ensemble(model=deep_ff, n_models=n_models)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Reset the optimizer." ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "optimizer = optim.Adam(ens_deep_ff.parameters(), lr=0.001)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Training Loop\n", "The output of the ensemble model has again one more dimension compared to the deep feed forward model. It has `shape = (n_models + 1, deepness, input_dim)` and the loss has to be calculated for all submodels (first `n_models`) and all levels of deepness. \n", "The most reliable prediction is expected in the mean output of the ensemble and the highest level of the deep feedforward model (`best_prediction = ens_deep_ff(X)[-1, -1]`). " ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "losses = [0] * n_epochs\n", "\n", "# Training\n", "for epoch in range(n_epochs):\n", " for X_batch, y_batch in zip(X_train, y_train):\n", " ens_deep_ff.zero_grad()\n", " y_preds, mean = torch.split(ens_deep_ff(X_batch), n_models)\n", " loss = [\n", " loss_function(y_preds[i][j], y_batch)\n", " for j in range(deepness)\n", " for i in range(n_models)\n", " ]\n", " loss = sum(loss) / (n_models * deepness)\n", " loss.backward()\n", " optimizer.step()\n", " loss_mean = loss_function(mean[0, -1], y_batch)\n", " losses[epoch] += loss_mean.detach()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+/ElEQVR4nO3deXwV1cH/8e+9WW4C2QjZBSKbsrugxvxApIKstaL0USwqKA88QuDRutO6oLVNS7WLVLHVCtpH5BEfAUWlLEqsGhRQBEGpUBQUAhQkC5D1nt8fSSa5JAGimZzk8nm/el+5M3Nm7jl3UvL1zDkzHmOMEQAAQJDy2q4AAACAmwg7AAAgqBF2AABAUCPsAACAoEbYAQAAQY2wAwAAghphBwAABDXCDgAACGqEHQAAENQIOwBcM3HiRJ155pmt5ri2rVmzRh6PR2vWrGn0vl9++aU8Ho/mz5/f5PUCWjvCDtCCzZ8/Xx6PR+vXr7ddFVR58sknCRRAKxNquwIA0FhPP/20/H6/lc9+8sknlZCQoIkTJzb5sQcNGqRjx44pPDy80fump6fr2LFjCgsLa/J6Aa0dPTsAWo0jR45IksLCwuTz+SzX5uSq63uqvF6vIiIi5PU2/p9mj8ejiIgIhYSENHpfINgRdoAg8PHHH2vkyJGKiYlRVFSUhgwZorVr1waUKSsr00MPPaTu3bsrIiJC7du318CBA7Vy5UqnTF5enm666SZ16NBBPp9PqampuvLKK/Xll1+etA5LlixRnz59FBERoT59+mjx4sV1yjQ0JqW+8SYTJ05UVFSUduzYoVGjRik6Olrjx493ttUes1O9/6OPPqq//OUv6tq1q3w+ny688EKtW7euTj0WLVqkXr16BdT1VMYBnXnmmdqyZYtycnLk8Xjk8Xg0ePBgSTWXHHNycjRt2jQlJSWpQ4cOkqSvvvpK06ZN09lnn63IyEi1b99e//Ef/1Hne63v+xk8eLD69OmjrVu36gc/+IHatGmjM844Q7Nnzz7l7/Cbb77RmDFjFBUVpcTERN15552qqKgI2P/gwYO64YYbFBMTo7i4OE2YMEGffPIJ44AQFLiMBbRyW7Zs0SWXXKKYmBjdfffdCgsL05///GcNHjxYOTk5ysjIkCTNmjVL2dnZ+s///E9ddNFFKigo0Pr16/XRRx/p8ssvlySNHTtWW7Zs0YwZM3TmmWdq//79WrlypXbt2nXCILBixQqNHTtWvXr1UnZ2tg4ePOiEpu+jvLxcw4cP18CBA/Xoo4+qTZs2Jyy/YMECFRYW6r/+67/k8Xg0e/ZsXX311frXv/7lXN55/fXXde2116pv377Kzs7Wt99+q0mTJumMM844aX3+8Ic/aMaMGYqKitLPf/5zSVJycnJAmWnTpikxMVEPPPCA07Ozbt06vf/++xo3bpw6dOigL7/8UnPnztXgwYO1devWk7br22+/1YgRI3T11Vfrmmuu0csvv6x77rlHffv21ciRI0+4b0VFhYYPH66MjAw9+uijWrVqlR577DF17dpVU6dOlST5/X5dccUV+vDDDzV16lT16NFDS5cu1YQJE076nQCtggHQYs2bN89IMuvWrWuwzJgxY0x4eLjZsWOHs27Pnj0mOjraDBo0yFl3zjnnmNGjRzd4nG+//dZIMr/97W8bXc9zzz3XpKammsOHDzvrVqxYYSSZ9PR0Z93bb79tJJm33347YP+dO3caSWbevHnOugkTJhhJ5t57763zeRMmTAg4bvX+7du3N4cOHXLWL1261Egyr732mrOub9++pkOHDqawsNBZt2bNmjp1bUjv3r3NpZdeWmd99bkaOHCgKS8vD9h29OjROuVzc3ONJPP888876+r7fi699NI65UpKSkxKSooZO3Zsne+gvu/w4YcfDvjs8847z/Tv399Z/r//+z8jyfzhD39w1lVUVJjLLruszjGB1ojLWEArVlFRoRUrVmjMmDHq0qWLsz41NVU/+clP9O6776qgoECSFBcXpy1btuiLL76o91iRkZEKDw/XmjVr9O23355yHfbu3auNGzdqwoQJio2NddZffvnl6tWr13dsWY3q3odTce2116pdu3bO8iWXXCJJ+te//iVJ2rNnjzZv3qwbb7xRUVFRTrlLL71Uffv2/d51laTJkyfXGTcTGRnpvC8rK9PBgwfVrVs3xcXF6aOPPjrpMaOionT99dc7y+Hh4broooucdp3MLbfcErB8ySWXBOy7fPlyhYWFafLkyc46r9errKysUzo+0NIRdoBW7MCBAzp69KjOPvvsOtt69uwpv9+v3bt3S5IefvhhHT58WGeddZb69u2ru+66S5s2bXLK+3w+/eY3v9Gbb76p5ORkDRo0SLNnz1ZeXt4J6/DVV19Jkrp3715nW331aozQ0NBGXQrr1KlTwHJ18KkOb9V17datW51961v3XXTu3LnOumPHjumBBx5Qx44d5fP5lJCQoMTERB0+fFj5+fknPWaHDh3k8XgC1rVr1+6UQmlERIQSExNPuO9XX32l1NTUOpfTmuo7AWwj7ACniUGDBmnHjh169tln1adPHz3zzDM6//zz9cwzzzhlbrvtNv3zn/9Udna2IiIidP/996tnz576+OOPm6QOx//Brnb8YNlqPp+vUTOTGpqJZIw55WN8X7V7carNmDFDv/zlL3XNNdfopZde0ooVK7Ry5Uq1b9/+lKbQf592MTsLIOwArVpiYqLatGmjbdu21dn2+eefy+v1qmPHjs66+Ph43XTTTXrxxRe1e/du9evXT7NmzQrYr2vXrrrjjju0YsUKffrppyotLdVjjz3WYB3S09Mlqd7LY8fXq7qn5fDhwwHrq3tc3FZd1+3bt9fZVt+6+jQU2E7k5Zdf1oQJE/TYY4/pxz/+sS6//HINHDiwzvdgS3p6uvbu3aujR48GrD/V7wRo6Qg7QCsWEhKiYcOGaenSpQHTmPft26cFCxZo4MCBiomJkVQ5tbi2qKgodevWTSUlJZKko0ePqri4OKBM165dFR0d7ZSpT2pqqs4991w999xzAZdkVq5cqa1btwaUTU9PV0hIiN55552A9U8++eSpN/p7SEtLU58+ffT888+rqKjIWZ+Tk6PNmzef0jHatm3b6JASEhJSpxdmzpw5DfZoNbfhw4errKxMTz/9tLPO7/friSeesFgroOkw9RxoBZ599lktX768zvpbb71VjzzyiFauXKmBAwdq2rRpCg0N1Z///GeVlJQE3IulV69eGjx4sPr376/4+HitX79eL7/8sqZPny5J+uc//6khQ4bommuuUa9evRQaGqrFixdr3759Gjdu3Anrl52drdGjR2vgwIG6+eabdejQIc2ZM0e9e/cOCBWxsbH6j//4D82ZM0cej0ddu3bVsmXLtH///ib6pk7uV7/6la688koNGDBAN910k7799lv96U9/Up8+fQLq2pD+/ftr7ty5euSRR9StWzclJSXpsssuO+E+P/zhD/W3v/1NsbGx6tWrl3Jzc7Vq1Sq1b9++qZr1vYwZM0YXXXSR7rjjDm3fvl09evTQq6++qkOHDkn6br1ZQEtC2AFagblz59a7fuLEierdu7f+8Y9/aObMmcrOzpbf71dGRob+53/+x7nHjiT993//t1599VWtWLFCJSUlSk9P1yOPPKK77rpLktSxY0ddd911Wr16tf72t78pNDRUPXr00EsvvaSxY8eesH4jRozQokWLdN9992nmzJnq2rWr5s2bp6VLl9a5geCcOXNUVlamp556Sj6fT9dcc41++9vfqk+fPt/vSzpFV1xxhV588UXNmjVL9957r7p376758+frueee05YtW066/wMPPKCvvvpKs2fPVmFhoS699NKThp0//vGPCgkJ0QsvvKDi4mINGDBAq1at0vDhw5uqWd9LSEiIXn/9dd1666167rnn5PV6ddVVV+nBBx/UgAEDFBERYbuKwPfiMc05cg8AWqhzzz1XiYmJAXeUPt0tWbJEV111ld59910NGDDAdnWA74wxOwBOK2VlZSovLw9Yt2bNGn3yySfOox9OR8eOHQtYrqio0Jw5cxQTE6Pzzz/fUq2ApsFlLACnlW+++UZDhw7V9ddfr7S0NH3++ed66qmnlJKSUufme6eTGTNm6NixY8rMzFRJSYleeeUVvf/++/rVr35V73R6oDXhMhaA00p+fr6mTJmi9957TwcOHFDbtm01ZMgQ/frXv1bXrl1tV8+aBQsW6LHHHtP27dtVXFysbt26aerUqc4AdqA1I+wAAICgxpgdAAAQ1Ag7AAAgqDFAWZV3Ct2zZ4+io6O5eRYAAK2EMUaFhYVKS0s74XP0CDuS9uzZE/D8IAAA0Hrs3r1bHTp0aHA7YUdSdHS0pMovq/o5QgAAoGUrKChQx44dnb/jDSHsqOa5LzExMYQdAABamZMNQWGAMgAACGqEHQAAENQIOwAAIKgRdgAAQFAj7AAAgKBG2AEAAEGNsAMAAIIaYQcAAAQ1wg4AAAhqhB0AABDUCDsAACCoEXYAAEBQ40GgLtpXUKzScr8So32KCAuxXR0AAE5L9Oy46Lq/rNUls9/Wpq/zbVcFAIDTltWwk52drQsvvFDR0dFKSkrSmDFjtG3btoAygwcPlsfjCXjdcsstAWV27dql0aNHq02bNkpKStJdd92l8vLy5mxK/aqeOG+MsVsPAABOY1YvY+Xk5CgrK0sXXnihysvL9bOf/UzDhg3T1q1b1bZtW6fc5MmT9fDDDzvLbdq0cd5XVFRo9OjRSklJ0fvvv6+9e/fqxhtvVFhYmH71q181a3uOV5V1RNQBAMAeq2Fn+fLlAcvz589XUlKSNmzYoEGDBjnr27Rpo5SUlHqPsWLFCm3dulWrVq1ScnKyzj33XP3iF7/QPffco1mzZik8PNzVNpyIx1MZd+jYAQDAnhY1Zic/v3JsS3x8fMD6F154QQkJCerTp49mzpypo0ePOttyc3PVt29fJScnO+uGDx+ugoICbdmypXkqDgAAWqwWMxvL7/frtttu04ABA9SnTx9n/U9+8hOlp6crLS1NmzZt0j333KNt27bplVdekSTl5eUFBB1JznJeXl69n1VSUqKSkhJnuaCgoKmbI6n2ZSy6dgAAsKXFhJ2srCx9+umnevfddwPWT5kyxXnft29fpaamasiQIdqxY4e6du36nT4rOztbDz300Peq76nwMGgHAADrWsRlrOnTp2vZsmV6++231aFDhxOWzcjIkCRt375dkpSSkqJ9+/YFlKlebmicz8yZM5Wfn++8du/e/X2bUC9PVd8OWQcAAHushh1jjKZPn67FixfrrbfeUufOnU+6z8aNGyVJqampkqTMzExt3rxZ+/fvd8qsXLlSMTEx6tWrV73H8Pl8iomJCXi5weNMPXfl8AAA4BRYvYyVlZWlBQsWaOnSpYqOjnbG2MTGxioyMlI7duzQggULNGrUKLVv316bNm3ST3/6Uw0aNEj9+vWTJA0bNky9evXSDTfcoNmzZysvL0/33XefsrKy5PP5bDbPwZgdAADssdqzM3fuXOXn52vw4MFKTU11Xv/7v/8rSQoPD9eqVas0bNgw9ejRQ3fccYfGjh2r1157zTlGSEiIli1bppCQEGVmZur666/XjTfeGHBfHluYeg4AgH1We3ZOdmfhjh07Kicn56THSU9P1xtvvNFU1WoyjE8GAMC+FjFAOVh5eFwEAADWEXZc5IQdu9UAAOC0RthxkUekHQAAbCPsuKimZ4e0AwCALYQdFzkDlMk6AABYQ9hxE1PPAQCwjrDjIqaeAwBgH2HHRUw9BwDAPsKOi+jZAQDAPsKOi3hcBAAA9hF2XORx3pF2AACwhbDjopoxO3brAQDA6Yyw46LqOyiTdQAAsIew4yZ6dgAAsI6w46Ka2VikHQAAbCHsuIgxOwAA2EfYcRFjdgAAsI+w4yLuoAwAgH2EHRd5PCcvAwAA3EXYcZFzGYuOHQAArCHsuMi5jMWoHQAArCHsNAN6dgAAsIew4yIeBAoAgH2EHRfV3FQQAADYQthpBkw9BwDAHsKOi2oGKAMAAFsIOy5ybrND2gEAwBrCjos83FUQAADrCDsu4qnnAADYR9hxEU89BwDAPsKOq3jqOQAAthF2XETPDgAA9hF2XMSYHQAA7CPsuIieHQAA7CPsuMjDmB0AAKwj7LjIuc0OXTsAAFhD2HERj4sAAMA+wo6LnMtYpB0AAKwh7LjJGaBM2gEAwBbCjotqpp4DAABbCDsuqn4QKB07AADYQ9hxET07AADYR9hxkYcxOwAAWEfYcZHn5EUAAIDLCDsuYswOAAD2EXZcxINAAQCwj7DjJh4ECgCAdYQdF/EgUAAA7CPsuMhDzw4AANYRdlzEmB0AAOwj7LiInh0AAOwj7LjIw512AACwjrDjIu6gDACAfYQdF3EZCwAA+wg7rmLqOQAAthF2mgE9OwAA2EPYcZFzGYu+HQAArCHsuMi5zw5ZBwAAawg7Lqrp2QEAALYQdlzk4UmgAABYR9hxET07AADYR9hxEWN2AACwj7DjIo+n+j47pB0AAGwh7AAAgKBG2HERj4sAAMA+wo6LPDwuAgAA6wg7LqJnBwAA+wg7LnJmY9G3AwCANYQdF3lq0g4AALCEsOOimqnnAADAFqthJzs7WxdeeKGio6OVlJSkMWPGaNu2bQFliouLlZWVpfbt2ysqKkpjx47Vvn37Asrs2rVLo0ePVps2bZSUlKS77rpL5eXlzdmUetXcVJC4AwCALVbDTk5OjrKysrR27VqtXLlSZWVlGjZsmI4cOeKU+elPf6rXXntNixYtUk5Ojvbs2aOrr77a2V5RUaHRo0ertLRU77//vp577jnNnz9fDzzwgI0mBWKAMgAA1nlMC+p2OHDggJKSkpSTk6NBgwYpPz9fiYmJWrBggX784x9Lkj7//HP17NlTubm5uvjii/Xmm2/qhz/8ofbs2aPk5GRJ0lNPPaV77rlHBw4cUHh4+Ek/t6CgQLGxscrPz1dMTEyTtefXb36up3J2aNLAzrr/h72a7LgAAODU/363qDE7+fn5kqT4+HhJ0oYNG1RWVqahQ4c6ZXr06KFOnTopNzdXkpSbm6u+ffs6QUeShg8froKCAm3ZsqXezykpKVFBQUHAyw1MPQcAwL4WE3b8fr9uu+02DRgwQH369JEk5eXlKTw8XHFxcQFlk5OTlZeX55SpHXSqt1dvq092drZiY2OdV8eOHZu4NZWYeg4AgH0tJuxkZWXp008/1cKFC13/rJkzZyo/P9957d6925XPoWcHAAD7Qm1XQJKmT5+uZcuW6Z133lGHDh2c9SkpKSotLdXhw4cDenf27dunlJQUp8yHH34YcLzq2VrVZY7n8/nk8/mauBV1eZy+HQAAYIvVnh1jjKZPn67FixfrrbfeUufOnQO29+/fX2FhYVq9erWzbtu2bdq1a5cyMzMlSZmZmdq8ebP279/vlFm5cqViYmLUq5fdQcE1PTt07QAAYIvVnp2srCwtWLBAS5cuVXR0tDPGJjY2VpGRkYqNjdWkSZN0++23Kz4+XjExMZoxY4YyMzN18cUXS5KGDRumXr166YYbbtDs2bOVl5en++67T1lZWc3Se3Mi3EAZAAD7rIaduXPnSpIGDx4csH7evHmaOHGiJOn3v/+9vF6vxo4dq5KSEg0fPlxPPvmkUzYkJETLli3T1KlTlZmZqbZt22rChAl6+OGHm6sZDau+gzJpBwAAa6yGnVO5vBMREaEnnnhCTzzxRINl0tPT9cYbbzRl1ZoEs7EAALCvxczGCkbMxgIAwD7CjouqZ2ORdQAAsIew4yJ6dgAAsI+w46Kau+yQdgAAsIWw4yJ6dgAAsI+w4yIPU88BALCOsNMMmHoOAIA9hJ1mQM8OAAD2EHZc5IzZsVsNAABOa4QdFzn32SHtAABgDWHHRTU9O6QdAABsIey4yLnPDlkHAABrCDsuYswOAAD2EXZcVDNmh7gDAIAthB0X0bMDAIB9hJ1mQMcOAAD2EHZc5DwuwnI9AAA4nRF2XOQ5eREAAOAywo6Lap56Tt8OAAC2EHZcVN2zQ9QBAMAewo6LPEzHAgDAOsKOi3hcBAAA9hF2XORcxiLrAABgDWHHTR6eeg4AgG2EHRfVDFAm7QAAYAthx0U1U8/t1gMAgNMZYcdFzoNALdcDAIDTGWHHRfTsAABgH2HHRTWPiyDtAABgC2HHRfTsAABgH2HHRYzZAQDAPsKOm3gQKAAA1hF2XMSDQAEAsI+w4yIPd1AGAMA6wo6L6NkBAMA+wo6LPIzZAQDAOsKOizyek5cBAADuIuw0Azp2AACwh7Djopr77JB2AACwhbDjIu6gDACAfYSdZkDYAQDAHsKOi5z77HAZCwAAawg7LnLus0PWAQDAGsKOi5wxO3arAQDAaY2w4yKPSDsAANhG2HFRTc8OaQcAAFsIOy5izA4AAPYRdlzEmB0AAOwj7Liqauo5XTsAAFhD2HERPTsAANhH2HERY3YAALCPsOOimjsoAwAAWwg7LvKcvAgAAHAZYcdFHq5jAQBgHWHHRQxQBgDAPsKOizzO1HPLFQEA4DRG2HETj4sAAMA6wo6LGLIDAIB9hB0XOVPPCTsAAFhD2HGR07NjtRYAAJzeCDsucmZj0bUDAIA1hB0XebitIAAA1hF2XFTTs2O3HgAAnM4IOy6qGbND2gEAwBbCjpvo2QEAwLpGhZ3Zs2fr2LFjzvJ7772nkpISZ7mwsFDTpk1rutq1cs4dlC3XAwCA01mjws7MmTNVWFjoLI8cOVLffPONs3z06FH9+c9/brratXLMxgIAwL5GhZ3j/2jzR/zEuM8OAAD2MWbHRR4eew4AgHVWw84777yjK664QmlpafJ4PFqyZEnA9okTJ8rj8QS8RowYEVDm0KFDGj9+vGJiYhQXF6dJkyapqKioGVtxcmQdAADsCW3sDs8884yioqIkSeXl5Zo/f74SEhIkKWA8z6k4cuSIzjnnHN188826+uqr6y0zYsQIzZs3z1n2+XwB28ePH6+9e/dq5cqVKisr00033aQpU6ZowYIFjaqLGxizAwCAfY0KO506ddLTTz/tLKekpOhvf/tbnTKnauTIkRo5cuQJy/h8PqWkpNS77bPPPtPy5cu1bt06XXDBBZKkOXPmaNSoUXr00UeVlpZ2ynVxA2N2AACwr1Fh58svv3SpGg1bs2aNkpKS1K5dO1122WV65JFH1L59e0lSbm6u4uLinKAjSUOHDpXX69UHH3ygq666qt5jlpSUBEyZLygocKXu3EEZAAD7WvQA5REjRuj555/X6tWr9Zvf/EY5OTkaOXKkKioqJEl5eXlKSkoK2Cc0NFTx8fHKy8tr8LjZ2dmKjY11Xh07dnSpBdX32SHtAABgS6PCTm5urpYtWxaw7vnnn1fnzp2VlJSkKVOmBPSYfF/jxo3Tj370I/Xt21djxozRsmXLtG7dOq1Zs+Z7HXfmzJnKz893Xrt3726aCh+Hnh0AAOxrVNh5+OGHtWXLFmd58+bNmjRpkoYOHap7771Xr732mrKzs5u8ktW6dOmihIQEbd++XVLlmKH9+/cHlCkvL9ehQ4caHOcjVY4DiomJCXi5wRmzQ9gBAMCaRoWdjRs3asiQIc7ywoULlZGRoaefflq33367Hn/8cb300ktNXslqX3/9tQ4ePKjU1FRJUmZmpg4fPqwNGzY4Zd566y35/X5lZGS4Vo9T5dxnBwAAWNOoAcrffvutkpOTneXqMTTVLrzwwkZdEioqKnJ6aSRp586d2rhxo+Lj4xUfH6+HHnpIY8eOVUpKinbs2KG7775b3bp10/DhwyVJPXv21IgRIzR58mQ99dRTKisr0/Tp0zVu3DjrM7Gk2j07dO0AAGBLo3p2kpOTtXPnTklSaWmpPvroI1188cXO9sLCQoWFhZ3y8davX6/zzjtP5513niTp9ttv13nnnacHHnhAISEh2rRpk370ox/prLPO0qRJk9S/f3/94x//CLjXzgsvvKAePXpoyJAhGjVqlAYOHKi//OUvjWmWa7iBMgAA9jWqZ2fUqFG699579Zvf/EZLlixRmzZtdMkllzjbN23apK5du57y8QYPHnzCXo+///3vJz1GfHx8i7iBYH2cp56TdgAAsKZRYecXv/iFrr76al166aWKiorS/PnzFR4e7mx/9tlnNWzYsCavZGtV07ND2gEAwJZGhZ2EhAS98847ys/PV1RUlEJCQgK2L1q0SNHR0U1awWBAzw4AAPY0KuzcfPPNp1Tu2Wef/U6VCTaM2QEAwL5GhZ358+crPT1d5513HjOMTgFjdgAAsK9RYWfq1Kl68cUXtXPnTt100026/vrrFR8f71bdWr2a2+yQdgAAsKVRU8+feOIJ7d27V3fffbdee+01dezYUddcc43+/ve/09NTDx4XAQCAfY1+EKjP59N1112nlStXauvWrerdu7emTZumM888U0VFRW7UsdVyLmNZrgcAAKez7/XUc6/XK4/HI2OM8yRy1Kjp2SHuAABgS6PDTklJiV588UVdfvnlOuuss7R582b96U9/0q5duxQVFeVGHVstnowFAIB9jRqgPG3aNC1cuFAdO3bUzTffrBdffFEJCQlu1a3VY+o5AAD2NSrsPPXUU+rUqZO6dOminJwc5eTk1FvulVdeaZLKtX5MPQcAwLZGhZ0bb7xRHg8XZ04VY3YAALCv0TcVxKmrjoVEHQAA7Ples7FwYh4G7QAAYB1hx0X07AAAYB9hx0WM2QEAwD7Cjou4gzIAAPYRdlzEs7EAALCPsNMMDH07AABYQ9hxET07AADYR9hpBmQdAADsIey4iPvsAABgH2HHRTX32SHtAABgC2HHRYzZAQDAPsKOi7jPDgAA9hF2XMQdlAEAsI+w4yKejQUAgH2EHTcxZgcAAOsIOy7yOH07AADAFsKOizy1sg7jdgAAsIOw46La/TpkHQAA7CDsuMhTq2uHrAMAgB2EHRcF9uwQdwAAsIGw46KAMTv2qgEAwGmNsOOi2rOx6NgBAMAOwo6bAnp2SDsAANhA2HFR4NRze/UAAOB0RthxEbcUBADAPsKOiwKmntOzAwCAFYQdFwVMPWfMDgAAVhB2XMSYHQAA7CPsuChg6rnFegAAcDoj7LiIB4ECAGAfYQcAAAQ1wo6LeFwEAAD2EXZcxOMiAACwj7DjIk/g3HMAAGABYcdF3GcHAAD7CDsu4g7KAADYR9hxEVexAACwj7DjIu6zAwCAfYQdFwVcxrJYDwAATmeEnWZCxw4AAHYQdpoJs7EAALCDsOMy50oWWQcAACsIOy4j6wAAYBdhx2XVg5QZswMAgB2EHZfV9OyQdgAAsIGw47LqMTv07AAAYAdhx2XVTz4n6wAAYAdhx21Ozw5xBwAAGwg7LnPG7JB1AACwgrDjstrPxwIAAM2PsOMyZ8wOPTsAAFhB2HGZMxuLIcoAAFhB2HEZY3YAALCLsOMy5w7KlusBAMDpirDjspqeHeIOAAA2EHbc5ozZAQAANlgNO++8846uuOIKpaWlyePxaMmSJQHbjTF64IEHlJqaqsjISA0dOlRffPFFQJlDhw5p/PjxiomJUVxcnCZNmqSioqJmbMWJMWYHAAC7rIadI0eO6JxzztETTzxR7/bZs2fr8ccf11NPPaUPPvhAbdu21fDhw1VcXOyUGT9+vLZs2aKVK1dq2bJleueddzRlypTmasJJeTw1jwIFAADNL9Tmh48cOVIjR46sd5sxRn/4wx9033336corr5QkPf/880pOTtaSJUs0btw4ffbZZ1q+fLnWrVunCy64QJI0Z84cjRo1So8++qjS0tKarS0N4UGgAADY1WLH7OzcuVN5eXkaOnSosy42NlYZGRnKzc2VJOXm5iouLs4JOpI0dOhQeb1effDBB81e5/rQrwMAgF1We3ZOJC8vT5KUnJwcsD45OdnZlpeXp6SkpIDtoaGhio+Pd8rUp6SkRCUlJc5yQUFBU1W7DmfqOWkHAAArWmzPjpuys7MVGxvrvDp27OjaZ9X07JB2AACwocWGnZSUFEnSvn37Atbv27fP2ZaSkqL9+/cHbC8vL9ehQ4ecMvWZOXOm8vPzndfu3bubuPY1GLMDAIBdLTbsdO7cWSkpKVq9erWzrqCgQB988IEyMzMlSZmZmTp8+LA2bNjglHnrrbfk9/uVkZHR4LF9Pp9iYmICXu7hMhYAADZZHbNTVFSk7du3O8s7d+7Uxo0bFR8fr06dOum2227TI488ou7du6tz5866//77lZaWpjFjxkiSevbsqREjRmjy5Ml66qmnVFZWpunTp2vcuHEtYiaWxINAAQCwzWrYWb9+vX7wgx84y7fffrskacKECZo/f77uvvtuHTlyRFOmTNHhw4c1cOBALV++XBEREc4+L7zwgqZPn64hQ4bI6/Vq7Nixevzxx5u9LQ3hpoIAANjlMTy0SQUFBYqNjVV+fn6TX9LK+NUq7Sso0bIZA9XnjNgmPTYAAKezU/373WLH7AQLj9O3AwAAbCDsuIzZWAAA2EXYcRn32QEAwC7CTjOhZwcAADsIOy5zHhdhuR4AAJyuCDvNhElvAADYQdhxWc1NBQEAgA2EHZcxGwsAALsIOy7z1JqPBQAAmh9hx2X07AAAYBdhx2X06wAAYBdhx2XO1HPSDgAAVhB2XFbz1HPSDgAANhB23MbUcwAArCLsuKymZ8dqNQAAOG0RdlxW87gI0g4AADYQdlxW3bND1gEAwA7Cjst4XAQAAHYRdlxWfQdlxuwAAGAHYcdlNT07pB0AAGwg7DQTenYAALCDsOOymtlYAADABsKOy7iDMgAAdhF2XMZsLAAA7CLsuMzDY88BALCKsOMyZ+o5aQcAACsIOy5zLmORdQAAsIKw4zIeBAoAgF2EHbcx9RwAAKsIOy5j6jkAAHYRdlzG1HMAAOwi7LiMMTsAANhF2HGZhxvtAABgFWHHZfTsAABgF2HHZU7HDgAAsIKw00zo2AEAwA7Cjsucx0WQdgAAsIKw4zZn6jlpBwAAGwg7LmOAMgAAdhF2XMZNBQEAsIuw47KaMTvEHQAAbCDsuIyp5wAA2EXYcZlzGYuOHQAArCDsuMy5jMWoHQAArCDsuIyeHQAA7CLsNBPCDgAAdhB2XBbirezaqfCTdgAAsIGw47K24aGSpCOl5ZZrAgDA6Ymw47K2vhBJ0pESwg4AADYQdlzW1lfZs1NUUmG5JgAAnJ4IOy6Lqgo79OwAAGAHYcdlbQk7AABYRdhxmRN2GKAMAIAVhB2XRTkDlBmzAwCADYQdl1VPPS/iMhYAAFYQdlzGAGUAAOwi7LiMAcoAANhF2HFZzX12CDsAANhA2HGZcwfl0goZngYKAECzI+y4rLpnp8JvVFLut1wbAABOP4Qdl1XPxpK4lAUAgA2EHZeFeD2KDKu8lHWUe+0AANDsCDvNgEHKAADYQ9hpBs5dlHlkBAAAzY6w0wzo2QEAwB7CTjPgxoIAANhD2GkGPDICAAB7CDvNoOYyFrOxAABoboSdZlA9QLmwuMxyTQAAOP0QdppBh3ZtJEk7DhyxXBMAAE4/LTrszJo1Sx6PJ+DVo0cPZ3txcbGysrLUvn17RUVFaezYsdq3b5/FGtevd1qMJGnLnnzLNQEA4PTTosOOJPXu3Vt79+51Xu+++66z7ac//alee+01LVq0SDk5OdqzZ4+uvvpqi7WtX++0WEnSzn8fYZAyAADNLPTkRewKDQ1VSkpKnfX5+fn661//qgULFuiyyy6TJM2bN089e/bU2rVrdfHFFzd3VRuUGO1TYrRPBwpL9Hleofqnt7NdJQAAThstvmfniy++UFpamrp06aLx48dr165dkqQNGzaorKxMQ4cOdcr26NFDnTp1Um5u7gmPWVJSooKCgoCX26ovZW3lUhYAAM2qRYedjIwMzZ8/X8uXL9fcuXO1c+dOXXLJJSosLFReXp7Cw8MVFxcXsE9ycrLy8vJOeNzs7GzFxsY6r44dO7rYikrVYWftzkOufxYAAKjRoi9jjRw50nnfr18/ZWRkKD09XS+99JIiIyO/83Fnzpyp22+/3VkuKChwPfCM7JOqJ97eoTc379X2/UXqlhT1vY9ZXFah/QUlOnikRIXF5SooLlNhcbmKistVWuFXhd+ovMKvcr+RJIWHeuULDan66VV4qFcxEaGKjQxXXJuwyldkuCLCvPJ4PN+7fgAAtAQtOuwcLy4uTmeddZa2b9+uyy+/XKWlpTp8+HBA786+ffvqHeNTm8/nk8/nc7m2gfqcEauhPZO16rN9emDpp3p24oWKCAs54T4VfqOvvz2qHQeKtH1/kb48eFR5+cXam1+sfQXFOnSk1JW6hod4FdcmTAlRPiXF+JRY9TMpOkJJVeOPkqIjlBTjO2kbAACwrVWFnaKiIu3YsUM33HCD+vfvr7CwMK1evVpjx46VJG3btk27du1SZmam5ZrW787hZ+nd7Qf0/o6DuvrJ93XL4K7qe0asPJL2FVSGmH8dKNL2A0Xasf+Idh48otJy/wmPGR7qVWKUT9ERoYqJCFNMZKiifKEKD/UqxOtVWIhHIV6PjJFKK/wqLferpNyv0vIKlZT7VVhcrsNHS5V/rFz5x0pVVmFUWuHX/sIS7S8s0da9J25TdERo5QDsKJ8zEDsx2qeE6uUon5KifYpvG67QkBZ91RQAEKQ8xhhjuxINufPOO3XFFVcoPT1de/bs0YMPPqiNGzdq69atSkxM1NSpU/XGG29o/vz5iomJ0YwZMyRJ77//fqM+p6CgQLGxscrPz1dMTIwbTXF8uPOQJj23ToXFpzYFPTzUqy4JbdU1KUpdE9oqNS5SKbERSompfMW1CWuyS07GGB0trdDhY2X69kipDhSV6EBBifYXFutAVfipfBVrf0GJSk4SxGrzeKT2bcPVrk24oiNCFR0RppjIMCekRUeEKjIsRGGhXvlCKi+xhYd6FR7iVVhoZWgLD/EqNKTyfViIV6Heyp9hVetCQ7xVZTwK9Xq4FAcAQe5U/3636J6dr7/+Wtddd50OHjyoxMREDRw4UGvXrlViYqIk6fe//728Xq/Gjh2rkpISDR8+XE8++aTlWp/YRZ3jtebOwXrm3Z16+/P92nXoqPzGKLkqvHRJbKuuiVHqmhSlbolRSouLVIi3ef5oezwetfWFqq0vVGfEnXhMlDFGhSXl2l9QogOFJZXBqLBE/6766byKSnSwqER+I/27qFT/LnLn0lt9qkNRRFiIfKE1P31hIYoIDVwfEVY5niki7Ljytcsct29EWIgiq/aNCA9RRGiIwkIIWQDQ0rTonp3m0pw9O6ejCr/RoSOlOlBYosNHS1VQXK7C4rKan8cqfxZXXV4rLfdXXk4r96uk6tJb9UDr0nK/yv2V28sq/Cqr8Ku8wjiDsG0L8XoUEepVZHhI3UB03HJkWIjTg1XdQxUeUnvZU9O7VdXDVbm9pkerento1eXKUK9XIV6Pc/ky1OuV1yMCGICgFBQ9OwgOIV6PM5bHLcYYlVWYyiBUblTmrwxC1WOUissqnJ/FZX6VlFf+rL2+pKEy5RUqqfpZvb6kat9jZRUqLqtQddaq8BsdKa3QkdKW9YT7UK+n6vKetyoEeZyfoVWXBEOq14V4Ksd7Hbcc6pSvWa59rBCvR15P5SvEq8r3Xo+8Himk6nEvIVXL3qqylevl7O+pWhdQpvpYtY7tlKu1rXL/ms/yeKTKTtHq9x55VHlJ1VO1rvq911trneTs71HVfsfvU3Usb61yCviMyjZ45KlaX7NPdV1U673zmao5PoCmQ9hBUPB4PAoP9ShcXim8eT/bmMpB3dXh6VhphYrLq36WVYen6mDkdwLSsdKKykBWFcoqe6rMccuV4a2kwq+yWutKy/0qrerdKi2vus2A36+GOrjK/dW9X6c+zgp2nTSg1QpQTtA6LqDVBL2a/WsHrTphq3bYCzhOrePX+nw55eqGtdrBLrD+x22rei+nTYEBVHVCZ1UbAtp03PGddtTXvlr7HP/9HbdPTftqfba31vd3XJ0bbnsDn++E4drfXe1z5Als23Hn6fhz0qgg3sB/CAT8flRtr77+Y1T5pvbvUkP/UVH7d6f6eMkxEQqzNFGFsAN8Tx6PR77QEPlCQxQbGWa1Lv6qUFMdfqov8VUvV/gre8BqL5f7TVW5muWKqmVn36p9yqrL1F6uMCrzGxlj5DdGFf7KAFjhN/Ibye+sr1r2Vy0bI2NUtb7q5VfV+rr7n2hb7c+sMEaq/F9VnSr/kTZGVS9Tta1y/+r3Nesrf/r9Vf+0H1eu+r2qjus/7phNxZjK9tZa03QHByx4645L1SXx+99j7rsg7ABBxOv1KNwZ0M49kGwwVSHOqCoYHR+2qt7XCVr1BLTKoFVrf1WGMOn4sFbr5/GfXc/nHx/Q6gTABj6/TtDzB9ZZqq/ttetVfZz66xz4GXXr6Tf1tb12+2odv/Y6Hd/2uvvUrrPqOXe12+c/rs612+Kv3eba7TuuzjruPFS/D2hfrToroC71n7vjz0lAO6vaJBPY1vr+Q+D49lX30FT/y9Lw71r9v/vVbfLW7uppZoQdAGhCnlrd9yGy9487gBrc5Q0AAAQ1wg4AAAhqhB0AABDUCDsAACCoEXYAAEBQI+wAAICgRtgBAABBjbADAACCGmEHAAAENcIOAAAIaoQdAAAQ1Ag7AAAgqBF2AABAUCPsAACAoBZquwItgTFGklRQUGC5JgAA4FRV/92u/jveEMKOpMLCQklSx44dLdcEAAA0VmFhoWJjYxvc7jEni0OnAb/frz179ig6Oloej6fJjltQUKCOHTtq9+7diomJabLjtiTB3sZgb58U/G0M9vZJwd/GYG+fFPxtdKt9xhgVFhYqLS1NXm/DI3Po2ZHk9XrVoUMH144fExMTlL+8tQV7G4O9fVLwtzHY2ycFfxuDvX1S8LfRjfadqEenGgOUAQBAUCPsAACAoEbYcZHP59ODDz4on89nuyquCfY2Bnv7pOBvY7C3Twr+NgZ7+6Tgb6Pt9jFAGQAABDV6dgAAQFAj7AAAgKBG2AEAAEGNsAMAAIIaYcdFTzzxhM4880xFREQoIyNDH374oe0qfSezZs2Sx+MJePXo0cPZXlxcrKysLLVv315RUVEaO3as9u3bZ7HGJ/fOO+/oiiuuUFpamjwej5YsWRKw3RijBx54QKmpqYqMjNTQoUP1xRdfBJQ5dOiQxo8fr5iYGMXFxWnSpEkqKipqxlY07GTtmzhxYp1zOmLEiIAyLbl92dnZuvDCCxUdHa2kpCSNGTNG27ZtCyhzKr+Xu3bt0ujRo9WmTRslJSXprrvuUnl5eXM2pUGn0sbBgwfXOY+33HJLQJmW2sa5c+eqX79+zk3mMjMz9eabbzrbW/v5k07extZ8/urz61//Wh6PR7fddpuzrsWcRwNXLFy40ISHh5tnn33WbNmyxUyePNnExcWZffv22a5aoz344IOmd+/eZu/evc7rwIEDzvZbbrnFdOzY0axevdqsX7/eXHzxxeb//b//Z7HGJ/fGG2+Yn//85+aVV14xkszixYsDtv/61782sbGxZsmSJeaTTz4xP/rRj0znzp3NsWPHnDIjRoww55xzjlm7dq35xz/+Ybp162auu+66Zm5J/U7WvgkTJpgRI0YEnNNDhw4FlGnJ7Rs+fLiZN2+e+fTTT83GjRvNqFGjTKdOnUxRUZFT5mS/l+Xl5aZPnz5m6NCh5uOPPzZvvPGGSUhIMDNnzrTRpDpOpY2XXnqpmTx5csB5zM/Pd7a35Da++uqr5vXXXzf//Oc/zbZt28zPfvYzExYWZj799FNjTOs/f8acvI2t+fwd78MPPzRnnnmm6devn7n11lud9S3lPBJ2XHLRRReZrKwsZ7miosKkpaWZ7Oxsi7X6bh588EFzzjnn1Lvt8OHDJiwszCxatMhZ99lnnxlJJjc3t5lq+P0cHwb8fr9JSUkxv/3tb511hw8fNj6fz7z44ovGGGO2bt1qJJl169Y5Zd58803j8XjMN99802x1PxUNhZ0rr7yywX1aU/uMMWb//v1GksnJyTHGnNrv5RtvvGG8Xq/Jy8tzysydO9fExMSYkpKS5m3AKTi+jcZU/rGs/YfleK2tje3atTPPPPNMUJ6/atVtNCZ4zl9hYaHp3r27WblyZUCbWtJ55DKWC0pLS7VhwwYNHTrUWef1ejV06FDl5uZarNl398UXXygtLU1dunTR+PHjtWvXLknShg0bVFZWFtDWHj16qFOnTq22rTt37lReXl5Am2JjY5WRkeG0KTc3V3FxcbrgggucMkOHDpXX69UHH3zQ7HX+LtasWaOkpCSdffbZmjp1qg4ePOhsa23ty8/PlyTFx8dLOrXfy9zcXPXt21fJyclOmeHDh6ugoEBbtmxpxtqfmuPbWO2FF15QQkKC+vTpo5kzZ+ro0aPOttbSxoqKCi1cuFBHjhxRZmZmUJ6/49tYLRjOX1ZWlkaPHh1wvqSW9f9DHgTqgn//+9+qqKgIOHmSlJycrM8//9xSrb67jIwMzZ8/X2effbb27t2rhx56SJdccok+/fRT5eXlKTw8XHFxcQH7JCcnKy8vz06Fv6fqetd3/qq35eXlKSkpKWB7aGio4uPjW0W7R4wYoauvvlqdO3fWjh079LOf/UwjR45Ubm6uQkJCWlX7/H6/brvtNg0YMEB9+vSRpFP6vczLy6v3HFdva0nqa6Mk/eQnP1F6errS0tK0adMm3XPPPdq2bZteeeUVSS2/jZs3b1ZmZqaKi4sVFRWlxYsXq1evXtq4cWPQnL+G2ii1/vMnSQsXLtRHH32kdevW1dnWkv5/SNjBSY0cOdJ5369fP2VkZCg9PV0vvfSSIiMjLdYM39W4ceOc93379lW/fv3UtWtXrVmzRkOGDLFYs8bLysrSp59+qnfffdd2VVzTUBunTJnivO/bt69SU1M1ZMgQ7dixQ127dm3uajba2WefrY0bNyo/P18vv/yyJkyYoJycHNvValINtbFXr16t/vzt3r1bt956q1auXKmIiAjb1TkhLmO5ICEhQSEhIXVGnO/bt08pKSmWatV04uLidNZZZ2n79u1KSUlRaWmpDh8+HFCmNbe1ut4nOn8pKSnav39/wPby8nIdOnSoVba7S5cuSkhI0Pbt2yW1nvZNnz5dy5Yt09tvv60OHTo460/l9zIlJaXec1y9raVoqI31ycjIkKSA89iS2xgeHq5u3bqpf//+ys7O1jnnnKM//vGPQXX+GmpjfVrb+duwYYP279+v888/X6GhoQoNDVVOTo4ef/xxhYaGKjk5ucWcR8KOC8LDw9W/f3+tXr3aWef3+7V69eqAa7WtVVFRkXbs2KHU1FT1799fYWFhAW3dtm2bdu3a1Wrb2rlzZ6WkpAS0qaCgQB988IHTpszMTB0+fFgbNmxwyrz11lvy+/3OP1ityddff62DBw8qNTVVUstvnzFG06dP1+LFi/XWW2+pc+fOAdtP5fcyMzNTmzdvDgh1K1euVExMjHOZwaaTtbE+GzdulKSA89iS23g8v9+vkpKSoDh/DaluY31a2/kbMmSINm/erI0bNzqvCy64QOPHj3fet5jz2GRDnRFg4cKFxufzmfnz55utW7eaKVOmmLi4uIAR563FHXfcYdasWWN27txp3nvvPTN06FCTkJBg9u/fb4ypnFrYqVMn89Zbb5n169ebzMxMk5mZabnWJ1ZYWGg+/vhj8/HHHxtJ5ne/+535+OOPzVdffWWMqZx6HhcXZ5YuXWo2bdpkrrzyynqnnp933nnmgw8+MO+++67p3r17i5mafaL2FRYWmjvvvNPk5uaanTt3mlWrVpnzzz/fdO/e3RQXFzvHaMntmzp1qomNjTVr1qwJmLZ79OhRp8zJfi+rp7wOGzbMbNy40SxfvtwkJia2mGm9J2vj9u3bzcMPP2zWr19vdu7caZYuXWq6dOliBg0a5ByjJbfx3nvvNTk5OWbnzp1m06ZN5t577zUej8esWLHCGNP6z58xJ25jaz9/DTl+hllLOY+EHRfNmTPHdOrUyYSHh5uLLrrIrF271naVvpNrr73WpKammvDwcHPGGWeYa6+91mzfvt3ZfuzYMTNt2jTTrl0706ZNG3PVVVeZvXv3Wqzxyb399ttGUp3XhAkTjDGV08/vv/9+k5ycbHw+nxkyZIjZtm1bwDEOHjxorrvuOhMVFWViYmLMTTfdZAoLCy20pq4Tte/o0aNm2LBhJjEx0YSFhZn09HQzefLkOkG8JbevvrZJMvPmzXPKnMrv5ZdffmlGjhxpIiMjTUJCgrnjjjtMWVlZM7emfidr465du8ygQYNMfHy88fl8plu3buauu+4KuE+LMS23jTfffLNJT0834eHhJjEx0QwZMsQJOsa0/vNnzInb2NrPX0OODzst5Tx6jDGm6fqJAAAAWhbG7AAAgKBG2AEAAEGNsAMAAIIaYQcAAAQ1wg4AAAhqhB0AABDUCDsAACCoEXYAoB4ej0dLliyxXQ0ATYCwA6DFmThxojweT53XiBEjbFcNQCsUarsCAFCfESNGaN68eQHrfD6fpdoAaM3o2QHQIvl8PqWkpAS82rVrJ6nyEtPcuXM1cuRIRUZGqkuXLnr55ZcD9t+8ebMuu+wyRUZGqn379poyZYqKiooCyjz77LPq3bu3fD6fUlNTNX369IDt//73v3XVVVepTZs26t69u1599VV3Gw3AFYQdAK3S/fffr7Fjx+qTTz7R+PHjNW7cOH322WeSpCNHjmj48OFq166d1q1bp0WLFmnVqlUBYWbu3LnKysrSlClTtHnzZr366qvq1q1bwGc89NBDuuaaa7Rp0yaNGjVK48eP16FDh5q1nQCaQJM+VhQAmsCECRNMSEiIadu2bcDrl7/8pTGm8ongt9xyS8A+GRkZZurUqcYYY/7yl7+Ydu3amaKiImf766+/brxer/N097S0NPPzn/+8wTpIMvfdd5+zXFRUZCSZN998s8naCaB5MGYHQIv0gx/8QHPnzg1YFx8f77zPzMwM2JaZmamNGzdKkj777DOdc845atu2rbN9wIAB8vv92rZtmzwej/bs2aMhQ4acsA79+vVz3rdt21YxMTHav3//d20SAEsIOwBapLZt29a5rNRUIiMjT6lcWFhYwLLH45Hf73ejSgBcxJgdAK3S2rVr6yz37NlTktSzZ0998sknOnLkiLP9vffek9fr1dlnn63o6GideeaZWr16dbPWGYAd9OwAaJFKSkqUl5cXsC40NFQJCQmSpEWLFumCCy7QwIED9cILL+jDDz/UX//6V0nS+PHj9eCDD2rChAmaNWuWDhw4oBkzZuiGG25QcnKyJGnWrFm65ZZblJSUpJEjR6qwsFDvvfeeZsyY0bwNBeA6wg6AFmn58uVKTU0NWHf22Wfr888/l1Q5U2rhwoWaNm2aUlNT9eKLL6pXr16SpDZt2ujvf/+7br31Vl144YVq06aNxo4dq9/97nfOsSZMmKDi4mL9/ve/15133qmEhAT9+Mc/br4GAmg2HmOMsV0JAGgMj8ejxYsXa8yYMbarAqAVYMwOAAAIaoQdAAAQ1BizA6DV4eo7gMagZwcAAAQ1wg4AAAhqhB0AABDUCDsAACCoEXYAAEBQI+wAAICgRtgBAABBjbADAACCGmEHAAAEtf8P3AXEpwzK5wsAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "visualize_learning_process(n_epochs, losses)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Prediction\n", "Calculate error for train and test data using the trained model and print out the Mean Squared Error Loss for the training and test data set." ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Error training data: 0.6495721936225891\n", "Error test data: 0.6353241801261902\n" ] } ], "source": [ "with torch.no_grad():\n", " _, y_pred_train_mean = torch.split(ens_deep_ff(X_train.view(-1, 11)), n_models)\n", " _, y_pred_test_mean = torch.split(ens_deep_ff(X_test), n_models)\n", " error_train = loss_function(y_pred_train_mean[-1, -1], y_train.view(-1, 1))\n", " error_test = loss_function(y_pred_test_mean[-1, -1], y_test)\n", "\n", "print(\"Error training data: \" + str(error_train.item()))\n", "print(\"Error test data: \" + str(error_test.item()))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.8.5 ('prosper')", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" }, "vscode": { "interpreter": { "hash": "a604604040b0261c277bc75aa34f15c6f86bb9bc8166d3b0f73ab3af3d1b81ef" } } }, "nbformat": 4, "nbformat_minor": 4 }