diff --git a/exercises/03_rnn/.gitignore b/exercises/03_rnn/.gitignore new file mode 100644 index 0000000..60baa9c --- /dev/null +++ b/exercises/03_rnn/.gitignore @@ -0,0 +1 @@ +data/* diff --git a/exercises/03_rnn/01_timeseries_prediction.ipynb b/exercises/03_rnn/01_timeseries_prediction.ipynb new file mode 100644 index 0000000..d1bfbf0 --- /dev/null +++ b/exercises/03_rnn/01_timeseries_prediction.ipynb @@ -0,0 +1,1285 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "kcB3r4vJpatQ" + }, + "source": [ + "# Vorhersage von Zeitreihen mit verschiedenen neuronalen Netzwerkarchitekturen\n", + "\n", + "In diesem Notizbuch werden wir verschiedene Netzwerkarchitekturen verwenden, um die nächsten Schritte für eine Zeitreihe vorherzusagen. Wir vergleichen: \n", + "\n", + "* 1D kausale Faltungsnetzwerke \n", + "* 1D kausale Faltungsnetzwerke mit Dilatationsrate\n", + "* RNNs \n", + "* LSTMs\n", + "\n", + "Wir prognostizieren eine Zeitreihe für längere Zeiträume als wir sie trainiert haben und vergleichen die Ergebnisse der verschiedenen Architekturen. Das Ziel ist es, die langfristigen Abhängigkeiten der Zeitreihe zu erfassen." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "### Einbinden von Paketen" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "geSS6viBpatT" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('1.23.4', '2.11.0')" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import random\n", + "import tensorflow as tf\n", + "import tensorflow.keras as keras\n", + "\n", + "np.__version__, tf.__version__" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "82ZRKcWopate" + }, + "source": [ + "### Simulation von Daten\n", + "\n", + "Wir erzeugen Trainingsdaten mit zwei verschiedenen Zeitskalen und ein wenig Rauschen. So entstehen **1000 Kurven**, die alle dem gleichen Muster folgen: eine sich _schnell ändernde Sinuswelle_, deren Amplitude von einer Sinuswelle mit niedrigerer Frequenz moduliert wird. Um die Sache etwas anspruchsvoller zu machen, fügen wir bei jedem Zeitschritt der Wellen etwas **Rauschen** hinzu. Alle 1000 Wellen haben das gleiche Muster, der _Startpunkt ist jedoch zufällig_ in der Zeit verschoben. Ein solches Beispiel ist im folgenden Diagramm dargestellt. Die ersten **128 Datenpunkte** werden als Eingabe für das Modell verwendet (als Linie dargestellt). Das Modell soll die folgenden **10 Datenpunkte** vorhersagen (als Punkte dargestellt). Beachten Sie, dass die zukünftigen Daten nicht einer glatten Kurve folgen, sondern aufgrund des in den Daten vorhandenen Zufallsrauschens zerklüftet sind." + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 315 + }, + "colab_type": "code", + "id": "OlA9Vabapatf", + "outputId": "3eb43c1c-9abd-4402-d28d-f74ef9b2304a" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_8686/3609720393.py:19: UserWarning: color is redundantly defined by the 'color' keyword argument and the fmt string \"bo\" (-> color='b'). The keyword argument will take precedence.\n", + " plt.plot(range(seq_length, seq_length + look_ahead),Y[i,:,0],'bo',color='orange')\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The training data X (solid) line and the next predictions Y (dotted), which should be forecasted.\n" + ] + } + ], + "source": [ + "np.random.seed(1) # Fixing the seed, so that data is always the same\n", + "seq_length = 128 # Sequence length used for training\n", + "look_ahead = 10 # The number of data points the model should predict \n", + "\n", + "\n", + "def gen_data(size=1000, noise=0.1): # We create 1000 data-points\n", + " s = seq_length + look_ahead\n", + " d = np.zeros((size, s,1))\n", + " for i in range(size):\n", + " start = np.random.uniform(0, 2*np.pi) # Random start point\n", + " d[i,:,0] = np.sin(start + np.linspace(0, 20*np.pi, s)) * np.sin(start + np.linspace(0, np.pi, s)) + np.random.normal(0,noise,s)\n", + " return d[:,0:seq_length], d[:,seq_length:s]\n", + "\n", + "\n", + "X,Y = gen_data()\n", + "for i in range(2):\n", + " plt.figure(num=None, figsize=(5,2)) \n", + " plt.plot(range(0, seq_length),X[i,:,0],'b-')\n", + " plt.plot(range(seq_length, seq_length + look_ahead),Y[i,:,0],'bo',color='orange')\n", + "\n", + "plt.show()\n", + "print('The training data X (solid) line and the next predictions Y (dotted), which should be forecasted.')" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "YbHIUaw3paty" + }, + "source": [ + "## A) 1D-Faltung ohne Dilatationsrate\n", + "\n", + "### Netzwerk aufbauen\n", + "Hier definieren wir ein neuronales Netz mit 1D-Faltungen und \"kausalem\" Padding. \n", + "\n", + "Erstellen Sie ein erstes Modell unter Verwendung der kausalen Faltungen. Geben Sie die Sequenzlänge nicht an (batch_input_shape=(None, None, 1)), damit Sie später bei der Vorhersage eine andere Sequenzlänge verwenden können. Das Netzwerk sollte 4, 1-dimensionale Faltungsschichten haben, mit einer Kernelgröße von `ks=5` und 32 Features. Verwenden Sie dazu die Keras-Funktion `Convolution1D`. Das Netzwerk sollte am Ende 10 Werte ausgeben. Dies kann man mit folgender Funktion erreichen:\n", + "\n", + "```{pyhon}\n", + "def slice(x, slice_length):\n", + " return x[:,-slice_length:,:]\n", + "...\n", + "model1.add(Lambda(slice, arguments={'slice_length':look_ahead}))\n", + "```\n", + "\n", + "Verwenden Sie die ersten 800 Sequenzen für das Training und die letzten 200 für die Validierung. Als Verlustfunktion verwenden wir den mittleren quadratischen Fehler (MSE). Sie sollten einen MSE von etwa 0,02 bis 0,03 erhalten." + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "colab_type": "code", + "id": "eicNaym0patz", + "outputId": "ba6890af-f4f2-4fe6-fb58-3ea3a6408ddc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential_12\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " conv1d_44 (Conv1D) (None, None, 32) 192 \n", + " \n", + " conv1d_45 (Conv1D) (None, None, 32) 5152 \n", + " \n", + " conv1d_46 (Conv1D) (None, None, 32) 5152 \n", + " \n", + " conv1d_47 (Conv1D) (None, None, 32) 5152 \n", + " \n", + " dense_11 (Dense) (None, None, 1) 33 \n", + " \n", + " lambda_11 (Lambda) (None, None, 1) 0 \n", + " \n", + "=================================================================\n", + "Total params: 15,681\n", + "Trainable params: 15,681\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "from keras.models import Sequential\n", + "from keras.layers import Dense, Lambda, Convolution1D,LSTM, SimpleRNN\n", + "from keras.optimizers import Adam\n", + "\n", + "model_1 = Sequential()\n", + "\n", + "# ks=5, 32 Features\n", + "model_1.add(Convolution1D(32, kernel_size=5, padding='causal', batch_input_shape=(None, None, 1)))\n", + "model_1.add(Convolution1D(32, kernel_size=5, padding='causal', batch_input_shape=(None, None, 1)))\n", + "model_1.add(Convolution1D(32, kernel_size=5, padding='causal', batch_input_shape=(None, None, 1)))\n", + "model_1.add(Convolution1D(32, kernel_size=5, padding='causal', batch_input_shape=(None, None, 1)))\n", + "model_1.add(Dense(1, activation='tanh')) # tanh, sonst MSE zu hoch\n", + "\n", + "def slice(x, slice_length):\n", + " return x[:,-slice_length:,:]\n", + "\n", + "model_1.add(Lambda(slice, arguments={'slice_length': look_ahead}))\n", + "\n", + "model_1.compile(loss='mse', optimizer=Adam(learning_rate=0.0001))\n", + "\n", + "model_1.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/30\n", + "25/25 [==============================] - 0s 10ms/step - loss: 0.3190 - val_loss: 0.1070\n", + "Epoch 2/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0611 - val_loss: 0.0375\n", + "Epoch 3/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0396 - val_loss: 0.0368\n", + "Epoch 4/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0390 - val_loss: 0.0360\n", + "Epoch 5/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0384 - val_loss: 0.0353\n", + "Epoch 6/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0379 - val_loss: 0.0347\n", + "Epoch 7/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0374 - val_loss: 0.0342\n", + "Epoch 8/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0368 - val_loss: 0.0336\n", + "Epoch 9/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0362 - val_loss: 0.0329\n", + "Epoch 10/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0355 - val_loss: 0.0324\n", + "Epoch 11/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0349 - val_loss: 0.0317\n", + "Epoch 12/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0343 - val_loss: 0.0311\n", + "Epoch 13/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0337 - val_loss: 0.0304\n", + "Epoch 14/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0330 - val_loss: 0.0298\n", + "Epoch 15/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0324 - val_loss: 0.0291\n", + "Epoch 16/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0318 - val_loss: 0.0285\n", + "Epoch 17/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0311 - val_loss: 0.0279\n", + "Epoch 18/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0305 - val_loss: 0.0274\n", + "Epoch 19/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0300 - val_loss: 0.0268\n", + "Epoch 20/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0294 - val_loss: 0.0264\n", + "Epoch 21/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0290 - val_loss: 0.0259\n", + "Epoch 22/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0286 - val_loss: 0.0255\n", + "Epoch 23/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0282 - val_loss: 0.0252\n", + "Epoch 24/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0279 - val_loss: 0.0250\n", + "Epoch 25/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0276 - val_loss: 0.0247\n", + "Epoch 26/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0274 - val_loss: 0.0247\n", + "Epoch 27/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0272 - val_loss: 0.0245\n", + "Epoch 28/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0269 - val_loss: 0.0244\n", + "Epoch 29/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0268 - val_loss: 0.0244\n", + "Epoch 30/30\n", + "25/25 [==============================] - 0s 6ms/step - loss: 0.0268 - val_loss: 0.0242\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model_1.fit(X[:800], Y[:800], validation_data=(X[800:], Y[800:]), batch_size=32, epochs=30)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "VKVL1GP9fF6C" + }, + "source": [ + "### Wiederholte Vorhersagen machen\n", + "\n", + "Da wir mit simulierten Daten arbeiten, können wir so viele neue Daten erzeugen, wie wir wollen. Wir können auch das Rauschen ausschalten und prüfen, wie gut das Modell das tatsächliche zugrunde liegende Muster in den Daten extrahieren kann." + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 104 + }, + "colab_type": "code", + "id": "FRVVMvrhdy6J", + "outputId": "73b71cb2-fb80-4ed6-e4ae-abd82efc0eda" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 128, 1)\n", + "(1, 10, 1)\n", + "1/1 [==============================] - 0s 45ms/step\n" + ] + }, + { + "data": { + "text/plain": [ + "array([ 0.79807866, 0.75625324, 0.6018514 , 0.27612567, -0.16084696,\n", + " -0.4992581 , -0.6621006 , -0.69597495, -0.6226655 , -0.41268897],\n", + " dtype=float32)" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_test, y_test = gen_data(size=1, noise=0.0)\n", + "print(x_test.shape)\n", + "print(y_test.shape)\n", + "model_1.predict(x_test).reshape(-1) # Predicts 10 value" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Grw9QTLDepnB" + }, + "source": [ + "Schreibe eine Funktion, die 10 Werte aus einer Startsequenz der Größe 128 vorhersagt. Addiere dann diese vorhergesagten Werte zu der Ausgangssequenz und verwende diese Sequenz der Länge 138 als neue Ausgangssequenz. Wiederholen Sie diesen Vorgang 12 Mal. Du solltest eine Vorhersage für 120 Zeitpunkte in der Zukunft erhalten." + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "l3jEUp5FpauG" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 16ms/step\n", + "1/1 [==============================] - 0s 43ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 11ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "(1, 128, 1)\n", + "(1, 120, 1)\n" + ] + } + ], + "source": [ + "x_test, y_test = gen_data(size=1, noise=0.0)\n", + "\n", + "def predict(sequence):\n", + " pred = model_1.predict(sequence)\n", + " new_sequence = np.append(sequence, pred)\n", + " new_sequence = new_sequence.reshape((1, len(new_sequence), 1))\n", + " return new_sequence\n", + "\n", + "y_pred = predict(x_test)\n", + "for x in range(11):\n", + " y_pred = predict(y_pred)\n", + "\n", + "# Remove data which is already in x_test\n", + "y_pred = y_pred[:, 128:]\n", + "\n", + "print(x_test.shape)\n", + "print(y_pred.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Test\n", + "plt.figure(figsize=(5, 2)) \n", + "plt.plot(x_test[0,:,0])\n", + "plt.show()\n", + "\n", + "# Prediction\n", + "plt.figure(figsize=(5, 2)) \n", + "plt.plot(y_pred[0,:,0], color='red')\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "KG-10GeCsi_s" + }, + "source": [ + "## B) 1D-Faltung mit Dilatationsrate\n", + "\n", + "Hier definieren wir ein neuronales Netz mit 1D-Faltung und \"kausalem\" Padding, diesmal mit Dilatationsrate, so dass wir in der Lage sind, länger in der Zeit zurückzublicken (siehe Abbildung).\n", + "\n", + "![](https://i.stack.imgur.com/20xRe.png)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Xht-oURyid28" + }, + "source": [ + "Bauen Sie dasselbe Netz wie in A) auf, aber diesmal mit den Dilatationsraten 1, 2, 4, 8:" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential_13\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " conv1d_48 (Conv1D) (None, None, 32) 192 \n", + " \n", + " conv1d_49 (Conv1D) (None, None, 32) 5152 \n", + " \n", + " conv1d_50 (Conv1D) (None, None, 32) 5152 \n", + " \n", + " conv1d_51 (Conv1D) (None, None, 32) 5152 \n", + " \n", + " dense_12 (Dense) (None, None, 1) 33 \n", + " \n", + " lambda_12 (Lambda) (None, None, 1) 0 \n", + " \n", + "=================================================================\n", + "Total params: 15,681\n", + "Trainable params: 15,681\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "from keras.models import Sequential\n", + "from keras.layers import Dense, Lambda, Convolution1D,LSTM, SimpleRNN\n", + "from keras.optimizers import Adam\n", + "\n", + "model_2 = Sequential()\n", + "\n", + "# ks=5, 32 Features\n", + "model_2.add(Convolution1D(32, kernel_size=5, padding='causal', dilation_rate=1, batch_input_shape=(None, None, 1)))\n", + "model_2.add(Convolution1D(32, kernel_size=5, padding='causal', dilation_rate=2, batch_input_shape=(None, None, 1)))\n", + "model_2.add(Convolution1D(32, kernel_size=5, padding='causal', dilation_rate=4, batch_input_shape=(None, None, 1)))\n", + "model_2.add(Convolution1D(32, kernel_size=5, padding='causal', dilation_rate=8, batch_input_shape=(None, None, 1)))\n", + "model_2.add(Dense(1, activation='tanh')) # tanh, sonst MSE zu hoch\n", + "\n", + "def slice(x, slice_length):\n", + " return x[:,-slice_length:,:]\n", + "\n", + "model_2.add(Lambda(slice, arguments={'slice_length': look_ahead}))\n", + "\n", + "model_2.compile(loss='mse', optimizer=Adam(learning_rate=0.0001))\n", + "\n", + "model_2.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/30\n", + "25/25 [==============================] - 0s 10ms/step - loss: 0.1727 - val_loss: 0.0871\n", + "Epoch 2/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0685 - val_loss: 0.0425\n", + "Epoch 3/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0361 - val_loss: 0.0250\n", + "Epoch 4/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0230 - val_loss: 0.0183\n", + "Epoch 5/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0181 - val_loss: 0.0157\n", + "Epoch 6/30\n", + "25/25 [==============================] - 0s 9ms/step - loss: 0.0163 - val_loss: 0.0147\n", + "Epoch 7/30\n", + "25/25 [==============================] - 0s 8ms/step - loss: 0.0157 - val_loss: 0.0145\n", + "Epoch 8/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0154 - val_loss: 0.0143\n", + "Epoch 9/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0153 - val_loss: 0.0142\n", + "Epoch 10/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0153 - val_loss: 0.0142\n", + "Epoch 11/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0152 - val_loss: 0.0142\n", + "Epoch 12/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0152 - val_loss: 0.0141\n", + "Epoch 13/30\n", + "25/25 [==============================] - 0s 8ms/step - loss: 0.0152 - val_loss: 0.0141\n", + "Epoch 14/30\n", + "25/25 [==============================] - 0s 8ms/step - loss: 0.0150 - val_loss: 0.0140\n", + "Epoch 15/30\n", + "25/25 [==============================] - 0s 8ms/step - loss: 0.0150 - val_loss: 0.0140\n", + "Epoch 16/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0150 - val_loss: 0.0140\n", + "Epoch 17/30\n", + "25/25 [==============================] - 0s 8ms/step - loss: 0.0150 - val_loss: 0.0139\n", + "Epoch 18/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0149 - val_loss: 0.0139\n", + "Epoch 19/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0149 - val_loss: 0.0138\n", + "Epoch 20/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0149 - val_loss: 0.0138\n", + "Epoch 21/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0149 - val_loss: 0.0137\n", + "Epoch 22/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0148 - val_loss: 0.0137\n", + "Epoch 23/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0147 - val_loss: 0.0137\n", + "Epoch 24/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0147 - val_loss: 0.0138\n", + "Epoch 25/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0147 - val_loss: 0.0137\n", + "Epoch 26/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0147 - val_loss: 0.0136\n", + "Epoch 27/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0146 - val_loss: 0.0136\n", + "Epoch 28/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0147 - val_loss: 0.0135\n", + "Epoch 29/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0147 - val_loss: 0.0135\n", + "Epoch 30/30\n", + "25/25 [==============================] - 0s 7ms/step - loss: 0.0147 - val_loss: 0.0136\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model_2.fit(X[:800], Y[:800], validation_data=(X[800:], Y[800:]), batch_size=32, epochs=30)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "zSznQxmZjGhU" + }, + "source": [ + "### Wiederholte Vorhersagen machen\n", + "\n", + "Wie in A) wiederholte Vorhersagen auf Basis von Daten ohne Rauschen." + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 55ms/step\n", + "1/1 [==============================] - 0s 91ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 11ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 11ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "1/1 [==============================] - 0s 10ms/step\n", + "(1, 128, 1)\n", + "(1, 120, 1)\n" + ] + } + ], + "source": [ + "x_test, y_test = gen_data(size=1, noise=0.0)\n", + "\n", + "def predict(sequence):\n", + " pred = model_2.predict(sequence)\n", + " new_sequence = np.append(sequence, pred)\n", + " new_sequence = new_sequence.reshape((1, len(new_sequence), 1))\n", + " return new_sequence\n", + "\n", + "y_pred = predict(x_test)\n", + "for x in range(11):\n", + " y_pred = predict(y_pred)\n", + "\n", + "# Remove data which is already in x_test\n", + "y_pred = y_pred[:, 128:]\n", + "\n", + "print(x_test.shape)\n", + "print(y_pred.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Test\n", + "plt.figure(figsize=(5, 2)) \n", + "plt.plot(x_test[0,:,0])\n", + "plt.show()\n", + "\n", + "# Prediction\n", + "plt.figure(figsize=(5, 2)) \n", + "plt.plot(y_pred[0,:,0], color='red')\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Qmwo6fh9pauo" + }, + "source": [ + "## C) Einfaches RNN\n", + "\n", + "Verwenden Sie nun eine RNN-Zelle `SimpleRNN` (Keras), um zu sehen, ob wir in der Lage sind, den Datenerzeugungsprozess zu lernen. Beginnen Sie mit einer versteckten Zustandsgröße von 12. Wiederholen Sie die Aufgabe aus A) und B). Erwägen Sie, mehrere Schichten von Zellen hinzuzufügen und mit der Zustandsgröße zu spielen." + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential_14\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " RNN (SimpleRNN) (None, None, 30) 960 \n", + " \n", + " RNN2 (SimpleRNN) (None, None, 30) 1830 \n", + " \n", + " conv1d_52 (Conv1D) (None, None, 32) 4832 \n", + " \n", + " conv1d_53 (Conv1D) (None, None, 32) 5152 \n", + " \n", + " conv1d_54 (Conv1D) (None, None, 32) 5152 \n", + " \n", + " conv1d_55 (Conv1D) (None, None, 32) 5152 \n", + " \n", + " dense_13 (Dense) (None, None, 1) 33 \n", + " \n", + " lambda_13 (Lambda) (None, None, 1) 0 \n", + " \n", + "=================================================================\n", + "Total params: 23,111\n", + "Trainable params: 23,111\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "from keras.models import Sequential\n", + "from keras.layers import Dense, Lambda, Convolution1D,LSTM, SimpleRNN\n", + "from keras.optimizers import Adam\n", + "\n", + "model_3 = Sequential()\n", + "\n", + "# ks=5, 32 Features\n", + "model_3.add(SimpleRNN(units=30, input_shape=(None, 1), return_sequences=True, name='RNN'))\n", + "model_3.add(SimpleRNN(units=30, input_shape=(None, 1), return_sequences=True, name='RNN2'))\n", + "model_3.add(Convolution1D(32, kernel_size=5, padding='causal',dilation_rate=1, batch_input_shape=(None, None, 1)))\n", + "model_3.add(Convolution1D(32, kernel_size=5, padding='causal', dilation_rate=2, batch_input_shape=(None, None, 1)))\n", + "model_3.add(Convolution1D(32, kernel_size=5, padding='causal', dilation_rate=4, batch_input_shape=(None, None, 1)))\n", + "model_3.add(Convolution1D(32, kernel_size=5, padding='causal', dilation_rate=8, batch_input_shape=(None, None, 1)))\n", + "model_3.add(Dense(1, activation='tanh')) \n", + "\n", + "def slice(x, slice_length):\n", + " return x[:,-slice_length:,:]\n", + "\n", + "model_3.add(Lambda(slice, arguments={'slice_length': look_ahead}))\n", + "\n", + "model_3.compile(loss='mse', optimizer=Adam(learning_rate=0.0001))\n", + "\n", + "model_3.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/30\n", + "25/25 [==============================] - 1s 26ms/step - loss: 0.1119 - val_loss: 0.0454\n", + "Epoch 2/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0376 - val_loss: 0.0300\n", + "Epoch 3/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0277 - val_loss: 0.0248\n", + "Epoch 4/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0232 - val_loss: 0.0213\n", + "Epoch 5/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0203 - val_loss: 0.0187\n", + "Epoch 6/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0183 - val_loss: 0.0167\n", + "Epoch 7/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0167 - val_loss: 0.0155\n", + "Epoch 8/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0157 - val_loss: 0.0146\n", + "Epoch 9/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0150 - val_loss: 0.0141\n", + "Epoch 10/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0145 - val_loss: 0.0137\n", + "Epoch 11/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0140 - val_loss: 0.0132\n", + "Epoch 12/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0138 - val_loss: 0.0132\n", + "Epoch 13/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0136 - val_loss: 0.0128\n", + "Epoch 14/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0134 - val_loss: 0.0125\n", + "Epoch 15/30\n", + "25/25 [==============================] - 1s 22ms/step - loss: 0.0131 - val_loss: 0.0124\n", + "Epoch 16/30\n", + "25/25 [==============================] - 1s 22ms/step - loss: 0.0129 - val_loss: 0.0123\n", + "Epoch 17/30\n", + "25/25 [==============================] - 1s 22ms/step - loss: 0.0128 - val_loss: 0.0123\n", + "Epoch 18/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0128 - val_loss: 0.0121\n", + "Epoch 19/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0126 - val_loss: 0.0119\n", + "Epoch 20/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0128 - val_loss: 0.0120\n", + "Epoch 21/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0126 - val_loss: 0.0122\n", + "Epoch 22/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0123 - val_loss: 0.0118\n", + "Epoch 23/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0123 - val_loss: 0.0116\n", + "Epoch 24/30\n", + "25/25 [==============================] - 1s 22ms/step - loss: 0.0123 - val_loss: 0.0116\n", + "Epoch 25/30\n", + "25/25 [==============================] - 1s 22ms/step - loss: 0.0122 - val_loss: 0.0117\n", + "Epoch 26/30\n", + "25/25 [==============================] - 1s 22ms/step - loss: 0.0121 - val_loss: 0.0114\n", + "Epoch 27/30\n", + "25/25 [==============================] - 1s 22ms/step - loss: 0.0120 - val_loss: 0.0114\n", + "Epoch 28/30\n", + "25/25 [==============================] - 1s 22ms/step - loss: 0.0120 - val_loss: 0.0114\n", + "Epoch 29/30\n", + "25/25 [==============================] - 1s 21ms/step - loss: 0.0119 - val_loss: 0.0116\n", + "Epoch 30/30\n", + "25/25 [==============================] - 1s 22ms/step - loss: 0.0119 - val_loss: 0.0116\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model_3.fit(X[:800], Y[:800], validation_data=(X[800:], Y[800:]), batch_size=32, epochs=30)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Fe4y8qO5kGaG" + }, + "source": [ + "### Wiederholte Vorhersagen machen\n", + "\n", + "Wie in A) wiederholte Vorhersagen auf Basis von Daten ohne Rauschen." + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 145ms/step\n", + "1/1 [==============================] - 0s 172ms/step\n", + "1/1 [==============================] - 0s 14ms/step\n", + "1/1 [==============================] - 0s 18ms/step\n", + "1/1 [==============================] - 0s 15ms/step\n", + "1/1 [==============================] - 0s 14ms/step\n", + "1/1 [==============================] - 0s 14ms/step\n", + "1/1 [==============================] - 0s 16ms/step\n", + "1/1 [==============================] - 0s 15ms/step\n", + "1/1 [==============================] - 0s 18ms/step\n", + "1/1 [==============================] - 0s 16ms/step\n", + "1/1 [==============================] - 0s 18ms/step\n", + "(1, 128, 1)\n", + "(1, 120, 1)\n" + ] + } + ], + "source": [ + "x_test, y_test = gen_data(size=1, noise=0.0)\n", + "\n", + "def predict(sequence):\n", + " pred = model_3.predict(sequence)\n", + " new_sequence = np.append(sequence, pred)\n", + " new_sequence = new_sequence.reshape((1, len(new_sequence), 1))\n", + " return new_sequence\n", + "\n", + "y_pred = predict(x_test)\n", + "for x in range(11):\n", + " y_pred = predict(y_pred)\n", + "\n", + "# Remove data which is already in x_test\n", + "y_pred = y_pred[:, 128:]\n", + "\n", + "print(x_test.shape)\n", + "print(y_pred.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Test\n", + "plt.figure(figsize=(5, 2)) \n", + "plt.plot(x_test[0,:,0])\n", + "plt.show()\n", + "\n", + "# Prediction\n", + "plt.figure(figsize=(5, 2)) \n", + "plt.plot(y_pred[0,:,0], color='red')\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "sw8pkdW4l96k" + }, + "source": [ + "## D) LSTM-Zelle\n", + "\n", + "Wiederholen Sie C), aber jetzt mit einer LSTM-Zelle." + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential_15\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " LSTM (LSTM) (None, None, 10) 480 \n", + " \n", + " LSTM2 (LSTM) (None, None, 10) 840 \n", + " \n", + " conv1d_56 (Conv1D) (None, None, 32) 1632 \n", + " \n", + " conv1d_57 (Conv1D) (None, None, 32) 5152 \n", + " \n", + " conv1d_58 (Conv1D) (None, None, 32) 5152 \n", + " \n", + " conv1d_59 (Conv1D) (None, None, 32) 5152 \n", + " \n", + " dense_14 (Dense) (None, None, 1) 33 \n", + " \n", + " lambda_14 (Lambda) (None, None, 1) 0 \n", + " \n", + "=================================================================\n", + "Total params: 18,441\n", + "Trainable params: 18,441\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "from keras.models import Sequential\n", + "from keras.layers import Dense, Lambda, Convolution1D,LSTM, SimpleRNN\n", + "from keras.optimizers import Adam\n", + "\n", + "model_4 = Sequential()\n", + "\n", + "# ks=5, 32 Features\n", + "model_4.add(LSTM(units=10, input_shape=(None, 1), return_sequences=True, name='LSTM'))\n", + "model_4.add(LSTM(units=10, input_shape=(None, 1), return_sequences=True, name='LSTM2'))\n", + "model_4.add(Convolution1D(32, kernel_size=5, padding='causal',dilation_rate=1, batch_input_shape=(None, None, 1)))\n", + "model_4.add(Convolution1D(32, kernel_size=5, padding='causal', dilation_rate=2, batch_input_shape=(None, None, 1)))\n", + "model_4.add(Convolution1D(32, kernel_size=5, padding='causal', dilation_rate=4, batch_input_shape=(None, None, 1)))\n", + "model_4.add(Convolution1D(32, kernel_size=5, padding='causal', dilation_rate=8, batch_input_shape=(None, None, 1)))\n", + "model_4.add(Dense(1, activation='tanh')) \n", + "\n", + "def slice(x, slice_length):\n", + " return x[:,-slice_length:,:]\n", + "\n", + "model_4.add(Lambda(slice, arguments={'slice_length': look_ahead}))\n", + "\n", + "model_4.compile(loss='mse', optimizer=Adam(learning_rate=0.0001))\n", + "\n", + "model_4.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/30\n", + "25/25 [==============================] - 2s 37ms/step - loss: 0.2462 - val_loss: 0.2126\n", + "Epoch 2/30\n", + "25/25 [==============================] - 1s 25ms/step - loss: 0.1891 - val_loss: 0.1465\n", + "Epoch 3/30\n", + "25/25 [==============================] - 1s 35ms/step - loss: 0.1274 - val_loss: 0.0930\n", + "Epoch 4/30\n", + "25/25 [==============================] - 1s 25ms/step - loss: 0.0872 - val_loss: 0.0681\n", + "Epoch 5/30\n", + "25/25 [==============================] - 1s 26ms/step - loss: 0.0632 - val_loss: 0.0477\n", + "Epoch 6/30\n", + "25/25 [==============================] - 1s 26ms/step - loss: 0.0420 - val_loss: 0.0295\n", + "Epoch 7/30\n", + "25/25 [==============================] - 1s 26ms/step - loss: 0.0254 - val_loss: 0.0183\n", + "Epoch 8/30\n", + "25/25 [==============================] - 1s 26ms/step - loss: 0.0176 - val_loss: 0.0151\n", + "Epoch 9/30\n", + "25/25 [==============================] - 1s 30ms/step - loss: 0.0160 - val_loss: 0.0149\n", + "Epoch 10/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0158 - val_loss: 0.0148\n", + "Epoch 11/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0158 - val_loss: 0.0147\n", + "Epoch 12/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0157 - val_loss: 0.0146\n", + "Epoch 13/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0156 - val_loss: 0.0146\n", + "Epoch 14/30\n", + "25/25 [==============================] - 1s 28ms/step - loss: 0.0156 - val_loss: 0.0145\n", + "Epoch 15/30\n", + "25/25 [==============================] - 1s 28ms/step - loss: 0.0156 - val_loss: 0.0147\n", + "Epoch 16/30\n", + "25/25 [==============================] - 1s 26ms/step - loss: 0.0156 - val_loss: 0.0145\n", + "Epoch 17/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0155 - val_loss: 0.0145\n", + "Epoch 18/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0155 - val_loss: 0.0144\n", + "Epoch 19/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0154 - val_loss: 0.0143\n", + "Epoch 20/30\n", + "25/25 [==============================] - 1s 26ms/step - loss: 0.0154 - val_loss: 0.0143\n", + "Epoch 21/30\n", + "25/25 [==============================] - 1s 28ms/step - loss: 0.0154 - val_loss: 0.0143\n", + "Epoch 22/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0154 - val_loss: 0.0142\n", + "Epoch 23/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0153 - val_loss: 0.0142\n", + "Epoch 24/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0153 - val_loss: 0.0143\n", + "Epoch 25/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0153 - val_loss: 0.0141\n", + "Epoch 26/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0152 - val_loss: 0.0141\n", + "Epoch 27/30\n", + "25/25 [==============================] - 1s 28ms/step - loss: 0.0152 - val_loss: 0.0141\n", + "Epoch 28/30\n", + "25/25 [==============================] - 1s 28ms/step - loss: 0.0151 - val_loss: 0.0140\n", + "Epoch 29/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0151 - val_loss: 0.0140\n", + "Epoch 30/30\n", + "25/25 [==============================] - 1s 27ms/step - loss: 0.0151 - val_loss: 0.0139\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 93, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model_4.fit(X[:800], Y[:800], validation_data=(X[800:], Y[800:]), batch_size=32, epochs=30)" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 297ms/step\n", + "1/1 [==============================] - 0s 339ms/step\n", + "1/1 [==============================] - 0s 17ms/step\n", + "1/1 [==============================] - 0s 16ms/step\n", + "1/1 [==============================] - 0s 15ms/step\n", + "1/1 [==============================] - 0s 16ms/step\n", + "1/1 [==============================] - 0s 15ms/step\n", + "1/1 [==============================] - 0s 16ms/step\n", + "1/1 [==============================] - 0s 16ms/step\n", + "1/1 [==============================] - 0s 15ms/step\n", + "1/1 [==============================] - 0s 16ms/step\n", + "1/1 [==============================] - 0s 16ms/step\n", + "(1, 128, 1)\n", + "(1, 120, 1)\n" + ] + } + ], + "source": [ + "x_test, y_test = gen_data(size=1, noise=0.0)\n", + "\n", + "def predict(sequence):\n", + " pred = model_4.predict(sequence)\n", + " new_sequence = np.append(sequence, pred)\n", + " new_sequence = new_sequence.reshape((1, len(new_sequence), 1))\n", + " return new_sequence\n", + "\n", + "y_pred = predict(x_test)\n", + "for x in range(11):\n", + " y_pred = predict(y_pred)\n", + "\n", + "# Remove data which is already in x_test\n", + "y_pred = y_pred[:, 128:]\n", + "\n", + "print(x_test.shape)\n", + "print(y_pred.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAADFCAYAAADHavJJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAABQC0lEQVR4nO29d3hb5f33/z7aXpK35JXYznIWmSQ4jITikkBbVn8p0FBGaXigpAXCU0raQgdfGn5toYNSoFBWmeVbCKNlhCwCOAkZDll2hp3YsS1vS16a537+OLqPZMeydaRzjuT4fl2XrgukI/lzZOe8z2dzhBACBoPBYDDGKZp4G8BgMBgMRjxhQshgMBiMcQ0TQgaDwWCMa5gQMhgMBmNcw4SQwWAwGOMaJoQMBoPBGNcwIWQwGAzGuEYXbwPkhud5NDU1IS0tDRzHxdscBoPBYMQJQgh6enqQn58PjSa833fWCWFTUxOKioribQaDwWAwEoSGhgYUFhaGff2sE8K0tDQAwombzeY4W8NgMBiMeOF0OlFUVCTqQjjOOiGk4VCz2cyEkMFgMBijpskULZb59NNP8a1vfQv5+fngOA4bNmwY9T1bt27F/PnzYTQaMXnyZLzwwgtKmshgMBiMcY6iQtjX14c5c+bgiSeeiOj4uro6fOMb38DFF1+Mqqoq3H333fjBD36Ajz76SEkzGQwGgzGOUTQ0etlll+Gyyy6L+PinnnoKJSUlePTRRwEA06dPx2effYY//vGPWL58+bDvcbvdcLvd4v87nc7YjGYwGAzGuCKh+ggrKytRUVEx6Lnly5ejsrIy7HvWr18Pi8UiPljFKIPBAIB3qhrxo9f2ocfljbcpjAQnoYTQbrfDarUOes5qtcLpdGJgYGDY96xbtw4Oh0N8NDQ0qGEqg8FIYD4+ZMfdb1Thvf1NeKeqKd7mMBKchBLCaDAajWKFKKsUZTAY+xu68ePX94GuHN9V1xlfgwIca+nB45uOodXpircpjCEklBDabDa0tLQMeq6lpQVmsxlJSUlxsorBYIwVmroHcOuLu+Hy8ijOSgYgCCGhqhhHfvP+YTy68SgueXQbXqo8CT8ff5sYAgklhOXl5di0adOg5zZu3Ijy8vI4WcRgMEaCEALHQOLk4F784iTae90os6Xhf+9YAr2Wg93pQkPn8KkVtfDzBHtPdQEAetw+PPjOIax6dgd8fj6udjEEFBXC3t5eVFVVoaqqCoDQHlFVVYX6+noAQn7vxhtvFI+//fbbUVtbi/vuuw/V1dX429/+hn/961+45557lDSTwWBEyT8+q8OcX3+MDfsa420KAKDa3gMAuGlJMbJTjZhTmA4A2FHXEUergKMtPejz+JFi0OKhK2fCpNdgR20nqhq642oXQ0BRIdy9ezfmzZuHefPmAQDWrl2LefPm4cEHHwQANDc3i6IIACUlJfjPf/6DjRs3Ys6cOXj00Ufx7LPPhm2dYDAY8YPnCZ77rA4A8KdPjiZEqO94ay8AYHJuKgBgUUkmgPjnCffWC97g3Anp+F55McpLswAARwLCzYgvivYRLlu2bMTY/HBTY5YtW4Z9+/YpaBWDwZCDytoONDmEwo+THf345EgLls+0xc2ePrcPjd1CCHRyTlAI/7b1RPyF8FQ3AGD+hAwAQFmeGVtq2lDdzPqeE4GEyhEyGIyxw7/3nAYApBi0AIBnPq2Npzk40SZ4g9mpBmSkGAAACyZmQMMB9Z39aHbEL0+4L+ARikJoE4ZAVzOPMCFgQshgMCTT6/bhg4N2AMCj35kDvZbD7lNd4gU/HgwNiwJAmkmPWQUWAPELj3b1eVDb3gcAmFuUDgCYnie0edXYe8AnQEjZzxO4ff54mxE3mBAyGAzJfHCgGQNeP0qyU7B8pg1XzCkAADy7vS5uNh0LCOGU3MErdxYVC3nCnXESQloQU5qdInqqJdkpMGg16A0J58aT217ajcW/3YT6jv54mxIXmBAyGAzJvLVXqBL99vwCcByHH1xYAgD44GBz3C7sx1rO9AiB+BfM0EKZeYGwKADotRrRziNxzhMeanJgU3Uruvu9eGLL8bjaEi+YEDIYDEmc7upHZa3QjnD1fGHr9/Q8M+YUWsATiP1yakNzhFOGCOG5AY/weGsvuvs9qttFhXD+xPRBz5flCZ7rkeb45glf3Rms3H9r3+mE8FDVhgkhg8GQxPZj7QCEkGNBenDi0xSrcGGvC+TD1MTl9eNUh/Bzh3qEGSkG5KQZAUD1xno/T1BV3w0AmFeUMei16TYhT1htj59H2Of2ibNYbWYTvH6Cv287ETd74gUTQgaDIQkqdDPyB8/1LclOGfS6mpzs6ANPALNJJ4peKPkBwVbb2wltpJ9mG5y7pB5hPCtH393fhF63DyXZKfjDyjkAgNe/bEBrz/iah8qEkMFgSIIKHRU+Smng/2vjIISh+UGO4854vSDdBECYRaom+wLe4JyidGg1g+0qC3iEJzv60O/xqWoXhYZFr19UhPMnZ2HehHS4fTz+Eceip3jAhJDBYEiChiCLhwhhSU7AI2zrVX3IdbiKUUq+RfAI1RbCunbBLip6oeSkGZGdagAhwNGAkKvJgdMOHGh0wKDV4P9bUASO47Dm4skAgFd21ifEpCC1YELIYCQ4vW4ffvdhNd6paox7rxfPE5wKlNjT7Q6U4ixBCJ0uHzr71C1KOUGF0Jo67Os0NNqkclM9nbyTH/BIh0L7CeMxYebfe4WBCCtm2ZAZaOtYNi0XRp3Q1nG6a/y0UjAhZDASnH9sr8Pftp7AXa9X4fxHNuPRj2sw4ImPIDY7XXD7eOg03KBCGQAw6bXic2rnCY+1Cnm2SbkjC2Fjt7q5L+qBDv2uKPGcMHO4SRDfS6bnis9pNRwmBcbTxcNLjRdMCBmMBGdLTSsAwKTXoL3Xg8c3H8frX9aP8i5lOBkQuAmZydBpz7x8FGcLXqKaQujz8+LPG9o6QaFCpHZotDkgvHlhhVDwCOPRS1gbCNuWZg/+zqhXTW8uxgNMCBmMBKazz4P9p7sBABvvWYqblxQDAL48GZ/m8JNh8oOUeFSOnursh9dPkKTXirnAodDQZFuPW7XwstfPi9WX+ZbhQ6O0kvRoi7qi4xjwor1XCF/T3C6F3kwcZx4hg8FIBLYfawMhQgitKDMZl80StjvsOdUVl63r1COk+cChlAS8CzWFsLZN+FmlOSnQaM6sGAWAzBQDjDrhcmd3qBMebXG6wBNAr+WQnXpmSwcAFGUKHnRXv1fVcDf9/eSmGZFqHLyEaHKg4IgWII0HmBAyGAnMtpo2AMDSaTkAgHMK06HTcGhxuuMyAaSuXSigKMlOHvb10jh4hHanIGzh8nAAwHHBnKZa31tzQHBtFlNYgTabdEjSC9s76HmoQW1gCk9pzpk3NFMDodHjrb0JMRBcDZgQMhgJCs8TbDsqCOGyqUJBQ5JBi5mBRvY9cRhlRkOjE8N6hEEhVOsi2hoQEKt5+PAjRawcValghuYj88KEawFBoPMCYVO1PFUgtBf0zJzqhMxkGLQaDHj942bcGhNCBiNBOdjkQEefB6lGHRYWB8dzzZ8o/LfaMz39PBG3EwxtpqcUZiRBp+Hg9vFoVsnDaRGFcPjwIyVf5aZ66hGO5KkCQQG3O9UTHRpOnjSMR6jTakRP8fg4CY8yIWQwEpStgbDo+ZOzoA+p0FwQEMI9Ku/+a3YMwOPnYdBqRO9qKDqtBhMC/YV1beqER1ucbgBAbsQeoTqCE/QIR7Yr6BG6FbeJcmKE0CgQnNeqdhFPvGBCyGAkKDQsunRq7qDnqRAeae5Bn1u90VwnA/nBosykM8aFhRLME6rjTbRIDI2qFe5rGqV1gmIThVAdu3ieiCHu4UKjQHBCT7wKZt6pasS/dqs385QJIYORgDj6veK292WBQhlKniUJ+RYT/DwRWyvUoK5j+BmjQwnmCdWZTNLaI3hSo4VG1e4lbHbQZvqRBZoKYbNKOcJmpwsurzAUoShjeJEO9hLGRwif2laL+/73K9V2SDIhZDASkAONDvBEGGM2XBgyHnlC2joRrlCGUqyiR+j2+cVxbta0yItl1Gg9iaRYBhDWHwFBz1ZpaMh6QtbwQxGAkMrRlh7V23Qc/V5xNRVdqqw0TAgZjASETv2YHGaItJgnjIMQhmump6jZVN8W8AYNWg3Sk/UjHktzcQNeP7r7vYraNeDxoyvwM8LlUylqe4ThJsqEMjErBToNhz6PXzW7KF+e7AQhQog9d5SbG7lgQshgJCAjVfUBQSHcW9+tWpuCmFcaxSOkF9iGrgF4/byiNgULZYzDrl8KxaTXIjtVGC6tdJ6QhkVTDFqYTboRj6VC2NbrVvz7AgYPIAiHXqsRb2jUDo/urOsAACwuVccbBJgQMhgJyWhVfdPzzDDpNXAMeFXZ/+fnibjdvThMMz0lN80InYaDnyeix6YUkfYQUtSqHA0tlBlNoLNThO+LECj+fQHBfZGlo3j2Yp5Q5cpRmhdcXJKl2s9URQifeOIJFBcXw2QyYfHixdi1a1fYY1944QVwHDfoYTKp4x4zGIlC8K59+PCVXqsRS9xPqiCETd0hrROj5Lw0Gg65gS3xSue9Iu0hpKi1l5CuexotLAoI31ewl1D5MGRwqkz40CgQMmpNxZmjvW4fDjapmx8EVBDCN954A2vXrsUvf/lL7N27F3PmzMHy5cvR2toa9j1msxnNzc3i49SpU0qbyWCIOAa82LCvUdXWhFBcXr94IR3prn1CYE5lfafy1Zn0Ap2XHn5cWCi0p69VYQ+nJfD5keaSgnsJlRUcunUi3LDtodhUmi7jCpkWM1r1L73RotEJNdh9shN+nqAoMymimwi5UFwIH3vsMaxevRq33HILZsyYgaeeegrJycl47rnnwr6H4zjYbDbxYbValTaTwQAAVNuduOKvn+HuN6rwk//dHxcb6tr7QAhgSdKLC1OHoyhDEMIGFRaoip5XhIJDPcJW1TzCSIVQOE7pHGGkFaMUWjmqdGHKqY5+EAKkmXRivjQctLVCzdVV8QiLAgoLocfjwZ49e1BRURH8gRoNKioqUFlZGfZ9vb29mDhxIoqKinDllVfi0KFDYY91u91wOp2DHgxGNLy3vwlXP/GFuIH9vwfscZmsEVrMMFJ+iW4uaFDBIwwtSokEq9gSoHSOMLIeQopavYTB0Kg0j1DpUHKdWDE68t8WEPSeW3rc8KlQxAMAOwNCqGZYFFBYCNvb2+H3+8/w6KxWK+x2+7DvmTZtGp577jm88847ePnll8HzPJYsWYLTp08Pe/z69ethsVjER1FRkeznwTj7OdjowI9e24cBrx8XTM7G0qlCE/vfthxX3RYxhzNCeTsQFEI1QqP0Am2L0POiwqRWjjDS0Cid8qJ0CJJ6dpGG99TyCOnfymi9oACQk2qEXisUPSkd4gaElpOvAgMizjubPMJoKC8vx4033oi5c+di6dKleOutt5CTk4Onn3562OPXrVsHh8MhPhoaGlS2mHE28N5XTQCAi6fl4MXvL8JPlk8DALy7v0mVYpRQxKq+EcrbgWCOsKFzQPGmZ6khSCpMiucIJRbL0HBgR69Hse+MEILmCOeMUkSPUGEhpPNMI7ErtIinWYXxb/vqu+D1E+RZTCjKVC8/CCgshNnZ2dBqtWhpaRn0fEtLC2w2W0SfodfrMW/ePBw/PvydudFohNlsHvRgMKTyyWHhb/Sa+YXQajjMKrDg4mk54Anw5NYTqtpCPcJwPYSUgvQkcJzQIE63jSsF9aAiDY3mquARurx+OF2+wM+LTHDoglyPnxffKzfOAR/6Akt2I/UIqTA1K7yBQnJO1ULnsypfzRoaFh0tbCs3igqhwWDAggULsGnTJvE5nuexadMmlJeXR/QZfr8fBw4cQF5enlJmMsY5tW29ONHWB52GExfgAsCar00BAPx772nVBjUTQkZtnaAYdBrkBS5oShfMUM8u8tCo8h4hzQ+a9JpRm9YpJr1W3Mje3quMbTQ/mJligCmwdHc0xJyqw62od0+rf20Reqo0x9mswt9/jV3Ix59TmK74zxqK4qHRtWvX4plnnsGLL76II0eO4I477kBfXx9uueUWAMCNN96IdevWicf/5je/wccff4za2lrs3bsXN9xwA06dOoUf/OAHSpvKGKdsOiK08pxXmgWzKTima8HEDCwqyYSPJ/jw4PA5bblp63Wjx+2DhgMmZo3cuA6oUzBDCJHsSdDjOvs88PiUKbRo6QnaJMWDCA2PKoFd4ncVeqzHz4uzU5WAevaR2kZzqmqMWauLMCWgBJHdRsXAtddei7a2Njz44IOw2+2YO3cuPvzwQ7GApr6+HhpNUI+7urqwevVq2O12ZGRkYMGCBfjiiy8wY8YMpU1ljFM2HhHCohXTc8947cLJ2dhV14n9Dd2q2EK9wcKMZBh1o3sTRZnJ2FnXKS7MVYIetw/9gVBfpBfQjGQ99FoOXj9BW6971OW00SC1pYOSnWrEyY5+xTxCKrA5aZGFkQHBu89ONaC914NmhwtZqZG/N1J4nohrjSL3CNVZXRW6Gmq0iTdKoLgQAsCaNWuwZs2aYV/bunXroP//4x//iD/+8Y8qWMVgAF19Huw+KeQmLpl+Zr/q3AnpAIAqlYUw0rtisWBGwdAo7QU0m3RIMkQW6uM4DrlpJjR2D6DF6VJICKW1dFCyRI9QGSGkAjtan95QbBYT2ns9aHG6MKvAIrtdnf0eeP0EHBfs8xyNfHEguMKzWZ0uuH3Caigl/lZGI+GqRhkMNdlS0wqeAGW2NDHMGArNV9R39it24Qwl0tYJCq2uU7KFglYaSgn1AUGBUqqpXuqcUQotmGlTKDTa3kOFUJpA28zKhiFpWDQrxQh9mPVLQ8kTR9IpGxqlldkjrYZSEiaEjHHNJ4Gw6KUzhp9eZEnSi96ZGktwaZ6kRKpH2KncHXuLxAILilXhFgqprRMUGnZUKjQavUeobKVt8PcY+fdFvbPOPg9cXr8idgHBlqHRNpsoBRNCxrjF6+exraYNAFARRggBYG5ROgCgqr5bcZvoBWFShHkS6sU2OwYUL0qRuhtO6RaKFmd0nmqO4qFRwdOU6hFS70sxj1DiUAQAMCfpkBwIhytZMEOXBY82/1QpmBAyxi1HW3rQ5/EjzaTDrPzwOZl5ASHcp3Ce0OfnxRBnpB5hTqoRJr0GPFFubFiLIzrPS+kxa9EKdNAjVCg02htdaNSq8Kb6FokVo4CQ61VjdZW46zIOFaMAE0LGOObAaQcA4JxCy4gbFeYWCUtw9zd0K97j5ecJDFpNxJWQHMcpPnybCpnU0Kg4eFuh0KjUOaMUKlCJ5hHSUKpSOwmj8QiBYLO/kkJYx0KjDEZ82B8QwtkF6SMeV5aXBoNOA6fLJ/6DVYLTXcFBzZGsOqIoPXPULnGeJ0VsqlfAw+lz+9DrljZVhkKrRpXwCP08QWdfdDnCbIU9VTu9cZB4Q5OvcMGMN4pIiNwwIWSMWw40dgMQPMKR0Gs1mJUvjO5Tso2iMSCEhRmjN9KHonTBTGuUxTJK5gip15QUMikmUqjg9Lp9sheAdPV7wBOA4zDiCq3hoB50Z58bfl7+yAMNjUr1CPPFpnpl/r5Odw3AzxOY9JFHQuSGCSFjXOLy+kNGOo3es0XDo0oK4WlRCKX1UdHjlZguw4dsHpCcIwxc1Lr6vXD75BWcDup1pUkTG0DohzQESvTlrhylzfQZyQbJbQCZKQZwHMATQVDlJpqJN4CwjBlQbpkxXQ1VnJUiKRIiJ0wIGeOSGnsPvH6CzBRDRA28ajTWnw7k+KQKoZKb6jv6PPDxQhO21JxXerJeFBy5817R5uEAIa+apdCYtWhbJwBAp9UgI5mGbeX9vlxePxwDXgDSPUKldzjWtQt/t/EYrUZhQsgYl9C9Z7MLLBHNqaSVo0eanYr1U1GPsECqEGYpJ4Q0rJmdGnkTNoXjOHHMmNyVo1TAslKiG0WWrVAvIf286O1SpmCGNtOb9BqYk6SFksXNGN3KrPsK9QjjBRPCBMPl9WNXXSe8Km2Ejid+nii+Ry8cX4VUjEZCYUYSMpL18PoJjrf2KmITnecoNUdI79gdA170ueVdLRRt0zrFqtB0mVg8LwCKeYRUwLIlzBkNRSmBDq0YlbriiPY39nn8cA7Iv7pKrBiNUw8hoNKs0bFGd78H7+5vQkevB/d8fapqP3fb0TY8sOEg6jv7MafQgsevny/e7Z9tbKlpxZ2v7EWKUYdFxZk4b1IWrl1YBINOnXuzA420YjQyIeQ4DpNzU/HlyS6caOuVfRaknydi6ElqaDTNpEeqUYdetw92pwuTRlnfJAWxaT3KIgal1jHR1oesKIUwOGZNqZBtbHa198gr0FK3h4SSZNAiM8WAzj4PmhwDsCTrR3+TBE4GQqPxFELmEQ5Dv8ePB985hCe2HJc9yT8cLq8fP3ptH256bpcY3tp/2oHL/7Id7+5vUvznq80Xx9tx+z/3oN/jR1uPG/850IwHNhzEz98+oMrPH/D4cbRF+u4zKjAn2uRvoWhxuuDjCXQaTnKbAhD0vOwyFzSIBRYSK0YpSjWJt/dFnyMEQlsolBHoaO2ioWTZPUJHdJW/lDyFhm+7vH4xEsKEMMHIs5iQnqyHjyc41qJMGCyUv39ai/f2N0HDAbdeUIKN91yEc4sz0Ov24cev7cPm6hbFbVCLL0924tYXd8Pt4/H1GVa8cdt5uOsSYQHum3tOY8+pLsVtONTkAE+EcnUpF4agEMr/NxHsIUyCNorKORq+klsIW6NcdURRLkdIPcIoBUdsqlemWCYnSruU8lSjbaanBNcxyfv3dSqwPizNpJPcbiInTAiHgeM4TLcJfWOHm52K/qxetw/PfV4HAPjDyjl44JszMMWahtdWn4frzi0CAPz6vcOqeKZK09bjxvdf+BIDXj+WTs3BX787D4tLs3DP16fiOwsLAQAPvnNQkR6qUKTmBym0qu2EAjnCxu7oKkYpVNDtMnte0QxqDiUYGpU7RxjwCKO8eCrlEVK7og/ZKlMsE0toFAiuY5K7cpQWypRkp0jOXcoJE8IwzAg0UB9RWAhf3nEK3f1elGan4Mq5BeLzOq0Gv/jmDOSmGXGqox/Pbq9T1A41eHzzMfS4fJhVYMbT31swaPHsT1eUwWzS4VCTE6/tqlfUjmB+MF3S+6hHWNfeB15msT7dGV1+kKJU6Mou7vyLNjRKi2USyyPMVtgjjDY0mi2GRuW1K9bQqC0QcWiROeJAh0BMjGPFKMCEMCzT8wIeYZNyQjjg8ePZ7bUAgB9ePPmMkFiqUYd1l5cBAP66+bjiyzGV5GR7H17dKQjczy+fAZN+8ILXrFQj7r10GgDg9x/VoKtPmTFTQIgQFpolva8wIwkGrQZuHy/7xm6xdSI9uuIo0SNMsNCoElWQPj+Prn5v4POj9AhT5LeLECIKa7RVozkKVY1Gu6mDQiMCckccou2dlRsmhGGYkRf0CJUq8X9tVz3aez0oykzClXPzhz3mqrkFWDAxAwNeP9b/t1oRO9Tg0Y1H4eMJlk7NQfmkrGGPWbV4AqZZ0+AY8OKtfY2K2OHy+sXltzNH2DgxHDqtBsXZglDJnSdsjLJilEJzP3KuyvH6eXQEbkikboGnUCHs7PfAJ1NLUGdg6oqGA9KTowxBBibSdPZ7ZAvFO10+eALnmBVlyDZHHLPmkS3qwPMk6p2SFCqgcgsh/buPx1b6UJgQhmFybir0Wg5Ol0/2u38A8Ph4PP3pCQDAD5dNDtuszHEcfn3FTHAc8O7+JsVDtUpwsNGB9wLVr/etmBb2OJ1Wg+sXCXnR979Splq2xt4DnggXqtwo7tqVqhyN9c6YXuDkrM6kXolWwyEzSsHJTDFAwwGEBAUsZrsCrQWZKYaoCosAIDNZGGdGiCA6stgV+L7STLozIh4R2xUQUD9PZBuz1tkfnA4Uzd88ELzRkjs0Gu1YQblhQhgGg06DyblpAIAjzT2yf/4XJ9rR4nQjO9WIa+YXjHjsrAILLp+dBwB4cusJ2W1Rmt99VAMAuHJu/qhe2OWz88BxwL76blEc5IQWP03PM0eVnKcFM7UyeoQ8T4J3xlHnCIX3tfd6ZCusEpvDUw1Rz4DUajjx4i5XbxydMxrt9BZg8Dgz+nmx0t4TW34QEAa8ZwT69OTKE9JweVaK9OlAFHqj1efxo8fllcUuQkiIEMa3X5oJ4QhMzxOEUIk84cbDQkvEpTOtg4pGwnHH0kkABE/pVIdyq4Dk5qvT3fj0aBu0Gg73fj28N0jJNZuwuCQTAPCfr5plt4d61LQYSipKtFC09rjh9RNoNVzU5e0ZyXpxGIFchSn0c6LpawxF7jxhMA8XW7k9zS/KJdCxNtNTxBYKmSpH6edE6w0CQLJBhzSTMH9FrqiDY8ArrtJiHmECQ/OEh5sdsn4uz5OgEM6wRvSeWQUWLJ2aA54AT39aK6s9SkI92Cvm5Ec8Jeeb5wj50vcVEEJ6U0NvcqSiRGiUtk7kWUySNxZQOI4LqRyV50LVKsMFFJBfCGOd50mh75fLIxQ3YsTgEYa+X67vSxTCKPO8FHqTZnfIYxf1BrNTjVGHkuWCCeEIBAtm5A2N7j/djdYeN1KNurCFI8Pxw2WCV/i/u08rsuxUbk609eLDQ3YAwO0BjzYSLptlg4YTqjvl9H55nqA6sHppRl50I9JoaLStxw2nTCEiufIkVrFgRp6cNr2A5sQshPL27MXaq0ehlZ1yeV5yhEYB+afL0B7OaJv8KXL3qkY7ZF4JmBCOAG2hqO/sly0uDgAfB7zBpdNyIgqLUhaVZGLBxAx4/Dz+8Vni9xU+ve0ECAEqpudimi1yDywr1Yglk7IByOsVNnT1o9ftg0GniXrlS5pJL/bG1crkFcbaOkHJk7lghl5A5fMIZcoRxtirR6GVnXLZ1SaXQMs8XUYuj1DucXmJ0joBMCEckYwUg3hxoZ6EHEgNi1I4jhO9wn/uOCVeEBKRZscA3g60QNyxbLLk93/zHKE4SE4hpPnBqdbUqIsGgJDwqEwTZuS6INgUCo3mRJm3pIhN4jJ5Xh198uTiqOcl17+jWJvpKTT3KVfuUvw9xuoRiqFReT3CcSOETzzxBIqLi2EymbB48WLs2rVrxOPffPNNlJWVwWQyYfbs2fjvf/+rhpnDMkPmxvoTbb043toLvZbDxWW5kt//tbJczC6woN/jx98TOFf49LZaeP1E9GKlsmKWDToNhyPNTtR3yFM9Sn+H9HcaLeKoNZkKZuS6IOTJfKFqk+kCKreHI1+OUO6Qrbw5Qrm+LzHXG+MNjVWh0Gi8K0YBFYTwjTfewNq1a/HLX/4Se/fuxZw5c7B8+XK0trYOe/wXX3yB66+/Hrfeeiv27duHq666CldddRUOHjyotKnDMj1P3lFr1Bs8rzQLZpP0dSYcx2FtYDXUi5UnZZ9JKAcNnf14ZecpAMCPvibdGwSERun5EwQB3X68TRa7DgdyvdNjFEK5K0cbZbog0DFYcnmEcoXUgjlCuUKj8oYgO2TqI6R25cRYzSpOl0mgqlEgpJdQJiEUh0jEuZkeUEEIH3vsMaxevRq33HILZsyYgaeeegrJycl47rnnhj3+z3/+M1asWIGf/OQnmD59Oh566CHMnz8ff/3rX5U2dVhomf0hmTzCaMOioSybloO5RelweXlZ+gpdXj+aHQM43OSUJUz0+49q4PUTXDglGxdOyYn6cy6cIuQJtx9tj9kmIKR1QjYhjD1HyPMEp2OcKkORc8waIUS2C6icVZCEEBlDkPIKjlx2yVksQwgJFsvIJITyhUbHSY7Q4/Fgz549qKioCP5AjQYVFRWorKwc9j2VlZWDjgeA5cuXhz3e7XbD6XQOesjJrEADeI29Bx5fbCOiHANe7KsX1gx9bXr0QshxHO69VPAKX955Kuo7tH31XfjO05Uoe+BDlK/fjMv/sh2Lf7sJP3ptH/bWR7cO6avT3Xh3fxM4ThikHQsXThVE9PMT7TGP53L0e8U70DKZQqP1Hf0xj+dq73PD4+Oh4aIff0Wh+ey2Xnfs39eAVxwXJteFvbMv9nFmfR4/3IF/h7F6hGJotM8T8xjFfo8P/R5/wC55bhw6ZBiz1uv2weUVvq9YhdBqCQq0HH9fPS6hh/Csrxptb2+H3++H1Tr4om+1WmG324d9j91ul3T8+vXrYbFYxEdRUZE8xgcoykyCJUkPj58Xl7lGS+WJDvBEuJDGOlvvgsnZOLc4Ax4fj0c+kDaD1O5w4c5X9+Lqv32BXXWdAIQJIBmBHYzv7W/CNX/7At9/4UtJ46cIIfjtf48AEGakxrrFfXaBBZYkPXpcPuw/HVsvJ50oU5gh/D5jId+SBINOA4+fj3ktDc2T5FmSYirgAYQLqFbDwc+TmMOQNK9kSdLH3OMl59gw6r0lG7RINuhi+iwqOB4fj55AY3f0dgnnZdJrkGKI7fuiAu/nCboHYqtWp7/HVKMu9u8rxQidhgNPYs9fUm8wK8UQs11yMOarRtetWweHwyE+GhoaZP18juMwq0DwIOjWgmj5/LgQ4rtgcrYsdt1/2XRoOODtfY14e9/piN63o7YD3/jLdvznq2ZwHLByQSG233cxjj98GfY9eCne/9EFWLmgEAatBpurW3H5n7dj98nOiD77va+asaO2EwatRvRYY0Gr4cTvavux2PKER0JGq8WKRsNhYqaQz6trjy08GmydiP2uWKvhYA3c9cfaSxicKhObFwEMHRsW2wVUHK8WozcIAEkGrShasa5jagsJi8a6V0+v1SA98H3FWgMgV3gbEP7u6efEGh5tTKCKUUBhIczOzoZWq0VLy+AN6y0tLbDZbMO+x2azSTreaDTCbDYPesgN9WzkEsLzZRBCAFgwMQN3XSIIzi/ePjjiRZkQguc/r8OqZ3eio8+D6Xlm/OdHF+L3K+egKDNZ/Mc7q8CC36+cg3d/dD5Kc1Jgd7pw7d934KltJ0YM0+yt78JP3twPAFh9UYlslWBinvBYbHnCQzJVjFKKs4Xw6MkYG/7lzpPIlSds65Unr0QR84QxtgQEx5jJZJdM+Ti5ehspcuVVW2UaikCxyvT3lUjN9IDCQmgwGLBgwQJs2rRJfI7neWzatAnl5eXDvqe8vHzQ8QCwcePGsMerweyAEB6MQQgbuwdQ294HDQdJ02RGY83XJmNRSSb6PH78+LV96PecGeJp7XFh9Uu78ev3DsPPE1w5Nx9v3bFkxHmbZTYz3l1zAa6cmw8/T/DIB9X4wUu7h90TWN/Rj9Uv7obbx+OSslysjWCmaKTQPGFVQzccMYSJ9p/uBgDMKYotXEspyabDt2MTQrnvjOXqJZTTIwTku7CLFaMxtk5QaJ4w1iIxuQVarr2EdAKVXEJok2kdUyK1TgAqhEbXrl2LZ555Bi+++CKOHDmCO+64A319fbjlllsAADfeeCPWrVsnHn/XXXfhww8/xKOPPorq6mr86le/wu7du7FmzRqlTQ0LFcLq5ugLZqg3OKcoPaq2iXBoNRz+fN1cpCfrcaDRga/9YRve2nsafp7gVEcfXt9Vj0v/+Ck+OdIKg1aDB745A3+6di6SIshjpBp1+NO1c/Hbq2fDoBNCpZf9eTse33QM9R39aO9146XKk1j1jx3o6PNgZr4Zf7l+XtSrcYajID0Jk3JS4OcJKk9E5xU6XV6x1eGcwnRZ7CrOkssjlPeCYDMHNonHeKGSq/eMIpfnFazMjD00KnwO7dmL1VOV2S6Zxr/RkG2sg9Mpcu0lTKSKUQBQPEt57bXXoq2tDQ8++CDsdjvmzp2LDz/8UCyIqa+vh0YT1OMlS5bg1VdfxS9+8Qv87Gc/w5QpU7BhwwbMmjVLaVPDMiEzGWaTDk6XD0dbeqIqApEzPziUPEsSnr5hAe59cz9Odw1g7b/24/5/HxCr/gAhJPjYtXNQZpMWGuQ4Dt9dPAFzi9Jx56t7Udfeh0c3HsWjG49CwwE0WppvMeG5m89FilH+P6kLp+TgRFsfPj3WjhWz8iS//+BpBwgR/tHJdcdOF/SejDlHKFwQ5AoRyTV4W65megoViFiLLKjnJkeOUPgceVoo5GqdoOTI1FTfRj37GHtBKeLey1hzhDK1DMmFKuU6a9asCevRbd269YznVq5ciZUrVypsVeRwHIfZhRZ8frwDBxsdkoWQECJ7fnAoi0uz8MnapXju8zr8bcsJcaZmmS0Ny2fasPrCUnFNTzTMyDfjvz++EO9/1YR39zfh8+Pt4Akwp9CCb83JxzXzC8XqQLm5aGo2XvjiJD492gZCiORihH0N3QAEb1wuaGi0oWsAXj8fVcUnIUT2C4JcOUJxzqhMF1DZcoR9cocg5dlJ2CHTCiZKjsweoVw3NHkyTZdJtNBo/OtWxwizCgQhPNDowHUS31vT0oP2Xg+S9FrMm5CuhHkAAJNeix8um4wbzpuIVqcbxVnJUa/1GY4kgxYrFxZh5cIidPS64fHz4kJYJVlckgW9lsPprgGc6ugXC1UiZX9ACOfJKITWNBNMeg1cXh6nuwZEYZRCR58HLi8PjoNs36PoETpjrBqVuchCrpxX0COUKUcok0CLVaMyfV+5Mglhq8weYXDwdvR2OV1eMd8vR7W0HIz59gm1iKVg5rNAxeOikkxJ2yaixWzSY3JuqqwiOJSsVKMqIggAKUadOK80mjaKYKFMumw2aTRcME8YZXiU3hVb00wxeeuhiBcqhzumJnE5y+6BkEHSchWlyBR9CDavJ1hoVG6PUO5iGYcr6r8vWiCWkaxXJJUSDUwII4QK4ZEoCmZo6b8S+cHxAh3V9qnENgq7w4UWpxtaDYeZUW6lDwcVwmh7CZUoGKBC6PHzkoYhhOLy+sWpHzkyFVnIVTXaLrPnJdcc1OAuQnkEmnpwrTEIoccX/BuQq1iGht4HvH44XdENIZBrtq6cMCGMEFowI3XCzIDHjx21HQCE/YOM6LgoIISVJzrglTDeqSoQFp1qTZN9gkVJTmyVo0o0FRt0GlF0oi2YoeE0o04Ds0me70z0vHqjHxvm9vnR3S+E1OTKeWXJINBuX1AU5C6W6ezzSPp7D4Wek17LIT3GaUoUk14rTmaKtjI50SpGASaEESNMmJEeHt1R2wG3j0dBehKm5KYqZd5Zz8x8MzKS9eh1+0RxiwQaFp0rU/9gKCUxe4TK3BnnxVgwE9pMH+uUFAqt8vTxJOp+UFqQotdyMY/Jo1DB6XH54PL6o/oM6nXJaVdGsgG6QBtStCLd1hMM12pkbGmKdfh2Iu0hpDAhlADtQdtzKvKB1FtqhHVTS6flyHZRGY9oNBwuCHiF249GniekhTJzZOofDCXW6TJyt05QxKb6KO/Y5W6mBwCjTit6l4l0YTcn6aDXCp8VbSiZFtpkpch346DRcMEexyjDo60y53kpeenC31e0c3blHCsoF0wIJbAkMBHms+PtESWKCSHYWiNctC+eJn0JL2MwdNxapHlCnif4KjCsW85CGQrtJWzsGoDbJ92bUOrOOHjHHt2FSu6KUYrYJB6lELbLXPgBCJEeOqUmWoFul7m3kRJrwUybQr9HKmCNUQphsGWI5QjHJELVpwbNDldES1lr2/tQ39kPg1YjiigjeqgQfnW6G90RbDGobe9Fr9uHJL1WkbB0TqoRKQYteCIsI5bC4B5CeS8IwV7C2C6gchVYUIIFM9F5XnI3+VOogEU7eLtN5opRCvXkoi2YCe4hlPf3SCMYNMctFTFHmMk8wjGJSa/FopJMAMC2CJbFUm9wUUlmwpQJj2XyLEKelSfAFyc6Rj1+Z2DF1OwCiyKtJBzHieHRunZpQtjV7xX31+XFuIdwKMGm52g9wkAzvcyeRKyb10NDo3KSHeMUF7lbJyhyeYRy/x6pR3g6Co+w1+1DV39i9RACTAglQ6sXI+ln2xrIDy5j1aKyQdsoNle3jnrsR4eELSbLypT7/sU8ocSCGXpXnJtmjHnf31BiHbxNm6VlD42mxtZLKHdPHCVWj1CcKpMmb2g06BFGmetVKDRaGINHSN9jSdIjTcaZy7HChFAiF04VwnNCNWj4vFCf24edtYJHsozlB2Xj0pnCjNoPD9ox4An//TsGvOKQ7uUzh1/hJQdi5ajEghkl97HF2vRMqwHzZL5jT9ScV6xTb9plHmNGifX7UqpYpiBdCOXbnS7Jm+obuxOvdQJgQiiZadY05KYZ4fLy2HMyfPXoFyc64PHzKMoUticw5GFRcSYKM5LQ6/bh48P2sMdtqW6F108wOTcVk3KUa1uho9VOtI6eMw5FyVmL1CPs90TX9NwUKLLJlzlkSzdZRJvzUkoIY232V7pYJtrvq12h7ys3zQi9loOfJ2iRaFsitk4ATAglw3GcGJ7bNkJ49I0vGwAAFdOtrG1CRjQaDtfMKwAAvLW3MexxHx0SRHKFgt4gIDTqA8AxiUJIPcgiBQoGkg26qJuee90+caqM3B5hcE5ldKE+JapGgdhDo7R9Qv4cofB9ReMR8jwJ5ghlWqVF0Wg4cbyi1PBoog3bpjAhjIKLAuHR7WEKZho6+7GpWshPrVo8UTW7xgtXzy8EIORpW4e5qLq8frFQScmwKABMzk0Fxwk9aFI8iuMB4Zys0JCFaNcxNQcKINJMOqTKXOAVaxWkUlWjcnmESlWNtvVInxvb2e+Bxy8MdJc7NAqEtlBIKxJLxKkyABPCqKCrlA43O4e9W3up8iQIEcr9lbrQjWdKslOwYGIGeAJsqDrTK/z0aBsGvH4UpCdhVoG880WHkmTQYkKmcHd71B756D0aSp2Sm6aIXcEWCml37FQ45a5kBYIeYWefR/K83j63D32BnLBcc0YpWTHMG/XzBJ39SnmEwue5fbzkEDfN8+akGqNaETYa0bZQJGIzPcCEMCqyU43iEO6Xd5wa9Fq/xyeGRW85v1ht08YN18wXwqP/3tN4xt0yrRa9dKY6YWkaHo10Bm1nnwcdgSkmpQrlj2nBjGSPMCCcSmwWyUjWi1NcpLYqUK8rSa9FikHeKtvgXE83/BLnoHb2eUAIwHGQfR+nSa9FWmAaj9TwqJI3NED0TfWJOHAbYEIYNbcvnQQAeHLbiUGl82/va4TT5cPErGQsm8qqRZXim7PzYdBqUNPSM2j2aJ/bh0+OCEKodFiUMtUqeP01LZHlCWlYtCA9SfZB4JRoF/Q2dQvH56fLfwHlOE5s0peaJwwtlJH75iYjIGA8QUSDGkKhAp2ZbIBWxnmelGhbKGgkwKaUEAY8wtMSPMJ+j0+8AZR7rGCsMCGMkstn23DhlGx4fDweeOcgCCHw+nm8+MVJAMCN5cWyDrplDMaSrMeKWYLQ3fHyXjR09sPl9eO2f+6GY8ALm9mEc4szVbFFLJiJ0COkQjjFqlzYPNpN4kp6hEDIeiGJi12VqhgFAL1Wg4xkobhIanhUqfwgJdoWiqBHqMzvsTAKj5B6g2aTTrbh5HLBhDBKOI7DQ1fOgkGnwfZj7fj1e4dR8dg2HG3pRbJBi5ULC+Nt4lnPr66YiSm5qbA7Xbj+mR24/eU9+Px4B1IMWjx5w3xF7tCHIzQ0GklRw7FWQTAnK9jWYQtcAKV6hEqH1KxptIVCml1K9epRssQ1UdIER6lmekq0laP09660R9jYNRBxIU+iVowCTAhjojg7BXcEQqQvfHESpzr6kZViwB9WzoE5gaYmnK1kphjwyg8WozgrGae7BrC1pg1GnQbP3nQu5k3IUM2O0pwUaDUcnC6fOJVlJJSuGAViqBpV2JOwBjzCWEKjSkCn3kSbu1TKI8yN2SNURgjzLEngOKGQJ1Ivmo5kS7SwKMCEMGbuWDYJswssSE/W474V0/DpfRfj8tl58TZr3JBrNuGV1eehMCMJBq0GT94wH+UqDzg36rQozgpUjkYQHj2hQmiUVmg6Brzo90RWcUgIEdsn8hTIEQLBnrZIbhhCUWqwNSXalUdK2xVtaJTeaFhl7iGkGHQaUaQjDY8mausEALBJ0DFi0mux4c7zoeHAGufjREF6Ej5ZuxS9bp9iF6TRmGpNw4m2Phxt6cFFU8PPNu11+9AUuFufnKNM6wQg5GGSDVr0e/ywO1wojSAM63QFWxTylcoRRtlLqLRHaIuy2V/cRSjzVBlKNN8XIURxjxAQ/t21ON1o7BrA3AjWnLHQ6FmOVsMxEYwzJr02biIIRN5CQb3BnDQjLMnKhc85jgtWjkZ4cad5pfRkPZJkblGgUA9luEEII6G4EIrfVWKFRqPxCJ0DPgx4hRsapTxCACgICFqkTfWJOl4NYELIYMgCFcLRWijE/KCChTKUPIktFE0KV4wC0Y9ZU1oIRbsk5lSVLuLJjaK4qDmwfiszxSD7ZpNQxF7CCFso6M5OJoQMxlnKNJsgbMdHqRw9pkKhDMVmFi44kRbMNHcrH06job6ufu+I21tCIYSIBRnKe4RS+/WUrc7MCfm+Ip3GQ3/fNgW9QSCkcjSCHGF7rxudfR5wHFCanXjTthQVws7OTqxatQpmsxnp6em49dZb0ds78h3zsmXLwHHcoMftt9+upJkMRsxMzEqBXsuhz+Mf8cKgRg8hpSBQ8ELvxEcj2EOo3AU0PVkPQ2DkV6ThPueAD57Aup9shXJx4uoqZ+Srq1xev9ggrtR3lp6khy7QBhTpLFS7CvlBINhLGElTPU0ZTMhMVizsHguKCuGqVatw6NAhbNy4Ee+//z4+/fRT3HbbbaO+b/Xq1WhubhYfv/vd75Q0k8GIGb1WI657GilPeKJNvdAoXRpcF+HSYOpJ5Cs4B5LjOLGpPtLK0bZewS6zSQejTpmLKLXJ4+PFDeqjQcO7Jr1GsQZxjYaTvI6pWWEvlSLFIzwWSBnQFEKioZgQHjlyBB9++CGeffZZLF68GBdccAEef/xxvP7662hqahrxvcnJybDZbOLDbA4/ONntdsPpdA56MBjxgP4jP9Q4/N+gy+vHqcD6JTVCo1QIT3UkjkcIhFRCRhiGVGrTeihGnVacFRppTlW8cbAkKVosR/OXzRG2KdhV+j3SHGGPywfHwMg3DzWBm8OpKkRCokExIaysrER6ejoWLlwoPldRUQGNRoOdO3eO+N5XXnkF2dnZmDVrFtatW4f+/vD/kNevXw+LxSI+ioqKZDsHBkMKi0qEkW7bjw2/nutkRx94Ing2Sl7UKSVZghDanS4MeEbPx9EcodKehFXigl6lC2UoUgt5lM4PUooC200auiK9oaF2KVuUkmLUiWI7WrX0MVEIx5lHaLfbkZs7eOi0TqdDZmYm7Pbwm8W/+93v4uWXX8aWLVuwbt06/POf/8QNN9wQ9vh169bB4XCIj4aGBtnOgcGQwtJA/+Ce+i44XWfeIe891Q0AmGZLU6XdJiPFIIbsTnaMHB4lhIRsplf2AipVcIKFMsoKji0QHo20YEatEGRRIATZ0BmpR6hOjhAApucJ0bojzeEjcYQQ1NjPMiG8//77zyhmGfqorq6O2qDbbrsNy5cvx+zZs7Fq1Sq89NJLePvtt3HixIlhjzcajTCbzYMeDEY8KMpMRmlOCvw8wRfHz/QKPz4s3AAum6beVhIaHj05Sp7QMeCFyysUpCh9YZecI1RoIe9QpG7sUCuULNUjVMtTBYAZASE83BReCFt73HC6fNBqOMXWjsWK5Mky9957L26++eYRjyktLYXNZkNra+ug530+Hzo7O2GzRb4eZ/HixQCA48ePY9KkSVLNZTBUZenUHNS29WFrTRtWzAqO2ut1+/DF8Q4AwPKZVtXsKclKxv6GbtSN4hHS9UtZCveeAdJ742guUanB1hTabhKpp6r0XFZKUaBxPZLqzB6XFz1uYaSe0u0TQNAjPDyCR0i9weKsZMWKnWJFshDm5OQgJyf8CClKeXk5uru7sWfPHixYsAAAsHnzZvA8L4pbJFRVVQEA8vLY/E5G4rNsWi6e//wkth1tAyFEDIFuq2mDx8+jNDtFrC5Vg0g9QtG7UWjGaChWiauY1NpqbrNIC42qFYIsyqRtCv2D/qaGg4q42aRDilH5CZoz8gUhrLH3wOfnodOeGWQ8muD5QUDBHOH06dOxYsUKrF69Grt27cLnn3+ONWvW4LrrrkN+fj4AoLGxEWVlZdi1axcA4MSJE3jooYewZ88enDx5Eu+++y5uvPFGXHTRRTjnnHOUMpXBkI3FJZkw6jRodrjE5nkgGBb9+kyrquP4SkQhHDms1iQ2YSs/9UPMEUboEdKQIA0RKgW1S2rVqNIhyPz0JGg4wOXlR92OoZaXSpmYmYxkgxZuHx+2TWdcCyEgVH+WlZXhkksuweWXX44LLrgAf//738XXvV4vampqxKpQg8GATz75BJdeeinKyspw77334tvf/jbee+89Jc1kMGTDpNfivFJh+8XWGiE14PHx2Fwt/PelMyJPC8hBcaBydLTQaF2b8PoEhcUGCLZPdEcwXcbt84seWpHCw5qpoEUSGnX7/GKDu9Kio9dqxJ8xWsEMFUKrCvlBQOhzLLMJAhcuPHo0wXsIAYW3T2RmZuLVV18N+3pxcfGgKQ5FRUXYtm2bkiYxGIqzdGoOth1tw7ajbbjtoknYWdeBHpewGWNeBFP65YSGRtt63Oh1+5AaJlxWbRcuYmV5yl+sLEl6GHQaeHw8Wp3uET29pm4XCAGS9FrFpspQaE6tq98Ll9c/Yq6UhnWNuuB2eyUpyEhCY/cATnf1Y8HE8Ls26azUPBXyg5QZ+Wbsre/G4WYnrpxbMOg1QojYOkHHECYibNYogyEzy6YJOfQv67qwpaYV7+9vBgB8fUYuNBp1t5RYkvRio3i4PCEhBNWBggZ6d68kHMcF84SjhEdDBzUrHVK2JOlh1AmXxNG8wtA1R2qEuqk3PNq4vGanehWjlGALxZm9hI3dA+jz+KHXcpiYlZgVowATQgZDdkqyU1CclQyPn8ctz3+JN3YLva1qh0UpdGlwuF7CtpCByFNy1QlfWdNoPm7knJda+UFgyOqqUfKEtLhILcGhBTOjhka71WnpCGWkFgqaHyzNToV+mEKaRCFxLWMwxigcx+GJVfNx/aIiMdxmNRtRPikrLvaMVjlKy9tLslJUG4hMV/HUj+Lh0At/kUqre6whw7dHQu2iFNEjHKWXsDbwO56Qpd7y2zKbGRpOGAo+1MMX84MqRBpigW2oZzAUYGa+BeuvOQeEEJxo64UlSfn+vHDQUWt1YSpHq5tpDke9i1VJYBVPXfvI22jU9AiByDfVq9m0DkTWVD/g8Ys3FmoWpiQZtCjOTkFtWx+ONPeIfaIAcCjgJU5VYbZuLDCPkMFQEI7jMDk3TZXZouGYSD3CMKHRYH5QvalMJTmRbcY4LeYIVRJCS2Qh22ZxHJ26odGmbhd8/uH3Eh5v7QUhwkLebIWn8AxlxjCj1npcXnxyuAUAcF6coiGRwoSQwTjLoR7hqbBCKFy81PQISwPiXNs2shA2BJrp1WjrACKfg6rWYGuKNc0Eg1YDP0/CLlqm+bgpcfC+pg+TJ3x3fxMGvH5Mzk3FwhEqXRMBJoQMxllOcbYgIu29HvQMGQbu8/Ni4/90FVonKLTRv6PPA0eY/X99bh86A4tvqUekNHkRbqpvVnGwNSD069H9f+HCo0db49e4TifM7KjtQG9gxNvru4QisevOLVJ1iEQ0MCFkMM5y0kx6sQdv6ISZkx198Ph4JBu0ijesh5Ji1IktFOGa/ekFPz1ZjzST8r16QGTTZTw+XmymV7NNgRYYnQ5TORpcfqu+R1hemoXCjCS09rjxyAdHcLDRgQONDhi0Glwzv1B1e6TChJDBGAfQtoi99V2Dnq8OWY+jdo8j9QrDFcwEK0bVE+jQ6TI8T4Y9psUpNPkbtBpkpSjb5B9K4SiVo2JoNA4eoUmvxe++LYzBfHlHPR545yAA4NKZVrGPNZFhQshgjAMuLhOa/DcGihcotGJUjUb6odDK0XB5Qto8rlZYFBDGv3Ec4OMJOgJh2aHYQ5rW1Qz5BYdvn+kR9rl94vPxGmW2ZHI2Vi2eAADYV98NALh+0YS42CIVJoQMxjjg64Fm/h21HXAMBHNyak6UGcqkQOVobZjKUbF1QkWPUK/ViBWXjd3DhyDVGrY9lJGmyxwP5HmzUw1x9cDWXT5d3BIyITMZ5aWJXS1KYULIYIwDSrJTMCU3FT6eiMPAgdCKUfUXWouh0bAeoSBEhSpVjFJo1WWNffgh0naVFvIOZaRewmDFaHwb11ONOvzpurkozUnB/10+TfVwe7QwIWQwxglfnyEsBP74kBAe7XF5xXBafEKjwV7C0OH7FDE0qtJUGcpoW9fpd6bWVBkKbSFpcboHefUAxMrfeBTKDOXc4kxsvncZrpiTH29TIoYJIYMxTrh0phAe3VrTCrfPj3eqmgAI01Qy4hBOK8pMhk7DYcDrP6NdgRCi+lQZykhDpIHgtBS1bx4yUwwoDYSTPz/ePui1eBbKnA0wIWQwxgnnFFiQm2ZEn8ePp7fV4jfvHQYA3LSkOC726LUa0csZGh7t7POg3yPsKlR6M/1QRCG0O8/wVH1+HoeaHACA2YUWVe0CgIun5QLAoPA2ENo6wYQwGpgQMhjjBI2GQ0UgPPrYxqPw+HlUTLfi/1xUGjebaHh0aMEMnShjNRtVn9E6OTcVei2HHpfvjArN4229cHl5pBp14sQeNaErvrYdbRNFutftEwt7EiE0OhZhQshgjCMuDQghIIjQY9fOiWtBQ2ieMJRgflDdsCgAGHQaTM4dfuv6V6cFb3BWgTku39uikkwk6bVocbrF0C1dfJuTZkR6cuL37CUiTAgZjHFE+aQs2MwmpBp1ePp7C2BWaWJLOOjw7dq2wU31u+o6AcRvfQ8dN3dkiBAeCAjhOYXpapsEADDqtFgSGGC99agQHo3nRJmzBSaEDMY4wqjT4oO7LsSW/7ssIfJJpeI6pqBHyPNEbPz/+nTrsO9TmuG2KQDAV42B/GCB+vlBCg2Pbq1pg9vnx3Of1wEQVn8xooMJIYMxzshIMcR1LVQotAqyoWsAHp+wXuhAowN2pwspBm3clhmLLRQhQujx8aIwnhOHQhnKskDBzJ5TXfjVu4dQbe9BZooBP7iwJG42jXWYEDIYjLiRm2aE2aSDnyfYfqwNAPDRITsAYFlZbtyWGdPK0YbOAXFjx9GWHnh8PMwmnWproYajKDMZk3JS4OcJXgtsePj/v33OoIW4DGkwIWQwGHGD4zhxHuWfNx0DIQQfB8KioYU9apORYhAnx9AxdAcag/nBeK8Vol4hIMzz/Hocv6uzASaEDAYjrqy+qBRJei2+Ou3As9vrcLy1F3oth4vLckd/s4JMH5InpBWj8egfHMpls4ThCKXZKXjgm9PjbM3Yhwkhg8GIK9mpRty4ZCIAYP0HRwAA55Vmxb2ilVaO0lFrBxq7AQiDCeLNwuJMvP3DJXjrh0uQbNDF25wxj2JC+PDDD2PJkiVITk5Genp6RO8hhODBBx9EXl4ekpKSUFFRgWPHjillIoPBSBD+z0WTkGzQgq4AXB4YBxdPZuQJgre3vgt17X2oCYRIE8EjBIB5EzJY36BMKCaEHo8HK1euxB133BHxe373u9/hL3/5C5566ins3LkTKSkpWL58OVyu8NuiGQzG2CczxTBo1Fsi5LxmFQih0aMtvbj4D1vh9RNkphhUH/nGUB7FhPDXv/417rnnHsyePTui4wkh+NOf/oRf/OIXuPLKK3HOOefgpZdeQlNTEzZs2KCUmQwGI0G47cJSzCow47pzi2A1x78CcmJWCn71rRmYPyEd2sAUmfMnZ8e9UIYhPwkTXK6rq4PdbkdFRYX4nMViweLFi1FZWYnrrrtu2Pe53W643W7x/53O4VenMBiMxCYjxYD3f3RhvM0YxM3nl+Dm80vgdHlR3dwj5g0ZZxcJUyxjtwu9Q1br4JCI1WoVXxuO9evXw2KxiI+ioiJF7WQwGOMPs0mPRSWZSItzAQ9DGSQJ4f333w+O40Z8VFdXK2XrsKxbtw4Oh0N8NDQ0qPrzGQwGgzG2kRQavffee3HzzTePeExpaXQrXWw2oUqspaUFeXl54vMtLS2YO3du2PcZjUYYjYkxLorBYDAYYw9JQpiTk4OcnBxFDCkpKYHNZsOmTZtE4XM6ndi5c6ekylMGg8FgMKSgWLFMfX09Ojs7UV9fD7/fj6qqKgDA5MmTkZoqTJwvKyvD+vXrcfXVV4PjONx99934n//5H0yZMgUlJSV44IEHkJ+fj6uuuirin0uXVbKiGQaDwRjfUB2guhAWohA33XQTAXDGY8uWLeIxAMjzzz8v/j/P8+SBBx4gVquVGI1Gcskll5CamhpJP7ehoWHYn8se7MEe7MEe4/PR0NAwom5wAUE6a+B5Hk1NTUhLS4up38fpdKKoqAgNDQ0wm80yWhh/zuZzA87u8zubzw04u8/vbD43IDHPjxCCnp4e5OfnQ6MJXxuaMH2EcqHRaFBYWCjb55nN5oT5pcrN2XxuwNl9fmfzuQFn9/mdzecGJN75WSyWUY9JmD5CBoPBYDDiARNCBoPBYIxrmBCGwWg04pe//OVZ2aN4Np8bcHaf39l8bsDZfX5n87kBY/v8zrpiGQaDwWAwpMA8QgaDwWCMa5gQMhgMBmNcw4SQwWAwGOMaJoQMBoPBGNcwIWQwGAzGuIYJ4TA88cQTKC4uhslkwuLFi7Fr1654mxQV69evx7nnnou0tDTk5ubiqquuQk1NzaBjXC4X7rzzTmRlZSE1NRXf/va30dLSEieLo+eRRx4RB7dTxvq5NTY24oYbbkBWVhaSkpIwe/Zs7N69W3ydEIIHH3wQeXl5SEpKQkVFBY4dOxZHiyPD7/fjgQceQElJCZKSkjBp0iQ89NBDgwYjj6Vz+/TTT/Gtb30L+fn54DgOGzZsGPR6JOfS2dmJVatWwWw2Iz09Hbfeeit6e3tVPIvhGencvF4vfvrTn2L27NlISUlBfn4+brzxRjQ1NQ36jEQ9t0FImmg9Dnj99deJwWAgzz33HDl06BBZvXo1SU9PJy0tLfE2TTLLly8nzz//PDl48CCpqqoil19+OZkwYQLp7e0Vj7n99ttJUVER2bRpE9m9ezc577zzyJIlS+JotXR27dpFiouLyTnnnEPuuusu8fmxfG6dnZ1k4sSJ5OabbyY7d+4ktbW15KOPPiLHjx8Xj3nkkUeIxWIhGzZsIPv37ydXXHEFKSkpIQMDA3G0fHQefvhhkpWVRd5//31SV1dH3nzzTZKamkr+/Oc/i8eMpXP773//S37+85+Tt956iwAgb7/99qDXIzmXFStWkDlz5pAdO3aQ7du3k8mTJ5Prr79e5TM5k5HOrbu7m1RUVJA33niDVFdXk8rKSrJo0SKyYMGCQZ+RqOcWChPCISxatIjceeed4v/7/X6Sn59P1q9fH0er5KG1tZUAINu2bSOECH/Ier2evPnmm+IxR44cIQBIZWVlvMyURE9PD5kyZQrZuHEjWbp0qSiEY/3cfvrTn5ILLrgg7Os8zxObzUZ+//vfi891d3cTo9FIXnvtNTVMjJpvfOMb5Pvf//6g56655hqyatUqQsjYPrehYhHJuRw+fJgAIF9++aV4zAcffEA4jiONjY2q2T4aw4n8UHbt2kUAkFOnThFCxs65sdBoCB6PB3v27EFFRYX4nEajQUVFBSorK+NomTw4HA4AQGZmJgBgz5498Hq9g863rKwMEyZMGDPne+edd+Ib3/jGoHMAxv65vfvuu1i4cCFWrlyJ3NxczJs3D88884z4el1dHex2+6Dzs1gsWLx4ccKf35IlS7Bp0yYcPXoUALB//3589tlnuOyyywCM7XMbSiTnUllZifT0dCxcuFA8pqKiAhqNBjt37lTd5lhwOBzgOA7p6ekAxs65nXXbJ2Khvb0dfr8fVqt10PNWqxXV1dVxskoeeJ7H3XffjfPPPx+zZs0CANjtdhgMBvGPlmK1WmG32+NgpTRef/117N27F19++eUZr431c6utrcWTTz6JtWvX4mc/+xm+/PJL/PjHP4bBYMBNN90knsNwf6uJfn73338/nE4nysrKoNVq4ff78fDDD2PVqlUAMKbPbSiRnIvdbkdubu6g13U6HTIzM8fU+bpcLvz0pz/F9ddfL26fGCvnxoRwnHDnnXfi4MGD+Oyzz+Jtiiw0NDTgrrvuwsaNG2EymeJtjuzwPI+FCxfit7/9LQBg3rx5OHjwIJ566incdNNNcbYuNv71r3/hlVdewauvvoqZM2eiqqoKd999N/Lz88f8uY1XvF4vvvOd74AQgieffDLe5kiGhUZDyM7OhlarPaOysKWlBTabLU5Wxc6aNWvw/vvvY8uWLYN2NdpsNng8HnR3dw86fiyc7549e9Da2or58+dDp9NBp9Nh27Zt+Mtf/gKdTger1Tpmzw0A8vLyMGPGjEHPTZ8+HfX19QAgnsNY/Fv9yU9+gvvvvx/XXXcdZs+eje9973u45557sH79egBj+9yGEsm52Gw2tLa2Dnrd5/Ohs7NzTJwvFcFTp05h48aNg3YRjpVzY0IYgsFgwIIFC7Bp0ybxOZ7nsWnTJpSXl8fRsugghGDNmjV4++23sXnzZpSUlAx6fcGCBdDr9YPOt6amBvX19Ql/vpdccgkOHDiAqqoq8bFw4UKsWrVK/O+xem4AcP7555/R6nL06FFMnDgRAFBSUgKbzTbo/JxOJ3bu3Jnw59ff33/GtnCtVgue5wGM7XMbSiTnUl5eju7ubuzZs0c8ZvPmzeB5HosXL1bdZilQETx27Bg++eQTZGVlDXp9zJxbvKt1Eo3XX3+dGI1G8sILL5DDhw+T2267jaSnpxO73R5v0yRzxx13EIvFQrZu3Uqam5vFR39/v3jM7bffTiZMmEA2b95Mdu/eTcrLy0l5eXkcrY6e0KpRQsb2ue3atYvodDry8MMPk2PHjpFXXnmFJCcnk5dfflk85pFHHiHp6enknXfeIV999RW58sorE7bFIJSbbrqJFBQUiO0Tb731FsnOzib33XefeMxYOreenh6yb98+sm/fPgKAPPbYY2Tfvn1i5WQk57JixQoyb948snPnTvLZZ5+RKVOmJESLwUjn5vF4yBVXXEEKCwtJVVXVoGuM2+0WPyNRzy0UJoTD8Pjjj5MJEyYQg8FAFi1aRHbs2BFvk6ICwLCP559/XjxmYGCA/PCHPyQZGRkkOTmZXH311aS5uTl+RsfAUCEc6+f23nvvkVmzZhGj0UjKysrI3//+90Gv8zxPHnjgAWK1WonRaCSXXHIJqampiZO1keN0Osldd91FJkyYQEwmEyktLSU///nPB108x9K5bdmyZdh/ZzfddBMhJLJz6ejoINdffz1JTU0lZrOZ3HLLLaSnpycOZzOYkc6trq4u7DVmy5Yt4mck6rmFwvYRMhgMBmNcw3KEDAaDwRjXMCFkMBgMxriGCSGDwWAwxjVMCBkMBoMxrmFCyGAwGIxxDRNCBoPBYIxrmBAyGAwGY1zDhJDBYDAY4xomhAwGg8EY1zAhZDAYDMa4hgkhg8FgMMY1/w/+9X0ec1G/PgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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859mmCiNm2++WXvggQfcnrvzzju1kSNHapoWPOdaWxw8Oa+dO3dqALQff/yx5ph//etfms1m044cOWKa7d5Sn+jXZsOGDRoAraCgQNM0+efKoVEXqqurkZeXh+zs7Jrn7HY7srOzkZuba6Fl8ikrKwMAtGrVCgCQl5eHc+fOuZ17eno62rVrF7DnPn78eNx8881u5wQE37l+8cUX6N27N+6++260adMGPXv2xLvvvlvzen5+PoqKitzONy4uDpmZmQF3vn379kVOTg727t0LANi6dSvWrFmDG2+8EUBwnasrnpxXbm4u4uPj0bt375pjsrOzYbfbsX79etNtlklZWRlsNhvi4+MByD/XoFt9whdOnDgBh8OBpKQkt+eTkpKwe/dui6ySj9PpxGOPPYZ+/fqhW7duAICioiJERkbWfNEESUlJKCoqssBK31i0aBE2bdqEH3/8sc5rwXauBw4cwJtvvolJkybhT3/6E3788Uc8+uijiIyMxOjRo2vOqb7vdaCd75NPPony8nKkp6cjLCwMDocD06dPx8iRIwEgqM7VFU/Oq6ioCG3atHF7PTw8HK1atQrocz979iymTJmC4cOH16w+IftcWQhDkPHjx2P79u1Ys2aN1aYo4dChQ5g4cSJWrFiB6Ohoq81RjtPpRO/evfHCCy8AAHr27Int27fjrbfewujRoy22Ti4fffQRFixYgIULF+Kyyy7Dli1b8NhjjyElJSXozpWhwpl77rkHmqbhzTffVPb/cGjUhdatWyMsLKxO9WBxcTGSk5MtskouEyZMwLJly7B69Wq3dRuTk5NRXV2N0tJSt+MD8dzz8vJw7NgxXHHFFQgPD0d4eDi+++47/N///R/Cw8ORlJQUNOcKAG3btkXXrl3dnuvSpQsOHjwIADXnFAzf68mTJ+PJJ5/EsGHDkJGRgfvuuw+PP/44ZsyYASC4ztUVT84rOTkZx44dc3v9/PnzKCkpCchzFyJYUFCAFStWuK1FKPtcWQhdiIyMRK9evZCTk1PznNPpRE5ODrKysiy0zHc0TcOECRPw2WefYdWqVejQoYPb67169UJERITbue/ZswcHDx4MuHMfOHAgtm3bhi1bttQ8evfujZEjR9bsB8u5AkC/fv3qtMLs3bsX7du3BwB06NABycnJbudbXl6O9evXB9z5VlZW1llpPCwsDE6nE0BwnasrnpxXVlYWSktLkZeXV3PMqlWr4HQ6kZmZabrNviBEcN++fVi5ciUSExPdXpd+rl6X1wQ5ixYt0qKiorR58+ZpO3fu1MaNG6fFx8drRUVFVpvmEw8//LAWFxenffvtt1phYWHNo7KysuaYhx56SGvXrp22atUqbePGjVpWVpaWlZVlodXycK0a1bTgOtcNGzZo4eHh2vTp07V9+/ZpCxYs0GJiYrQPP/yw5pgXX3xRi4+P1z7//HPtp59+0m6//faAaCmozejRo7ULL7ywpn1iyZIlWuvWrbUnnnii5phAPdeKigpt8+bN2ubNmzUA2syZM7XNmzfXVEp6cl6DBw/Wevbsqa1fv15bs2aN1qlTJ79sn2jsXKurq7XbbrtNu+iii7QtW7a4Xa+qqqpqPkPmubIQ1sMbb7yhtWvXTouMjNT69OmjrVu3zmqTfAZAvY+5c+fWHHPmzBntkUce0RISErSYmBjtjjvu0AoLC60zWiK1hTDYzvXLL7/UunXrpkVFRWnp6enaO++84/a60+nUnn76aS0pKUmLiorSBg4cqO3Zs8cia41TXl6uTZw4UWvXrp0WHR2tdezYUXvqqafcLpCBeq6rV6+u92909OjRmqZ5dl6//vqrNnz4cK1FixZabGysNmbMGK2iosKCs2mcxs41Pz+/wevV6tWraz5D5rnyeoQMwzBMSMM5QoZhGCakYSFkGIZhQhoWQoZhGCakYSFkGIZhQhoWQoZhGCakYSFkGIZhQhoWQoZhGCakYSFkGIZhQhoWQoZhGCakYSFkGIZhQhoWQoZhGCak+X+T44nCZxjrpAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Test\n", + "plt.figure(figsize=(5, 2)) \n", + "plt.plot(x_test[0,:,0])\n", + "plt.show()\n", + "\n", + "# Prediction\n", + "plt.figure(figsize=(5, 2)) \n", + "plt.plot(y_pred[0,:,0], color='red')\n", + "plt.show()" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "12_LSTM_vs_1DConv_solution.ipynb", + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.8" + }, + "vscode": { + "interpreter": { + "hash": "949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1" + } + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/exercises/03_rnn/02_count_data.ipynb b/exercises/03_rnn/02_count_data.ipynb new file mode 100644 index 0000000..4b72bed --- /dev/null +++ b/exercises/03_rnn/02_count_data.ipynb @@ -0,0 +1,841 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "EIolRLmR2tJc" + }, + "source": [ + "# Neuronale Netze für Zähldaten \n", + "\n", + "Wiederholen Sie die Poisson-Regression für den Fisch-Datensatz, jetzt mit Keras. Aus der vorherigen Übung:\n", + "\n", + "-----\n", + "\n", + "Der folgende Datensatz enthält die Anzahl der Fische, die eine Gruppe von Campern in einem staatlichen Park gefangen hat (entnommen aus https://stats.idre.ucla.edu/r/dae/zip/). Ihre Aufgabe ist es, die Anzahl der Fische $y$ vorherzusagen, die von einer Gruppe von Anglern gefangen wurden. Wir haben einen kleinen Datensatz von 250 Gruppen, die einen Staatspark besucht und folgende Informationen geliefert haben: \n", + "\n", + "* Wie viele Personen in der Gruppe sind\n", + "* Die Anzahl der Kinder in der Gruppe\n", + "* Die Verwendung von Lebendködern\n", + "* Ob die Gruppe mit einem Camper in den Park kam. \n", + "\n", + "Teilen Sie den Datensatz in einen Trainingssatz und einen Testsatz auf. Verwenden Sie die ersten 200 Einträge zum Trainieren, die restlichen 50 zum Testen. Siehe unten für den Code zum Lesen der Daten.\n", + "\n", + "## Setup\n", + "\n", + "### Einbinden von Paketen" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "YsAt_vDL3jFG" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('1.23.4', '2.11.0', '0.19.0')" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import random\n", + "import tensorflow as tf\n", + "import tensorflow.keras as keras\n", + "from sklearn.model_selection import train_test_split\n", + "import tensorflow_probability as tfp\n", + "\n", + "np.__version__, tf.__version__, tfp.__version__" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Einlesen der Daten" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Sat Jan 21 19:46:24 UTC 2023']" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# The Fish Data Set\n", + "# See example 2 from https://stats.idre.ucla.edu/r/dae/zip/ \n", + "#\"nofish\",\"livebait\",\"camper\",\"persons\",\"child\",\"xb\",\"zg\",\"count\"\n", + "import os\n", + "from urllib.request import urlretrieve\n", + "if not os.path.isfile('data/fishing.npz'):\n", + " print(\"Downloading...\")\n", + " urlretrieve('http://www-home.htwg-konstanz.de/~oduerr/data/fishing.npz', filename = 'data/fishing.npz')\n", + "data = np.load('data/fishing.npz')\n", + "dateDownloaded = !date #Calling Linux\n", + "dateDownloaded" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123
01.00.04.00.0
11.01.02.00.0
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3\n", + "0 1.0 0.0 4.0 0.0\n", + "1 1.0 1.0 2.0 0.0" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train = data['Xt'] #\"livebait\",\"camper\",\"persons\",\"child\"\n", + "X_test = data['Xte']\n", + "y_train = data['yt']\n", + "y_test = data['yte']\n", + "pd.DataFrame(X_train[0:2])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "4-uaG92sPBXg" + }, + "source": [ + "## Results from the Machine Learning excercise, we had. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "_uiqzQZnChZ_" + }, + "source": [ + "### LinearRegression" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "lFLrY1YtNClk", + "outputId": "d7779272-1b27-4096-e4ec-697001f2bc7e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-8.49222821, 2.4822138 , 2.95430727, 4.64953914, -5.47160051])" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "Xd = np.hstack([np.ones((X_train.shape[0],1)), X_train])\n", + "pd.DataFrame(Xd[0:2])\n", + "Xdt = np.hstack([np.ones((X_test.shape[0],1)), X_test])\n", + "X_train.shape,Xd.shape\n", + "model_skl = LinearRegression(fit_intercept=False)\n", + "res = model_skl.fit(Xd, y_train)\n", + "res.coef_" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "pNIUUugxPmSZ" + }, + "source": [ + "#### RMSE und NLL\n", + "Bestimmen Sie den mittleren quadratischen Fehler (Root Mean Square Error, RMSE) und die durchschnittliche negative Log-Likelihood (NLL) für den Testsatz. Für die NLL wird angenommen, dass die bedingte Wahrscheinlichkeitsverteilung (CPD) $p(y|x)$ durch die Dichte eines Gauß mit konstanter Varianz $\\sigma^2$ gegeben ist. Schätzen Sie $\\sigma^2$ anhand der Varianz der Residuen. Verwenden Sie die Varianzschätzung mit $1/N$. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "hmtWgh0xPYca", + "outputId": "44bf40a7-3fab-4e7a-9eee-6cc466a1980a" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(8.588126386734231, 73.75591483452077, (50, 5))" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ypred = model_skl.predict(Xdt)\n", + "#ypred = np.ones_like(y_test) * np.median(y_train)\n", + "sigma_hat_2 = np.mean((y_test - ypred.flatten())**2)\n", + "np.sqrt(sigma_hat_2),sigma_hat_2,Xdt.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "MLg_A70-QbJr", + "outputId": "a57c6bb0-cd23-44d1-bf60-2656a62a3ceb" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "3.5693191297796893" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "0.5*np.log(2 * np.pi * sigma_hat_2) + 0.5*np.mean((y_test - ypred.flatten())**2)/sigma_hat_2" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "PLl18uW6D507" + }, + "source": [ + "#### Vergleich mit Testsatz\n", + "\n", + "Für den Testsatz: Stellen Sie den Mittelwert der vorhergesagten Anzahl der gefangenen Fische gegen die beobachtete Anzahl der gefangenen Fische. Fügen Sie außerdem das 2,5- und 97,25-Präzentil von p(y|x), der bedingten Vorhersageverteilung (CPD) von $y$ für ein gegebenes $x$, ein. Warum ist ein Gauß nicht ideal für diese Art von Daten? Für den Gauß sind das 2,5% und das 97,5% Perzentil näherungsweise gegeben durch $\\mu \\pm 1,96*\\sigma$" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + }, + "colab_type": "code", + "id": "f51ByX5wSjPa", + "outputId": "2fce8f60-ebdb-493a-f3a9-6950c7f0bae0" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(ypred, y_test,alpha=0.3)\n", + "sort_idx=np.argsort(ypred,axis=0)\n", + "plt.plot(ypred[sort_idx].flatten(), ypred[sort_idx].flatten()+1.96*np.sqrt(sigma_hat_2),linestyle='dashed',c=\"black\")\n", + "plt.plot(ypred[sort_idx].flatten(), ypred[sort_idx].flatten()-1.96*np.sqrt(sigma_hat_2),linestyle='dashed',c=\"black\")\n", + "plt.plot(ypred, ypred, c=\"black\")\n", + "plt.title('Comparison on the testset')\n", + "plt.xlabel('predicted average of caught fish')\n", + "plt.ylabel('observed number of caught fish')\n", + "plt.xlim(-5,15)\n", + "plt.ylim(-5,15)\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "XXsavhRVU4BJ" + }, + "source": [ + "### Poisson\n", + "\n", + "Bei diesen Daten handelt es sich um Zähldaten. Zähldaten haben nur positive Werte und auch die Verteilung ist diskret. Man kann nicht 0,5 Fische fangen, und dass die CPD eine Wahrscheinlichkeit für eine negative Anzahl von Fischen hat, ist auch nicht ganz richtig. Eine Gauß-Verteilung als CPD ist daher nicht ideal. Verwenden Sie nun eine Poisson-Verteilung als CPD. Wenn wir eine Poisson-Verteilung annehmen, dann ist die Wahrscheinlichkeit, $k$ Fische zu fangen, gegeben durch \n", + "$$\n", + " p(k) = \\exp(-\\mu) \\frac{\\mu^k}{k!}\n", + "$$\n", + "\n", + "und die NLL somit durch:\n", + "\n", + "$$\n", + " log(p(k)) = -\\mu + k \\cdot \\log(\\mu) - log(k!)\n", + "$$\n", + "\n", + "wobei $\\mu$ der Erwartungswert ist. In unserem Fall ist das die durchschnittliche Anzahl der erwarteten Fische.\n", + "\n", + "Bei der probabilistischen Interpretation der linearen Regression ist $y_i$ für ein gegebenes $x_i$ wie ein Gauß verteilt. Der Parameter $\\mu_i$ aus $N(\\mu_i,\\sigma^2)$ ist aus $x_i$ über $\\mu_i= \\beta^T \\cdot x_i$ bestimmt worden. Da $\\mu_i$ in der Poissonschen bekannt ist, muss es positiv sein. Wir leiten daher $\\beta^T \\cdot x_i$ zunächst durch ein Exponential, um es positiv zu machen, und können so $\\mu_i=exp(\\beta^T \\cdot x_i)$ bestimmen.\n", + "\n", + "Verwenden Sie einen Gradientenabstiegsansatz, um die Lösung für die Parameter zu finden. Berechnen Sie den RMSE und die NLL für die Testmenge.\n", + "\n", + "Hinweis: Auf dem Trainingsset sollte die NLL für die Parameterwerte (1,1,1,1,1) ca. 1508 betragen und der Gradient " + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "HL_GpshBU4BJ", + "outputId": "1560dedc-f3e6-4455-f474-b90e0c150657" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1507.9856602262082" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def NLL(y_train, Xd, w):\n", + " mu = np.exp(np.matmul(Xd,w))\n", + " ret = np.zeros_like(mu)\n", + " for i in range(ret.shape[0]):\n", + " ret[i] = mu[i] - y_train[i]*np.log(mu[i]) + np.log(1.0*np.math.factorial(int(y_train[i])))\n", + " return np.mean(ret)\n", + "w = np.ones(5)\n", + "NLL(y_train, Xd,w)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "LwpfoYG-U4BL", + "outputId": "3cf4dd06-24bf-417e-dbb3-679193216af5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-1518.61, -1403.99, -1171.02, -5701.91, -3258.7 ])" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def gradNLL(y_train, Xd, w):\n", + " mu = np.exp(np.matmul(Xd,w))\n", + " #print(mu.shape)\n", + " ret = np.zeros_like(Xd)\n", + " for i in range(Xd.shape[0]):\n", + " mux = Xd[i] * mu[i]\n", + " ret[i] = -mux + y_train[i] *Xd[i]\n", + " return np.mean(ret, axis=0)\n", + "\n", + "NLL(y_train, Xd,np.ones(5))\n", + "np.round(gradNLL(y_train, Xd,np.ones(5)),2)\n", + "#1518.61, 1403.99, 1171.02, 5701.91, 3258.7" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "colab_type": "code", + "id": "DjXqvYyqU4BN", + "outputId": "5184b8fa-b50a-436c-c8a1-8c831306fc26" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10000/10000 [00:05<00:00, 1740.76it/s]\n" + ] + }, + { + "data": { + "text/plain": [ + "(array([-1.74007527, 0.56500613, 0.66091814, 0.93220074, -1.62023821]),\n", + " 3.3806067025761606)" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from tqdm import tqdm \n", + "w = np.ones(5)\n", + "hist = []\n", + "for i in tqdm(range(10000)):\n", + " if (i % 10 == 0):\n", + " hist.append(NLL(y_train, Xd,w))\n", + " w = w + 0.001 * gradNLL(y_train, Xd,w)\n", + "w, NLL(y_train, Xd,w)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 286 + }, + "colab_type": "code", + "id": "tRV1sLkQU4BO", + "outputId": "88b17695-3df7-49c9-ce6b-87f30da200ed" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.0, 5.0)" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGiCAYAAAC79I8tAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAnUklEQVR4nO3de3jU9YHv8c/ck5BkQkIuBBJAEFC5iCKItViVSilrrbvbUyntouXsHlt0tWytsj1d9dl1w1OfdVurda3d1T2nKq19ilqP1kUUkK0gIKAg5SICEQgBQjK5zvV7/phkyEBQJvlOJpf363nmycxvfjPzzRdk3v4uMw5jjBEAAIAFzkwPAAAADByEBQAAsIawAAAA1hAWAADAGsICAABYQ1gAAABrCAsAAGANYQEAAKwhLAAAgDWEBQAAsCalsHjggQfkcDiSLhMnTkzX2AAAQD/jTvUBl1xyid54443TT+BO+SkAAMAAlXIVuN1ulZWVpWMsAACgn0s5LPbu3avy8nJlZWVp1qxZqqqqUmVl5TnXDwaDCgaDiduxWEx1dXUqKiqSw+Ho3qgBAECvMsaosbFR5eXlcjrPfSSFI5WvTX/ttdfU1NSkCRMm6OjRo3rwwQd1+PBh7dixQ3l5eV0+5oEHHtCDDz6Y+m8AAAD6nOrqao0cOfKc96cUFmeqr6/XqFGj9Mgjj2jx4sVdrnPmFouGhgZVVlaqurpa+fn53X3pjNm4/6QW/+dmjRyarT/cPTvTwwEAoFcEAgFVVFSovr5efr//nOv16MjLgoICjR8/Xvv27TvnOj6fTz6f76zl+fn5/TIspo3zyenL0dFWyZM1RNleV6aHBABAr/mswxh69DkWTU1N+uijjzR8+PCePE2/MizXp8IhXhkj7attyvRwAADoU1IKi+9///tau3atDhw4oD/+8Y+6+eab5XK5tGDBgnSNr08aX5orSdpzrDHDIwEAoG9JaVfIJ598ogULFujkyZMqLi7W1VdfrQ0bNqi4uDhd4+uTxpfmacP+Ou2pJSwAAOgspbBYsWJFusbRr1xYGj8DZk8NYQEAQGd8V0g3XDw8ftDpziOBDI8EAIC+hbDohouG58npkGobg6oNtGV6OAAA9BmERTfkeN0aWxw/gJOtFgAAnEZYdNOkEfEPB9lxuCHDIwEAoO8gLLrpkvL4cRY7jhAWAAB0ICy66fQWC3aFAADQgbDopovbt1gcrm/VqeZQhkcDAEDfQFh0U36WR6OLciRxACcAAB0Iix64pDy+O+QDDuAEAEASYdEjU0bGw2Jb9akMjwQAgL6BsOiBy0cNlSRtOVgvY0yGRwMAQOYRFj0waYRfHpdDJ5qC+uRUa6aHAwBAxhEWPZDlcSWOs9hykN0hAAAQFj10WWXH7hDCAgAAwqKHOo6zeO8QYQEAAGHRQ5eNKpAk7ToaUHMwktnBAACQYYRFDw33Z6vcn6WYkbZX12d6OAAAZBRhYcH00YWSpA37T2Z4JAAAZBZhYcFVY4skSX/8iLAAAAxuhIUFV40dJknaVl2vlhDHWQAABi/CwoKKwmyNKMhWJGa06QBnhwAABi/CwgKHw9Fpd8iJDI8GAIDMISwsuWpcPCze4TgLAMAgRlhYMuuC+HEWHxxuUENLOMOjAQAgMwgLS8r8WRpXkitjpHV7j2d6OAAAZARhYdF1E0skSW/9qTbDIwEAIDMIC4uunRAPizV7jisaMxkeDQAAvY+wsGj66KHKy3Krrjmk7Z/UZ3o4AAD0OsLCIo/LqdkXFktidwgAYHAiLCy7tv04i9W7CAsAwOBDWFh27YRiOR3Sh0cDqq5ryfRwAADoVYSFZUW5Pl15QfzDsv7fB0czPBoAAHoXYZEGX548XJL0KmEBABhkCIs0+NKkMjkd0vufNLA7BAAwqBAWaTCs0+4QtloAAAYTwiJNOnaHvLz9SIZHAgBA7yEs0mT+5OHyuBzaeSSgXUcDmR4OAAC9grBIk6FDvJpzUakk6bdbPsnwaAAA6B2ERRr95eUjJUkvbj2scDSW4dEAAJB+hEUazR5frGG5Pp1sDvER3wCAQYGwSCOPy6mbp5VLkp5/91CGRwMAQPoRFmn2jZmjJMW/Sv3AieYMjwYAgPQiLNJszLAhumZ8sYyRfrXhYKaHAwBAWhEWvWDRVfGtFr/ZXK2WUCTDowEAIH0Ii15wzfgSVRbmKNAW4dRTAMCARlj0ApfTocVXj5EkPbl2P6eeAgAGLMKil3z9igoNy/XqcH2rXt7Gx3wDAAYmwqKXZHlcWnz1BZKkn6/Zp1jMZHhEAADYR1j0om9eWan8LLc+Ot6sP+ysyfRwAACwjrDoRXlZHt161WhJ0iOr9ijCsRYAgAGGsOhliz9/gQpyPNpX28QZIgCAAYew6GX+bI/uvO5CSfGtFnyuBQBgICEsMuCbV1aqojBbtY1B/fLtjzM9HAAArCEsMsDndumeuRMlSU+s+UifnGrJ8IgAALCDsMiQG6cM14zRhWoNR/XAyztlDKefAgD6P8IiQxwOhx66eZI8Lofe2FWr13cey/SQAADoMcIigy4szdP/mj1WkvTAyzsVaAtneEQAAPQMYZFhd1w3TqOLclQTaNP9L+3M9HAAAOgRwiLDsjwu/cv/uFROh7Ry62G9vJ3vEQEA9F+ERR9w+aihuqP9sy3+98oPdLi+NcMjAgCgewiLPuLO68ZpakWBAm0RffdXW9QWjmZ6SAAApIyw6CM8LqceWzBNBTkebf+kQQ+8zPEWAID+h7DoQyoKc/ToLdPkdEgrNlXr/244mOkhAQCQkh6FxfLly+VwOHT33XdbGg5mjy/W9+dOkCTd/9IO/Rdfrw4A6Ee6HRabNm3Sk08+qSlTptgcDyR955qx+vr0CsWMdOfzW7XlYF2mhwQAwHnpVlg0NTVp4cKFeuqppzR06FDbYxr0Oj6V87qJJQpGYlr8n5u1u6Yx08MCAOAzdSsslixZovnz52vOnDmfuW4wGFQgEEi64LO5XU499o1pmlpRoPqWsBY8tUG7jjJ3AIC+LeWwWLFihd577z1VVVWd1/pVVVXy+/2JS0VFRcqDHKxyvG79n9tmaPIIv+qaQ1rw1AbtPNKQ6WEBAHBOKYVFdXW17rrrLj377LPKyso6r8csW7ZMDQ0NiUt1dXW3BjpY+XM8+tX/nHl6y8UvNmjD/pOZHhYAAF1ymBS+r/vFF1/UzTffLJfLlVgWjUblcDjkdDoVDAaT7utKIBCQ3+9XQ0OD8vPzuz/yQSbQFta3n96kzQdPyety6uGvTdFNl47I9LAAAIPE+b5/pxQWjY2NOngw+bMVbrvtNk2cOFH33nuvJk2aZG1gOFtbOKrv/XqbXtsRPwX1e3PG687rxsnpdGR4ZACAge5837/dqTxpXl7eWfEwZMgQFRUVnVdUoGeyPC49/o3LVPXaLj319sf61zf2aFv1Kf3r1y9VQY4308MDAIBP3uxvnE6Hfjj/Yv34L6fI53bqrd3HNf/R9dpeXZ/poQEAkNquEBvYFWLPziMN+u6z7+ngyRa5nQ7dcd04Lbl2nDwuehEAYNf5vn/zDtSPXVLu18t3XK0vTy5TJGb0kzf26uaf/zcfpgUAyBjCop/zZ3v0+Dcu009vuVT+bI92HA7oz372tqpe26XmYCTTwwMADDKExQDgcDh006UjtOp7szXnolKFo0ZPrt2v6/9lrV55/4h6eW8XAGAQ4xiLAWj1rmN68Pcf6lBdiyRp+qih+sGXJmrGmMIMjwwA0F+l5XMsbCAsekdbOKon1+7Xz9fsUzASkyRdM75Y98ydoEkj/BkeHQCgvyEsIEmqaWjTz97cq19vqlYkFv+j/sKEYt1+zVjNHFMoh4MP1wIAfDbCAkkOnGjWv76xR7/ffkTtfaGpFQW6ffYF+uLFpXJziioA4FMQFujSgRPNeurt/XphyycKte8iGe7P0i1XVOrrV1SozH9+Xy4HABhcCAt8quONQT3zx4/13MZDOtUSliS5nA7NuahEt8yo1OfHDWMrBgAggbDAeWkLR/X6zho9u+GQ3j1Ql1heNMSrP5syXDdNG6FpFQUciwEAgxxhgZTtOdao5zYe0u+3H9HJ5lBi+aiiHP3ZlOG64eIyTR7h59tUAWAQIizQbeFoTOv3ndBLWw/r9Z3H1BqOJu4rzffpixeX6oaLy3TlBUXyutldAgCDAWEBK1pCEa368Jj+a+cxrdldq+bQ6cjI9bl15QVFmj1+mD5/YbFGF+WwywQABijCAtYFI1H98aOT+q+dx7Tqw2M60RRMun9EQbZmjx+mq8cVa+YFhRqW68vQSAEAthEWSKtYzOjDowGt23tcb+85oc0H6xSOJv9VuqB4iGaMLtT00YWaMbpQFYXZbNEAgH6KsECvaglFtPHjOr2954T+e98J7T529le3l+b7NH10oaZVFGjKyAJNGpGvHK87A6MFAKSKsEBG1beEtPnAKW06UKd3D9Tpg08aEh8p3sHpkC4sydOUkX5NrSjQ1JEFmlCWxwGhANAHERboU1pDUW2tPqWth+q1vbpe73/SoJpA21nreVwOjS3O1UXD8zWxLC/+c3ieinN97EYBgAwiLNDnHQu0JSJj+yfxnw2t4S7XLRri1cThebqoLF/jy/I0riRXY4tz5c/29PKoAWBwIizQ7xhjdKShTX86GtCuowHtqmnUrqMBHTjRrNg5/pYW5/k0tniIxhbnJmJjXEmuhvuz2MIBABYRFhgwWkNR7a2NR8auo43aW9uoj2qbu9yV0iHH69LooiEaPSxHlYVDNKoop/0yRMPzs/j0UABIEWGBAa8pGNFHtU366HiT9rX//Oh4sw6caD7rQNHOvC6nRhZma3TREFUWxoOjsjBHI4Zma0RBtvKy2L0CAGc63/dvzvVDv5Xrc8fPJqkoSFoejsZ08GSLDp5sPv2zrkWHTrao+lSLQtGY9h9v1v7jzV0+b36WWyOG5mhEQZZGFGS3B0eOyguyNGJoNgeSAsCnICww4HhcTo0riR9rcaZozOhIfasO1bUkxcehuhYdaWhVfUtYgbaIAu3HeXTF63ZqREG2yguyVJqfpbL8+M/S/CyV+eO3h+V6+dp5AIMSu0KATpqCER2pb9XhU606XN9+ab9+pL5VxwJt5zyQtDOnI35gaSI42qMjftvXHh8+FeR42PoBoF9gVwjQDbk+t8aX5ml8aV6X94ejMdU0tCVCoybQpmMNbToWCMavB9pU2xhUNGZ0LBDUsUBQUsM5X8/tdKgo16viPJ+G5Z6+xG97VZzr07A8n4pzffJnezjoFECfR1gAKfC4nKoozFFFYc4514nGjE42B3WsIR4bNYE21QbaVNPQlhQf9S1hRZIC5NN1REhHeBQN8alwiEdDh3hVmOON/+y45HgJEQAZQVgAlrmcDpXkZakkL0uT5T/neqFITCebgzrRGNKJpqCONwV1vDGoE01BnWgK6Xhjm040xe9LNUKk+O6YghyvhuZ4TgfHEK+G5iT/LBziVUGOR/5sj/KyPHIRIwB6gLAAMsTrdmq4P1vD/dmfue5ZEdIYVF1LSHXN8cup5pDqWuI/TzaH1NgWUcwocf9H5zgD5kwOh5Tnc6ugfYtHQY5H+dkeFWTHw6NjWfy6N+l2jtfF8SIACAugP0glQqT4sSCnWkI61RyOh0dLPDhOdYRIpyipaw6poTWsllBUxih+VkxbJOUxelyORHz4s+NBkpflUV6WW3lZbuV3up7n67juSdyXm+VmawkwABAWwADkcTkTu2POVygSU0NrWA2tofafYdW3JP/sfKlvCamhNaKG1pDCUaNw1LTvugl1e9xDvK6kGDl93aP8M5bl+uKXHJ9buT6Xhvjc8YuXQAEyibAAICm+VaQ4L35gaCqMMWoNR5PiI/55IGE1tkXUeNbP09cD7deDkZgkqTkUVXMoqpquP0LkvGV7OkLDpSHeeIAMaY+P3ESAnI6RxDKfKx4rnR/jdXMQLJACwgJAjzgcDuV442/G5QXnt6vmTKFI7KzwCJwjRhqDp5c1B+OXpmBEzaGoou0fMtIajqo1HNWJJju/Y7bHpRyvS9nejp9u5bQvy/K6EtezvW7leM9Y15O8LP5c7sT9Hj5IDQMMYQEg47xup4pyfSrKTW1rSWfGGAUjsfbYiLbHRjw6WoLR0wESjKgpFP/ZkrReNDlUgpHEh6F1hIrO7xjYlHhcjkRsnBkv2R6nsj0uZbVffB6nstzxdbLczsTyLE/n6/Hbice544/zuZ0cXIteQVgAGBAcDkfijbXo7E9zT1lHqHSESUs4opZQVK2hqFpCUbWEImoLd1w/vby1fb3Ty9ofF47fbg1F1RI+vXUlfnxK9w6YTYXDIWW5kyPE53a2R8rp5dkel3ydY8XtUrbXKZ/bJa87Hig+d/yxidsel7wuZyJgvJ3WIWgGH8ICALrQOVRkIVQ6M8YoFI11ipROERKOqq1jeTiqYDiqtvYtJm3hmNo6fkbi67VFOi8/43oklggYYzpteVHY7i/0GbyujgBxtgfIGWGSFC3JYZK43kW0eDtuu5zyuJ3yuOLP73U74tc7lrnjyz0uJwf29gLCAgB6mcPhaH9zdKng3B/iakU4GmuPkqiC7dHR2kWAnI6U0/d1rBcMRxWMxNov8euhTrcT19vXC0Vj6vwtVKFofFnj+X22W1q5nA55XPHw8LWHR1KEuByJ68lR4ugyVE6v6+j6+dwOeV2u+Gt2epzb5ZDH6ZTH7ZDbGV/ubh+Xx+Xo11t5CAsAGMA63ujyszy99prGxE8/ToqORIxEk6+H49ERDJ++L9hltHSsd/rxbZGowtGYwpH4FqBQJKZwe8SE2wMnHE3+1sBozCgaM2oLx9TYazOSOrfT0Sk04rHhdsaDxe08HSCepCBpv8/t1D/dNElDh3gzM/aMvCoAYMByOBzx/1N3Z/6Ml47I6YiNcDQeKuH26AglAuR0mJxexyQtD3a6P9R+f+iMx8Wfz3QKm1jiNUKRmCJRo0is/XrMJMZxpkjMKNIeQN3xwI2X9HTquo2wAAAMWEmR0/2TjtLKmHhERNpDJRI9HTXhaHKARNq3yESip5fF14lvuQnH4gGVl5W5t3fCAgCADHI4Oo77kLLlyvRweizz26kAAMCAQVgAAABrCAsAAGANYQEAAKwhLAAAgDWEBQAAsIawAAAA1hAWAADAGsICAABYQ1gAAABrCAsAAGANYQEAAKwhLAAAgDWEBQAAsIawAAAA1hAWAADAGsICAABYQ1gAAABrCAsAAGANYQEAAKwhLAAAgDWEBQAAsCalsHjiiSc0ZcoU5efnKz8/X7NmzdJrr72WrrEBAIB+JqWwGDlypJYvX64tW7Zo8+bNuu6663TTTTdp586d6RofAADoRxzGGNOTJygsLNTDDz+sxYsXn9f6gUBAfr9fDQ0Nys/P78lLAwCAXnK+79/u7r5ANBrVCy+8oObmZs2aNeuc6wWDQQWDwaSBAQCAgSnlgzc/+OAD5ebmyufz6fbbb9fKlSt18cUXn3P9qqoq+f3+xKWioqJHAwYAAH1XyrtCQqGQDh06pIaGBv32t7/VL3/5S61du/accdHVFouKigp2hQAA0I+c766QHh9jMWfOHI0dO1ZPPvmk1YEBAIC+43zfv3v8ORaxWCxpiwQAABi8Ujp4c9myZZo3b54qKyvV2Nio5557TmvWrNHrr7+ervEBAIB+JKWwqK2t1V/91V/p6NGj8vv9mjJlil5//XV98YtfTNf4AABAP5JSWPz7v/97usYBAAAGAL4rBAAAWENYAAAAawgLAABgDWEBAACsISwAAIA1hAUAALCGsAAAANYQFgAAwBrCAgAAWENYAAAAawgLAABgDWEBAACsISwAAIA1hAUAALCGsAAAANYQFgAAwBrCAgAAWENYAAAAawgLAABgDWEBAACsISwAAIA1hAUAALCGsAAAANYQFgAAwBrCAgAAWENYAAAAawgLAABgDWEBAACsISwAAIA1hAUAALCGsAAAANYQFgAAwBrCAgAAWENYAAAAawgLAABgDWEBAACsISwAAIA1hAUAALCGsAAAANYQFgAAwBrCAgAAWENYAAAAawgLAABgDWEBAACsISwAAIA1hAUAALCGsAAAANYQFgAAwBrCAgAAWENYAAAAawgLAABgDWEBAACsISwAAIA1hAUAALCGsAAAANYQFgAAwBrCAgAAWENYAAAAawgLAABgDWEBAACsISwAAIA1hAUAALCGsAAAANakFBZVVVW64oorlJeXp5KSEn31q1/V7t270zU2AADQz6QUFmvXrtWSJUu0YcMGrVq1SuFwWDfccIOam5vTNT4AANCPOIwxprsPPn78uEpKSrR27VrNnj27y3WCwaCCwWDidiAQUEVFhRoaGpSfn9/dlwYAAL0oEAjI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mzcn7jfG6B/+4R80fPhwZWdna86cOdq7d2/Sc9TV1WnhwoXKz89XQUGBFi9erKampt7+VfqsaDSqH/3oRxozZoyys7M1duxY/eM//qM6nxPAPHfPunXrdOONN6q8vFwOh0Mvvvhi0v225vX999/X5z//eWVlZamiokI//vGPez54MwCsWLHCeL1e8x//8R9m586d5q//+q9NQUGBOXbsWKaH1i/MnTvXPP3002bHjh1m27Zt5stf/rKprKw0TU1NiXVuv/12U1FRYVavXm02b95srrzySnPVVVcl7o9EImbSpElmzpw5ZuvWrebVV181w4YNM8uWLcvEr9Tnvfvuu2b06NFmypQp5q677kosZ57tqKurM6NGjTK33nqr2bhxo9m/f795/fXXzb59+xLrLF++3Pj9fvPiiy+a7du3m6985StmzJgxprW1NbHOl770JTN16lSzYcMG8/bbb5tx48aZBQsWZOJX6pMeeughU1RUZF555RXz8ccfmxdeeMHk5uaan/70p4l1mOfuefXVV80Pf/hD87vf/c5IMitXrky638a8NjQ0mNLSUrNw4UKzY8cO8/zzz5vs7Gzz5JNP9mjsAyIsZsyYYZYsWZK4HY1GTXl5uamqqsrgqPqv2tpaI8msXbvWGGNMfX298Xg85oUXXkiss2vXLiPJvPPOO8aY+H8ETqfT1NTUJNZ54oknTH5+vgkGg737C/RxjY2N5sILLzSrVq0y11xzTSIsmGd77r33XnP11Vef8/5YLGbKysrMww8/nFhWX19vfD6fef75540xxnz44YdGktm0aVNinddee804HA5z+PDh9A2+H5k/f7759re/nbTsz//8z83ChQuNMcyzLWeGha15/fnPf26GDh2a9G/HvffeayZMmNCj8fb7XSEdX+U+Z86cxLLP+ip3fLqGhgZJUmFhoSRpy5YtCofDSXM8ceJEVVZWJub4nXfe0eTJk5O++Xbu3LkKBALauXNnL46+71uyZInmz5+fNJ8S82zTyy+/rOnTp+trX/uaSkpKNG3aND311FOJ+z/++GPV1NQkzbXf79fMmTOT5rqgoEDTp09PrDNnzhw5nU5t3Lix936ZPuyqq67S6tWrtWfPHknS9u3btX79es2bN08S85wutub1nXfe0ezZs+X1ehPrzJ07V7t379apU6e6Pb60f7tpunXnq9xxbrFYTHfffbc+97nPadKkSZKkmpoaeb3es76VtrS0VDU1NYl1uvoz6LgPcStWrNB7772nTZs2nXUf82zP/v379cQTT2jp0qX6+7//e23atEl/+7d/K6/Xq0WLFiXmqqu57DzXJSUlSfe73W4VFhYy1+3uu+8+BQIBTZw4US6XS9FoVA899JAWLlwoScxzmtia15qaGo0ZM+as5+i4b+jQod0aX78PC9i1ZMkS7dixQ+vXr8/0UAac6upq3XXXXVq1apWysrIyPZwBLRaLafr06frnf/5nSdK0adO0Y8cO/du//ZsWLVqU4dENHL/5zW/07LPP6rnnntMll1yibdu26e6771Z5eTnzPIj1+10hfJW7PXfccYdeeeUVvfXWWxo5cmRieVlZmUKhkOrr65PW7zzHZWVlXf4ZdNyH+K6O2tpaXXbZZXK73XK73Vq7dq0effRRud1ulZaWMs+WDB8+XBdffHHSsosuukiHDh2SdHquPu3fjbKyMtXW1ibdH4lEVFdXx1y3u+eee3Tffffplltu0eTJk/Wtb31L3/ve91RVVSWJeU4XW/Oarn9P+n1Y8FXuPWeM0R133KGVK1fqzTffPGvT2OWXXy6Px5M0x7t379ahQ4cSczxr1ix98MEHSX+RV61apfz8/LP+gR+srr/+en3wwQfatm1b4jJ9+nQtXLgwcZ15tuNzn/vcWadM79mzR6NGjZIkjRkzRmVlZUlzHQgEtHHjxqS5rq+v15YtWxLrvPnmm4rFYnzpYruWlhY5nclvIy6XS7FYTBLznC625nXWrFlat26dwuFwYp1Vq1ZpwoQJ3d4NImngnG7q8/nMM888Yz788EPzN3/zN6agoCDpyHmc23e+8x3j9/vNmjVrzNGjRxOXlpaWxDq33367qaysNG+++abZvHmzmTVrlpk1a1bi/o7TIG+44Qazbds284c//MEUFxdzGuRn6HxWiDHMsy3vvvuucbvd5qGHHjJ79+41zz77rMnJyTG/+tWvEussX77cFBQUmJdeesm8//775qabburydL1p06aZjRs3mvXr15sLL7xw0J8G2dmiRYvMiBEjEqeb/u53vzPDhg0zP/jBDxLrMM/d09jYaLZu3Wq2bt1qJJlHHnnEbN261Rw8eNAYY2de6+vrTWlpqfnWt75lduzYYVasWGFycnI43bTDz372M1NZWWm8Xq+ZMWOG2bBhQ6aH1G9I6vLy9NNPJ9ZpbW013/3ud83QoUNNTk6Oufnmm83Ro0eTnufAgQNm3rx5Jjs72wwbNsz83d/9nQmHw7382/QvZ4YF82zP73//ezNp0iTj8/nMxIkTzS9+8Yuk+2OxmPnRj35kSktLjc/nM9dff73ZvXt30jonT540CxYsMLm5uSY/P9/cdtttprGxsTd/jT4tEAiYu+66y1RWVpqsrCxzwQUXmB/+8IdJpy8yz93z1ltvdfnv8qJFi4wx9uZ1+/bt5uqrrzY+n8+MGDHCLF++vMdj52vTAQCANf3+GAsAANB3EBYAAMAawgIAAFhDWAAAAGsICwAAYA1hAQAArCEsAACANYQFAACwhrAAAADWEBYAAMAawgIAAFjz/wE6nCmYOGY+2QAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(hist)\n", + "plt.ylim(0,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "j-HhXc7GU4BQ", + "outputId": "d2743421-6e15-4202-9b28-a02fb7d3d842" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7.389176645536159\n", + "2.8768358338221574\n" + ] + } + ], + "source": [ + "mupred = np.exp(np.matmul(Xdt, w))\n", + "np.sqrt(np.mean((mupred - y_test)**2)), NLL(y_test, Xdt,w)\n", + "RMSE_sk =np.sqrt(np.mean((mupred - y_test)**2))\n", + "NLL_sk = NLL(y_test, Xdt,w)\n", + "print(RMSE_sk)\n", + "print(NLL_sk)\n", + "\n", + "df2 = pd.DataFrame(\n", + " { 'RMSE' : RMSE_sk, 'MAE' : None, 'NLL' : NLL_sk}, index=['Poisson Regression (Grad_decent)']\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "rtumKjuJEVKE" + }, + "source": [ + "## A) Poisson-Regression unter Verwendung eines mit Keras erstellten NN\n", + "\n", + "Wiederholen Sie die Analyse von oben mit Keras. Sie können (müssen aber nicht) tfp verwenden." + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "z4hUQh2aHFje" + }, + "outputs": [], + "source": [ + "plt.style.use('default')\n", + "\n", + "tfd = tfp.distributions\n", + "tfb = tfp.bijectors\n", + "\n", + "np.random.seed(42)\n", + "tf.random.set_seed(42)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"model_3\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " input_3 (InputLayer) [(None, 4)] 0 \n", + " \n", + " dense_2 (Dense) (None, 1) 5 \n", + " \n", + " distribution_lambda_2 (Dist ((None, 1), 0 \n", + " ributionLambda) (None, 1)) \n", + " \n", + "=================================================================\n", + "Total params: 5\n", + "Trainable params: 5\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "from keras import Sequential, Model\n", + "from keras.layers import Dense, Input \n", + "from keras.optimizers import Adam\n", + "\n", + "inputs = Input(shape=(X_train.shape[1],)) \n", + "rate = Dense(1, activation=tf.exp)(inputs) # Definition of a single layer with one output\n", + "p_y = tfp.layers.DistributionLambda(tfd.Poisson)(rate) # We use exponential of the output to model the rate \n", + "\n", + "# Glueing the NN and the output layer together. Note that output p_y is a tf.distribution\n", + "model_p = Model(inputs=inputs, outputs=p_y) \n", + "\n", + "# The second argument is the output of the model and thus a tfp-distribution. It's as simple as calling log_prob to calculate the log-probability of the observation that is needed to calculate the NLL.\n", + "def NLL(y_true, y_hat): \n", + " return -y_hat.log_prob(y_true)\n", + "\n", + "model_p.compile(Adam(learning_rate=0.01), loss=NLL)\n", + "model_p.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [], + "source": [ + "hist_p = model_p.fit(x=X_train, y=y_train, validation_data=(X_test, y_test), epochs=2000, verbose=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(hist_p.history['loss'])\n", + "plt.plot(hist_p.history['val_loss'])\n", + "plt.legend(['loss', 'val_loss'])\n", + "plt.xlabel('Epochs')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2/2 [==============================] - 0s 2ms/step\n", + "2/2 [==============================] - 0s 2ms/step - loss: 2.7010\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RMSEMAENLL
Poisson Regression (Grad_decent)7.389177NaN2.876836
Poisson Regression (TFP)6.2433962.862.700972
\n", + "
" + ], + "text/plain": [ + " RMSE MAE NLL\n", + "Poisson Regression (Grad_decent) 7.389177 NaN 2.876836\n", + "Poisson Regression (TFP) 6.243396 2.86 2.700972" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model = Model(inputs=inputs, outputs=p_y) \n", + "y_hat_test = model.predict(X_test).flatten()\n", + "\n", + "\n", + "rmse=np.sqrt(np.mean((y_test - y_hat_test)**2))\n", + "mae=np.mean(np.abs(y_test - y_hat_test)) \n", + "\n", + "NLL = model_p.evaluate(X_test, y_test) #returns the NLL \n", + "\n", + "df3 = pd.DataFrame(\n", + " { 'RMSE' : rmse, 'MAE' : mae, 'NLL' : NLL}, index=['Poisson Regression (TFP)']\n", + ")\n", + "pd.concat([df2,df3])" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAekAAAIjCAYAAAAnVePYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAACSFUlEQVR4nOzdd1QT2dsH8O8EEnoRpItUe12xLPa2Yq9rdwUrir2X1bWsa127qNh7r2t3xd77KhZEBAtKEaWTBJL7/uHr/IyAEkyYAM/nnJxDboaZZwjwzczcuZdjjDEQQgghROeIhC6AEEIIIdmjkCaEEEJ0FIU0IYQQoqMopAkhhBAdRSFNCCGE6CgKaUIIIURHUUgTQgghOopCmhBCCNFRFNKEEEKIjqKQJkRgHMdh+vTpQpehk6ZPnw6O4/D+/XuhSyFEEBTSRHDh4eHw9/eHu7s7DA0NYW5ujjp16mDp0qVIT08XujySD2bPno1Dhw4Jtv2rV69i+vTpSEhI0Op28mM/82tfSP6gkCaCOnbsGCpVqoQ9e/agTZs2WL58OebMmYOSJUti3LhxGDFihNAlal16ejqmTJkidBmC0oWQnjFjRqEJ6fzYF5I/9IUugBRdERER6NatG1xcXHD27Fk4ODjwrw0ZMgTPnz/HsWPHBKxQe5RKJeRyOQwNDWFoaCh0OYQQXcUIEcigQYMYAHblypVcLZ+RkcFmzpzJ3N3dmUQiYS4uLmzSpElMKpWqLOfi4sJatWrFzp07x7y8vJihoSGrWLEiO3fuHGOMsf3797OKFSsyAwMDVq1aNXb37l2V7/f19WUmJiYsPDycNWvWjBkbGzMHBwc2Y8YMplQqVZZdsGAB8/b2ZlZWVszQ0JBVq1aN7d27N0vtANiQIUPYtm3bWPny5Zm+vj47ePAg/9q0adP4ZZOSktiIESOYi4sLk0gkzMbGhjVt2pTduXNHZZ179uxh1apVY4aGhsza2pr17NmTvXnzJtt9efPmDWvXrh0zMTFhxYsXZ2PGjGGZmZm5+rkHBgay8uXLM4lEwhwcHFhAQAD7+PGjyjINGjRgFSpUYI8ePWINGzZkRkZGzNHRkc2bN++76weQ5eHr68sYY2zatGkMAAsLC2O+vr7MwsKCmZubMz8/P5aampplXVu3buV/JsWKFWNdu3Zlr169+ub2P2/j60dERIRa63327Bnr2LEjs7OzYwYGBszJyYl17dqVJSQkfHc/c/ueX79+nfn4+DBzc3NmZGTE6tevzy5fvqzWvpCChUKaCMbJyYm5u7vnenlfX18GgP36668sMDCQ9e7dmwFg7du3V1nOxcWFlSlThjk4OLDp06ezxYsXMycnJ2Zqasq2bdvGSpYsyebOncvmzp3LLCwsmKenJ1MoFCrbMTQ0ZKVKlWK//fYbW7FiBWvdujUDwKZOnaqyrRIlSrCAgAC2YsUKtmjRIlazZk0GgB09elRlOQCsXLlyzMbGhs2YMYMFBgaye/fu8a99GdI9evRgEomEjR49mq1bt47NmzePtWnThm3bto1fZuPGjQwAq1GjBlu8eDGbOHEiMzIyYq6urioB+nlfKlSowPr27ctWrVrFOnXqxACwlStXfvdn/vmfftOmTdny5cvZ0KFDmZ6eHqtRowaTy+X8cg0aNGCOjo7M2dmZjRgxgq1cuZI1btyYAWDHjx//5ja2bt3KDAwMWL169djWrVvZ1q1b2dWrV1W2/9NPP7GOHTuylStXsv79+zMAbPz48SrrmTVrFuM4jnXt2pWtXLmSzZgxgxUvXjzLz+Rr//33H+vevTsDwBYvXszXkJKSkuv1ymQy5ubmxhwdHdmsWbPYunXr2IwZM1iNGjVYZGTkd/czN+95cHAwk0gkzNvbmy1cuJAtXryYVa5cmUkkEnbjxo1c7QspeCikiSASExMZANauXbtcLX///n0GgPXv31+lfezYsQwAO3v2LN/m4uLCAPD/ABlj7NSpUwwAMzIyYi9fvuTbg4KCGAD+KJux/30YGDZsGN+mVCpZq1atmEQiYXFxcXx7WlqaSj1yuZxVrFiRNW7cWKUdABOJROzRo0dZ9u3rkLawsGBDhgzJ8Wchl8uZra0tq1ixIktPT+fbjx49ygCwP/74I8u+zJw5U2UdP/30E/Py8spxG4wxFhsbyyQSCWvWrJnKh5gVK1YwAGzDhg18W4MGDRgAtmXLFr5NJpMxe3t71qlTp29uhzHGTExM+KPKL30O6b59+6q0d+jQgVlbW/PPIyMjmZ6eHvvrr79Ulnv48CHT19fP0v61BQsWZHvEmdv13rt3jwHI9ixKbvbze++5UqlkpUqVYj4+Pipnc9LS0pibmxv75ZdfvrsvpGCijmNEEElJSQAAMzOzXC1//PhxAMDo0aNV2seMGQMAWa5dly9fHt7e3vzzWrVqAQAaN26MkiVLZml/8eJFlm0OHTqU/5rjOAwdOhRyuRxnzpzh242MjPivP378iMTERNSrVw93797Nsr4GDRqgfPny39lTwNLSEjdu3MDbt2+zff327duIjY1FQECAyvXsVq1aoWzZstlexx80aJDK83r16mW7z186c+YM5HI5Ro4cCZHof/8qBgwYAHNz8yzbMTU1Ra9evfjnEokENWvW/O52ciO7+uPj4/nfowMHDkCpVKJLly54//49/7C3t0epUqVw7ty5PG03t+u1sLAAAJw6dQppaWlqb+d77/n9+/cRFhaGHj16ID4+nq8jNTUVTZo0wcWLF6FUKvO0j0S3UccxIghzc3MAQHJycq6Wf/nyJUQiETw9PVXa7e3tYWlpiZcvX6q0fxnEwP/+iTo7O2fb/vHjR5V2kUgEd3d3lbbSpUsDACIjI/m2o0ePYtasWbh//z5kMhnfznFcln1wc3PLcf++NH/+fPj6+sLZ2RleXl5o2bIlevfuzdfzeV/LlCmT5XvLli2Ly5cvq7QZGhrCxsZGpa1YsWJZ9vlrOW1HIpHA3d09y8+8RIkSWfa7WLFiePDgwTe3kxtfv5/FihUD8Ol9Mzc3R1hYGBhjKFWqVLbfLxaL87Td3K7Xzc0No0ePxqJFi7B9+3bUq1cPbdu2Ra9evfjfsW/53nseFhYGAPD19c1xHYmJifzPhRQeFNJEEObm5nB0dERISIha35dd+GVHT09PrXbGmFp1AMClS5fQtm1b1K9fHytXroSDgwPEYjE2btyIHTt2ZFn+y6Pub+nSpQvq1auHgwcP4vTp01iwYAHmzZuHAwcOoEWLFmrXmdM+a5omf7bqrlupVILjOJw4cSLbZU1NTfO0XXXWu3DhQvj5+eHw4cM4ffo0hg8fjjlz5uD69esoUaLEN7fzvff881HyggULULVq1WzXkdd9JLqNQpoIpnXr1lizZg2uXbumcmo6Oy4uLlAqlQgLC0O5cuX49piYGCQkJMDFxUWjtSmVSrx48YI/egaAZ8+eAQBcXV0BAPv374ehoSFOnToFAwMDfrmNGzf+8PYdHBwQEBCAgIAAxMbGolq1avjrr7/QokULfl9DQ0PRuHFjle8LDQ3V2M/iy+18eVZBLpcjIiICTZs21ch2gNx/+MqJh4cHGGNwc3NTec9+dPvqrrdSpUqoVKkSpkyZgqtXr6JOnTpYvXo1Zs2a9c3tAN9+zz08PAB8+nD7vZ/7j/4siW6ha9JEMOPHj4eJiQn69++PmJiYLK+Hh4dj6dKlAICWLVsCAJYsWaKyzKJFiwB8uh6raStWrOC/ZoxhxYoVEIvFaNKkCYBPR3ccx0GhUPDLRUZG/tBgFQqFAomJiSpttra2cHR05E+nV69eHba2tli9erXKKfYTJ07gyZMnGvtZNG3aFBKJBMuWLVM5Gl6/fj0SExM1+jM3MTH5ocE3OnbsCD09PcyYMSPLkTtjDPHx8d/dPoAsNeR2vUlJScjMzFR5vVKlShCJRCrvUXb7mZv33MvLCx4eHvj777+RkpKSpf64uLjv7gspmOhImgjGw8MDO3bsQNeuXVGuXDn07t0bFStWhFwux9WrV7F37174+fkBAKpUqQJfX1+sWbMGCQkJaNCgAW7evInNmzejffv2aNSokUZrMzQ0xMmTJ+Hr64tatWrhxIkTOHbsGCZPnsxf323VqhUWLVqE5s2bo0ePHoiNjUVgYCA8PT3zfB02OTkZJUqUwK+//ooqVarA1NQUZ86cwa1bt7Bw4UIAn66Dzps3D3369EGDBg3QvXt3xMTEYOnSpXB1dcWoUaM08jOwsbHBpEmTMGPGDDRv3hxt27ZFaGgoVq5ciRo1aqh0EvtRXl5eOHPmDBYtWgRHR0e4ubnxnfpyw8PDA7NmzcKkSZMQGRmJ9u3bw8zMDBERETh48CAGDhyIsWPHfnP7APD777+jW7duEIvFaNOmTa7Xe/bsWQwdOhSdO3dG6dKlkZmZia1bt0JPTw+dOnX65n6WKVPmu++5SCTCunXr0KJFC1SoUAF9+vSBk5MToqKicO7cOZibm+PIkSPf3JfP4U0KGEH6lBPyhWfPnrEBAwYwV1dXJpFImJmZGatTpw5bvny5ykAlGRkZbMaMGczNzY2JxWLm7Oz8zcFMvob/H1DkSxEREQwAW7BgAd+W3WAmdnZ2bNq0aSq3IjHG2Pr161mpUqWYgYEBK1u2LNu4cSN/29D3tv3la59vwZLJZGzcuHGsSpUqzMzMjJmYmLAqVapke0/z7t272U8//cQMDAyYlZXVNwcz+Vp2NeZkxYoVrGzZskwsFjM7Ozs2ePDgHAcz+Zqvry9zcXH57jaePn3K6tevz4yMjLIdzOTL294Y+9994l/fZrR//35Wt25dZmJiwkxMTFjZsmXZkCFDWGho6Hdr+PPPP5mTkxMTiURZ1v299b548YL17duXeXh4MENDQ2ZlZcUaNWrEzpw58939VOc9v3fvHuvYsSOztrZmBgYGzMXFhXXp0oUFBwfnel9IwcIxpoFeHYQUIn5+fti3b1+2pxUJISQ/0TVpQgghREdRSBNCCCE6ikKaEEII0VF0TZoQQgjRUXQkTQghhOgoCmlCCCFERxX6wUyUSiXevn0LMzMzGi6PEEKITmCMITk5GY6OjiqzzH2t0If027dvs8x8RAghhOiC169ff3MClkIf0p/nK379+jU/PSIhhBAipKSkJDg7O/MZlZNCH9KfT3Gbm5tTSBNCCNEp37sMSx3HCCGEEB1FIU0IIYToKAppQgghREdRSBNCCCE6ikKaEEII0VEU0oQQQoiOopAmhBBCdBSFNCGEEKKjKKQJIYQQHUUhTQghhOgoCmlCCCFER1FIE0IIITqKQpoQQgjRUYV+FixCCCHkRzDGkJCWAVmmEgb6Ilgai787e5WmUEgTQgghOYhNkiIkKglRCWmQK5SQ6IngZGmMik7msDU31Pr2KaQJIYSQbMQmSXE+NA6J6XLYmhnCUKwHaYYC4XHJeJ8iQ8MyNloParomTQghhHyFMYaQqCQkpsvham0CEwN96Ik4mBjow9XaBInpcoREJYExptU6KKQJIYSQrySkZSAqIQ22ZoZZrj9zHAdbM0NEJaQhIS1Dq3VQSBNCCCFfkWUqIVcoYSjWy/Z1Q7Ee5AolZJlKrdZBIU0IIYR8xUBfBImeCNIMRbavSzMUkOiJYKCv3RilkCaEEEK+YmkshpOlMWKTpVmuOzPGEJsshZOlMSyNxVqtg0KaEEII+QrHcajoZA4LIwki41ORKsuEQsmQKstEZHwqLIwlqOhkrvX7pekWLEIIISQbtuaGaFjGhr9P+n2qDBI9ETxszOg+aUIIIURotuaGaGRmQCOOEUIIIbqI4zgUM5EIsm26Jk0IIYToKAppQgghREdRSBNCCCE6ikKaEEII0VEU0oQQQoiOopAmhBBCdBSFNCGEEKKjKKQJIYQQHUUhTQghhOgoCmlCCCFER1FIE0IIITqKQpoQQgjRURTShBBCiI6ikCaEEEJ0FIU0IYQQoqMopAkhhBAdRSFNCCGE6CgKaUIIIURHUUgTQgghOopCmhBCCNFRFNKEEEKIjhI8pKOiotCrVy9YW1vDyMgIlSpVwu3bt/nXGWP4448/4ODgACMjIzRt2hRhYWECVkwIIYTkD0FD+uPHj6hTpw7EYjFOnDiBx48fY+HChShWrBi/zPz587Fs2TKsXr0aN27cgImJCXx8fCCVSgWsnBBCCNE+jjHGhNr4xIkTceXKFVy6dCnb1xljcHR0xJgxYzB27FgAQGJiIuzs7LBp0yZ069btu9tISkqChYUFEhMTYW5urtH6CSGEkLzIbTYJeiT9zz//oHr16ujcuTNsbW3x008/Ye3atfzrERERiI6ORtOmTfk2CwsL1KpVC9euXct2nTKZDElJSSoPQgghpCASNKRfvHiBVatWoVSpUjh16hQGDx6M4cOHY/PmzQCA6OhoAICdnZ3K99nZ2fGvfW3OnDmwsLDgH87OztrdCUIIIURLBA1ppVKJatWqYfbs2fjpp58wcOBADBgwAKtXr87zOidNmoTExET+8fr1aw1WTAghhOQfQUPawcEB5cuXV2krV64cXr16BQCwt7cHAMTExKgsExMTw7/2NQMDA5ibm6s8CCGEkIJI0JCuU6cOQkNDVdqePXsGFxcXAICbmxvs7e0RHBzMv56UlIQbN27A29s7X2slhBBC8pu+kBsfNWoUateujdmzZ6NLly64efMm1qxZgzVr1gAAOI7DyJEjMWvWLJQqVQpubm6YOnUqHB0d0b59eyFLJ4QQQrRO0JCuUaMGDh48iEmTJmHmzJlwc3PDkiVL0LNnT36Z8ePHIzU1FQMHDkRCQgLq1q2LkydPwtDQUMDKCSGEEO0T9D7p/ED3SRNCCNE1BeI+aUIIIYTkjEKaEEII0VEU0oQQQoiOopAmhBBCdBSFNCGEEKKjKKQJIYQQHUUhTQghhOgoCmlCCCFER1FIE0IIITqKQpoQQgjRURTShBBCiI6ikCaEEEJ0FIU0IYQQoqMopAkhhBAdRSFNCCGE6CgKaUIIIURHUUgTQgghOopCmhBCCNFRFNKEEEKIjqKQJoQQQnQUhTQhhBCioyikCSGEEB1FIU0IIYToKAppQgghREdRSBNCCCE6ikKaEEII0VEU0oQQQoiOopAmhBBCdBSFNCGEEKKjKKQJIYQQHUUhTQghhOgoCmlCCCFER1FIE0IIITqKQpoQQgjRURTShBBCiI6ikCaEEEJ0FIU0IYQQoqMopAkhhBAdRSFNCCGE6CgKaUIIIURHUUgTQgghOopCmhBCCNFRFNKEEEKIjqKQJoQQQnQUhTQhhBCioyikCSGEEB1FIU0IIYToKAppQgghREdRSBNCCCE6ikKaEEII0VEU0oQQQoiOopAmhBBCdBSFNCGEEKKjKKQJIYQQHSVoSE+fPh0cx6k8ypYty78ulUoxZMgQWFtbw9TUFJ06dUJMTIyAFRNCCCH5R/Aj6QoVKuDdu3f84/Lly/xro0aNwpEjR7B3715cuHABb9++RceOHQWslhBCCMk/+oIXoK8Pe3v7LO2JiYlYv349duzYgcaNGwMANm7ciHLlyuH69ev4+eef87tUQgghJF8JfiQdFhYGR0dHuLu7o2fPnnj16hUA4M6dO8jIyEDTpk35ZcuWLYuSJUvi2rVrOa5PJpMhKSlJ5UEIIYQURIKGdK1atbBp0yacPHkSq1atQkREBOrVq4fk5GRER0dDIpHA0tJS5Xvs7OwQHR2d4zrnzJkDCwsL/uHs7KzlvSCEEEK0Q9DT3S1atOC/rly5MmrVqgUXFxfs2bMHRkZGeVrnpEmTMHr0aP55UlISBTUhhJACSfDT3V+ytLRE6dKl8fz5c9jb20MulyMhIUFlmZiYmGyvYX9mYGAAc3NzlQchhBBSEOlUSKekpCA8PBwODg7w8vKCWCxGcHAw/3poaChevXoFb29vAaskhBBC8keeTncrlUo8f/4csbGxUCqVKq/Vr18/1+sZO3Ys2rRpAxcXF7x9+xbTpk2Dnp4eunfvDgsLC/Tr1w+jR4+GlZUVzM3NMWzYMHh7e1PPbkIIIUWC2iF9/fp19OjRAy9fvgRjTOU1juOgUChyva43b96ge/fuiI+Ph42NDerWrYvr16/DxsYGALB48WKIRCJ06tQJMpkMPj4+WLlypbolE0IIIQUSx75O2u+oWrUqSpcujRkzZsDBwQEcx6m8bmFhodECf1RSUhIsLCyQmJhI16cJIYTohNxmk9pH0mFhYdi3bx88PT1/qEBCCCGEfJvaHcdq1aqF58+fa6MWQgghhHwhV0fSDx484L8eNmwYxowZg+joaFSqVAlisVhl2cqVK2u2QkIIIaSIytU1aZFIBI7jsnQU41fy/6+p23EsP9A1aUIIIbpGo9ekIyIiNFYYIYQQQnInVyHt4uKi7ToIIYQQ8hW1O45t3rwZx44d45+PHz8elpaWqF27Nl6+fKnR4gghhJCiTO2Qnj17Nj/5xbVr17BixQrMnz8fxYsXx6hRozReICGEEFJUqX2f9OvXr/l7pA8dOoRff/0VAwcORJ06ddCwYUNN10cIIYQUWWofSZuamiI+Ph4AcPr0afzyyy8AAENDQ6Snp2u2OkIIIaQIU/tI+pdffkH//v3x008/4dmzZ2jZsiUA4NGjR3B1ddV0fYQQQkiRpfaRdGBgILy9vREXF4f9+/fD2toaAHDnzh10795d4wUSQgghRZXaE2wUNDSYCSGEEF2j0cFMHjx4gIoVK0IkEqkMEZodGhaUEEII0YxchXTVqlURHR0NW1tbVK1aNcsQobo8LCghhBBSUOV6WFAbGxv+a0IIIYRoX65CukOHDggODkaxYsWwefNmjB07FsbGxtqujRBCCCnSctW7+8mTJ0hNTQUAzJgxAykpKVotihBCCCFqXJPu06cP6tatC8YY/v77b5iamma77B9//KHRAgkhhJCiKle3YIWGhmLatGkIDw/H3bt3Ub58eejrZ813juNw9+5drRSaV3QLFiGEEF2T22xS+z5pkUjE9/QuCCikCSGE6BqN3if9JaVS+UOFEUIIISR31B4WlBBCCCH5g0KaEEII0VEU0oQQQoiOopAmhBBCdJTaIe3u7o74+Pgs7QkJCXB3d9dIUYQQQgjJQ0hHRkZmO4mGTCZDVFSURooihBBCiBq3YP3zzz/816dOnYKFhQX/XKFQIDg4GK6urhotjhBCCCnKch3S7du3B/BpVDFfX1+V18RiMVxdXbFw4UKNFkcIIYQUZbkO6c+DmLi5ueHWrVsoXry41ooihBBCdMnNmzdRrVq1bIfE1ia1r0lHRERQQBNCCCkSUlNTMXz4cNSqVQsLFizI9+3n6SNBcHAwgoODERsbm2WY0A0bNmikMEIIIURI586dQ79+/RAREQEAePPmTb7XoHZIz5gxAzNnzkT16tXh4OAAjuO0URchhBAiiOTkZEyYMAGrVq0CAJQsWRJr165Fs2bN8r0WtUN69erV2LRpE3777Tdt1EMIIYQIauLEiXxADxo0CPPmzRNsFkW1r0nL5XLUrl1bG7UQQgghgps2bRqqV6+OM2fOYNWqVYJOc6x2SPfv3x87duzQRi2EEEJIvjt16hRGjRrFP7e1tcXNmzfRpEkTAav6JFenu0ePHs1/rVQqsWbNGpw5cwaVK1eGWCxWWXbRokWarZAQQgjRgsTERIwZMwbr168HADRq1Aht27YFAJ3pb5WrkL53757K86pVqwIAQkJCVNp1ZacIIYSQbzl+/DgGDhyIqKgocByHYcOG6cSR89dyFdLnzp3Tdh2EEEKI1n38+BGjRo3C5s2bAQCenp7YsGED6tWrJ3Bl2cvfoVMIIYQQgTDG0KJFC9y4cQMcx2HkyJGYNWsWjI2NhS4tR2qHdIcOHbI9rc1xHAwNDeHp6YkePXqgTJkyGimQEEII0QSO4zB9+nSMHDkSGzZsKBB3Kqndu9vCwgJnz57F3bt3wXEcOI7DvXv3cPbsWWRmZmL37t2oUqUKrly5oo16CSGEkFw7dOgQdu7cyT9v3rw5Hj58WCACGsjDkbS9vT169OiBFStWQCT6lPFKpRIjRoyAmZkZdu3ahUGDBmHChAm4fPmyxgsmhBBCvuf9+/cYPnw4du7cCXNzc9SrVw8lSpQAgCx3JekytY+k169fj5EjR/IBDQAikQjDhg3DmjVrwHEchg4dmqXnNyGEEJIf9u3bhwoVKmDnzp0QiUQYMmRIgZ0YSu2QzszMxNOnT7O0P336FAqFAgBgaGhIt2MRQgjJV7GxsejSpQs6d+6M2NhYVKxYETdu3MDs2bNhaGgodHl5ovbp7t9++w39+vXD5MmTUaNGDQDArVu3MHv2bPTu3RsAcOHCBVSoUEGzlRJCCCE5SEpKQuXKlRETEwM9PT1MmjQJU6ZMgYGBgdCl/RC1Q3rx4sWws7PD/PnzERMTAwCws7PDqFGjMGHCBABAs2bN0Lx5c81WSgghhOTA3NwcvXr1wr///ouNGzeiWrVqQpekERxjjOX1m5OSkgBA0MHHvycpKQkWFhZITEzU6ToJIYTkHmMMO3fuRLVq1VC2bFkAgFQqhUgkgkQiEbi678ttNql9TfpL5ubmFHyEEELy1bt379C+fXv07NkTffv2VekPVRACWh1qn+52c3P7ZqewFy9e/FBBhBBCSHYYY9i6dStGjBiBhIQEiMVitGzZEj9wQljnqR3SI0eOVHmekZGBe/fu4eTJkxg3bpym6iKEEEJ4UVFR8Pf3x7FjxwAAXl5e2LhxIypVqiRwZdqldkiPGDEi2/bAwEDcvn37hwsihBBCvvTff/+hQYMGSExMhEQiwYwZMzB27Fjo6xf+6Sd+6Jr0l1q0aIH9+/fn+fvnzp3LD3j+mVQqxZAhQ2BtbQ1TU1N06tSJ71FOCCGkaChfvjw8PDxQs2ZN3Lt3DxMnTiwSAQ1oMKT37dsHKyurPH3vrVu3EBQUhMqVK6u0jxo1CkeOHMHevXtx4cIFvH37Fh07dtREuYQQQnTU557bMpkMwKdhPI8dO4YrV66gfPnyAleXv9T+KPLTTz+pdBxjjCE6OhpxcXFYuXKl2gWkpKSgZ8+eWLt2LWbNmsW3JyYmYv369dixYwcaN24MANi4cSPKlSuH69ev4+eff1Z7W4QQQnTby5cv0b9/f5w5cwZTpkzBn3/+CeDTvBFFkdoh3b59e5XnIpEINjY2aNiwIX+vmjqGDBmCVq1aoWnTpiohfefOHWRkZKBp06Z8W9myZVGyZElcu3Ytx5CWyWT8py/gf/dyE0II0V1KpRJBQUEYP348UlJSYGhoWGDH29YktUN62rRpGtv4rl27cPfuXdy6dSvLa9HR0ZBIJLC0tFRpt7OzQ3R0dI7rnDNnDmbMmKGxGgkhhGhXREQE+vXrh3PnzgEA6tSpgw0bNqB06dICVya8H7omLZVKkZSUpPLIrdevX2PEiBHYvn27Rgc+nzRpEhITE/nH69evNbZuQgghmnX48GFUqlQJ586dg5GREZYsWYILFy5QQP8/tY+kU1NTMWHCBOzZswfx8fFZXv888sv33LlzB7GxsSrjqyoUCly8eBErVqzAqVOnIJfLkZCQoHI0HRMT881rEwYGBgV+QHVCCCkqKlWqBMYY6tevj/Xr18PT01PoknSK2kfS48ePx9mzZ7Fq1SoYGBhg3bp1mDFjBhwdHbFly5Zcr6dJkyZ4+PAh7t+/zz+qV6+Onj178l+LxWIEBwfz3xMaGopXr17B29tb3bIJIYToAKVSyZ/WBgB3d3dcu3YN586do4DOhtpH0keOHMGWLVvQsGFD9OnTB/Xq1YOnpydcXFywfft29OzZM1frMTMzQ8WKFVXaTExMYG1tzbf369cPo0ePhpWVFczNzTFs2DB4e3tTz25CCCmAwsLC0LdvX1y+fBnnzp1Dw4YNASDL7bfkf9Q+kv7w4QPc3d0BfJpg48OHDwCAunXr4uLFixotbvHixWjdujU6deqE+vXrw97eHgcOHNDoNgghhGiXQqHAokWLULlyZVy+fBmmpqbf7ABM/kftI2l3d3dERESgZMmSKFu2LPbs2YOaNWviyJEjWXpiq+v8+fMqzw0NDREYGIjAwMAfWi8hhBBhPH36FH379sW1a9cAAE2bNsW6devg4uIicGUFg9pH0n369MF///0HAJg4cSICAwNhaGiIUaNG0QQbhBBCeCtXrkTVqlVx7do1mJmZYe3atTh9+jQFtBrUPpIeNWoU/3XTpk3x9OlT3LlzB56ennRdgRBCCM/CwgIymQzNmzfHmjVr4OzsLHRJBc4Pj1Du4uJCn4oIIYQgMzMT4eHhKFOmDACgR48esLGxwS+//KIynDTJPbVPdw8fPhzLli3L0r5ixYosc00TQggpGh4+fIiff/4ZDRo04DsUcxyHZs2aUUD/ALVDev/+/ahTp06W9tq1a2Pfvn0aKYoQQkjBkJGRgT///BNeXl64c+cO5HI5Hj16JHRZhYbap7vj4+NhYWGRpd3c3Bzv37/XSFGEEEJ033///Yc+ffrg3r17AIC2bdti9erVcHBwELiywkPtI2lPT0+cPHkyS/uJEyf4+6cJIYQUXowxTJ8+HdWrV8e9e/dgZWWF7du349ChQxTQGqb2kfTo0aMxdOhQxMXF8fM8BwcHY+HChViyZImm6yOEEKJjOI5DZGQkMjMz0bFjR6xcuRJ2dnZCl1UocYwxpu43rVq1Cn/99Rfevn0LAHB1dcX06dPRu3dvjRf4o5KSkmBhYYHExESYm5sLXQ4hhBRIMpkMKSkpsLa2BgB8/PgRwcHB6NSpE3UMy4PcZlOeQvqzuLg4GBkZwdTUNK+r0DoKaUII+TG3bt1Cnz594OrqiiNHjlAoa0Bus+mH5pO2sbHR6YAmhBCSd1KpFJMmTcLPP/+MR48e4ebNm3j9+rXQZRUpPxTShBBCCqcbN26gWrVqmDt3LpRKJbp164bHjx+jZMmSQpdWpFBIE0II4UmlUowfPx61a9fGkydPYGdnh4MHD2Lnzp0oXry40OUVORTShBBCeEqlEgcOHIBSqUSvXr3w+PFjtG/fXuiyiqxchbSVlRU/UEnfvn2RnJys1aIIIYTkn7S0NCiVSgCAsbExNm/ejH/++Qdbt26FlZWVwNUVbbkKablcjqSkJADA5s2bIZVKtVoUIYSQ/HHp0iVUqVIFK1as4Nvq1KmDNm3aCFgV+SxXg5l4e3ujffv28PLyAmMMw4cPh5GRUbbLbtiwQaMFEkII0bzU1FRMnjwZy5cvB2MMgYGBGDx4MMRisdClkS/k6kh627ZtaNmyJVJSUsBxHBITE/Hx48dsH4QQQnTb+fPnUblyZSxbtgyMMfTr1w83b96kgNZBag9m4ubmhtu3b/Ojzug6GsyEEEI+SUlJwYQJE7By5UoAgLOzM9auXQsfHx+BKyt6cptNao/dHRER8UOFEUIIEUZ4eDjWrFkDAPD398f8+fPp4EXH5ekWrAsXLqBNmzbw9PSEp6cn2rZti0uXLmm6NkIIIT9IoVDwX1epUgWLFy/GmTNnsHr1agroAkDtkN62bRuaNm0KY2NjDB8+nO9E1qRJE+zYsUMbNRJCCMmD06dPo0yZMrh//z7fNnToUDRp0kS4ooha1L4mXa5cOQwcOBCjRo1SaV+0aBHWrl2LJ0+eaLTAH0XXpAkhRU1iYiLGjBmD9evXAwA6dOiAAwcOCFwV+ZLWJth48eJFtvfPtW3blq5XE0KIwE6cOIGKFSvyAT18+HBs3bpV4KpIXqkd0s7OzggODs7SfubMGTg7O2ukKEIIIer5+PEj/Pz80LJlS7x58waenp64ePEili5dChMTE6HLI3mkdu/uMWPGYPjw4bh//z5q164NALhy5Qo2bdqEpUuXarxAQggh37dr1y5s3rwZHMdh5MiRmDVrFoyNjYUui/wgta9JA8DBgwexcOFC/vpzuXLlMG7cOLRr107jBf4ouiZNCCmsGGPgOA7Ap17c/fr1w4ABA1CnTh2BKyPfk9tsylNIFyQU0oSQwujQoUNYuHAhTp06RUfMBZDWOo4RQggRzvv379GjRw906NABly9fxpIlS4QuiWiR2tekCSGECGP//v0ICAhAbGwsRCIRxo8fj9GjRwtdFtEiCmlCCNFxsbGxGDp0KPbu3QsAqFChAjZu3IgaNWoIXBnRNjrdTQghOm706NHYu3cv9PT08Pvvv+POnTsU0EWEWiGdkZEBDw8PnRtVjBBCCrN58+ahXr16uHHjBmbNmgUDAwOhSyL5RK2QFovFkEql2qqFEEKKPMYYdu7cqXKt2cnJCRcvXoSXl5eAlREhqH26e8iQIZg3bx4yMzO1UQ8hhBRZ7969Q4cOHdCjRw8sXrwY586dE7okIjC1O47dunULwcHBOH36NCpVqpRluDkaxJ0QQtTDGMO2bdswYsQIfPz4EWKxGFOnTkXdunWFLo0ITO2QtrS0RKdOnbRRCyGEFDlv376Fv78/jh49CgCoVq0aNm3ahEqVKglcGdEFNOIYIYQIRKlUokKFCnj69CkkEgmmTZuGcePGQSwWC10a0TKtjjiWmZmJM2fOICgoCMnJyQA+fRpMSUnJW7WEEFIEiUQizJkzBzVr1sTdu3cxefJkCmiiQu0j6ZcvX6J58+Z49eoVZDIZnj17Bnd3d4wYMQIymQyrV6/WVq15QkfShBBdwRjD+vXrYWlpiV9//ZVvVyqVEIlo2IqiRGtH0iNGjED16tXx8eNHGBkZ8e0dOnTIdp5pQgghwKtXr+Dj44MBAwbA398fsbGx/GsU0CQnanccu3TpEq5evQqJRKLS7urqiqioKI0VRgghhQFjDGvWrMHYsWORkpICQ0NDTJo0CdbW1kKXRgoAtUNaqVRCoVBkaX/z5g3MzMw0UhQhhBQGERER6N+/P86ePQsAqFOnDjZs2IDSpUsLXBkpKNQ+x9KsWTOVqdE4jkNKSgqmTZuGli1barI2QggpsGJiYlC5cmWcPXsWRkZGWLx4MS5cuEABTdSidkgvXLgQV65cQfny5SGVStGjRw/+VPe8efO0USMhhBQ4dnZ2+O2331C/fn08ePAAI0eOhJ6entBlkTxYuXIlOI7Dtm3b8n3bebpPOjMzE7t27cKDBw+QkpKCatWqoWfPniodyXQF9e4mhOQHpVKJwMBAtG7dGm5ubgAAqVQKiURCHcMKqOPHj6NVq1YqbZoaWiS32ZSn+aT19fXRq1evPBdHCCGFSVhYGPr27YvLly/j4MGDOHPmDEQiEQwNDYUujeTBvXv3UK1atSztFy9ezPda8hTSoaGhWL58OT9lZbly5TB06FCULVtWo8URQoguUygUWLZsGSZPngypVApTU1N07txZ6LJIHr158wbOzs5Z2rdv344ePXoIUFEerknv378fFStWxJ07d1ClShVUqVIFd+/eRaVKlbB//35t1EgIITonNDQU9erVw+jRoyGVStG0aVM8fPgQgwcPptPbBUxSUhJcXV2zBPTMmTPBGBMsoIE8XJP28PBAz549MXPmTJX2adOmYdu2bQgPD9dogT+KrkkTQjTt8uXLaNq0KWQyGczMzLBw4UL0798fHMcJXRpRQ0ZGBlq3bo3Tp0+rtP/222/YtGmTVj9s5Tab1A5pY2NjPHjwAJ6enirtYWFhqFKlCtLS0vJWsZZQSBNCNE0mk8HLywtOTk5Yu3YtSpYsKXRJRA2MMYwYMQLLly9Xaa9ZsyYuXLiQL30JtDYsaMOGDXHp0qUs7ZcvX0a9evXUXR0hhOi8zMxMrFu3DhkZGQAAAwMDnDt3DidPnqSALmBWrFgBkUikEtAWFhaIi4vDjRs3dK6zX646jv3zzz/8123btsWECRNw584d/PzzzwCA69evY+/evZgxY4Z2qiSEEIGEhISgT58+uH37NmJjYzF58mQAgI2NjcCVEXUcOXIEbdu2zdL+7NkzlCpVSoCKcidXp7tze16e47hshwwVEp3uJtrAGENCWgZkmUoY6ItgaSym65GFTEZGBubNm4eZM2ciIyMDlpaWWL58Od1+WsDcvXsXXl5eWdovXbqEunXrClDRJxo93a1UKnP1UDegV61ahcqVK8Pc3Bzm5ubw9vbGiRMn+NelUimGDBkCa2trmJqaolOnToiJiVFrG4RoWmySFOeexuHog7c49vAtjj54i3NP4xCbJBW6NKIhDx48QK1atTB16lRkZGSgbdu2ePToEQV0AfLq1StwHJcloHfs2AHGmKABrQ5B7xMoUaIE5s6dizt37uD27dto3Lgx2rVrh0ePHgEARo0ahSNHjmDv3r24cOEC3r59i44dOwpZMiniYpOkOB8ah/C4ZJgbilHC0hjmhmKExyXjfCgFdWGwefNmeHl54d69e7CyssL27dtx6NAhODo6Cl0ayYWkpCSULFkSLi4uKu1//fUXGGPo3r27QJXlTZ6GBb116xbOnTuH2NhYKJVKldcWLVr0QwVZWVlhwYIF+PXXX2FjY4MdO3bwk6M/ffoU5cqVw7Vr1/jr4d9Dp7uJpjDGcO7pp4B2tTZROb3NGENkfCo8bMzQqKwNnfouwJ48eYKffvoJLVu2xMqVK2Fvby90SSQXMjIy0LJlS5w5c0al3c/PDxs2bNC5v0mtDQs6e/ZsTJkyBWXKlIGdnZ3Kjv/ID0GhUGDv3r1ITU2Ft7c37ty5g4yMDDRt2pRfpmzZsihZsuQ3Q1omk0Emk/HPk5KS8lwTIV9KSMtAVEIabM0Ms/yucxwHWzNDRCWkISEtA8VMJDmshegauVyOc+fOwcfHB8CnERT/++8/lC5dWuf+sZOsGGMYNmwYAgMDVdq9vb1x7tw5GBgYCFSZZqgd0kuXLsWGDRvg5+enkQIePnwIb29vfki9gwcPonz58rh//z4kEgksLS1Vlrezs0N0dHSO65szZw71MidaIctUQq5QwlCc/UxGhmI9vE+VQZapzPZ1ontu376NPn364PHjx7h69Spq1aoFAChTpozAlZHcWLp0KUaOHKnSVqxYMYSFhcHa2lqYojRM7WvSIpEIderU0VgBZcqUwf3793Hjxg0MHjwYvr6+ePz4cZ7XN2nSJCQmJvKP169fa6xWUrQZ6Isg0RNBmpF9B0lphgISPREM9GlISF0nk8kwefJk/PzzzwgJCYG1tTU+fvwodFkklw4fPgyO47IEdFhYGD58+FBoAhrIQ0iPGjUqy2mFHyGRSODp6QkvLy/MmTMHVapUwdKlS2Fvbw+5XI6EhASV5WNiYr55jcjAwIDvLf75QYgmWBqL4WRpjNhkaZbp6hhjiE2WwsnSGJbGYoEqJLlx8+ZNVKtWDXPmzIFCoUC3bt3w6NEjNG/eXOjSyHfcvn0bHMehffv2Ku1XrlwBYyzLSJiFgdqnu8eOHYtWrVrBw8MD5cuXh1is+g/pwIEDP1SQUqnkh9wTi8UIDg5Gp06dAHwa0P7Vq1fw9vb+oW0Qkhccx6Gikznep8gQGZ8KWzNDGIr1IM1QIDZZCgtjCSo6mdN1TB32559/Yvr06VAqlbCzs8OqVavQoUMHocsi3/Hy5Uu4urpmad+9eze6dOmS/wXlI7VDevjw4Th37hwaNWoEa2vrH/qHNGnSJLRo0QIlS5ZEcnIyduzYgfPnz+PUqVOwsLBAv379MHr0aFhZWcHc3BzDhg2Dt7d3rnt2E6JptuaGaFjGBiFRSYhKSMP7VBkkeiJ42JihopM5bM11a0hBosre3h5KpRK9evXCkiVLCtVp0cIoISEBFSpUwNu3b1Xa586diwkTJghUVT5jajI1NWVHjx5V99uy1bdvX+bi4sIkEgmzsbFhTZo0YadPn+ZfT09PZwEBAaxYsWLM2NiYdejQgb17906tbSQmJjIALDExUSM1E8IYY0qlkn1IkbF3CensQ4qMKZVKoUsi2UhLS2OPHj3inyuVSnbx4kUBKyK5IZfLWaNGjRgAlUffvn0Lzd9abrNJ7fukXVxccOrUKZQtW1bznxi0gO6TJqRounz5Mvr27QupVIqQkBD6+y8AGGMICAjA6tWrVdrr1KmD4ODgAn871Ze0NgvW9OnTMW3aNJ2bkpIQQgAgNTUVI0eORP369REWFgalUokXL14IXRb5jsWLF0MkEqkEtI2NDeLj43H58uVCFdDqUPua9LJlyxAeHg47Ozu4urpm6Th29+5djRVHCCHquHDhAvr27cuHct++fbFw4cIs4y0Q3XHo0KFsO++Fh4fD3d1dgIp0i9oh/XXXd0IIEVpmZiZGjRqFFStWAPg0L8DatWvptioddvPmTX7wmC+pM+xzUaB2SE+bNk0bdRBCSJ7p6+vzM+QNHDgQCxYsoGvQOioiIiLbI+S9e/fy8zSQ/6GhkQghBVJycjI+fPjAP1+xYgX+/fdfBAUFUUDroISEBNjb22cJ6Pnz54MxRgGdgzwNC6qnp5fjgxBCtO3s2bOoVKkSBg0axLfZ2tqqTMhDdINcLkfDhg1RrFgx/mwHAAwYMABKpRLjxo0TsDrdp/bp7oMHD6o8z8jIwL1797B582aa2IIQolUpKSmYOHEiPzSxSCTC+/fvUbx4cYErI19jjMHf3x9r165VaW/QoAFOnz4NiYRmisuNPM0nnZ0dO3Zg9+7dOHz4sCZWpzF0nzQhhcPFixfRp08fvud2QEAA5s2bB1NTU4ErI1/7+++/sxwh29nZ4cmTJyhWrJhAVekWrc0nnZOff/4ZAwcO1NTqCCEEAJCWlobJkydj2bJlYIyhZMmS2LBhA5o0aSJ0aeQr+/fvz/ba8osXL+Dm5iZARQWfRjqOpaenY9myZXByctLE6gghhJeRkYEDBw6AMYYBAwbg4cOHFNA65saNG+A4LktAX79+HYwxCugfoPaRdLFixVQm1WCMITk5GcbGxti2bZtGiyOEFE1SqRQGBgbgOA4WFhbYsmULZDIZfHx8hC6NfOHFixfw8PDI0n7gwAGaXUxD1A7pJUuWqDwXiUSwsbFBrVq16FoDIeSH3bhxA35+fhgzZgz69+8PAGjYsKGwRREVHz9+RJkyZRAXF6fSvnDhQowePVqgqgonjXUc01XUcYyQgkEmk2H69OmYP38+lEolSpcujUePHkFfX2NdZ8gPkslkaNKkCa5cuaLSPmjQIKxcuZLmUleDVjuOJSQk4ObNm4iNjYVSqVR5rXfv3nlZJSGkCLt9+zb8/Pzw6NEjAECvXr2wdOlSCmgdwRhD//79sWHDBpX2Ro0a4eTJk3Q7lRap/Rdw5MgR9OzZEykpKTA3N1f55MRxHIU0ISTX5HI5/vzzT8yZMwcKhQK2trZYvXo1Xc/UIfPnz8eECRNU2hwdHfHo0SOauCQfqH26u3Tp0mjZsiVmz54NY2NjbdWlMXS6mxDddfv2bdSqVQtKpRJdu3bFihUraGASHbF371506dIlS3tkZCRcXFwEqKhw0drp7qioKAwfPrxABDQhRPcwxvgzcNWrV8esWbPg6emJzp07C1wZAYCrV6+iTp06Wdpv3bqF6tWrC1BR0ab2fdI+Pj64ffu2NmohhBRyISEhqFevHp4+fcq3TZo0iQJaB4SHh4PjuCwBfejQITDGKKAFovaRdKtWrTBu3Dg8fvwYlSpVglgsVnm9bdu2GiuOEFI4ZGZmYsGCBZg2bRoyMjIwatQonDhxQuiyCIAPHz7A09MTHz9+VGlfvHgxRo4cKUxRhKf2NWmRKOeDb47joFAofrgoTaJr0oQI68mTJ/D19cWtW7cAAG3atEFQUBAcHBwErqxok8lkaNSoEa5du6bSPmTIECxfvpxup9Ky3GaT2qe7lUpljg9dC2hCiHAUCgUWLFiAn376Cbdu3YKlpSW2bNmCw4cPU0ALiDGGPn36wNDQUCWgmzZtCrlcjhUrVlBA6xC6CZEQohWbNm3C+PHjAQAtW7bEmjVraHx/gc2ZMweTJ09WaXN2dsbDhw9hYWEhUFXkWyikCSFa4evri507d6Jnz57w8/OjozMB7dq1C927d8/S/vLlS5QsWVKAikhuaWQWLEIIef78Ofr37w+ZTAYA0NfXx7///os+ffpQQAvkypUr4DguS0Dfvn2bn/aT6DYKaULID1EqlVixYgWqVKmC9evX46+//uJfo3AWRlhYGDiOQ926dVXaDx8+DMYYvLy8BKqMqItCmhCSZxEREWjSpAmGDRuGtLQ0NGrUCH379hW6rCIrPj4elpaWKF26tEr7smXLwBijW2QLoFxdk05KSsr1Cuk2J0IKP8YYgoKCMHbsWKSmpsLY2Bjz58/H4MGDv3mbJtEOqVSKBg0a4ObNmyrtw4cPx5IlS+iMRgGWq5C2tLTM9ZtMt2ERUvj9/vvvmDNnDgCgXr162LhxIzw8PASuquhRKpXw8/PD1q1bVdp9fHxw9OhRmkWsEMjVO3ju3Dn+68jISEycOBF+fn7w9vYGAFy7dg2bN2/m/2gJIYXbgAEDsG7dOkyePBnDhw+no2cBzJo1C1OnTlVpc3FxwYMHD+iMZiGi9ohjTZo0Qf/+/bP0FtyxYwfWrFmD8+fPa7K+H0YjjhHy46KionDs2DEMHDiQb0tLS6OJdgSwc+dO9OjRI0v7q1ev4OzsLEBFJC+0NuLYtWvXsh1ovXr16lmuhxBCCjbGGLZs2YIKFSrA398fZ8+e5V+jgM5fly5dAsdxWQL6zp07YIxRQBdSaoe0s7Mz1q5dm6V93bp19EtCSCESHR2Ndu3awdfXF4mJiahZsyYN5ymAZ8+egeM41K9fX6X96NGjYIyhWrVqAlVG8oPavQoWL16MTp064cSJE6hVqxYA4ObNmwgLC8P+/fs1XiAhJH8xxrBr1y4MHToUHz58gEQiwYwZMzB27FjqiJSP4uLi4O7ujpSUFJX2FStWYMiQIQJVRfKb2kfSLVu2xLNnz9CmTRt8+PABHz58QJs2bfDs2TO0bNlSGzUSQvLRwIED0aNHD3z48AHVqlXDnTt3MHHiRArofCKVSlG9enXY2tqqBPTIkSOhVCopoIsYtTuOFTTUcYwQ9ezcuRO+vr74448/MGHChCxzxhPtUCqV6N27N7Zv367S3qJFC/zzzz/0IamQ0VrHMeBTB4ZevXqhdu3aiIqKAgBs3boVly9fzlu1hBDBvH//HtevX+efd+vWDU+fPsWUKVMooPPJzJkzoaenpxLQHh4eSEpKwvHjxymgizC1Q3r//v3w8fGBkZER7t69yw+mn5iYiNmzZ2u8QEKI9hw8eBAVKlRA+/btER8fD+DTeNvu7u4CV1Y0bN++HRzHYdq0aSrtr1+/xvPnz2FmZiZQZURXqB3Ss2bNwurVq7F27VqVT9l16tTB3bt3NVocIUQ7Pnz4gF69eqFjx46IjY1F8eLF8f79e6HLKjIuXLgAjuPQq1cvlfZ79+6BMYYSJUoIVBnRNWqHdGhoaJZbAQDAwsICCQkJmqiJEKJFR44cQYUKFbB9+3aIRCJMmjQJd+7cQZkyZYQurdALDQ0Fx3Fo2LChSvuxY8fAGEPVqlUFqYvoLrVD2t7eHs+fP8/SfvnyZTpFRogOUygU8PPzQ9u2bREdHY2yZcvi6tWrmD17NgwMDIQur1CLi4uDsbExypYtq9K+atUqMMbozhiSI7VDesCAARgxYgRu3LgBjuPw9u1bbN++HWPHjsXgwYO1USMhRAP09PTAcRw4jsPYsWNx9+5dfqwDoh3p6emoVq0abG1tkZ6ezrePGTMGSqUSgwYNErA6UhCofQsWYwyzZ8/GnDlzkJaWBgAwMDDA2LFj8eeff2qlyB9Bt2CRoiwpKQlSqRS2trYAgISEBDx+/Bi1a9cWuLLCTalUokePHti9e7dKe+vWrXHw4EHqrU1ynU15vk9aLpfj+fPnSElJQfny5WFqaprnYrWJQpoUVWfOnEHfvn1RqVIlHD16lOYUzifTpk3DzJkzVdpKlSqFu3fv6uz/SZL/cptNan+c27ZtGzp27AhjY2OUL1/+h4okhGheSkoKxo8fj1WrVgEAxGIxYmJiYG9vL3BlhduWLVvg6+ubpf3NmzdwcnISoCJSGKh9TXrUqFGwtbVFjx49cPz4cSgUCm3URQjJg/Pnz6NSpUp8QA8dOhQPHjyggNai8+fPg+O4LAH933//gTFGAU1+iNoh/e7dO+zatQscx6FLly5wcHDAkCFDcPXqVW3URwjJhbS0NAwfPhyNGjVCZGQkXF1dcfbsWSxfvhwmJiZCl1coPXnyBBzHoVGjRirtJ0+eBGMMlStXFqgyUpioHdL6+vpo3bo1tm/fjtjYWCxevBiRkZFo1KgRPDw8tFEjISQXTpw4AQAYNGgQHjx4kCU8iGbExsbC0NAwy+W+oKAgMMbg4+MjUGWkMPqhLobGxsbw8fHBx48f8fLlSzx58kRTdRFCviM9PR0SiQR6enowNjbG1q1bkZycjF9++UXo0gqltLQ0/Pzzz3j48KFK+7hx4zB//nyBqiKFXZ4m2EhLS8P27dvRsmVLODk5YcmSJejQoQMePXqk6foIIdm4du0aqlatiuXLl/NtP//8MwW0FiiVSnTu3BkmJiYqAd2uXTtkZmZSQBOtUjuku3XrBltbW4waNQru7u44f/48nj9/jj///DPLaDqEEM2SSqUYP3486tati2fPnmHFihXIyMgQuqxCa+rUqdDT08O+ffv4trJlyyI5ORmHDh2Cnp6egNWRokDtkNbT08OePXvw7t07rFixAt7e3tqoixDylVu3bqFatWpYsGABP/fwrVu3aDpJLdi0aRM4jsOsWbP4ts8jLD558oTudy5CMjMzcfjwYfj4+AgyiZRa16QzMjIQHR2NUqVK0SdIQvKJTCbDzJkzMW/ePCgUCtjZ2WHNmjVo27at0KUVOsHBwWjatGmW9ocPH6JixYoCVESE1rFjRxw5cgQA4OzsjHXr1uXr9tU6khaLxXjw4IG2aiGEZCMsLAzz58+HQqFA9+7d8ejRIwpoDXv8+DE4jssS0KdPnwZjjAK6iGCM4dKlS0hMTOTb2rdvD2tra0yYMAG///57vtek9rCgo0aNgoGBAebOnautmjSKhgUlBRFjTGUYz6VLl6JEiRLo1KmTgFUVPtHR0ShRokSWQZnWrl2L/v37C1QVyW/JycnYtm0bVq5ciZCQECxbtgzDhg0D8OlMFmMMhoaGGt2m1oYFzczMxIYNG3DmzBl4eXllGShh0aJFuV7XnDlzcODAATx9+hRGRkaoXbs25s2bpzKvrVQqxZgxY7Br1y7IZDL4+Phg5cqVsLOzU7d0QgqEBw8eYMCAAQgKCuLnFx4xYoSwRRUyaWlpqFmzZpY7UiZOnIg5c+YIVBXJbyEhIVi1ahW2bNmClJQUAJ9uLf7ySFroaVzVPpL+1gAJHMfh7NmzuV5X8+bN0a1bN9SoUQOZmZmYPHkyQkJC8PjxYz78Bw8ejGPHjmHTpk2wsLDA0KFDIRKJcOXKlVxtg46kSUGRmZmJefPmYcaMGcjIyECjRo3U+nsi36dQKNClSxccOHBApb1jx47Ys2cP9bUpIjIzM9GsWTOcO3eObytTpgwCAgLQu3dvWFpaar2GXGcT0yGxsbEMALtw4QJjjLGEhAQmFovZ3r17+WWePHnCALBr165luw6pVMoSExP5x+vXrxkAlpiYmC/7QEhehISEMC8vLwaAAWDt27dn0dHRQpdVqEyaNIn/+X5+VKhQgaWkpAhdGskHcXFxKs87dOjA9PT0WKdOnVhwcDBTKpX5Wk9iYmKusinPIR0WFsZOnjzJ0tLSGGNMIzsYFhbGALCHDx8yxhgLDg5mANjHjx9VlitZsiRbtGhRtuuYNm1alj9ECmmiqzIyMtjcuXOZRCJhAFixYsXYtm3b8v0fRmG2bt26LP8P9PT02Lt374QujWiZQqFgp06dYu3bt2f6+vrs+fPn/GvPnj1jb968Eaw2rYX0+/fvWePGjRnHcUwkErHw8HDGGGN9+vRho0ePzlu17NMPs1WrVqxOnTp82/bt25lEIsmybI0aNdj48eOzXQ8dSZOCZNu2bXxwtG7dmkVFRQldUqFx+vTpbD+wh4SECF0a0bL4+Hi2cOFC5unpqfLeBwYGCl0aL7chnaepKsViMV69egVjY2O+vWvXrjh58qS6q+MNGTIEISEh2LVrV57XAXy6yG9ubq7yIERXde/eHW3btsWmTZvwzz//wNHRUeiSCryQkBBwHIdmzZqptP/7779gjKFChQoCVUa0LSYmBn379oWTkxPGjBmD58+fw9zcHMOGDcPjx48REBAgdIlqU7t39+nTp3Hq1CmUKFFCpb1UqVJ4+fJlnooYOnQojh49iosXL6qs197eHnK5HAkJCSoX8mkCe1JQhYWFYcaMGQgKCoKJiQlEIhEOHz4sdFmFwrt37+Dk5AT2VV/YDRs2oE+fPgJVRbSNfXG7opmZGQ4cOACpVIoqVapgyJAh6N69e4EeIU7tI+nU1FSVI+jPPnz4oHZXdcYYhg4dioMHD+Ls2bNwc3NTed3LywtisRjBwcF8W2hoKF69ekXDkZICRalUYunSpahSpQq2b9+OadOmCV1SoZGamopy5crB0dFRJaB///13MMYooAup58+fY+zYsWjQoAH/vhsbGyMwMBBXr17FvXv3MGDAgAId0ADU793dokULNmXKFMYYY6ampuzFixdMoVCwzp07s06dOqm1rsGDBzMLCwt2/vx59u7dO/7xuTMaY4wNGjSIlSxZkp09e5bdvn2beXt7M29v71xvI7fn/QnRlvDwcFa/fn3+uliTJk1YZGSk0GUVeJmZmax169ZZrjn/+uuvLDMzU+jyiBZkZmayw4cPMx8fH5X3/OLFi0KXpjatdRx7+PAhs7W1Zc2bN2cSiYT9+uuvrFy5cszOzk6l51xufP3H9fmxceNGfpn09HQWEBDAihUrxoyNjVmHDh3U6pVJIU2EolAoWGBgIDMxMWEAmImJCVu5ciX13NaA7P5vVKpUiaWmpgpdGtGC2NhY9tdff7GSJUvy7zfHcaxly5bs6NGjBfJDWW6zSe3BTAAgMTERK1aswH///YeUlBRUq1YNQ4YMgYODQ56P6LWFBjMhQvnjjz/w559/AgAaNGiADRs2wN3dXeCqCrZatWrh5s2bWdqjo6NpFMJC7MyZM/xc6dbW1ujXrx/8/f0L9N9TbrMpTyFdkFBIE6G8ffsWNWvWxIQJEzBkyBCIRGp3ASH/b+zYsVi4cGGW9n379tF45oVMcnIytm/fjoyMDH78bKVSiZ49e6Jly5bo3LmzxsfRFoLWQvrkyZMwNTVF3bp1AQCBgYFYu3Ytypcvj8DAQBQrVuzHKtcwCmmSX968eYP9+/erjLMtlUoLxT8UoWzfvh29evXK0j516lTMnDlTgIqItjx69IgfRzs5ORlWVlZ48+YNjIyMhC5NK3KbTWp/tB83bhySkpIAfJpjdfTo0WjZsiUiIiIwevTovFdMSAHFGMPGjRtRoUIFjBw5kp97FgAFdB7dvn0bHMdlCehGjRqBMUYBXUjI5XLs3r0bDRs2RMWKFREYGIjk5GSULl0af/zxR5bb6Yoite+TjoiIQPny5QEA+/fvR5s2bTB79mzcvXsXLVu21HiBhOiyt2/fYsCAATh+/DiAT9dMS5UqJXBVBde3xkCgf9iFz7Rp0/hpj/X09NCuXTsEBASgcePGKlO1FmVqH0lLJBKkpaUB+HQx//OoPlZWVvwRNiGFHWMM27ZtQ4UKFXD8+HFIJBLMmzcPV65cQdmyZYUur8CRy+XgOC7bgM7IyKCALgSUSiX+/fdfPHjwgG/z8/ODg4MD/vjjD0RGRmL//v1o0qQJBfQX1D6Srlu3LkaPHo06derg5s2b2L17NwDg2bNnWUYhI6SwGjRoENasWQMAqF69OjZv3syfYSK5xxjLsUNdfHw8rKys8rkiomkfP37Epk2bsGrVKoSFhaFr16788M9lypTB69evaYrQb1D7SHrFihXQ19fHvn37sGrVKjg5OQEATpw4gebNm2u8QEJ0UcuWLSEWizFr1ixcu3aNAjoPqlWrlm1Ah4SEgDFGAV3A3blzB/369YOTkxNGjx6NsLAwmJubZxm6lQL62+gWLEJyITY2Fk+fPkX9+vX5ttevX8PZ2VnAqgqmESNGYNmyZVnaDx48iPbt2+d/QUTjevTogZ07d/LPK1eujCFDhqBHjx4Ff5hODcltNql9uhsAFAoFDh48iCdPngAAypUrh/bt20NfP0+rI0Sn7du3D4MHD4ZCocCjR4/4QXsooNWzZcsW+Pr6ZmmfPn06jWVewIWHh8PJyYm/m6FGjRrYv38/OnfujICAAHh7e9N15rxSdyizkJAQ5ubmxoyNjdlPP/3EfvrpJ2ZiYsJcXV3Zw4cP1V2d1tGwoCSv3r9/z7p166Yy7OSTJ0+ELqvAuXHjRrbDePr4+AhdGvkBX4+jvXnzZv61pKQkFhMTI2B1ui+32aT2oW///v1RsWJF3Llzhx+45OPHj/Dz88PAgQNx9epVDX18IEQ4hw8fhr+/P2JiYqCnp4eJEydi6tSpas/0VpS9e/cu2/mxOY6DUqkUoCKiCTExMVi/fj2CgoLw6tUrAJ/e04cPH/LLmJmZwczMTKgSCxW1Q/r+/fu4ffu2yshixYoVw19//YUaNWpotDhC8ptSqUSfPn2wZcsWAED58uWxadMm+t1Wg0wmy3EQl8zMTOooVEBlZGTA19cX+/btQ0ZGBoBPt95+Hkfbw8ND4AoLJ7V7d5cuXRoxMTFZ2mNjY+Hp6amRoggRikgkgrm5OUQiESZMmIA7d+5QQOcSYwwcx2Ub0B8+fABjjAK6gJHL5fzXYrEYMTExyMjIQK1atbB582a8efMG8+fPp4DWolz17v5ykJLLly9j/PjxmD59On7++WcAwPXr1zFz5kzMnTtX50Ydo97dnzDGkJCWAVmmEgb6Ilgai6kjx/9LTExESkoKfzthamoqQkJCUKtWLYErKzgqVqyIR48eZWl//PgxypUrJ0BF5Ed8Hkd7165dCAkJ4QeZuXXrFkQiEby8vASusODT6AQbIpFI5R/652/53Pblc4VC8UOFaxqFNBCbJEVIVBKiEtIgVygh0RPBydIYFZ3MYWtetMeWPn36NPr16wcPDw+cPXuWZqpS09ChQxEYGJil/ciRI2jdurUAFZG8ksvlOHToEFauXIkLFy7w7UuWLFGZNIZohkZvwTp37pzGCiP5KzZJivOhcUhMl8PWzBCGYj1IMxQIj0vG+xQZGpaxKZJBnZycjLFjx/KjhhkYGODt27c0al4ubdy4EX379s3S/tdff2Hy5MkCVETy6sOHD1iyZAnWrl2L6OhoAFnH0SbCocFMCjHGGM49jUN4XDJcrU2ynA2JjE+Fh40ZGpW1KVKnvoODg9GvXz+8fPkSADB8+HDMnj0bJiYmAlem+65fvw5vb+8s7a1atcLRo0cFqIj8qA8fPsDJyQlSqRT29vYYOHAgBgwYQB9YtUyrg5kkJCRg/fr1/GAmFSpUQN++fWFhYZG3aolWJKRlICohDbZmhllCmOM42JoZIiohDQlpGShmIhGoyvyTlpaGcePGYeXKlQAANzc3bNiwAQ0bNhS2sAIgKioq23/aEokEMplMgIpIXnweR/v27dvYvn07gE89tGfNmoWSJUuiffv2EIvFAldJvqT2kfTt27fh4+MDIyMj1KxZE8CnzgTp6ek4ffo0qlWrppVC86ooH0lHJ0px7OFblLA0hp4o65GyQsnwJiENrSo5wt6i8J/ylslkqF69OkJCQhAQEIB58+bREIXfIZVKYWRklO1rdDtVwXHnzh2sXLkSO3fuRHp6Ot+ma/+vixKtHUmPGjUKbdu2xdq1a/lhQDMzM9G/f3+MHDkSFy9ezHvVRKMM9EWQ6IkgzVDAxCDrWy3NUECiJ4KBfuHtLJWWlgaxWAyxWAwDAwNs3boV79+/R9OmTYUuTaexb8xOlZCQQGfNCoD09HTs2bMHK1euxM2bN/n2ypUrIyAgAKVLlxawOpJbav93vn37NiZMmKAyTre+vj7Gjx+P27dva7Q48mMsjcVwsjRGbLI0y3y8jDHEJkvhZGkMS+PCeXrrypUrqFKlCubPn8+3Va1alQL6O8qWLZttQD99+hSMMQroAuLEiRPw8/PDzZs3IRaL0aNHD1y+fBn379+Hv78/nUUqINQOaXNzc34ouC+9fv2ahoHTMRzHoaKTOSyMJIiMT0WqLBMKJUOqLBOR8amwMJagopN5oes0lp6ejrFjx6JevXp4/vw51q9fD6lUKnRZOs/f3x8cxyE0NFSl/fjx42CMoUyZMgJVRr5HoVDgyJEj2L17N9/Wpk0beHt7Y/bs2Xjz5g22b9+OOnXqFLq/98JO7dPdXbt2Rb9+/fD333+jdu3aAD4dsYwbNw7du3fXeIHkx9iaG6JhGRv+Pun3qTJI9ETwsDErlPdJ37hxA76+vnzQ+Pn5YfHixTkOU0mAdevWYcCAAVna586diwkTJghQEcmt2NhYrF+/HqtXr8arV6/g7OyMTp06QV9fH2KxmOZSKATUDum///4bHMehd+/eyMzMBPBpuLjBgwdj7ty5Gi+Q/Dhbc0M0MjMo1COOSaVSTJ8+HQsWLIBSqYS9vT3Wrl1LA2p8w5UrV1C3bt0s7W3btsXhw4cFqIjkBmMMV69excqVK7F3716VcbS7deuG9PR0OqtZiOT5Pum0tDSEh4cDADw8PGBsbKzRwjSlKPfuLkqePXuGKlWqQCqVolevXli6dCmsrKyELksnvXnzJtu5sE1NTZGcnCxARUQdU6ZMwV9//cU/r1WrFgICAtC5c+cce+IT3aPRYUELMgrpwuvzhA6frV27FsWLF0eHDh0ErEp3paen5/hhWqFQ0JCoOurRo0cwNjaGm5sbgE+3vNavXx89evRAQEAAjaNdQOU2m+ivkhRI9+/fh5eXl8o1twEDBlBAZ+Pzh5nsAjoxMfGbt1sRYcjlcuzZswcNGzZExYoVMWfOHP61GjVqIDo6GuvXr6eALgLoL5MUKBkZGZg5cyZq1KiBe/fuYfz48UKXpNM8PDyyDeBnz56BMUZnl3TMmzdv8Mcff8DFxQVdu3bFhQsXIBKJkJ6ernIbJd0GV3TkaVhQQoTw8OFD+Pr64t69ewCATp068UN8ElX9+/fH+vXrs7SfPHkSPj4+AlREvicgIABr1qzhZxK0t7fHgAEDMGDAgGz7EJCigY6kic7LzMzEnDlz4OXlhXv37sHKygo7d+7E3r17YWtrK3R5OiUoKAgcx2UJ6AULFoAxRgGtQz5+/MjfIQMAtra2UCgUaNCgAXbv3o2XL19i5syZFNBFHHUcIzpv37596Ny5M4BPtwcFBQXxk9CTTy5duoT69etnaf/111+xd+9eASoiObl79y5WrlyJHTt2YOfOnWjXrh2AT/c8x8XFoUKFCgJXSPKDVmfBIiQ/derUCd27d0eLFi3Qq1evQnV/9496+fIlXF1ds7QXK1YMHz58yP+CSLakUik/jvaNGzf49hMnTvAhbWtrS2eGSBYU0kTnhIaGYsqUKVi3bh0sLCzAcRx27NghdFk6JS0tLcf5r+l2Kt0hl8sxZcoUbNiwAfHx8QA+Df7066+/IiAgAHXq1BG4QqLrKKSJzlAoFFi2bBkmT54MqVQKW1tbBAYGCl2WTvnW7VJJSUk00pQO+PL+fbFYjLNnzyI+Ph4lS5aEv78/+vXrBzs7O4GrJAUFhTTRCc+fP0efPn1w+fJlAMAvv/xC40Z/pWTJknj9+nWW9ufPn8PDw0OAisiXYmNjsWHDBmzbtg1XrlzhzwLNnj0bUqkUrVq1ovm3idronBgRlFKpxPLly1G5cmVcvnwZpqamCAoKwqlTp1CyZEmhy9MJfn5+4DguS0D/+++/YIxRQAuIMYYrV66gZ8+eKFGiBCZNmoRHjx5h27Zt/DLNmjVD27ZtKaBJntCRNBHU7NmzMXXqVABAo0aNsGHDhmw7QhVFgYGBGDp0aJb2JUuWYMSIEQJURD5LTU3F9u3bsXLlSvz33398e82aNREQEIAuXboIWB0pTOgWLCKo9+/fo2bNmhg7diwGDRpEHZ4AnD9/Ho0aNcrS3q1bN+zcuVOAisjX3rx5A1dXVygUChgaGqJHjx4YPHgwqlevLnRppICgW7CIzpLL5ZBIJACA4sWLIzQ0FGKxWOCqhBcZGclPovAlW1tbxMTECFARAT4NRXvo0CHcvXuXH0O7RIkSGD58OJydneHr60szrhGtoSNpkq8+fPiARo0aISAgAP7+/kKXoxNSU1Nhamqa7WtKpZLuCxfImzdvsHbtWqxduxbv3r0DAISFhcHT01PgykhhQEfSROekpKSgZcuWePDgAWbOnInu3bsX6Q9O37qdKiUlJcf7oIn2MMZw9uxZrFy5EocPH+bH0bazs8OAAQOK9O8rEQaFNMkXMpkMHTp0wI0bN2BlZYXTp08X6X94Dg4OiI6OztL+4sWLbE95k/yxe/dudO/enX9ev359BAQEoEOHDvwlGkLyE/XSIVqXmZmJHj164MyZMzAxMcHx48eL7PjEPXv2BMdxWQL67NmzYIxRQOezu3fv4uzZs/zztm3bomTJkggICMDDhw9x4cIFdO3alQKaCIaOpIlWMcbg7++PAwcOQCKR4NChQ6hVq5bQZeW7ZcuWZXvb1LJlyzBs2DABKiq6pFIp9u7di5UrV+L69esoV64cHj16BI7jYGxsjBcvXtA9zURnUEgTrTp27Bg2bNgAkUiEnTt3omnTpkKXlK+Cg4Oz3efffvsNW7ZsEaCiouvFixcICgrC+vXrVcbRrlq1KpKTk/nLLxTQRJdQSBOtatWqFWbPng07Ozt07NhR6HLyzYsXL7IdCczJyQlv3rwRoKKibfbs2ZgyZQo+38zi7OyMQYMG0TjaROdRSBOt+DzJAMdxmDRpktDl5JuUlJQcJ7mg26nyT2xsLADwUz/WrFkTjDH4+PggICAALVu2hL4+/fsjuo86jhGN27VrF5o1a4bk5GShS8k3nwM4u4BOSUlRmRmJaAdjDFevXkWvXr3g7OyMBQsW8K81btwYz58/x8mTJ9G2bVsKaFJgUEgTjTp58iR+++03nDlzBqtXrxa6nHxhY2OT7XXMyMhIMMbofmctS0lJwZo1a/DTTz+hTp062L59O+RyOUJCQvhlRCIRTURCCiQKaaIxFy5cQMeOHZGZmYlu3bph9OjRQpekVeXKlQPHcXj//r1K+4ULF8AYg4uLi0CVFR1Tp06Fk5MT/P398d9//8HQ0BB9+vTBzZs3ceLECaHLI+SHUUiTH/bixQv07NkTDRs2RHp6Olq0aIHNmzcX2l6ynTt3BsdxePr0qUr7qlWrwBhD/fr1Baqs8JPJZPhyJOOUlBQkJSXB09MTixYtQlRUFDZs2IAaNWoIWCUhmkMhTX7IqVOnULZsWezYsQPAp8E69u3bVygHf1i9ejU4jsO+fftU2vv06QPGGAYNGiRQZYXfs2fPMHbsWDg5OeHChQt8+/Dhw3Hq1CmEhoZi1KhRNNEFKXSo9wT5IXXq1IGVlRUqV66MuXPnolq1akKXpHE3b97McQCWQj4/jaDkcjkOHTqE1atX49y5c3z7rl270LBhQwCAm5sbjdJGCjVBj6QvXryINm3awNHRERzH4dChQyqvM8bwxx9/wMHBAUZGRmjatCnCwsKEKZYgIyMDq1atQqtWraBUKgEApqamuHfvHk6fPl3oAvr9+/fgOC7bgFYqlRTQWpKeno6JEyfC2dkZXbt2xblz58BxHFq1aoUjR44gMDBQ6BIJyTeChnRqaiqqVKmS4x/d/PnzsWzZMqxevRo3btyAiYkJfHx8IJVK87nSoo0xhj179qB8+fIICAjA8ePHVT5QOTg4CFecFigUCnAcBxsbmyyvJSYm0u1UWvDlBx5DQ0McPHgQsbGxcHBwwNSpUxEZGYmjR4+idevWhbavAyHZYjoCADt48CD/XKlUMnt7e7ZgwQK+LSEhgRkYGLCdO3fmer2JiYkMAEtMTNRkuUVGcHAwq169OgPAADBbW1sWGBjIZDKZ0KVpxef9/PoREhIidGmF0suXL9mUKVNYxYoVWVpaGt9+4MABduDAASaXywWsjhDtyW026ew16YiICERHR6uMe2xhYYFatWrh2rVr6NatW7bfJ5PJIJPJ+OdJSUlar7UwyszMhJ+fH7Zv3w7g02ntcePGYfTo0TA1NRW4Os3L6ch4+/bt6NGjRz5XU7gpFAocP34cQUFBOH78OH8UfeDAAfTs2RMA0KFDByFLJERn6Gzv7s9T+X09rq6dnV228/B+NmfOHFhYWPAPZ2dnrdZZWCUkJOD+/fvQ09PD8OHDER4ejj/++KPQBXT79u2zDehBgwaBMUYBrUFxcXGYOXMmXF1d0bZtWxw7dgyMMTRu3Bh79uxB586dhS6REJ2js0fSeTVp0iSVQTSSkpIoqPOgePHiuHjxIu7fv4/GjRsLXY7GrVixItspIr/3IZDk3cePHzFt2jQAgLW1Nfz8/DBw4ECULl1a4MoI0V06G9L29vYAgJiYGJWOSTExMahatWqO32dgYAADAwNtl1fgMMaQkJYBWaYSBvoiWBqLsz2CfPToESpUqAAAsLKyKnQBfe3aNdSuXTvb1xj11taY6OhobNiwAXFxcVi8eDEAoHTp0hg9ejS8vLzQsWNHGBoaClwlIbpPZ0Pazc0N9vb2CA4O5kM5KSkJN27cwODBg4UtroCJTZIiJCoJUQlpkCuUkOiJ4GRpjIpO5rA1/98/ysDAQAwbNgyBgYGF7mccGxub45SENDuVZiiVSpw9exarV6/G4cOHkZmZCX19fUyYMIH/0L1w4UKBqySkYBE0pFNSUvD8+XP+eUREBO7fvw8rKyuULFkSI0eOxKxZs1CqVCm4ublh6tSpcHR0RPv27YUruoCJTZLifGgcEtPlsDUzhKFYD9IMBcLjkvE+RYaGZWxga26I7du3Y+jQoQCAd+/eCVy15mRmZkIsFmf7WnJycqG7xi6EuLg4bNy4EWvWrEF4eDjf7u3tDX9/f1hYWAhYHSEFm6Ahffv2bTRq1Ih//vlasq+vLzZt2oTx48cjNTUVAwcOREJCAurWrYuTJ0/SabJcYowhJCoJielyuFqb8EeLJgb6cJWYIDI+FSFRSUi7eAa+vr4AgKFDh2LGjBlClq0xOR0dP378GOXKlcvnagqv7du3Y8KECQAAc3Nz/Pbbb/D390elSpUEroyQgo9jhfxCXFJSEiwsLJCYmAhzc3Ohy8lXH1PlOPrgLcwNxTAxyPp5LFWWiVvXr2DhaF9IpVL07NkTW7ZsgUiks53+cyWncKYexD/uw4cP2Lx5Mzw8PNC2bVu+rV27dvDz80O3bt1oak5CciG32aSz16TJj5NlKiFXKGEozn6EpjfPH2PRuH6QSqVo3bo1Nm7cWKADulWrVjh+/HiW9iFDhmDFihUCVFQ4MMZw9epVBAUFYc+ePZDJZPj555/5kLayssKlS5cErpKQwolCuhAz0BdBoieCNEOR7ZH01fP/Ij01BbXr1MOePXtyvHar65YsWYJRo0ZlaXdxcUFkZGT+F1RIJCQkYNu2bQgKCkJISAjfXrVqVfj6+kKpVBboD3WEFAQU0oWYpbEYTpbGCI9LhqvEROU0MGMMDbv6w9HBEb8P9YORkZGAlebN5cuXUa9evWxfK+RXcfJFr169cOzYMQCAkZERunXrhkGDBqFGjRrUG56QfEIhXYhxHIeKTuZ4nyJDZHwqbM0MIU9NBPQNkCAHLIwlGDd8ECzNC1ZHvOjo6Bwn9aDbqfImOTkZ27dvR7t27fifbZ8+ffDy5Uv4+/ujV69esLS0FLZIQoogCulCztbcEA3L2CAkKgnPo2Iwe2gPGJuYYX7QNtQsbaNyn7Su+9btVCkpKdRhKQ/u3r2LoKAg7NixAykpKXj//j2mTJkC4NP42R07dqQPPYQIiEK6CLA1N4TixiUsGz0GL0NDYG1dHKXNMwtUQOcUFKGhoTSspJpSU1Oxc+dOBAUF4fbt23x72bJlUbJkSf45XW8mRHgU0oXc3bt3MXHiRPz7778AgGLFiuH06VMFJthyCuf9+/ejY8eO+VxNwZeRkQFPT09+fHKxWIxff/0V/v7+qF+/Ph01E6Jj6KNyISWVStG9e3d4eXnh33//hVgsxsiRIxEaGopq1aoJXd53/fLLL9kGxqhRo8AYo4DOpfT0dBw+fJh/LhaL0bx5c3h6emL+/PmIiorCjh070KBBAwpoQnQQHUkXUgYGBoiLiwPHcejZsydmzpwJNzc3ocv6rgULFmD8+PFZ2j09PREWFiZARQXTkydPEBQUhC1btuDjx4+4c+cO/+Fs6dKlMDU1pdPZhBQAFNKFRHJyMpYsWYJBgwbBxsYGHMdh2bJlkMvl35w1TFdcuHABDRs2zPY1up0qd2QyGfbv34/Vq1erDC7i6uqKmJgY/nlRG3mPkIKMQrqAk8vlWLNmDWbOnIm4uDh8+PCBnxqwfPnyAlf3fW/fvoWTk1O2r9HtVLn36NEjNGjQAPHx8QAAPT09tGnTBv7+/mjWrBkdNRNSQFFIF2DHjh3D8OHD8eLFCwBAqVKlchzcQ9fIZLIcJ0pJTU2FsbFxPldUsMjlcjx//pz/IFa6dGlIJBKUKFECAwYMQL9+/XL88EMIKTgopAuow4cPo1OnTlAoFLCzs8P06dPRr1+/AjG0Z05Hx2FhYfD09MznagqWFy9eYM2aNdi4cSMkEgkiIiKgr68PsViM8+fPw93dHfr69GdNSGFBf80F0KVLl9C1a1coFAr07NkTq1evLhDzIucUzocPH+YnayBZZWRk4MiRIwgKCsLp06f5dgcHB4SHh6NMmTIAUGBuqyOE5B6FdAHk4eGBUqVKwcPDA5s2bdKJIyfGGBLSMiDLVMJAXwRLYzEfyjmFc/PmzXHixIn8LLPAOXz4MAYPHox3797xbc2aNcOgQYPQunXrAnHmRBu+9ftGSGEi/H93ojZHR0dcvHgRRkZGOhHQsUlShEQlISohDXKFEhI9EZwsjbF65ijs3bUj2++hHtvZUygUSE5O5sfJdnJywrt372Bra4u+fftiwIABcHd3F7ZIgeX0+1bRybxAjaJHSG4I/x+e5MrLly9x8+ZNdO7cGcCnkcN0QWySFOdD45CYLoetmSEMxXr49+gB9J40JNvlKZyzFxUVhfXr12Pt2rXw8fHBunXrAADVq1fH8ePH0aRJE0gkEoGrFF52v2/SDAXC45LxPkWGhmUK1nj0hHwPhXQBEBsbi19++QVhYWHYunUrevXqJXRJAD4FbkhUEhLT5XC1NkHUqwj0aVk7x2WJKqVSidOnT2P16tU4evQoFAoFAODff/9FZmYmf5akRYsWQpapM77+fft8etvEQB+uEhNExqciJCoJjcwM6NQ3KTQopHVcYmIifHx8EBYWBhcXlxwH/BBCQloGohLSYCkBmlXMfurItcGP0KkW9dj+WlBQEObOnYvIyEi+rV69evD390enTp104jKGrvn8+2ZrZpglhDmOg62ZIaIS0pCQloFiJnTWgRQO9J9Ah6WlpaFNmza4f/8+bG1t8e+//6JEiRJCl8WTZSrRu3b2Q42uOXgOJT3L4k1CGmSZynyuTPcolZ9+Bp8HFYmOjkZkZCQsLS3h6+uLgQMHFojBZ4Qky1RCrlDCUKyX7euGYj28T5XR7xspVCikdVRGRga6dOmCS5cuwdzcHKdOnUKpUqWELouX0+nE0TMXoUWnHgCAVFkmJHoiGOhnHe2qqPTOjYuLw6ZNm7BmzRrMnz8fHTp0AAAMGDAArq6u6NKlC4yMjASusmAw0BdBoieCNEMBE4Os/7qkGYocf98IKagopHWQUqmEn58fjh07BiMjIxw7dkxnxt/OKUi9G/tg5vLN/HPGGGKTpfCwMYOlseptQoW9dy5jDBcvXsTq1atx4MAByOVyAMCWLVv4kHZ0dISvr6+QZRY4lsZiOFkaIzwuGa4SE5XfxW/9vhFSkFFI6yCO4+Ds7Ax9fX3s27cPdevWFbokdO/eHbt27cr2td03XyExXY5UWSbf2zY2WQoLYwkqOpmr/DMtzL1zlUolli5dijVr1uDp06d8e/Xq1eHv749u3boJWF3Bx3EcKjqZ432KDJHxqSq/Pzn9vhFS0HGskHe7TUpKgoWFBRITEwvc7D9PnjxBuXLlBK1h69at6N27d7avff7Vye2RMWMM557GfToSss56JBQZnwoPGzM0KmtTYP/R1qxZE7du3YKJiQl69uwJf3//AjF/d0FS2M/EkKIht9lER9I65J9//kGzZs34iSeEDOgrV67keAT/9ec6W3NDNDIz+O415sLUOzcxMRFbt27F1q1bcerUKX7wkSlTpuDt27fo0aNHgftQWFDk9veNkMKAQlpHbN68GX5+fmjYsCFOnjwJAwMDQer4/OkuO9+anYrjuO8Ga0HvncsYw61btxAUFISdO3ciPT0dwKezDcOGDQMAGoM8n+Tm942QwoBCWgccOnQI/fr1AwBUq1ZNsJGlcjoSefz4sUaO6gtq79zU1FRs3boVQUFBuH//Pt9esWJF+Pv768zgMoSQwodCWmBnz57lZ7Tq27cv/v7773w/bZfT9kaNGoVFixZpbDsFtXduYmIihg4dCoVCAQMDA3Tp0gX+/v6oXbs2nWIlhGgVhbSAbt68ibZt20Iul6NDhw4ICgrK13/6OW2L4zh+8A1Nb0/Xe+empqZi165dCAkJweLFiwF8ul1qxIgRKFGiBHr37g1ra2vB6iOEFC3Uu1sgjx8/Rr169fDhwwc0adIER48e5TuMadu3QjA/fh10sXfuw4cPERQUhK1btyIpKQkAEBYWBk9PGtKUEKJ51LtbxyUnJ4Mxhpo1a+LgwYP5EtAtWrTAyZMns30tPz+r6Urv3PT0dOzduxerV6/GtWvX+HYPDw8MHDgQVlZW+VoPIYR8jUJaILVq1cLly5dhZ2cHMzMzrW5rw4YNfMe0rwl1IkUXeufu2bMHfn5+AAB9fX20b98e/v7+aNy4MT/GNiGECIlOd+ejhIQEvHz5ElWqVMmX7UVHR8PBIfvZqZKTk2FqapovdegCmUyG/fv3w8DAAJ06dQLwaQKTOnXqoHPnzujbty/s7e0FrpIQUlTQ6W4dk5aWhtatW+PBgwc4evQo6tevr/K6piecyOl7d+/ejS5duuR5vQVNWFgY1qxZg40bNyI+Ph5ly5ZFx44dwXEcjI2Nce/ePaFLJISQHFFI5wO5XI5ff/0VV65cgaWlJT861Wea7EiVUzjXrFkTN27cyOsuFChyuRyHDx/G6tWrcfbsWb69RIkS6NatG+RyuWCDxRBCiDoopLVMoVCgd+/eOHHiBD+jVeXKlfnXNTXhhNA9tnXJ4MGDsWHDBgCffi4tW7aEv78/WrRoAX19+pUnhBQc1DtGixhjGDp0KHbv3g2xWIwDBw6gdu3aKq+HRCUhMV0OV2sTmBjoQ0/EwcRAH67WJkhMlyMkKumbIctxXI4BzRgr9AGdmZmJgwcPIiIigm/r3r07HBwcMGXKFERERODo0aNo06YNBTQhpMCh/1paNH36dKxevRocx2Hr1q1o3ry5yus/MuGEo6Mj3r17l+12C3swA8CrV6+wbt06rF+/Hm/fvsWYMWPw999/AwAaN26Mly9fQizWrZHLCCFEXRTSWiKXy3Hq1CkAwKpVq9C1a9csy+RlwomgoCAMGjQo2+ULezgrFAqcOHECQUFBOH78OD8qmo2NDYoXL84vJxKJ6BYqQkihQCGtJRKJBFeuXMHZs2fxyy+/ZLuMOhNOREVFoUSJEtmu5+PHj1k6oxU2jDFUr15dZYKLxo0bw9/fH+3btxdsUhJCCNEmOtzIJcYYPqbKEZ0oxcdU+XePWpVKJV59SIdduRqIiEvJdizszxNOxCZLs6zv84QTjhZGsDI1yDagDx8+DMaYVgJa3f3VNKVSibNnz/Lb5TgODRs2hLW1NcaMGYPQ0FAEBwejS5cuFNCEkEKLBjPJBXVukXr9+jX+WrgMbk164nWyErJMBQz09eBhYwKfCvYo72iRZd3Z9e6OTZZiYIPsx41u0KABzp8/n6d9yQ0hx9aOjo7Gxo0bsWbNGkRGRuLs2bNo1KgRgE9nDIyMjPJtjHNCCNEWGsxEQ9S9RaqvfwDOnDgKt+sP0Gvi3zCWGCFNnomQqCS8/ZiOPnXdVILa1twQDcvY8KH4PlWG/vU8cqxH25+pNHVLmDo+HzUHBQXh0KFDyMzMBABYWlri9evX/HLFihXT6HYJIUTXUUh/w9e3SH3ugW1ioA9XiQki41MREpWERmYG4DgOhw8fxpkTR8Hp6aF97wCYG306DWtuJIGZgT6exqTg1KNolLU3U+nY9HnCiW91dsqPEx7q7u+33Lp1C+np6dm+ZmhoiJo1awIAoqKi0LBhQzx//px/3dvbG/7+/ujcuTOMjY01tHeEEFLwUEh/gzq3SEmQgYChwwAAP7ftDUePsqrLi0RwsjREeFwqXsanwc3GVGVdOcnPqxF5vSUsNTUV9+/fR506dfi2Xr164dmzZ9lux93dHeHh4QA+3UomEolgZmaG3377Df7+/iqDvRBCSFFGIf0N6twiNeevGXj75jVMizugea8h2S5vLNHHuyQpkmWfTud26dIFe/fuzXZZIboKqHtLWEZGBtatW4cZM2YgPT0dL168gLW1NYBPQZzTmQFnZ2f+a47jsH//fri6uhapCT8IISQ3KKS/4ctbpIzEIsQly5GeqYCRvh5szCSQZnzqVBX+9DEWLVoEAGjgNwGZoux7G6fJM2Ggr4c3YU9Qxbl2tstceBAOZ3tbKJVKjd7rm5sJPHJ7S5hEj8OePXvw+++/86ep3d3dERkZyYf0iRMncl1bxYoVf2DPCCGk8KKQ/obPt0hdeR6HmCQZYpKlyMhUQqwvgp2ZIezMDVDH0wYzRgyEQqFAx44dUbdZc4REJcHMQB/cFyHLlEq8+ZiOjX1rITCbbbUfPBlOdTth6714GOgn5NgbPC9y21v78/6GxyXDVWKiEuKfbwlLCr8Pn+Fzcfv2bQCfBhL5448/MHDgQLoVihBCNIxC+hs4joNEn8N/rxOQKM2AnbkBihkbIE2eidCYJEQnidGorC3WrVuHiRMnYv78+UgSmeHtx3Q8jUmBk6UhjCX6SJNn4s8OOV9nHbv7Hj6kZcDKWPzd3uDqUqe3NsdxqOhkjvcpMkTGp2a5JSwzOR4TBnSFQqGAqakpxo4di9GjR8PMzCzP9RFCCMkZhfQ3KJVK3Ir8AEMDPdiZGyJFnom0DAX0RCKUtjVDoiwDtyI/oHaTUtixYwf/fX3quuHUo2iEx6V+M5wVCgWWBochJCoJZe1M+SPv7/UGz6289Nb++pawyLfRsLKyhoeNGSpWdcLTIUPAGMOUKVNga2urdk2EEEJyj0L6G17GpyE8LhXu1iYwNxJDmqGEQsmgJ+JgKBYh/NlThMdJsvTWLu9ogQpOljmu93OnsIi4FITHpcLJ0lDl1Djw7d7gufVlb+2ED++xa+1yPP7v02nq3wLGoELNBohKSMOJf89h5h+Ts3x/hkKJxyEPceb8FdQu6wKO47BkyZLv3n5FCCFEMyikvyFZlglZpgLGEiMAnEqv5+f3ryNooh9K1W2N/nU38+3q3E6luv6svu4Nri5ZphJJyUk4vW0r9m9ahfS0VP61xI8f+N7a7z98xI0bN3Jcz78n/kGdWtUAfHv/CCGEaBaF9DeYGejDQF8PafJMfmASAMiUy3Fg+XQAgKGRMSyMJOjfvz/Wr1+f7Xpyup0qp/V/9rk3uFk2Pa2/JyMjA1vXB2HWrD+R9DEeAFC6QhV08h0EI2MTeJaryPfWrlGzBv75559s1+Po6AgvLy+1t08IIeTHUUh/g4u1MTxsTBASlQR9ZOLKi0QkSTMRd2E74qIiYWRhjYYt28PdNvuOU5N3XUOcVA9/HgnBmCbuWUbP+nL9RvrAy49SJMsUMDPQg0sxQ0QlSFHRyRwu1llH3freLVWMMaxasRRJH+Nh6+SC/iMnoXiVhkiRZsLMSIxixU3wOkEKDxszlHGzQVn3kjmu/2OqPNtbtgghhGhXgZhgIzAwEAsWLEB0dDSqVKmC5cuX88NKfs+PTrDx+G0ifDfcRFyKHACQ8SEKbzcMARQ5n4JuNmQWws2qIvOLn6w+B7SoZI/lPVSPSh+/TcTvBx8iNDoZcsX/ZsqS6IlQxt4Mf3WolO2kHNndUpUQfg9tfBpDLBYDAA4dOoRnL17hQ4nauBKRiGRpJhRMCT1OBDNDfdQvbYMRTUpnGYtbyAk2CCGkKMhtNun8VJW7d+/G6NGjMW3aNNy9exdVqlSBj48PYmNj82X7c48/5gOaMYYPp1fmGNCOjo4Yuv02Qk3/F9Cfjz0zGXDkQTSG7bij8j13X33Ei7hUyDKV0OM+hbke9+l68ou4VNx99VFl+c+3VIXHJcPcUIwSlsaIffEEQ3/riE5tmmPJitX8su3bt0e5Jp1w6UUiEtIyINbjYGagD7Eeh4S0DJwPjcONiPjvrt/cUIzwuGScD41DbJL0B36ahBBC1KHzp7sXLVqEAQMGoE+fPgCA1atX49ixY9iwYQMmTpyo1W2npKTg4vMP/PNX89vkuOz+/fshkUgw8ko0gE/hLHt5D0r5p0kmPk8nvfcZUJt7hmLFiqFJkybYfDUSGQolzN4/gVyaCsYAEQeIwRAvzcSCyBswi6mCdu3a8bdU3bx2CSbKdLwBcPH0EZw/cRgAoKcvxpPIKDDGwHEcMjMzsfX6S0gzFPAsbgzG6UHJGEQcB44p8CpBiq3XX6JFBTvo6+trdIINQgghP06nQ1oul+POnTuYNGkS3yYSidC0aVNcu3Yt2++RyWSQyWT886SkpDxvf/qx/00Q8b1I6tSpE2xdPGHUbQkAQE8EvP83CBnxb7Is2+Mg4ObmhuWHLiMmUQpzI308PrEGyVFhWZaNAuB3pDg+xrfjb6k6sWkZHt/7X29sjuPQuHUndBk4GkbWDvwEGFdffMDr+DRYm0qgp//5rf68J/qwNpXgdXwarr74gPqlbfM8wQYhhBDt0OmQfv/+PRQKBezs7FTa7ezs8PTp02y/Z86cOZgxY4ZGtv/6Y/ZTLQKAgVN5/mszQz2UsTdHDDNHBv4XgwZ2HtAz+t+1hs9X/y2NxahetTRikqRQMAYDfRFMnTwhEhuobIOBIUPB4OJsD+B/E2C4ly4HDp9WZmPvgK79hsGzXEUolAxvEtL4CTDeJ8uQoVTCKIcJM4zEeviQKsf7ZJnK+nM7wQYhhBDt0umQzotJkyZh9OjR/POkpCSVWZfU4VzMCDciE/jnrhOOqrz+uV/Yrz854O+u1fDnkRCsv/KSb7drN05l+c/Z1q+OC6a2qYhjD95Cj+Mgy1SifJfxWbafIstAmkyBvzp9GrXs8wQY/SfM+uYEGAb6n7oaFDczgFgkQnqGAmK9rMGbnqGAWCRCcTMDlfV/b4KNz+snhBCiXTr937Z48eLQ09NDTEyMSntMTAzs7e2z/R4DAwOYm5urPPJqeqvS/Ndfd4Fn2Sw3pok79P//MFrx1cHm5+f63KflAKBZORvYWRgiKT0TCoVCdXmFAknpmbCzMESzcjYA/jcBRmyyNMu9158nwHCyNIal8afe3bXdreBsbYz4FHm2649PkcPZ2hi13a3ytH5CCCHapdMhLZFI4OXlheDgYL5NqVQiODgY3t7eWt++qakp6nta8c/ZF4/P6nta8fMgGxsbo0Ule37ZTOWncM5U/u97WlSy5++XFovF8K3tCiOxCDHJcqTIMpChUCBFloGYZDmMJHrwre3K31L1eQIMCyMJIuNTkSrLhELJkCrLRGR8KiyMJajoZM5fT9bX18dvP7vAzEAfrz6mI0kqR4ZCgSSpHK8+psPM4NPr+v9/vVrd9RNCCNEunb9Pevfu3fD19UVQUBBq1qyJJUuWYM+ePXj69GmWa9XZ+dH7pAGg97prKr28P6vvaYUt/bN+WBi24w5OPIzO1X3SALDteiQ2X41ETOKna9R6HAc7C0P41nZFr59dsyyv7n3MR/6LwtbrL/E6Pg0ZSiXEIhGcrY3x288uaFPF6YfXTwghRD25zSadD2kAWLFiBT+YSdWqVbFs2TLUqlUrV9+riZAGPt2ONf3YM7z+mA7nYkaY3qo0fwSdnbS0NCwMfoHXH9LhbGWU7YhjX8rIyMDpJ3GISZLCzvzTKe7PR9DZ+d6IY1/LzMzE1Rcf8D5ZhuJmBqjtbsUfQWti/YQQQnKvUIX0j9BUSBNCCCGaUmhGHCOEEEKKKgppQgghREdRSBNCCCE6ikKaEEII0VEU0oQQQoiOopAmhBBCdBSFNCGEEKKjKKQJIYQQHUUhTQghhOgoCmlCCCFER1FIE0IIITqKQpoQQgjRURTShBBCiI7Kea7CQuLzJF9JSUkCV0IIIYR88jmTvjcRZaEP6eTkZACAs7OzwJUQQgghqpKTk2FhYZHj64V+PmmlUom3b9/CzMwMHMf90LqSkpLg7OyM169fF4m5qWl/Czfa38KN9le3McaQnJwMR0dHiEQ5X3ku9EfSIpEIJUqU0Og6zc3NC8QvgabQ/hZutL+FG+2v7vrWEfRn1HGMEEII0VEU0oQQQoiOopBWg4GBAaZNmwYDAwOhS8kXtL+FG+1v4Ub7WzgU+o5jhBBCSEFFR9KEEEKIjqKQJoQQQnQUhTQhhBCioyikCSGEEB1FIa2GwMBAuLq6wtDQELVq1cLNmzeFLkkrpk+fDo7jVB5ly5YVuiyNuXjxItq0aQNHR0dwHIdDhw6pvM4Ywx9//AEHBwcYGRmhadOmCAsLE6ZYDfje/vr5+WV5v5s3by5MsRowZ84c1KhRA2ZmZrC1tUX79u0RGhqqsoxUKsWQIUNgbW0NU1NTdOrUCTExMQJV/GNys78NGzbM8h4PGjRIoIp/zKpVq1C5cmV+0BJvb2+cOHGCf70wvbcAhXSu7d69G6NHj8a0adNw9+5dVKlSBT4+PoiNjRW6NK2oUKEC3r17xz8uX74sdEkak5qaiipVqiAwMDDb1+fPn49ly5Zh9erVuHHjBkxMTODj4wOpVJrPlWrG9/YXAJo3b67yfu/cuTMfK9SsCxcuYMiQIbh+/Tr+/fdfZGRkoFmzZkhNTeWXGTVqFI4cOYK9e/fiwoULePv2LTp27Chg1XmXm/0FgAEDBqi8x/Pnzxeo4h9TokQJzJ07F3fu3MHt27fRuHFjtGvXDo8ePQJQuN5bAAAjuVKzZk02ZMgQ/rlCoWCOjo5szpw5AlalHdOmTWNVqlQRuox8AYAdPHiQf65UKpm9vT1bsGAB35aQkMAMDAzYzp07BahQs77eX8YY8/X1Ze3atROknvwQGxvLALALFy4wxj69n2KxmO3du5df5smTJwwAu3btmlBlaszX+8sYYw0aNGAjRowQrigtK1asGFu3bl2hfG/pSDoX5HI57ty5g6ZNm/JtIpEITZs2xbVr1wSsTHvCwsLg6OgId3d39OzZE69evRK6pHwRERGB6OholffawsICtWrVKrTvNQCcP38etra2KFOmDAYPHoz4+HihS9KYxMREAICVlRUA4M6dO8jIyFB5j8uWLYuSJUsWivf46/39bPv27ShevDgqVqyISZMmIS0tTYjyNEqhUGDXrl1ITU2Ft7d3oXxvC/0EG5rw/v17KBQK2NnZqbTb2dnh6dOnAlWlPbVq1cKmTZtQpkwZvHv3DjNmzEC9evUQEhICMzMzocvTqujoaADI9r3+/Fph07x5c3Ts2BFubm4IDw/H5MmT0aJFC1y7dg16enpCl/dDlEolRo4ciTp16qBixYoAPr3HEokElpaWKssWhvc4u/0FgB49esDFxQWOjo548OABJkyYgNDQUBw4cEDAavPu4cOH8Pb2hlQqhampKQ4ePIjy5cvj/v37he69pZAmWbRo0YL/unLlyqhVqxZcXFywZ88e9OvXT8DKiDZ069aN/7pSpUqoXLkyPDw8cP78eTRp0kTAyn7ckCFDEBISUqj6VHxLTvs7cOBA/utKlSrBwcEBTZo0QXh4ODw8PPK7zB9WpkwZ3L9/H4mJidi3bx98fX1x4cIFocvSCjrdnQvFixeHnp5elh6CMTExsLe3F6iq/GNpaYnSpUvj+fPnQpeidZ/fz6L6XgOAu7s7ihcvXuDf76FDh+Lo0aM4d+6cynS19vb2kMvlSEhIUFm+oL/HOe1vdmrVqgUABfY9lkgk8PT0hJeXF+bMmYMqVapg6dKlhfK9pZDOBYlEAi8vLwQHB/NtSqUSwcHB8Pb2FrCy/JGSkoLw8HA4ODgIXYrWubm5wd7eXuW9TkpKwo0bN4rEew0Ab968QXx8fIF9vxljGDp0KA4ePIizZ8/Czc1N5XUvLy+IxWKV9zg0NBSvXr0qkO/x9/Y3O/fv3weAAvsef02pVEImkxW69xYA9e7OrV27djEDAwO2adMm9vjxYzZw4EBmaWnJoqOjhS5N48aMGcPOnz/PIiIi2JUrV1jTpk1Z8eLFWWxsrNClaURycjK7d+8eu3fvHgPAFi1axO7du8devnzJGGNs7ty5zNLSkh0+fJg9ePCAtWvXjrm5ubH09HSBK8+bb+1vcnIyGzt2LLt27RqLiIhgZ86cYdWqVWOlSpViUqlU6NLzZPDgwczCwoKdP3+evXv3jn+kpaXxywwaNIiVLFmSnT17lt2+fZt5e3szb29vAavOu+/t7/Pnz9nMmTPZ7du3WUREBDt8+DBzd3dn9evXF7jyvJk4cSK7cOECi4iIYA8ePGATJ05kHMex06dPM8YK13vLGGMU0mpYvnw5K1myJJNIJKxmzZrs+vXrQpekFV27dmUODg5MIpEwJycn1rVrV/b8+XOhy9KYc+fOMQBZHr6+voyxT7dhTZ06ldnZ2TEDAwPWpEkTFhoaKmzRP+Bb+5uWlsaaNWvGbGxsmFgsZi4uLmzAgAEF+sNndvsKgG3cuJFfJj09nQUEBLBixYoxY2Nj1qFDB/bu3Tvhiv4B39vfV69esfr16zMrKytmYGDAPD092bhx41hiYqKwhedR3759mYuLC5NIJMzGxoY1adKED2jGCtd7yxhjNFUlIYQQoqPomjQhhBCioyikCSGEEB1FIU0IIYToKAppQgghREdRSBNCCCE6ikKaEEII0VEU0oQQQoiOopAmhBBCdBSFNCnUXF1dsWTJEv45x3E4dOhQvtcxffp0VK1aNd+3WxhcuXIFlSpVglgsRvv27YUu55s0+ft16NAheHp6Qk9PDyNHjsSmTZuyTMGYE3WWJbqNpqokRcq7d+9QrFixXC07ffp0HDp0iJ+MgAhj9OjRqFq1Kk6cOAFTU1Ohy/kh58+fR6NGjfDx48fvhqi/vz/69OmD4cOHw8zMDPr6+mjZsmX+FEp0BoU00XlyuRwSiUQj6yqo09VpiyZ/ttoSHh6OQYMGfXf6xcIkJSUFsbGx8PHxgaOjI99uZGQkYFVECHS6m+Srhg0bYujQoRg6dCgsLCxQvHhxTJ06FV8OIe/q6oo///wTvXv3hrm5OT9h/eXLl1GvXj0YGRnB2dkZw4cPR2pqKv99sbGxaNOmDYyMjODm5obt27dn2f7XpyPfvHmD7t27w8rKCiYmJqhevTpu3LiBTZs2YcaMGfjvv//AcRw4jsOmTZsAAAkJCejfvz9sbGxgbm6Oxo0b47///lPZzty5c2FnZwczMzP069cPUqn0mz8XhUKBfv36wc3NDUZGRihTpgyWLl3Kv3769GkYGhpmmSd3xIgRaNy4Mf/8ez+jnH62EyZMQOnSpWFsbAx3d3dMnToVGRkZKtuaNWsWbG1tYWZmhv79+2PixIlZTuGvW7cO5cqVg6GhIcqWLYuVK1d+c79lMhmGDx8OW1tbGBoaom7durh16xYAIDIyEhzHIT4+Hn379lV5D7Jbz4QJE+Ds7AwDAwN4enpi/fr1ufrZAp9+L0eOHKnS1r59e/j5+fHP3717h1atWvG/Xzt27MhyOQUA3r9/jw4dOsDY2BilSpXCP//8w+9Po0aNAADFihUDx3Eq6//s/PnzMDMzAwA0btwYHMfh/PnzWU5h//fff2jUqBHMzMxgbm4OLy8v3L59W2Vdp06dQrly5WBqaormzZvj3bt32f78iA4TeIIPUsQ0aNCAmZqashEjRrCnT5+ybdu2MWNjY7ZmzRp+GRcXF2Zubs7+/vtv9vz5c/5hYmLCFi9ezJ49e8auXLnCfvrpJ+bn58d/X4sWLViVKlXYtWvX2O3bt1nt2rWZkZERW7x4Mb8MAHbw4EHG2KcpHN3d3Vm9evXYpUuXWFhYGNu9eze7evUqS0tLY2PGjGEVKlTIMvVf06ZNWZs2bditW7fYs2fP2JgxY5i1tTWLj49njDG2e/duZmBgwNatW8eePn3Kfv/9d2ZmZsaqVKmS489FLpezP/74g926dYu9ePGC/7ns3r2bMcZYZmYms7OzY+vWreO/5+u23PyMsvvZMsbYn3/+ya5cucIiIiLYP//8w+zs7Ni8efP479u2bRszNDRkGzZsYKGhoWzGjBnM3NxcZZ+2bdvGHBwc2P79+9mLFy/Y/v37mZWVFdu0aVOO+z18+HDm6OjIjh8/zh49esR8fX1ZsWLFWHx8PMvMzGTv3r1j5ubmbMmSJVmmm/xSly5dmLOzMztw4AALDw9nZ86cYbt27crVz5axT7+XI0aMUFlnu3bt+JnRGPv0vletWpVdv36d3blzhzVo0CDb368SJUqwHTt2sLCwMDZ8+HBmamrK78/+/fsZABYaGsrevXvHEhISsuyLTCZjoaH/197dhzTVvnEA/07dRjk1tReVbMIsHZFYljaFjJrYg/8YBmWLCjVrpknRG1mYlhRFBUaQvbhemK7ALMjejDJCTZc1e1vOfEkioyIhVmqm1/NHeH4dN7fV7/fonn73B4LOfe5zzn1fG+faOeeS00QAqKysjDo7O6m3t5c0Gg15eXlx/aZPn04rVqwgo9FIJpOJLl68SAaDgYiINBoNCYVCUiqVpNfrqaGhgeRyOS1fvnzYz4JxTixJMyMqNjaW5HI5DQwMcG3btm0juVzOLUulUkpMTORtl5qaSunp6by2+/fvk4uLC3V3d3Mntfr6em690WgkAMMm6aKiIvLw8OCS61C5ubkWifX+/fvk6elp8a5lmUxGRUVFRESkUCgoIyODtz4qKspmkrZm/fr1lJSUxC1nZ2fTggULuOWbN2+SWCymrq4uIrIfIyLrsbXm4MGDFBERwRv/+vXreX1iYmJ4c5LJZFRSUsLrs2fPnmHf5Ws2m0koFJJWq+Xavn37RgEBAXTgwAGuzcvLi/eayaEGP/vKykq78xo0NLb2kvTgd0mv13Prm5ubrX6/du7cyZsjALp+/ToR/ee1oYOf2XC6uroIAN29e5drG5qkPTw8hv0BpNFoCADvFbPHjh2jSZMm2Twu43zY7W5mxM2dOxcCgYBbVigUaG5uRn9/P9c2e/Zs3jaNjY04c+YMJBIJ9y8+Ph4DAwNoa2uD0WiEm5sbIiIiuG1CQ0NtFucYDAbMnDkTPj4+Do+9sbERZrMZvr6+vLG0tbWhpaUFAGA0GhEVFcXbTqFQ2N33sWPHEBERgQkTJkAikeDEiRPo6Ojg1qtUKlRVVeHt27cAAK1Wi4SEBG6O9mI0aGhsAeDChQuIiYmBn58fJBIJdu7cyTt2U1MTIiMjedv8vPzlyxe0tLQgNTWVd/y9e/dycRmqpaUFfX19iImJ4dqEQiEiIyNhNBrtxmuQwWCAq6srYmNjh+1jL7b2NDU1wc3NDbNmzeLagoODrRYhhoWFcf93d3eHp6cn3r9/7/CxHLVp0yakpaVBqVRi//79FnEeO3YsZDIZt+zv7/+PjIP5Z7HCMcYpubu785bNZjPWrl2LDRs2WPSdMmUKTCbTLx/jd4pwzGYz/P39UVVVZbHuv/mTF51Oh82bN+PQoUNQKBTw8PDAwYMHUVdXx/WZM2cOZDIZdDod1Go1ysvLec9o7cVo0NDY1tbWQqVSIS8vD/Hx8fDy8oJOp8OhQ4ccHr/ZbAYAnDx50uIHiqurq8P7+R32PkdHYuvi4sKriwBg8UzeUUKhkLcsEAgwMDDwW/uyZffu3Vi+fDkqKipw/fp15ObmQqfTYfHixcOOY+gcGefHkjQz4n4+OQLAgwcPMHXqVJsn81mzZuHFixcIDg62uj40NBTfv39HQ0MD5syZA+DH1c/QQqufhYWF4dSpU/j06ZPVq2mRSMS7uh8cx7t37+Dm5oagoCCr+5XL5airq8PKlSt5c7Sluroa0dHRyMjI4NqsXYGqVCpotVpMnjwZLi4uSEhI4I3NVoyGU1NTA6lUipycHK7t9evXvD4hISHQ6/W8OQ0WeAHApEmTEBAQgNbWVqhUKoeOK5PJIBKJUF1dDalUCuBHYtTr9RZFXLbMmDEDAwMDuHfvHpRKpcV6R2I7YcIEXlFVf38/nj17xhV6hYSE4Pv373j8+DF3t+bVq1fo6upyeJwAuEr6od+r3zVt2jRMmzYNGzduRHJyMjQaDZekmT8Du93NjLiOjg5s2rQJTU1NKC0txdGjR5GdnW1zm23btqGmpgaZmZkwGAxobm7GlStXkJmZCeDHSXTRokVYu3Yt6urq0NDQgLS0NJtXWcnJyfDz80NiYiKqq6vR2tqKsrIy1NbWAvhRCd3W1gaDwYCPHz+it7cXSqUSCoUCiYmJuHXrFtrb21FTU4OcnByusjY7OxvFxcXQaDQwmUzIzc3F8+fPbc5v6tSpePjwIW7evAmTyYRdu3bxkuAglUqFR48eoaCgAEuWLIFYLHY4RraO3dHRAZ1Oh5aWFhQWFqK8vJzXJysrC6dPn8bZs2fR3NyMvXv34smTJ7zHFnl5edi3bx8KCwthMpnw9OlTaDQaHD582Opx3d3doVarsWXLFty4cQMvXrzAmjVr8PXrV6Smptoc88+CgoKwatUqpKSk4PLly2hra0NVVRUuXrzocGwXLFiAiooKVFRU4OXLl1Cr1bwfeKGhoVAqlUhPT0d9fT0eP36M9PR0jBkzhhcDe6RSKQQCAa5evYoPHz5wdyB+VXd3NzIzM1FVVYXXr1+juroaer0ecrn8t/bHOLHRfijO/H+JjY2ljIwMWrduHXl6epK3tzft2LGDV0gmlUp5xTiD6uvrKS4ujiQSCbm7u1NYWBgVFBRw6zs7OykhIYHEYjFNmTKFzp07Z7Ev/FQ4RkTU3t5OSUlJ5OnpSWPHjqXZs2dTXV0dERH19PRQUlISjRs3jgBwxUufP3+mrKwsCggIIKFQSIGBgaRSqaijo4Pbb0FBAY0fP54kEgmtWrWKtm7darNwrKenh1avXk1eXl40btw4UqvVtH37dqvbREZGEgC6c+fOL8douNhu2bKFfH19SSKR0NKlS+nIkSO8IiUiovz8fG5OKSkptGHDBpo7dy6vj1arpfDwcBKJROTt7U3z5s2jS5cuDTvv7u5uysrKovHjx5NYLKaYmBhe8R+R/cKxwf1s3LiR/P39SSQSUXBwMBUXFxORY7H99u0bqdVq8vHxoYkTJ9K+ffssqrvfvn1Lf/31F4nFYpJKpVRSUkITJ06k48ePc32Gfr+sjT8/P5/8/PxIIBDw9v8ze4Vjvb29tGzZMgoMDCSRSEQBAQGUmZnJFQgOLTIjIiovLyd2yv/3ERCxhxTMyJk/fz7Cw8Mt/raU+feJi4uDn58fzp8/P9pDGRVv3rxBYGAgbt++jYULF472cJg/FHsmzTCMXV+/fsXx48cRHx8PV1dXlJaW4vbt26isrBztoY2YO3fuwGw2Y8aMGejs7MTWrVsRFBSEefPmjfbQmD8YS9IMw9glEAhw7do1FBQUoKenByEhISgrK7NaqPWn6uvrw44dO9Da2goPDw9ER0dDq9VaVFEzzP8Su93NMAzDME6KVXczDMMwjJNiSZphGIZhnBRL0gzDMAzjpFiSZhiGYRgnxZI0wzAMwzgplqQZhmEYxkmxJM0wDMMwToolaYZhGIZxUn8DPrheLMkId9AAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from scipy.stats import poisson\n", + "lower=poisson.ppf(0.025, y_hat_test)\n", + "upper=poisson.ppf(0.975, y_hat_test)\n", + "\n", + "plt.figure(figsize=(12,6))\n", + "plt.subplot(1,2,1)\n", + "plt.scatter(y_hat_test, y_test, alpha=0.3)\n", + "plt.title('Comparison on the testset')\n", + "plt.xlabel('predicted average of caught fish')\n", + "plt.ylabel('observed number of caught fish')\n", + "plt.plot(y_hat_test[np.argsort(y_hat_test,axis=0)].flatten(), lower[np.argsort(y_hat_test,axis=0)],linestyle='dashed',c=\"black\")\n", + "plt.plot(y_hat_test[np.argsort(y_hat_test,axis=0)].flatten(), upper[np.argsort(y_hat_test,axis=0)],linestyle='dashed',c=\"black\")\n", + "plt.plot(y_hat_test, y_hat_test, c=\"black\")" + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Fish_Poisson_Keras.ipynb", + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.8" + }, + "vscode": { + "interpreter": { + "hash": "949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1" + } + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/exercises/03_rnn/_exercise-sheets/Fish_Poisson_Keras.ipynb b/exercises/03_rnn/_exercise-sheets/Fish_Poisson_Keras.ipynb new file mode 100644 index 0000000..86419f0 --- /dev/null +++ b/exercises/03_rnn/_exercise-sheets/Fish_Poisson_Keras.ipynb @@ -0,0 +1,609 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "EIolRLmR2tJc" + }, + "source": [ + "# Neural Networks for Count Data \n", + "\n", + "Redo the Poisson Regression for the fish data set, now with keras. From the previous exercise:\n", + "\n", + "## Fish Data Set\n", + "\n", + "The following data-set contains the number of Fish a group of camper caught in a state park (taken from https://stats.idre.ucla.edu/r/dae/zip/). Your task here is to predict the number of fish $y$ caught by a fishing party. We have a small data set, of 250 groups, which visited a state park and provided the following information: \n", + "\n", + "* how many people are in the group\n", + "* the number children in the group\n", + "* the use of live bait\n", + "* whether the group came with a camper to the park. \n", + "\n", + "Split the data set into a training set and testset. Use the first 200 entries for training, the remaining 50 for testing. See below for code how to read the data." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "YsAt_vDL3jFG" + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 111 + }, + "colab_type": "code", + "id": "8zoZAYtO4FHE", + "outputId": "5ad02e25-b532-47fa-b8af-7af9e8b7a650" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123
01.00.04.00.0
11.01.02.00.0
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3\n", + "0 1.0 0.0 4.0 0.0\n", + "1 1.0 1.0 2.0 0.0" + ] + }, + "execution_count": 3, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "# from sklearn.model_selection import train_test_split\n", + "# X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42,shuffle=True)\n", + "# np.savez('fishing.npz', X_train=X_train, X_test=X_test, y_train=y_train, y_test=y_test)\n", + "#https://github.com/ioskn/mldl_htwg/raw/master/data/fishing.npz\n", + "import os\n", + "from urllib.request import urlretrieve\n", + "if not os.path.isfile('fishing.npz'):\n", + " print(\"Downloading\")\n", + " urlretrieve('http://www-home.htwg-konstanz.de/~oduerr/data/fishing.npz',filename = 'fishing.npz')\n", + "d = np.load('fishing.npz')\n", + "X_train = d['Xt'] #\"livebait\",\"camper\",\"persons\",\"child\"\n", + "X_test = d['Xte']\n", + "y_train = d['yt']\n", + "y_test = d['yte']\n", + "pd.DataFrame(X_train[0:2])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "4-uaG92sPBXg" + }, + "source": [ + "## Results from the Machine Learning excercise, we had. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "_uiqzQZnChZ_" + }, + "source": [ + "### LinearRegression" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "lFLrY1YtNClk", + "outputId": "d7779272-1b27-4096-e4ec-697001f2bc7e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-8.49222821, 2.4822138 , 2.95430727, 4.64953914, -5.47160051])" + ] + }, + "execution_count": 6, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "Xd = np.hstack([np.ones((X_train.shape[0],1)), X_train])\n", + "pd.DataFrame(Xd[0:2])\n", + "Xdt = np.hstack([np.ones((X_test.shape[0],1)), X_test])\n", + "X_train.shape,Xd.shape\n", + "model_skl = LinearRegression(fit_intercept=False)\n", + "res = model_skl.fit(Xd, y_train)\n", + "res.coef_" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "pNIUUugxPmSZ" + }, + "source": [ + "#### RMSE and NLL\n", + "Determine the Root Mean Square Error (RMSE) and the average negative log-likelihood (NLL) on the testset. For NLL we assume that the conditional probability distrubution (CPD) $p(y|x)$ is given by the density of a Gaussian with constant variance $\\sigma^2$. Estimate $\\sigma^2$ using the variance of the residuals. Use the variance estimation with $1/N$. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "hmtWgh0xPYca", + "outputId": "44bf40a7-3fab-4e7a-9eee-6cc466a1980a" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(8.588126386734233, 73.75591483452078, (50, 5))" + ] + }, + "execution_count": 7, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "ypred = model_skl.predict(Xdt)\n", + "#ypred = np.ones_like(y_test) * np.median(y_train)\n", + "sigma_hat_2 = np.mean((y_test - ypred.flatten())**2)\n", + "np.sqrt(sigma_hat_2),sigma_hat_2,Xdt.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "MLg_A70-QbJr", + "outputId": "a57c6bb0-cd23-44d1-bf60-2656a62a3ceb" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "3.56931912977969" + ] + }, + "execution_count": 8, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "0.5*np.log(2 * np.pi * sigma_hat_2) + 0.5*np.mean((y_test - ypred.flatten())**2)/sigma_hat_2" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "PLl18uW6D507" + }, + "source": [ + "#### Comparison with test set" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "nCJHxadORefq" + }, + "source": [ + "For the testset: plot the mean of the predicted number of fish caught against observed number of fish caught. Further include the 2.5 and 97.25 precentile of p(y|x), the conditional predictive distribution (CPD) of $y$ for a given $x$. Why is a Gaussian not ideal for that kind of data? For the Gaussian the 2.5% and the 97.5% percentile is approximatiy given by $\\mu \\pm 1.96*\\sigma$" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + }, + "colab_type": "code", + "id": "f51ByX5wSjPa", + "outputId": "2fce8f60-ebdb-493a-f3a9-6950c7f0bae0" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(ypred, y_test,alpha=0.3)\n", + "sort_idx=np.argsort(ypred,axis=0)\n", + "plt.plot(ypred[sort_idx].flatten(), ypred[sort_idx].flatten()+1.96*np.sqrt(sigma_hat_2),linestyle='dashed',c=\"black\")\n", + "plt.plot(ypred[sort_idx].flatten(), ypred[sort_idx].flatten()-1.96*np.sqrt(sigma_hat_2),linestyle='dashed',c=\"black\")\n", + "plt.plot(ypred, ypred, c=\"black\")\n", + "plt.title('Comparison on the testset')\n", + "plt.xlabel('predicted average of caught fish')\n", + "plt.ylabel('observed number of caught fish')\n", + "plt.xlim(-5,15)\n", + "plt.ylim(-5,15)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "XXsavhRVU4BJ" + }, + "source": [ + "### Poisson\n", + "\n", + "This data is count data. Count data has only positive values and also the distribution is discrete. You cannot catch 0.5 fish and that the CPD has probability on negative number of fish is fishy too. A Gaussian as a CPD is therefore not ideal. Now use a Poissonian as CPD. If we assume a Poissonian then the probability to catch $k$ fish is given by \n", + "$$\n", + " p(k) = \\exp(-\\mu) \\frac{\\mu^k}{k!}\n", + "$$\n", + "\n", + "and the NLL is thus by:\n", + "\n", + "$$\n", + " log(p(k)) = -\\mu + k \\cdot \\log(\\mu) - log(k!)\n", + "$$\n", + "\n", + "with $\\mu$ being the expectation. In our case the average number of fish expected.\n", + "\n", + "In the case of the probabilistic interpretation of the linear regression, $y_i$ for a given $x_i$ is distributed like a Gaussian. The paramter $\\mu_i$ from $N(\\mu_i,\\sigma^2)$ has been determined from $x_i$ via $\\mu_i= \\beta^T \\cdot x_i$. Nown in the Poissonian, $\\mu_i$ needs to be positive. We therefore pipe $\\beta^T \\cdot x_i$ through an exponential first to make it positive and can so determine $\\mu_i=exp(\\beta^T \\cdot x_i)$.\n", + "\n", + "Use a gradient descent approach to find the solution for the parameters. Calculate the RMSE and the NLL on the test set.\n", + "\n", + "Hint: On the trainingset the NLL for the parameter values (1,1,1,1,1) should be approx 1508 and the gradient " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "HL_GpshBU4BJ", + "outputId": "1560dedc-f3e6-4455-f474-b90e0c150657" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1507.9856602262082" + ] + }, + "execution_count": 10, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "def NLL(y_train, Xd, w):\n", + " mu = np.exp(np.matmul(Xd,w))\n", + " ret = np.zeros_like(mu)\n", + " for i in range(ret.shape[0]):\n", + " ret[i] = mu[i] - y_train[i]*np.log(mu[i]) + np.log(1.0*np.math.factorial(y_train[i]))\n", + " return np.mean(ret)\n", + "w = np.ones(5)\n", + "NLL(y_train, Xd,w)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "LwpfoYG-U4BL", + "outputId": "3cf4dd06-24bf-417e-dbb3-679193216af5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-1518.61, -1403.99, -1171.02, -5701.91, -3258.7 ])" + ] + }, + "execution_count": 11, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "def gradNLL(y_train, Xd, w):\n", + " mu = np.exp(np.matmul(Xd,w))\n", + " #print(mu.shape)\n", + " ret = np.zeros_like(Xd)\n", + " for i in range(Xd.shape[0]):\n", + " mux = Xd[i] * mu[i]\n", + " ret[i] = -mux + y_train[i] *Xd[i]\n", + " return np.mean(ret, axis=0)\n", + "\n", + "NLL(y_train, Xd,np.ones(5))\n", + "np.round(gradNLL(y_train, Xd,np.ones(5)),2)\n", + "#1518.61, 1403.99, 1171.02, 5701.91, 3258.7" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "colab_type": "code", + "id": "DjXqvYyqU4BN", + "outputId": "5184b8fa-b50a-436c-c8a1-8c831306fc26" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10000/10000 [00:13<00:00, 720.87it/s]\n" + ] + }, + { + "data": { + "text/plain": [ + "(array([-1.74007527, 0.56500613, 0.66091814, 0.93220074, -1.62023821]),\n", + " 3.3806067025761606)" + ] + }, + "execution_count": 12, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "from tqdm import tqdm \n", + "w = np.ones(5)\n", + "hist = []\n", + "for i in tqdm(range(10000)):\n", + " if (i % 10 == 0):\n", + " hist.append(NLL(y_train, Xd,w))\n", + " w = w + 0.001 * gradNLL(y_train, Xd,w)\n", + "w, NLL(y_train, Xd,w)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 286 + }, + "colab_type": "code", + "id": "tRV1sLkQU4BO", + "outputId": "88b17695-3df7-49c9-ce6b-87f30da200ed" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0, 5)" + ] + }, + "execution_count": 13, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n1zGzLnfvnIaSZg2OuTZwzNWvXMdbytTHbklnTdheGrcBAGZAKUH9tKTzzWy5mWUk3SLpp+UtCwAw\n5pRTH+6eN7PbJT0gKSnp6+7+XBlrOuPpk1mIY64NHHP1K8vxmruX43UBANOEOxMBIHAENQAELpig\nrtbb1M3sLDN71Mw2mdlzZnZH3D7XzB4ysxfiZVvcbmb2r/HfYYOZXV7ZIzh9ZpY0s2fM7L54e7mZ\nPRkf23/FX07LzOri7W3x/nMqWffpMrNWM/uhmW0xs81mdk21j7OZ/XX8//VGM/uemWWrbZzN7Otm\ndsDMNk5om/K4mtkH4v4vmNkHplJDEEFd5bep5yV9zN0vknS1pA/Hx/YJSQ+7+/mSHo63pehvcH78\nWCPpyzNf8rS5Q9LmCdufkfQFd18hqVfSbXH7bZJ64/YvxP1moy9Jut/dV0papejYq3aczaxD0l9J\n6nT3SxRdbHCLqm+cvyHpxhPapjSuZjZX0icV3Sx4laRPjoV7Sdy94g9J10h6YML2nZLurHRdZTrW\nn0h6i6StkhbHbYslbY3X75J064T+4/1m00PR9fYPS1ot6T5JpuiOrdSJY67oiqJr4vVU3M8qfQxT\nPN45krafWHc1j7OO3bU8Nx63+yT9YTWOs6RzJG083XGVdKukuya0H9fvVI8gzqg1+W3qHRWqpWzi\nj3qXSXpS0kJ33xvv2idpYbxeLX+LL0r6uKRivD1PUp+75+Pticc1fszx/sNx/9lkuaRuSf8ZT/d8\n1cwaVcXj7O67JX1W0suS9ioat7Wq7nEeM9VxPaPxDiWoq56ZNUm6R9JH3b1/4j6P3mKr5jpJM7tJ\n0gF3X1vpWmZQStLlkr7s7pdJOqpjH4clVeU4tyn6gbblkpZIatQrpwiq3kyMayhBXdW3qZtZWlFI\nf8fd742b95vZ4nj/YkkH4vZq+FtcJ+ntZrZD0a8trlY0f9tqZmM3WU08rvFjjvfPkXRwJgueBrsk\n7XL3J+PtHyoK7moe5z+QtN3du909J+leRWNfzeM8ZqrjekbjHUpQV+1t6mZmkr4mabO7f37Crp9K\nGvvm9wOK5q7H2t8ff3t8taTDEz5izQrufqe7L3X3cxSN5SPu/h5Jj0p6V9ztxGMe+1u8K+4/q848\n3X2fpJ1mdmHcdL2kTaricVY05XG1mTXE/5+PHXPVjvMEUx3XByTdYGZt8SeRG+K20lR6kn7C5Prb\nJD0v6XeS/r7S9Uzjcb1B0ceiDZLWx4+3KZqbe1jSC5J+IWlu3N8UXQHzO0m/VfSNesWP4wyO//cl\n3RevnyvpKUnbJP23pLq4PRtvb4v3n1vpuk/zWC+V1BWP9Y8ltVX7OEv6lKQtkjZK+pakumobZ0nf\nUzQHn1P0yem20xlXSX8eH/s2SR+cSg3cQg4AgQtl6gMAcBIENQAEjqAGgMAR1AAQOIIaAAJHUANA\n4AhqAAjc/wO5TnuK3Up1rQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(hist)\n", + "plt.ylim(0,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "j-HhXc7GU4BQ", + "outputId": "d2743421-6e15-4202-9b28-a02fb7d3d842" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(7.389176645536159, 2.8768358338221565)" + ] + }, + "execution_count": 14, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "mupred = np.exp(np.matmul(Xdt, w))\n", + "np.sqrt(np.mean((mupred - y_test)**2)), NLL(y_test, Xdt,w)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "rtumKjuJEVKE" + }, + "source": [ + "## A) Poisson Regression using a NN build with Keras\n", + "\n", + "Redo the analysis from above using Keras. You may (but don't have to) use tfp." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "z4hUQh2aHFje" + }, + "outputs": [], + "source": [ + "# Your Code Here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Fish_Poisson_Keras.ipynb", + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/exercises/03_rnn/_exercise-sheets/LSTM_vs_1DConv_no_solution.ipynb b/exercises/03_rnn/_exercise-sheets/LSTM_vs_1DConv_no_solution.ipynb new file mode 100644 index 0000000..173f5f7 --- /dev/null +++ b/exercises/03_rnn/_exercise-sheets/LSTM_vs_1DConv_no_solution.ipynb @@ -0,0 +1,424 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "kcB3r4vJpatQ" + }, + "source": [ + "# Prediction of time series with different neural networks architectures\n", + "\n", + "In this notebook we will use different network architectures to predict the next steps for a time series. We compare: \n", + "\n", + "* 1D causal convolutional networks \n", + "* 1D causal convolutional networks witho dilation rate\n", + "* RNNs \n", + "* LSTMs\n", + "\n", + "We forecast a time series for longer times than we trained them on and compare the results of the different architectures. The goal is to capture the longterm dependencies of the time series.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "qGdc4oO6Bwt9", + "outputId": "72ff3f71-ceab-41a1-c833-169d779b1f03" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TensorFlow 2.x selected.\n" + ] + } + ], + "source": [ + "try: #If running in colab \n", + " import google.colab\n", + " IN_COLAB = True \n", + " %tensorflow_version 2.x\n", + "except:\n", + " IN_COLAB = False" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "geSS6viBpatT" + }, + "outputs": [], + "source": [ + "# load required libraries:\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "from tensorflow.keras.models import Sequential\n", + "from tensorflow.keras.layers import Dense, Lambda, Convolution1D,LSTM, SimpleRNN\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "82ZRKcWopate" + }, + "source": [ + "## Simulate some data\n", + "\n", + "We produce training data with two different time scales and a bit of noise. This produces 1000 curves which all follow the same pattern: a fast changing sine wave where the amplitude is modulated by a sine wave with lower frequency. To make it a bit more challenging, we add some noise at each timestep of the waves. All of the 1000 waves have the same pattern, however, the starting point is randomly shifted in time. One such example is shown the plot below. The first 128 data points are used as an input to the model (shown as a line). The model should predict the following 10 data points (shown as points). Note that the future data does not follow a smooth curve, but instead is ragged because of the random noise present in the data." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 315 + }, + "colab_type": "code", + "id": "OlA9Vabapatf", + "outputId": "3eb43c1c-9abd-4402-d28d-f74ef9b2304a" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The training data X (solid) line and the next predictions Y (dotted), which should be forecasted.\n" + ] + } + ], + "source": [ + "np.random.seed(1) # Fixing the seed, so that data is always the same\n", + "seq_length = 128 # Sequence length used for training\n", + "look_ahead = 10 # The number of data points the model should predict \n", + "\n", + "\n", + "def gen_data(size=1000, noise=0.1): # We create 1000 data-points\n", + " s = seq_length + look_ahead\n", + " d = np.zeros((size, s,1))\n", + " for i in range(size):\n", + " start = np.random.uniform(0, 2*np.pi) # Random start point\n", + " d[i,:,0] = np.sin(start + np.linspace(0, 20*np.pi, s)) * np.sin(start + np.linspace(0, np.pi, s)) + np.random.normal(0,noise,s)\n", + " return d[:,0:seq_length], d[:,seq_length:s]\n", + "\n", + "\n", + "X,Y = gen_data()\n", + "for i in range(2):\n", + " plt.figure(num=None, figsize=(5,2)) \n", + " plt.plot(range(0, seq_length),X[i,:,0],'b-')\n", + " plt.plot(range(seq_length, seq_length + look_ahead),Y[i,:,0],'bo',color='orange')\n", + "\n", + "plt.show()\n", + "print('The training data X (solid) line and the next predictions Y (dotted), which should be forecasted.')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "YbHIUaw3paty" + }, + "source": [ + "## A) 1D Convolution without dilation rate" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "M8xZadZfp_z_" + }, + "source": [ + "### Build network\n", + "Here we define a Neural network with 1D convolutions and \"causal\" padding. \n", + "\n", + "Build a first model using the causal convolutions. Don't specify the sequence length (batch_input_shape=(None, None, 1)), so you can use a different sequence length in prediction later. The network should have 4, 1-dimensional convolutional layers, with a kernelsize of `ks=5` and 32 feartures. Use the keras function `Convolution1D` for that. The network should report 10 values that the end. You can achive this with the function.\n", + "\n", + "```{pyhon}\n", + "def slice(x, slice_length):\n", + " return x[:,-slice_length:,:]\n", + "...\n", + "model1.add(Lambda(slice, arguments={'slice_length':look_ahead}))\n", + "```\n", + "\n", + "Which you add at the end of the network.\n", + "\n", + "Use the first 800 sequences for training and the last 200 for validation. As loss function we use the mean squared error (MSE). You should get a MSE of approx 0.02 to 0.03." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "colab_type": "code", + "id": "eicNaym0patz", + "outputId": "ba6890af-f4f2-4fe6-fb58-3ea3a6408ddc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "conv1d (Conv1D) (None, None, 32) 192 \n", + "_________________________________________________________________\n", + "conv1d_1 (Conv1D) (None, None, 32) 5152 \n", + "_________________________________________________________________\n", + "conv1d_2 (Conv1D) (None, None, 32) 5152 \n", + "_________________________________________________________________\n", + "conv1d_3 (Conv1D) (None, None, 32) 5152 \n", + "_________________________________________________________________\n", + "dense (Dense) (None, None, 1) 33 \n", + "_________________________________________________________________\n", + "lambda (Lambda) (None, None, 1) 0 \n", + "=================================================================\n", + "Total params: 15,681\n", + "Trainable params: 15,681\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "#YOUR_CODE_HERE" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "VKVL1GP9fF6C" + }, + "source": [ + "### Make repeated predictions\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "_cR-davRpauF" + }, + "source": [ + "Since we work with simulated data, we can produce as much new data as we like. We can also switch off the noise and check how well the model can extract the real underlying pattern in the data." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 104 + }, + "colab_type": "code", + "id": "FRVVMvrhdy6J", + "outputId": "73b71cb2-fb80-4ed6-e4ae-abd82efc0eda" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 128, 1)\n", + "(1, 10, 1)\n" + ] + }, + { + "data": { + "text/plain": [ + "array([ 0.87065625, 0.7977788 , 0.573365 , 0.24733236, -0.11055928,\n", + " -0.42575493, -0.63458264, -0.69723564, -0.6053912 , -0.38299504],\n", + " dtype=float32)" + ] + }, + "execution_count": 6, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "x_test,y_test = gen_data(size=1,noise=0.0)\n", + "print(x_test.shape)\n", + "print(y_test.shape)\n", + "model1.predict(x_test).reshape(-1)#Predicts 10 value" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Grw9QTLDepnB" + }, + "source": [ + "Write a function which predicts 10 values from a starting sequence of size 128. Then add these predicted values to the starting sequence and uses this sequence of length 138 as a new starting sequence. Repeat this procedure 12 times. You should get a prediction for 120 time points in the future. " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "l3jEUp5FpauG" + }, + "outputs": [], + "source": [ + "# Your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "gii40ZQqs-DJ" + }, + "source": [ + "## B) 1D Convolution with dilation rate\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "KG-10GeCsi_s" + }, + "source": [ + "Here we define a Neural network with 1D convolutions and \"causal\" padding, this time with dilation rate, so we are able to look back longer in time (see figure below)\n", + " \n", + "![](https://i.stack.imgur.com/20xRe.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Xht-oURyid28" + }, + "source": [ + "Build the same network as in A) but this time with dilation_rates 1,2,4,8 " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "zSznQxmZjGhU" + }, + "source": [ + "### Make repeated predictions\n", + "As in A) make preaded preditions on noise less data." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Qmwo6fh9pauo" + }, + "source": [ + "## C) Simple RNN\n", + "\n", + "Now, use a RNN cell Keras `SimpleRNN` to see if we are able to learn the data generating process. Start with a hidden state size of 12. Repeat the task from A) and B). Consider to add several layers of cells and play with the state size." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Fe4y8qO5kGaG" + }, + "source": [ + "### Make repeated predictions\n", + "As in A) make preaded preditions on noise less data." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "sw8pkdW4l96k" + }, + "source": [ + "## D) LSTM Cell\n", + "Repeat C) but now with an LSTM cell." + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "12_LSTM_vs_1DConv_solution.ipynb", + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/exercises/03_rnn/data/.gitkeep b/exercises/03_rnn/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt index d88a842..9461f2b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,3 +9,5 @@ scipy==1.9.3 scikit-learn==1.1.3 scikit-image==0.19.3 tensorflow==2.11.0 +tqdm==4.64.1 +tensorflow-probability==0.19.0