{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "**Chapter 15 – Processing Sequences Using RNNs and CNNs**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "_This notebook contains all the sample code in chapter 15._" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", " \n", "
\n", " Run in Google Colab\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Setup" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, let's import a few common modules, ensure MatplotLib plots figures inline and prepare a function to save the figures. We also check that Python 3.5 or later is installed (although Python 2.x may work, it is deprecated so we strongly recommend you use Python 3 instead), as well as Scikit-Learn ≥0.20 and TensorFlow ≥2.0." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Python ≥3.5 is required\n", "import sys\n", "assert sys.version_info >= (3, 5)\n", "\n", "# Scikit-Learn ≥0.20 is required\n", "import sklearn\n", "assert sklearn.__version__ >= \"0.20\"\n", "\n", "try:\n", " # %tensorflow_version only exists in Colab.\n", " %tensorflow_version 2.x\n", " IS_COLAB = True\n", "except Exception:\n", " IS_COLAB = False\n", "\n", "# TensorFlow ≥2.0 is required\n", "import tensorflow as tf\n", "from tensorflow import keras\n", "assert tf.__version__ >= \"2.0\"\n", "\n", "if not tf.test.is_gpu_available():\n", " print(\"No GPU was detected. LSTMs and CNNs can be very slow without a GPU.\")\n", " if IS_COLAB:\n", " print(\"Go to Runtime > Change runtime and select a GPU hardware accelerator.\")\n", "\n", "# Common imports\n", "import numpy as np\n", "import os\n", "\n", "# to make this notebook's output stable across runs\n", "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "# To plot pretty figures\n", "%matplotlib inline\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "mpl.rc('axes', labelsize=14)\n", "mpl.rc('xtick', labelsize=12)\n", "mpl.rc('ytick', labelsize=12)\n", "\n", "# Where to save the figures\n", "PROJECT_ROOT_DIR = \".\"\n", "CHAPTER_ID = \"rnn\"\n", "IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID)\n", "os.makedirs(IMAGES_PATH, exist_ok=True)\n", "\n", "def save_fig(fig_id, tight_layout=True, fig_extension=\"png\", resolution=300):\n", " path = os.path.join(IMAGES_PATH, fig_id + \".\" + fig_extension)\n", " print(\"Saving figure\", fig_id)\n", " if tight_layout:\n", " plt.tight_layout()\n", " plt.savefig(path, format=fig_extension, dpi=resolution)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Basic RNNs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Generate the Dataset" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def generate_time_series(batch_size, n_steps):\n", " freq1, freq2, offsets1, offsets2 = np.random.rand(4, batch_size, 1)\n", " time = np.linspace(0, 1, n_steps)\n", " series = 0.5 * np.sin((time - offsets1) * (freq1 * 10 + 10)) # wave 1\n", " series += 0.2 * np.sin((time - offsets2) * (freq2 * 20 + 20)) # + wave 2\n", " series += 0.1 * (np.random.rand(batch_size, n_steps) - 0.5) # + noise\n", " return series[..., np.newaxis].astype(np.float32)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "np.random.seed(42)\n", "\n", "n_steps = 50\n", "series = generate_time_series(10000, n_steps + 1)\n", "X_train, y_train = series[:7000, :n_steps], series[:7000, -1]\n", "X_valid, y_valid = series[7000:9000, :n_steps], series[7000:9000, -1]\n", "X_test, y_test = series[9000:, :n_steps], series[9000:, -1]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((7000, 50, 1), (7000, 1))" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train.shape, y_train.shape" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving figure time_series_plot\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_series(series, y=None, y_pred=None, x_label=\"$t$\", y_label=\"$x(t)$\"):\n", " plt.plot(series, \".-\")\n", " if y is not None:\n", " plt.plot(n_steps, y, \"bx\", markersize=10)\n", " if y_pred is not None:\n", " plt.plot(n_steps, y_pred, \"ro\")\n", " plt.grid(True)\n", " if x_label:\n", " plt.xlabel(x_label, fontsize=16)\n", " if y_label:\n", " plt.ylabel(y_label, fontsize=16, rotation=0)\n", " plt.hlines(0, 0, 100, linewidth=1)\n", " plt.axis([0, n_steps + 1, -1, 1])\n", "\n", "fig, axes = plt.subplots(nrows=1, ncols=3, sharey=True, figsize=(12, 4))\n", "for col in range(3):\n", " plt.sca(axes[col])\n", " plot_series(X_valid[col, :, 0], y_valid[col, 0],\n", " y_label=(\"$x(t)$\" if col==0 else None))\n", "save_fig(\"time_series_plot\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Computing Some Baselines" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Naive predictions (just predict the last observed value):" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.020211367" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred = X_valid[:, -1]\n", "np.mean(keras.losses.mean_squared_error(y_valid, y_pred))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_series(X_valid[0, :, 0], y_valid[0, 0], y_pred[0, 0])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Linear predictions:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING: Logging before flag parsing goes to stderr.\n", "W0803 10:31:33.783297 140735810999168 deprecation.py:323] From /Users/ageron/miniconda3/envs/tf2/lib/python3.6/site-packages/tensorflow_core/python/keras/optimizer_v2/optimizer_v2.py:468: BaseResourceVariable.constraint (from tensorflow.python.ops.resource_variable_ops) is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", "Apply a constraint manually following the optimizer update step.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 0s 44us/sample - loss: 0.1015 - val_loss: 0.0551\n", "Epoch 2/20\n", "7000/7000 [==============================] - 0s 27us/sample - loss: 0.0384 - val_loss: 0.0267\n", "Epoch 3/20\n", "7000/7000 [==============================] - 0s 27us/sample - loss: 0.0205 - val_loss: 0.0161\n", "Epoch 4/20\n", "7000/7000 [==============================] - 0s 28us/sample - loss: 0.0133 - val_loss: 0.0119\n", "Epoch 5/20\n", "7000/7000 [==============================] - 0s 28us/sample - loss: 0.0104 - val_loss: 0.0099\n", "Epoch 6/20\n", "7000/7000 [==============================] - 0s 28us/sample - loss: 0.0090 - val_loss: 0.0088\n", "Epoch 7/20\n", "7000/7000 [==============================] - 0s 28us/sample - loss: 0.0081 - val_loss: 0.0079\n", "Epoch 8/20\n", "7000/7000 [==============================] - 0s 27us/sample - loss: 0.0073 - val_loss: 0.0074\n", "Epoch 9/20\n", "7000/7000 [==============================] - 0s 28us/sample - loss: 0.0067 - val_loss: 0.0066\n", "Epoch 10/20\n", "7000/7000 [==============================] - 0s 28us/sample - loss: 0.0062 - val_loss: 0.0062\n", "Epoch 11/20\n", "7000/7000 [==============================] - 0s 28us/sample - loss: 0.0058 - val_loss: 0.0058\n", "Epoch 12/20\n", "7000/7000 [==============================] - 0s 27us/sample - loss: 0.0055 - val_loss: 0.0054\n", "Epoch 13/20\n", "7000/7000 [==============================] - 0s 27us/sample - loss: 0.0052 - val_loss: 0.0052\n", "Epoch 14/20\n", "7000/7000 [==============================] - 0s 27us/sample - loss: 0.0050 - val_loss: 0.0050\n", "Epoch 15/20\n", "7000/7000 [==============================] - 0s 27us/sample - loss: 0.0048 - val_loss: 0.0048\n", "Epoch 16/20\n", "7000/7000 [==============================] - 0s 28us/sample - loss: 0.0047 - val_loss: 0.0046\n", "Epoch 17/20\n", "7000/7000 [==============================] - 0s 28us/sample - loss: 0.0045 - val_loss: 0.0047\n", "Epoch 18/20\n", "7000/7000 [==============================] - 0s 28us/sample - loss: 0.0044 - val_loss: 0.0044\n", "Epoch 19/20\n", "7000/7000 [==============================] - 0s 28us/sample - loss: 0.0043 - val_loss: 0.0042\n", "Epoch 20/20\n", "7000/7000 [==============================] - 0s 27us/sample - loss: 0.0042 - val_loss: 0.0042\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " keras.layers.Flatten(input_shape=[50, 1]),\n", " keras.layers.Dense(1)\n", "])\n", "\n", "model.compile(loss=\"mse\", optimizer=\"adam\")\n", "history = model.fit(X_train, y_train, epochs=20,\n", " validation_data=(X_valid, y_valid))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2000/2000 [==============================] - 0s 14us/sample - loss: 0.0042\n" ] }, { "data": { "text/plain": [ "0.004174048032611608" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(X_valid, y_valid)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_learning_curves(loss, val_loss):\n", " plt.plot(np.arange(len(loss)) + 0.5, loss, \"b.-\", label=\"Training loss\")\n", " plt.plot(np.arange(len(val_loss)) + 1, val_loss, \"r.-\", label=\"Validation loss\")\n", " plt.gca().xaxis.set_major_locator(mpl.ticker.MaxNLocator(integer=True))\n", " plt.axis([1, 20, 0, 0.05])\n", " plt.legend(fontsize=14)\n", " plt.xlabel(\"Epochs\")\n", " plt.ylabel(\"Loss\")\n", " plt.grid(True)\n", "\n", "plot_learning_curves(history.history[\"loss\"], history.history[\"val_loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "y_pred = model.predict(X_valid)\n", "plot_series(X_valid[0, :, 0], y_valid[0, 0], y_pred[0, 0])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Using a Simple RNN" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 3s 465us/sample - loss: 0.0960 - val_loss: 0.0482\n", "Epoch 2/20\n", "7000/7000 [==============================] - 3s 367us/sample - loss: 0.0366 - val_loss: 0.0293\n", "Epoch 3/20\n", "7000/7000 [==============================] - 3s 376us/sample - loss: 0.0251 - val_loss: 0.0216\n", "Epoch 4/20\n", "7000/7000 [==============================] - 3s 369us/sample - loss: 0.0196 - val_loss: 0.0175\n", "Epoch 5/20\n", "7000/7000 [==============================] - 3s 381us/sample - loss: 0.0165 - val_loss: 0.0150\n", "Epoch 6/20\n", "7000/7000 [==============================] - 3s 380us/sample - loss: 0.0145 - val_loss: 0.0133\n", "Epoch 7/20\n", "7000/7000 [==============================] - 3s 376us/sample - loss: 0.0132 - val_loss: 0.0123\n", "Epoch 8/20\n", "7000/7000 [==============================] - 3s 364us/sample - loss: 0.0123 - val_loss: 0.0116\n", "Epoch 9/20\n", "7000/7000 [==============================] - 3s 369us/sample - loss: 0.0118 - val_loss: 0.0112\n", "Epoch 10/20\n", "7000/7000 [==============================] - 3s 369us/sample - loss: 0.0116 - val_loss: 0.0110\n", "Epoch 11/20\n", "7000/7000 [==============================] - 3s 371us/sample - loss: 0.0114 - val_loss: 0.0109\n", "Epoch 12/20\n", "7000/7000 [==============================] - 3s 380us/sample - loss: 0.0114 - val_loss: 0.0109\n", "Epoch 13/20\n", "7000/7000 [==============================] - 3s 377us/sample - loss: 0.0114 - val_loss: 0.0109\n", "Epoch 14/20\n", "7000/7000 [==============================] - 3s 381us/sample - loss: 0.0114 - val_loss: 0.0109\n", "Epoch 15/20\n", "7000/7000 [==============================] - 3s 373us/sample - loss: 0.0114 - val_loss: 0.0109\n", "Epoch 16/20\n", "7000/7000 [==============================] - 3s 379us/sample - loss: 0.0114 - val_loss: 0.0109\n", "Epoch 17/20\n", "7000/7000 [==============================] - 3s 372us/sample - loss: 0.0114 - val_loss: 0.0109\n", "Epoch 18/20\n", "7000/7000 [==============================] - 3s 380us/sample - loss: 0.0114 - val_loss: 0.0110\n", "Epoch 19/20\n", "7000/7000 [==============================] - 3s 375us/sample - loss: 0.0114 - val_loss: 0.0109\n", "Epoch 20/20\n", "7000/7000 [==============================] - 3s 374us/sample - loss: 0.0114 - val_loss: 0.0108\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " keras.layers.SimpleRNN(1, input_shape=[None, 1])\n", "])\n", "\n", "optimizer = keras.optimizers.Adam(lr=0.005)\n", "model.compile(loss=\"mse\", optimizer=optimizer)\n", "history = model.fit(X_train, y_train, epochs=20,\n", " validation_data=(X_valid, y_valid))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2000/2000 [==============================] - 0s 194us/sample - loss: 0.0108\n" ] }, { "data": { "text/plain": [ "0.010848855562508107" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(X_valid, y_valid)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_learning_curves(history.history[\"loss\"], history.history[\"val_loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "y_pred = model.predict(X_valid)\n", "plot_series(X_valid[0, :, 0], y_valid[0, 0], y_pred[0, 0])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Deep RNNs" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 10s 1ms/sample - loss: 0.0502 - val_loss: 0.0093\n", "Epoch 2/20\n", "7000/7000 [==============================] - 9s 1ms/sample - loss: 0.0069 - val_loss: 0.0055\n", "Epoch 3/20\n", "7000/7000 [==============================] - 9s 1ms/sample - loss: 0.0050 - val_loss: 0.0044\n", "Epoch 4/20\n", "7000/7000 [==============================] - 9s 1ms/sample - loss: 0.0048 - val_loss: 0.0040\n", "Epoch 5/20\n", "7000/7000 [==============================] - 9s 1ms/sample - loss: 0.0041 - val_loss: 0.0037\n", "Epoch 6/20\n", "7000/7000 [==============================] - 9s 1ms/sample - loss: 0.0041 - val_loss: 0.0043\n", "Epoch 7/20\n", "7000/7000 [==============================] - 9s 1ms/sample - loss: 0.0038 - val_loss: 0.0036\n", "Epoch 8/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0037 - val_loss: 0.0032\n", "Epoch 9/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0036 - val_loss: 0.0036\n", "Epoch 10/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0035 - val_loss: 0.0031\n", "Epoch 11/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0034 - val_loss: 0.0032\n", "Epoch 12/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0034 - val_loss: 0.0036\n", "Epoch 13/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0033 - val_loss: 0.0031\n", "Epoch 14/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0033 - val_loss: 0.0030\n", "Epoch 15/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0033 - val_loss: 0.0031\n", "Epoch 16/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0033 - val_loss: 0.0029\n", "Epoch 17/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0032 - val_loss: 0.0029\n", "Epoch 18/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0032 - val_loss: 0.0029\n", "Epoch 19/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0032 - val_loss: 0.0027\n", "Epoch 20/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0031 - val_loss: 0.0029\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n", " keras.layers.SimpleRNN(20, return_sequences=True),\n", " keras.layers.SimpleRNN(1)\n", "])\n", "\n", "model.compile(loss=\"mse\", optimizer=\"adam\")\n", "history = model.fit(X_train, y_train, epochs=20,\n", " validation_data=(X_valid, y_valid))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2000/2000 [==============================] - 1s 567us/sample - loss: 0.0029\n" ] }, { "data": { "text/plain": [ "0.002889613825827837" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(X_valid, y_valid)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAESCAYAAADAEMPrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl4FFXW+PHvyR4Swk5CguxbQAmrgICg4L6gP3V01BkYB9TxVQd3cNx5XfCFGQbFUQcRQQWHccNBBxFBQQIKCiogKApKkH1NIGuf3x/VCZ3QQCfp6m7I+TxPPem+dbvqdNKp0/dW1b2iqhhjjDHBFhXuAIwxxpycLMEYY4xxhSUYY4wxrrAEY4wxxhWWYIwxxrjCEowxxhhXWIIxxhjjipAmGBGpLyJvi0ieiGwSkWuPUk9EZKyI7PIuT4uI+KxX7zZyvcvk0L0LY4wxgYgJ8f4mAYVAKtAFmCMiq1R1dYV6NwKXAVmAAvOAH4HnfepkqeoP7odsjDGmKkLWghGRJOAK4EFVzVXVxcBs4Hd+qg8FxqvqZlXNAcYDw0IVqzHGmOoLZQumHVCiqut9ylYBA/zU7eRd51uvU4U6n4pIFLAEuFNVN/rbqYjciNMiIjExsfspp5xStei9PB4PUVGRceoqkmKByIrHYvEvkmKByIrHYvFv/fr1O1W1UZVerKohWYD+wNYKZSOAhX7qlgAdfJ63xekqE+/zM4E4oC7wLPAtEHO8GLp3767VtWDBgmpvI1giKRbVyIrHYvEvkmJRjax4LBb/gOVaxeN+KFNkLpBSoSwFOBBA3RQg1/tmUdVPVbVQVfcCfwZaApnBD9kYY0xVhTLBrAdiRKStT1kWUPEEP96yrADqlVJAjrHeGGNMiIUswahqHvAW8JiIJIlIX2AIMN1P9WnAnSKSISLpwF3AVAAR6SQiXUQkWkSScS4AyAHWhuJ9GGOMCUyozyLdAiQC24EZwJ9UdbWI9BeRXJ96LwDvAd/gnF+Z4y0D5xLnN4D9OJcutwAuVtWikLwDY4wxAQnpfTCquhvn/paK5YuAZJ/nCtzrXSrW/Rho72KYxhhjgiDUN1oaY6rA4/GwefNm8vLyqrWdOnXqsHZt5PQmR1I8NTWWpKQkmjZt6spl0ZZgjDkB7Ny5ExGhffv21ToQHDhwgNq1awcxsuqJpHhqYiwej4ecnBx27txJ48aNg779yLiTxxhzTHv37iU1NTVibr4zJ4eoqChSU1PZt2+fO9t3ZavGmKAqKSkhNjY23GGYk1BsbCzFxcWubNsSjDEnCJ8BxY0JGjc/V5ZgjDHGuMISjDHGGFdYgjHGnHCuueYarrzyykq9pnfv3tx9990uRXTYqFGj6NGjh+v7ORHYZcrGmKA7Xr/+0KFDmTp1apW3/8ILL5SOtB6w999/3y6UCDFLMMaYoPv111/LHv/nP/9hxIgR5coSExP9vq6oqCigJFCnTp1Kx1S/fv1Kv8ZUj3WRGVODLFsWxZNPQna2u/tJS0srW+rWrXtEWZ06dfjuu+9ISUlh1qxZDBgwgISEBF555RW2bdvG1VdfTUZGBrVq1eLUU0/ltddeK7f9il1kvXv35o477uCee+6hfv36pKWlcf/995dr5VTsIktLS2Ps2LHccMMN1K5dm8zMTCZOnFhuP2vWrKFv374kJCTQsWNH5s2bR0xMDDNnzgz4d1FSUsJDDz1E06ZNiY+Pp0uXLrz//vtl61WVBx98kGbNmhEfH096ejq33npr2fr58+dz+umnk5SURN26denduzfr1q0LeP/hZC0YY05AI0fCypWVe82+ffD117XweCAqCjp3hso0BLp0gQkTKrfPQIwaNYrx48eTlZVFfHw8hw4donfv3owePZqUlBQ++OADhg4dSvPmzenXr99RtzNlyhTuueceli1bxueff87vf/97evbsyeWXX37U14wbN44xY8Zw//3388Ybb/DnP/+Zfv360a1bN4qLixkyZAitW7fm888/Z//+/dxxxx14PJ5Kvb+nn36aiRMn8sILL9ClSxemTJnCkCFD+Prrr8nMzOT1119n0qRJzJgxg8zMTLZt28bixYsBKCgo4LLLLuO2225j5syZFBQUsHz58hPmhltLMMbUEPv2Qemx0eNxnlehpyno7rzzTi67rPwYuHfccUfZ4//5n/9h3rx5zJw585gJplu3bjzwwAMAtG3blueff5758+cfM8FcfPHF3HzzzQDcfvvtPP/883z88cd069aNOXPmsGnTJj777LOyYVTGjh3LoEGDKvX+xo0bx/3338/VV19dto1PPvmE8ePHM3nyZDZt2kRGRgaDBw8mOjqaZs2a0aFDBwB27dpFbm4uQ4YMoVWrVgBkZp44cytagjHmBFSVlkR2NgwaBIWFEBcHr70GffoEP7bKqnjFVXFxMY8//jj//ve/ycnJobCwkIKCAi644IJjbqdz587lnqenp7N9+/Yqv+a7776jRYsW5cbo6tWr13Hfj6/t27eze/du+vbtW668X79+LFmyBHC6+yZNmkTLli0577zzOP/88znrrLPK4rnmmmsYOHAggwcPZtCgQVx11VVkZGRUKo5wOTHaWcaYauvTB2bPPsiYMTB/fmQkF3BG8/X1+OOPM2nSJEaPHs2CBQtYuXIlF154IYWFhcfcTsWLA0TkuN1Zx3qNqlb7LvfSc0D+tlNa1qpVK3744QeeffZZatWqxe23387ZZ59Nfn4+ADNmzOCzzz7jjDPO4M0336Rt27YsWLCgWnGFiiUYY2qQXr08jB4dOcnFn8WLF3P55Zdz7bXXkpWVRatWrVi/fn3I48jMzGTjxo3s2LGjrOzzzz+v1DZSU1Np0KBB2TmVUosXL6Zjx45lzxMTE7n00kv5+9//zpIlS1i1alW5fXXr1o3Ro0ezaNEievXqxfTp/iYCjjzWRWaMiSjt2rVjzpw5ZGdnU7duXf7617+yZcsWmjdvHtI4LrroIpo1a8bQoUN56qmnOHDgAKNGjUJEKtWyufvuu3niiSdo2bIlWVlZTJkyhRUrVvDyyy8D8M9//pOYmBh69uxJUlIS06dPJy4ujtatW7Nu3TqmTZvGxRdfTHp6Ot9//z1r1qzhoosucuttB5UlGGNMRHn00Uf55ZdfOOecc0hKSmL48OFceeWV5OTkhDSOmJgY3n33XYYPH07Pnj1p1aoV48aN45JLLiEhISHg7dxzzz0cPHiQkSNHsmPHDjIzM3nnnXfKTtbXrVuXcePGMXLkSEpKSujUqRMzZswgIyODnJwcVq9ezcsvv8yuXbto0qQJw4cPL3cRRERT1RqzdO/eXatrwYIF1d5GsERSLKqRFc/JFsuaNWuqH4iq7t+/PyjbCZZIiieQWJYuXaqAfvvtt2GPJZiO9fkClmsVj7nWgjHGmKOYNWsW9erVo02bNmzYsIGRI0dy+umn06lTp3CHdkKwBGOMMUexb98+Ro8ezebNm2nQoAGDBg1i/Pjx4Q7rhGEJxhhjjmL48OEMHz483GGcsOwyZWOMMa6wBGOMMcYVlmCMMca4whKMMcYYV1iCMcYY4wpLMMYYY1xhCcYYE9EmT55cNiumv+f+PPXUU7Rp0ybo+3bLAw88QJcuXVzfT6hZgjHGBN0ll1zC4MGD/a5bu3YtIsK8efOqtO3rrrsu6KMrFxcXk5KSwjvvvOP6vmoSSzDGmKAbPnw4H3/8MRs3bjxi3UsvvUTz5s0rPTNkqcTExHKTgLkplPs6GVmCMaYGiVq2DJ580pne0kUXXXQRqampZUPSlyoqKmL69OnccMMNZfPK33333bRr147ExERatmzJqFGjKCgoOOq2/XVbPfnkk6SmplK7dm2GDRvGwYMHy61ftmwZ55xzDg0bNqROnTr079+/3HwrLVq0AODyyy9HRMq61/zt67nnnqN169bExcXRtm1bpkyZUrauuLgYEWHy5MlcccUVJCUl0bp1a2bMmBHgb87h8Xh49NFHadq0KfHx8XTu3Jn33nuvbL2q8sgjj9C8eXPi4+Np0qQJf/jDH8rWL1y4kF69epGUlETdunXp1asXa9eurVQMwWBDxRhzIho5ElaurNxr9u2j1tdfg8cDUVHQuTPUqRP467t0CXiu5piYGIYOHcrUqVN5+OGHy5LJe++9x86dO8sdDFNSUpg6dSrp6emsXr2am266icTERB5++OGA9vX666/zyCOP8OyzzzJgwABmzpzJuHHjyrU8Dhw4wNChQ5k4cSIAzzzzDBdccAE//PAD9erV44svviA9PZ2XX36Z888/n5gY/4fGWbNmMXLkSCZMmMDgwYN5//33ufHGG2nSpEm5KZ0fffRRxo4dy9ixY3nhhRcYNmwY/fv3p2nTpgG9p2eeeYa//vWvPP/883Tr1o1p06Zx+eWXs3LlSk499VT+9a9/MWHCBGbMmEGnTp3Ytm0bX3zxBeAk8SFDhnDzzTfz+uuvU1RUxPLly8v+BqFkLRhjaop9+5zkAs7Pfftc3d0f//hHfv75Zz766KOyspdeeolzzz2XU045pazsoYce4owzzqBFixZcdNFFjBo1qlLf+CdMmMANN9zAiBEjaNeuHQ899BDdunUrV2fw4MFcf/31ZGZmkpmZyaRJk4iKimLu3LkANGrUCHDmZklLS6Nhw4Z+9zVu3DiGDRvGLbfcQrt27Rg5ciTXXHMNY8eOLVdv2LBhXHvttbRp04bHH38c4IhZLY9l4sSJ3Hffffz2t7+lffv2PP744/Tu3Ztx48YBsGnTJtLT0znnnHNo1qwZPXv25JZbbgFgz5497N+/n0svvZTWrVvToUMHrr/+etq3bx/w/oMlpC0YEakPvAScC+wERqvq637qCfAUUDrK3EvAfd65CXzrDQWmAiNUdbKLoRsTWQJsSZSTnQ2DBkFhIcTFwWuvuTp3ctu2bTnzzDOZMmUK5557Llu2bGHu3Lm88cYb5eq98cYbTJw4kQ0bNpCbm0txcXGlvm2vXbuWW2+9tVxZnz59mDVrVtnzbdu28eCDD7Jw4UK2bdtGSUkJBw8e5Oeff67Ue1q7dm3ZgbxUv379eOihh8qVde7cuexxXFwcDRs2ZPv27QHtY/fu3ezYsYO+ffsesZ+PP/4YgKuvvppnnnmGli1bct5553H++edz6aWXEhcXR+PGjbn++usZPHgwgwYNYtCgQVx11VUBt56CKdQtmElAIZAKXAf8Q0T8TaxwI3AZkAV0Bi4GbvKtICL1gNHAajcDNuak0acPB2fPhjFjYP58V5NLqeHDh/POO++we/dupk6dSv369bn00kvL1mdnZ3Pddddx4YUX8t577/HVV1/x2GOPUVhYGNQ4rr/+er766ismTJjAkiVLWLlyJenp6VXaj7/pkiuWxcbGHrHeU9p6PI7S79HH2k/z5s1Zv349zz33HMnJydxxxx307Nmz7NzT9OnTyc7Opl+/frz99tu0a9euXEsyVEKWYEQkCbgCeFBVc1V1MTAb+J2f6kOB8aq6WVVzgPHAsAp1ngQm4rSEjDEB8PTqBaNHhyS5AFx55ZUkJCTw6quvMmXKFH7/+9+XO/guXbqU5s2b85e//IWePXvStm1bv1eeHUtmZiZLly4tV1bx+eLFi7n99tu58MIL6dSpE0lJSWzdurVsfXR0NNHR0ZSUlBx3XxW7uhYvXkzHjh0rFfOxNGjQgEaNGh13P4mJiVxyySVMmDCBpUuX8vXXX5d73126dGHUqFF8+umn9O3bl2nTpgUtxkCFsousHVCiqr4Xla8CBvip28m7zrdeWUtHRE4HegC3AL851k5F5EacFhGpqaksXLiwKrGXyc3NrfY2giWSYoHIiudki6VOnTocOHCg2rGUlJQEZTuVceWVV/Lwww+zd+9errnmmnL7b9WqFT///DNTpkyhe/fuzJs3r6wLrbRefn7+MZ/feOON3HrrrXTq1Ik+ffrw9ttvs2LFCho2bFhWp02bNrz88stkZmZy4MABHnzwQeLj4ykoKCir07RpUz744AOysrKIi4ujXr16R+zr1ltv5Y9//COZmZkMHDiQuXPnMnPmTN544w0OHDhAcXExAIcOHSr3PlWV/Pz8o/7uCwoK8Hg8Zetvu+02xo4dS3p6Op07d2bGjBksXbqU8ePHc+DAAaZPnw5A9+7dqVWrFrNmzSI2Npa0tDRWrlzJ9OnTueCCC0hPT2fDhg1888039OvX76j7z8/Pd+f/papzLVd2AfoDWyuUjQAW+qlbAnTwed4WUECAaGA50Me7biEwPJAYunfvHsj01Md0ss31HkyRFM/JFsux5kyvjFDP9a6qumLFCgX0jDPO8BvPPffcow0bNtTk5GS94oor9Nlnn9Xo6OiyOv/85z+1Tp06R32uqjpmzBht1KiRJiUl6XXXXacPPPCAtm7dumz9l19+qT179tT4+Hht3bq1vvbaa9q+fXsdM2ZMWZ3XX39d27RpozExMWWv9bevSZMmaatWrTQ2NlbbtGmjkydPLltXVFSkgL799tvlXpORkaF/+9vfjvo7+stf/qJZWVllz/fu3auPPPKIZmRkaGxsrJ522mk6e/bssvVvvvmm9urVS+vUqaNJSUnas2dPnTNnjqqqbtmyRS+77DJt0qSJxsXFabNmzXTUqFFaVFR01P0f6/MFLNeqHver+sJK7wi6AgcrlN0FvOen7j7gdJ/n3YED3se3AVN81lmCiRCRFM/JFsuJnGCOJZLiqcmxuJVgQnmSfz0QIyJtfcqy8H+SfrV3nb96g4DLRWSriGwFzgDGi8izLsRsjDGmikJ2DkZV80TkLeAxERkOdAGG4CSIiqYBd4rI+zhdY3cBz3jXDQMSfOq+Bfwb51JmY4wxESLUd/LfAkwBtgO7gD+p6moR6Q98oKrJ3novAK2Ab7zPJ3vLUNW9vhsUkUJgv6q6e9eYMcaYSglpglHV3Tj3t1QsXwQk+zxX4F7vcrxtDgxiiMYYY4LEhoox5gSh5QeyMCYo3PxcWYIx5gQQHR1NUVFRuMMwJ6GioqKjDu5ZXZZgjDkB1K1bl23btgU83IgxgfB4PGzbto06lRlVuxJsuH5jTgANGzZk8+bNrFu3rlrbyc/PJyEh4fgVQySS4qmpsSQlJR119OjqsgRjzAkgKiqKZs2aVXs7CxcupGvXrkGIKDgiKR6LJfisi8wYY4wrLMEYY4xxhSUYY4wxrrAEY4wxxhWWYIwxxrjCEowxxhhXWIIxxhjjCkswxhhjXGEJxhhjjCsswRhjjHGFJRhjjDGusARjjDHGFZZgjDHGuMISjDHGGFdYgjHGGOMKSzDGGGNcYQnGGGOMKyzBGGOMcYUlGGOMMa6wBGOMMcYVlmCMMca4whKMMcYYV1iCMcYY4wpLMMYYY1xhCcYYY4wrLMEYY4xxhSUYY4wxrrAEY4wxxhUhTTAiUl9E3haRPBHZJCLXHqWeiMhYEdnlXZ4WEfGuaygin3nL94pItoj0DeX7MMYYc3wxId7fJKAQSAW6AHNEZJWqrq5Q70bgMiALUGAe8CPwPJAL3AB87103BHhPRBqranFI3oUxxpjjClkLRkSSgCuAB1U1V1UXA7OB3/mpPhQYr6qbVTUHGA8MA1DVfFVdp6oeQIASoB5QPwRvwxhjTIBEVUOzI5GuwBJVTfQpuxsYoKqXVKi7DzhXVZd5n/cAFqhqbZ86XwMdgFhgsqqOOMp+b8RpEZGamtp95syZ1Xofubm5JCcnV2sbwRJJsUBkxWOx+BdJsUBkxWOx+HfWWWetUNUeVXqxqoZkAfoDWyuUjQAW+qlbAnTwed4WpztMKtRLAH4LDA0khu7du2t1LViwoNrbCJZIikU1suKxWPyLpFhUIysei8U/YLlW8bgfynMwuUBKhbIU4EAAdVOAXO+bLaOq+cAMEVkrIitVdVUwAzbGGFN1obyKbD0QIyJtfcqygIon+PGWZQVQr1Qs0Op4AXg8AURpjDEmKEKWYFQ1D3gLeExEkryXFg8BpvupPg24U0QyRCQduAuYCiAivUWkn4jEiUiiiNyHc1XasuPFUFQUpDdjjDHmuEJ9mfItwBRgO7AL+JOqrhaR/sAHqlp6VusFnBbJN97nk71lAPHARO/6Im+di1R1y/F2bgnGGGNCJ6QJRlV349zfUrF8EZDs81yBe71LxbqfUL77LGDFdpeMMcaETI0aKsZaMMYYEzqWYIwxxrjCEowxxhhXVCvBeK/iGiwizYMVkJsswRhjTOhUKsGIyFQRucX7OA74HPgQWCciF7gQX1BZgjHGmNCpbAvmPGCp9/GlQG0gDXjEu0Q0SzDGGBM6lU0w9XDuYQE4H3hTVbcDM4GOwQzMDcXFEKKxPY0xpsarbILZCpwqItE4rZmPvOXJODc9RjRV2LMn3FEYY0zNUNkEMwV4A/gWZ8Tj+d7yXsB3QYzLNVu3hjsCY4ypGSp1J7+qPiYiq4FmwCxVLfSuKgbGBjs4N2zdCh0jvjPPGGNOfJUeKkZV3/RT9kpwwnHftm3hjsAYY2qGyl6m/BsROdfn+UMisllE5opIk+CHF3zWRWaMMaFR2XMwj5Q+EJFuwP04IxvHAuODF5Y7RCzBGGNMqFS2i6w5sM77+HLgHVV9WkQ+BOYGNTIXxMZagjHGmFCpbAsmH+fmSoBBHL5MeZ9PecSyBGOMMaFT2RbMImC8iCwGegBXesvbAb8EMzA3xMRYgjHGmFCpbAvmVqAQJ7Hc7DOL5AVYF5kxxhgflb0PZjNwiZ/ykUGLyEWlCaa42GnNGGOMcU+VDrMicjbO2GMKrFHVBUGNyiWxsc5wMTt2QJMT4qJqY4w5cVUqwYhIBvA20B0o7R5LF5HlwOU+XWYRKTbW+bl1qyUYY4xxW2XPwUzEGYOsjaqeoqqnAG29ZRODHVyw+SYYY4wx7qpsF9k5wEBV/am0QFV/FJHbOTzwZcQqPe9iCcYYY9xXrSmTfXiCtB1XWQvGGGNCp7IJZj4wUUROKS0QkWbA34GPgxmYG6KiICXFEowxxoRCZRPM7UAt4EcR2SQiG4ENQCJwW5Bjc0VamiUYY4wJhcreB/ML0E1EzgE6AAKsAX4A/gr8JugRBpklGGOMCY0q3QejqvOAeaXPRSQLuCJYQbkpLQ1Wrgx3FMYYc/IL1kn+E4a1YIwxJjRqZILZvx8OHgx3JMYYc3KrkQkGbOpkY4xxW0DnYERk9nGqpAQhlpAoTTBbt0LLluGNxRhjTmaBnuTfFcD6n45TJyL4JhhjjDHuCSjBqOof3A4kVCzBGGNMaNS4czCNGoGIJRhjjHFbSBOMiNQXkbdFJM87EsC1R6knIjJWRHZ5l6dFRLzr2onIuyKyQ0R2i8hcEWkfaAwxMU6SsQRjjDHuCnULZhLOlMupwHXAP0Skk596NwKXAVlAZ+Bi4CbvurrAbKC9dzufA+9WJgi7F8YYY9wXsgQjIkk4d/s/qKq5qroYJ1H8zk/1ocB4Vd2sqjnAeGAYgKp+rqovqepuVS0C/ga0F5EGgcaSlmaXKRtjjNtEVUOzI5GuwBJVTfQpuxsYoKqXVKi7DzhXVZd5n/cAFqhqbT/bvQz4h6r6naNSRG7EaRGRmprafebMmTz5ZAdWrarLzJlLK/0+cnNzSU5OrvTr3BBJsUBkxWOx+BdJsUBkxWOx+HfWWWetUNUeVXqxqoZkAfoDWyuUjQAW+qlbAnTwed4WULwJ0ae8KZAD/DaQGLp3766qqvfeqxofr+rxaKUtWLCg8i9ySSTFohpZ8Vgs/kVSLKqRFY/F4h+wXKt43A/lOZhcjrwhMwU4EEDdFCDX+2YBEJFGwIfAc6o6ozKBpKVBQQHs21eZVxljjKmMUCaY9UCMiLT1KcsCVvupu9q7zm89EamHk1xmq+rjlQ3E7oUxxhj3hSzBqGoe8BbwmIgkiUhfYAgw3U/1acCdIpIhIunAXcBUABFJAeYCn6nqqKrEYgnGGGPcF+rLlG/Bmf1yOzAD+JOqrhaR/iKS61PvBeA94BvgW2COtwzgcqAn8AcRyfVZmgUahCUYY4xxX5UmHKsqVd2Nc39LxfJFQLLPcwXu9S4V674CvFKdOFJTnZ+WYIwxxj01bqgYgHr1IDbWEowxxripRiYYEbub3xhj3FYjEwxYgjHGGLdZgjHGGOMKSzDGGGNcUaMTzI4dUFIS7kiMMebkVKMTjMfjJBljjDHBV6MTDFg3mTHGuMUSjCUYY4xxhSUYSzDGGOOKGptgbLgYY4xxV41NMElJULu2JRhjjHFLjU0wYPfCGGOMmyzBWIIxxhhXWIKxBGOMMa6wBGMJxhhjXFHjE8y+fXDoULgjMcaYk0+NTzAA27aFNw5jjDkZWYLBusmMMcYNlmCwFowxxrjBEgzWgjHGGDfU6ATTqBGIWIIxxhg31OgEExsLDRtagjHGGDfU6AQDdi+MMca4xRKMJRhjjHGFJRhLMMYY44oan2BSU50EoxruSIwx5uRS4xNMWhrk58P+/eGOxBhjTi6WYOxeGGOMcYUlGEswxhjjCkswlmCMMcYVlmAswRhjjCtqfIKpV8+5o98SjDHGBFdIE4yI1BeRt0UkT0Q2ici1R6knIjJWRHZ5l6dFRHzWvygi60TEIyLDqhNTVNThS5WNMcYET6hbMJOAQiAVuA74h4h08lPvRuAyIAvoDFwM3OSzfhVwC/BlMIKymy2NMSb4QpZgRCQJuAJ4UFVzVXUxMBv4nZ/qQ4HxqrpZVXOA8cCw0pWqOklV5wP5wYjNEowxxgSfaIhuYReRrsASVU30KbsbGKCql1Souw84V1WXeZ/3ABaoau0K9RYDk1V16jH2eyNOi4jU1NTuM2fOPKLOuHHtyM5uwJtvZh/3feTm5pKcnHzceqEQSbFAZMVjsfgXSbFAZMVjsfh31llnrVDVHlV6saqGZAH6A1srlI0AFvqpWwJ08HneFlC8CdGnfDEwLNAYumdkqC5ZohU98IBqVJRqcfERq46wYMGC41cKkUiKRTWy4rFY/IukWFQjKx6LxT9guVbxuB/KczC5QEqFshTgQAB1U4Bc75utupwcGDQIssu3VNLSwOOBnTurtXVjjDE+Qplg1gMxItLWpywLWO2n7mrvuuPVq7zCQli4sFyR3QtjjDHR2BpsAAAZbUlEQVTBF7IEo6p5wFvAYyKSJCJ9gSHAdD/VpwF3ikiGiKQDdwFTS1eKSJyIJAACxIpIgogE9l5UoUf57kRLMMYYE3yhvkz5FiAR2A7MAP6kqqtFpL+I5PrUewF4D/gG+BaY4y0r9SFwCDgDeNH7+Mzj7r1ePRCBUaPK9YdZgjHGmOALaYJR1d2qepmqJqlqM1V93Vu+SFWTfeqpqt6rqvW9y72+519UdaCqSoVl4XEDaNUKZs+GNWvgzDOdczI4N1qCJRhjjAmmmjdUzIUXwn//C7/8Av37w48/kpwMycmWYIwxJphqXoIBGDAAPv4Y9u1zksyaNXazpTHGBFnNTDAAPXvCJ5841yefeSZnJq+wBGOMMUFUcxMMwKmnwqJFkJzMM9+eTdOfFoU7ImOMOWnU7AQD0KYNLFrEgeQmvLDpPJg7N9wRGWPMScESDMApp/B/l3zKOtrjufgSePPNcEdkjDEnPEswOCPHPPNGY85iAcuKe+C56jfwyivhDssYY05olmBwRo4pKYF91OUcPuRjPQuGDWPjPc+GOzRjjDlhWYIBBg6EuDiIjoaShGTeuP4/zIkZQotxt/HPlk/w/hwlRLMaGGPMScMSDNCnD8yfD2PGOLfH/HN6Amdum8XabtcxYuNf+ObiUXQ+TZk2DYqL5fgbNMYYQ0y4A4gUffo4S6na9WPJ/GIaJX+qzX0vPk2LX/fz26GTaNS4F6NGwfDhULv20bdnjDE1nbVgjiUqiujnn4N77+Xq3c+zresFPBj1v/zrzmyaNYMHHoBt28IdpDHGRCZLMMcjAk89BTfdRKOvPuR/tj7OZzEDGNX+LZ54Apo3h5tvhh9+CHegxhgTWSzBBELEySQiCBBVXMR9y64gv1lb5rb6E3tfepNebXdz1VXw0kvw5JNHTJppjDE1jp2DCdTAgZCQgKeggKi4OLjpJuI2bGDAwlcZUPw8HoSv3urOh/8ezEcM5jH60vn0BFq3hvr1naVBg8OPfZ/XrQsxFf4S2dnO5dMDB5Y/N2SMMScKSzCB8l5qtnHKFFrdcMPho35REXz+OVEffUTDKR9x98/jGM1THCKBL1b1Y+mGc/igaDCf7u+C5xgNxjp1DiecqChYscIZhzM2FiZNgiuvdBKRMcacKCzBVEafPvxcUEAr3yZFbCz07Qt9+7Ll3IfpefYBehd+yrkyjxvSP+LMn+7jXkAbNKCw39ns6zGYfTH10e/W81OLs1jfoA+7d8OuXbB7t7N8841z4ydAYSGMGOEsjRtDu3bQvr2zFBY2oEkTZx612Niw/EYOy86m2WuvQXy8NbmMMYAlmKDq0wfe/bg2CxdeRPeBF1GrD/DrrzB/PvLRR8R/9BGN351FY2/9diKc16EDtG7tZI9mqdAzlfW9GvPnJ1LJKU5lT2xjbn24AVExUaxbB+vWOZNytt6RzUAWMuyBXL6I7kOrVk7S8U1ABw7A11/DWWdV75h/RHddfr4TyOrVzuygixbBokW0VIWpU+H+++Gqq5wgwp75jDHhYgkmyCreT0OTJnD99c6iCnfdBRMmUDY0QHExbN7s9Ilt3w4lJbQDPih9fQHwYDQ0auQkodRU6BaFzp8PxSV4omOZO+AJPmEAX33fmJfmNWZfQcIRcSUnQ2Kic7yPiXF+Hu9xUtQh6m79joKv1tBRV7Nd1rC99moaHviRKPUAoNHRlNSpT7QqUvp+HnvMWeLioFMn6NKFn1KyWJKXRdsrszj9vHqu/f6NMZHDEkwoiTjf7J9/3un7iotzBtUszUgeD+zZ49xcs32787N08X2+fj1SXAxAdEkhF358Nxf67MZTO4UdNOaHA43ZTmN20JjYOo2p1aIxe+Masye2MbtjGrMrpjGpe9fRaet8tsY1p8gTTdMDa2ieu4YWB1eTUfAjUTiJsIgY1ms7PtnfhTVcy2o6sYaOfF/Slm67v2Q+g4ilkGLiuL/RiyQnC509K2m/ZRXNV/+HloUv0xJgMuxJacbBNlnktunCoXZZFHXMQlq3ov73y6i7ciGeMwcS078PiYnOr0h8Bk8I1sUPAW3nZLvSwroxTYhZggm10nFp/B24oqKcM/0NGkDHjkffRnY2DBp0+Iq2iROdls327bB9O1HbtxO9ZjsF87fT2rOBM8im8a87kBzP8eOLjXX62Tp1h46/Y11MR347phNri9og8XG8/z6MaOfkwd27nZ979vRh9pfzifr0bX5pfTnb4/uwbg/M230de/bA5v1KClvJYhVdWEnW/lVkfbmK9l/OIRonpjwSSaAAQSkeF83T3MsnDGQLGexOzKAoMYWoaGHnTqfxJwJt20JKijOGXHS08+srfbx/f2caNDj83Hf9nj2wYIGTz6Oj4corlE7pe2hUmEP9/BwaHNxM+s9LaZf9CuIpQWNiWXfz38gbeBHSNIOE5BgSEpwewi++cGbg7tv38Hh2leVa0vR4YMeOsm5aRo+mZXExTJsG48bBuedCRobTvA1yLMEQSbGYqhGtQaM49ujRQ5cvX16tbSxcuJCBAwcGJ6DqyM7mx4pXtB1Z5fA/aC+PkxG8SYjt2+HVV+E//3GO2FFR8Oc/w9ixR5w3CfQf/Wi/G28+pLDQ2fRrr0FmJuTvPkjU2tXErllF2pyXqLd+KUcb6a0gJolfo5uyoSCDHDLYTFNKUjMgI4NtsU3ZHpvB7pjGFHmi6bAnm8xt/+WbBufzbWIP6uVvpWFBDo0KNtOoMIfa+51EkkEOTdlMOluoxaEj9qlwRDzFRJNDBhtpwSaas4nm5R7/QjM0Lp64OOe99iGbPgUf8VWdwXxbu09ZF2Tp+oMHYdUqJxdERUG3bs4VhR6Ps6g6PzP3ZdN130JWJA/k21qnU7doB/ULfqVBwRYaFv1KSt4WEvf8ShO20IRfaR6zhQYl24jR4qP/wbwOxdVhX+0MdsQ1ZcXWDDZrBr9GZXDaBU2p3SGD/AYZFNVpSExcFDExkPZTNk3WLWTXaQPZ36kPMTFOYo2JObysXQtffQVdu8Jppznvo/RQ4/v4yy+/omvXrkes//ZbuOce5yLN2FgYP97ZjoizREU5P1NWZ5Py5UIOdB/IoS59yq0r/blqldMD3bcv9O7t/O7j4pyGXFycU+9Yn1/fz3F1E151/5eCGUug2xGRFaraoyrbtwRTSRGTYAhCLL5H/rg451tuNT6tx4rnuB/kirG88orTKsvJcc5R5eSw6+scvv8kh3TPZprwK7FUOHhGRzvXee/ahXo8R01Wntg4NhVnkKMZbIluSr/fZJDeM4OStAwKGmaQ37ApxRs20fB35yNFhWh0LD/d9BQFMUnE5Gwi/teN5K3dRPLOjWSQU9YKK7U/uQm7azcnPzqZtjkLES3BIzEsaPkHdsWnO92bxcVQUkzu3mIO7i8mBmepk1RMSi3vcy0mmmLqFu6g4/5sorz78RB1xD4BdtAQJ8Wkk1u7CYfqpbM9Op1tUU1ILtjFvTm3E6NFFEssY1L+j71al9SizaQW55BWkkOax0m4aWw9YvsFxLGFdPZTm06sIQoPJUQzlaGspz15JJFHEgepVe5nxbJDJKLey/V741yospCBLMX5UERTTDwFJJBPAvnHfHwaX/MAjxNDEcXE8gBj+JLuZfv1XQ5Sq2y/FUVHQ7/obAbox3yRdDZfJ/UpSz6lS0GB02It/SLQoYNzTrOkxPlTFhc7j0/Lzeb0gwv5LHYgy6L6lFtXWOgkzFKlSc43McfEQM/ibHrmfciqeueyOqVP2TnR0iUvz0nepbH06+f8q1TcTsWkX3HZvNm5MbykxInD779/djZNzzgjZ7Nq06P8Ox2TdZHVZMfqrnNhV8fcfACxNADWZ8NrC2HgmR76tN5eLgGRkwP//S/s2OEkFxHnErqrr4amTZ3uoIwMoho0YOtSYZF3V+neXUUDtbwLXZtDhhOPDBxI6wrxZGdDj0HgKSiiRWwOb47fSKfkTbBpEykbN5KyaRN8tQK8LYgoLeKcH190XhwVVfZfXiwx7CeaYmIoIYb6yTHE16pwJNi5E/Z7D/giRA8407kxKj3duYgkPZ2lG9M4+/y4w98V5vo7WJxa1up93M/vNzsb2g6CkoJiTonbxuv/l0OnOpvRzTmwJYfGW3Jo+sVnRP9SggBCMSN46Rh/VP9K4hPxxMQRk7cfvOf4SuISiCouIspTUuntAURTyP9x3zHrHCKBorgkSEqiKC6JwpgkCmKTkKJCTtnyufNFYF806xIGkFtcHy3woB5FPR7yDiiHPB4EJcrjIXmjh6RaSjQeokSJwkOt4r202LMKwYNKFD+k9iWvXiolMXFoTBxbd8Xy89Y4ComliDjSUmNp3DSOImIpJI5C4qhz4BfOXTOBKE8xJblP8Grm4/wQ15V8TeBQcQIHixLZ8GsCqR4n1R7yJLL+u3h27IgqS2alS5dD2fTOX8inUQPJxpvsipQ4zSeJPGpxkFYcJIk8ahcc5OcX8+jz60GnWZ2X51wh+o9/kAYZVfqjYC2YSjupWjBBFhHx+J6fOurXsuDtKpBWWVksc+c6/TRRUVXazvFamoF0d1S766ViLB9+CF26OAck74Hpm2UHueeWPOKL86gdfZBH7smjTbr3oFVab9EiWLbM2aaI83sZMMD5Kp2QAPHxbMhJYM2PCbTvHE+7zgmH13nX8913cMMNh/vRJk1yLvkv3U9eHj9+e5DJf88joSSP2tF5/PaSPNJqH46VvDxnIMEtWw6/x0aNnMWnny3vUBTf/yAUaxRIFO0zhdopFfriNm+GjRsPbyctDerVK2u6FOYVsn9XEaUpJiGqEPEEcF40EHFxzu8lMdH5qQq//HL4hGWdOk4cBw9WetM9gOWqVZqnxFow5uRytBEXXNpVIK2y48USjNZdQNsJQJVj8blQ4LRT4eGOh6u0CST5Pv30ETtu7V2OqmtXaNHimL+XVsAlVzhVeg+EtEBieffdI7aVBBzySb61A0m+b71VbjtxwPcVE3hJiZMgS/vPliyB3/wGLSxE4uLg2Wedi24OHXLuP/MuG1Yf4sfV+bRrlk/zVG+5b50vv4Sffz4cW/v2Tl9aUhLUquUsSUms31yLVT/UomPPJDr1qFV+/erVMGQIeuhQ1Vshqlpjlu7du2t1LViwoNrbCJZIikU1suKxWPyLpFh0yRLdMHy46pIl4Y4keLEsWaL6xBPV204wYlmyRDUxUTU62vlZ1W0tWaIZsFmreMy1FowxJjz8Db10oscSpGZktWMJ1vnVPn3Iga1VDcMSjDHGnIyCkeyqyeaDMcYY4wpLMMYYY1xhCcYYY4wrLMEYY4xxhSUYY4wxrghpghGR+iLytojkicgmEbn2KPVERMaKyC7v8rTI4UHbRaSLiKwQkYPen11C9y6MMcYEItQtmElAIZAKXAf8Q0Q6+al3I3AZkAV0Bi4GbgIQkTjgXeBVoB7wCvCut9wYY0yECFmCEZEk4ArgQVXNVdXFwGzgd36qDwXGq+pmVc0BxgPDvOsG4ty/M0FVC1R1Is6o6me7/BaMMcZUQihvtGwHlKjqep+yVcAAP3U7edf51uvks+5r1XKjdH7tLf9vxQ2JyI04LSKAXBFZV7XwyzQEdlZzG8ESSbFAZMVjsfgXSbFAZMVjsfjXvqovDGWCSQb2VSjbB9QOoO4+INl7HqYy20FVXwRerErA/ojIcq3i5DvBFkmxQGTFY7H4F0mxQGTFY7H4JyJVHoI+lOdgcoGUCmUpwIEA6qYAud5WS2W2Y4wxJkxCmWDWAzEi0tanLAtY7afuau86f/VWA519ryrDuRDA33aMMcaEScgSjKrmAW8Bj4lIkoj0BYYA0/1UnwbcKSIZIpIO3AVM9a5bCJQAt4tIvIjc6i3/2M34fQStuy0IIikWiKx4LBb/IikWiKx4LBb/qhxLSGe0FJH6wBTgHGAXMEpVXxeR/sAHqprsrSfAWGC496WTgftKT+yLSFdvWUdgLfBHVf0qZG/EGGPMcdWoKZONMcaEjg0VY4wxxhWWYIwxxrjCEkwAvBcTvOQdP+2AiHwlIhdEQFxtRSRfRF6NgFiuEZG13nHmNnjPq4UjjhYi8r6I7BGRrSLyrIiE5H4vEblVRJaLSIGITK2wbpCIfOcdP2+BiDQPRywi0ltE5onIbhHZISKzRKRJOGKpUOdhEVERGexmLMeLR0RqichzIrJTRPaJyKdhjOU33v+pAyKyRkQuczmWYx7nqvIZtgQTmBjgF5xRB+oADwL/EpEWYYwJnLHdvghzDIjIOTgXZfwB54bXM4EfwxTOc8B2oAnQBedvdkuI9r0F+F+cC1nKiEhDnCsoHwTqA8uBN8IRC874fS8CLYDmOPePvRymWAAQkdbAlcCvLscRSDwv4vyNMr0/7whHLCKSgTPe4p049/ndA7wuIo1djOWox7mqfoZDeSf/Cct7ifUjPkX/EZGfgO7AxnDEJCLXAHuBJUCbcMTg41HgMVVd6n2eE8ZYWgLPqmo+sFVE/svhYYZcpapvAYhID6Cpz6r/B6xW1Vne9Y8AO0Wkg6p+F8pYVPUD33oi8izwiRsxHC8WH88C9+F8OXDd0eIRkfbApUBTVd3vLV4Rjli8j/f6/L3miEge0BrnC5QbsRzrONeAKnyGrQVTBSKSijO2Wlhu7hSRFOAxnPuDwkpEooEeQCMR+UFENnu7pRLDFNLfgWu8XR0ZwAX4GaMuxMqNref9R95AiBLfcZxJGG9SFpGrgEJVfT9cMfjoBWwCHvV2kX0jIleEKZblwFoRuVREor3dYwU44y6GRIXjXJU+w5ZgKklEYoHXgFfc+vYZgDHAS6r6S5j27ysViMXp4uiP0y3VFXggTPF8gvOh3w9sxvlHfSdMsZSq1Ph5oSIinYGHcLpfwrH/ZOAJYGQ49u9HU+BUnL9NOnAr8IqIZIY6EFUtwbnh/HWcxPI6cJP3wO46P8e5Kn2GLcFUgohE4Yw8UIjz4QtHDF2AwcDfwrF/Pw55fz6jqr+q6k7gr8CFoQ7E+/eZi9NXnIQzIm09nPND4RRx4+eJSBvgA+DPqrooTGE8CkxX1Z/CtP+KDgFFwP+qaqGqfgIsAM4NdSDeix2expmeJA7nvMhkCcHkikc5zlXpM2wJJkAiIsBLON/Yr1DVojCFMhDnBO3PIrIVuBu4QkS+DEcwqroHp6UQCXfs1gdOwTkHU6Cqu3BOYIc82VVQbmw9ceZGak34ulibAx8BY1TV31BNoTIIZ8inrd7P8ik4J5XvC1M8Iet+CkAX4FNVXa6qHlX9AliG8+XSNcc4zlXpM2wJJnD/wLmy5BJVPXS8yi56EecP28W7PA/MAc4LY0wvA7eJSGMRqYfT5fGfUAfhbT39BPxJRGJEpC7O5HWrjv3K4PDuMwGIBqJFJEGcS6TfBk4VkSu86x/CmdPItS7Wo8XiPS/1MTBJVZ93a/+BxIKTYE7l8Gd5C87MtZPCFM+nwM/AaG+dvjhf6OaGIZYvgP6lLRZxhsfqj/tJ8GjHuap9hlXVluMsOJdzKpCP01QsXa6LgNgeAV4NcwyxOFcA7QW2AhOBhDDF0gVnQNQ9OBM2zQIah/BvoRWWR7zrBgPf4XTDLARahCMW4GHvY9/PcW64fi8V6m0EBof579QJyAbygDXA5WGM5VbgB5xuqB+Bu1yO5ZjHuap8hm0sMmOMMa6wLjJjjDGusARjjDHGFZZgjDHGuMISjDHGGFdYgjHGGOMKSzDGGGNcYQnGmBOEOPOlXBnuOIwJlCUYYwIgIlO9B/iKy9Ljv9qYmsnmgzEmcB8Bv6tQVhiOQIw5EVgLxpjAFajq1grLbijrvrpVROZ4p5TdJCLX+75YRE4TkY9E5JA4UxZPFZE6FeoM9c5DUiAi2+TIKYbrizPNcZ6I/OhnHw95913gHURymhu/CGMCYQnGmOB5FJiNMx7ai8A070yFiEgtnInPcoHTgcuBM/CZKldEbgJewBk8tDPOKNAVR6t9CHgXZ2TbN4Ap3tGR8U6OdTfOFNFtgYuBz114n8YExMYiMyYA3pbE9TgDAfqapKr3iYgCk1V1hM9rPgK2qur1IjICGIczHe8B7/qBOPONtFXVH0RkM87ApaOOEoMCT6nqaO/zGJyJ1W5U1VdF5E6c0YhP1fBNJ2FMGTsHY0zgPgVurFC21+dxdoV12cBF3seZOMOb+07QtATwAB1FZD+QAcw/Tgxlw7WrarGI7AAae4tmAX8GfhKRuTgtptmqWnCcbRrjCusiMyZwB1X1hwrLzgBfKxx9Ujb1rg9ExZaJ4v0/VmcK7fY4rZj9wHhghXdyKGNCzhKMMcHT28/ztd7Ha4AsEfGdw/wMnP/Btaq6DcjBmYSrylQ1X1XnqOodQE+c+U36VmebxlSVdZEZE7h4EUmrUFaiqju8j/+fiHyBMxnTlTjJopd33Ws4FwFME5GHgHo4J/TfUtUfvHUeB/4mIttwZimtBQxS1fGBBCciw3D+p5fhXExwNU6L5/tKvk9jgsISjDGBGwz8WqEsB2jqffwIcAXOjJ47gD+oM5c6qnpQRM4DJuBc2ZWPczXYn0s3pKr/EJFC4C5gLLAbeL8S8e0F7sO5mCAWp9X0/1T1p0psw5igsavIjAkC7xVeV6nqv8MdizGRws7BGGOMcYUlGGOMMa6wLjJjjDGusBaMMcYYV1iCMcYY4wpLMMYYY1xhCcYYY4wrLMEYY4xxxf8HQ3ZExvltEiQAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_learning_curves(history.history[\"loss\"], history.history[\"val_loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "y_pred = model.predict(X_valid)\n", "plot_series(X_valid[0, :, 0], y_valid[0, 0], y_pred[0, 0])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Make the second `SimpleRNN` layer return only the last output:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 7s 976us/sample - loss: 0.0212 - val_loss: 0.0053\n", "Epoch 2/20\n", "7000/7000 [==============================] - 6s 811us/sample - loss: 0.0041 - val_loss: 0.0034\n", "Epoch 3/20\n", "7000/7000 [==============================] - 6s 809us/sample - loss: 0.0034 - val_loss: 0.0031\n", "Epoch 4/20\n", "7000/7000 [==============================] - 6s 804us/sample - loss: 0.0033 - val_loss: 0.0030\n", "Epoch 5/20\n", "7000/7000 [==============================] - 6s 823us/sample - loss: 0.0031 - val_loss: 0.0030\n", "Epoch 6/20\n", "7000/7000 [==============================] - 6s 842us/sample - loss: 0.0031 - val_loss: 0.0028\n", "Epoch 7/20\n", "7000/7000 [==============================] - 6s 839us/sample - loss: 0.0030 - val_loss: 0.0028\n", "Epoch 8/20\n", "7000/7000 [==============================] - 6s 806us/sample - loss: 0.0030 - val_loss: 0.0028\n", "Epoch 9/20\n", "7000/7000 [==============================] - 6s 810us/sample - loss: 0.0030 - val_loss: 0.0031\n", "Epoch 10/20\n", "7000/7000 [==============================] - 6s 805us/sample - loss: 0.0030 - val_loss: 0.0027\n", "Epoch 11/20\n", "7000/7000 [==============================] - 6s 802us/sample - loss: 0.0029 - val_loss: 0.0027\n", "Epoch 12/20\n", "7000/7000 [==============================] - 6s 807us/sample - loss: 0.0030 - val_loss: 0.0029\n", "Epoch 13/20\n", "7000/7000 [==============================] - 6s 801us/sample - loss: 0.0029 - val_loss: 0.0029\n", "Epoch 14/20\n", "7000/7000 [==============================] - 6s 818us/sample - loss: 0.0029 - val_loss: 0.0030\n", "Epoch 15/20\n", "7000/7000 [==============================] - 6s 806us/sample - loss: 0.0029 - val_loss: 0.0028\n", "Epoch 16/20\n", "7000/7000 [==============================] - 6s 820us/sample - loss: 0.0028 - val_loss: 0.0026\n", "Epoch 17/20\n", "7000/7000 [==============================] - 6s 809us/sample - loss: 0.0028 - val_loss: 0.0026\n", "Epoch 18/20\n", "7000/7000 [==============================] - 6s 821us/sample - loss: 0.0029 - val_loss: 0.0029\n", "Epoch 19/20\n", "7000/7000 [==============================] - 6s 806us/sample - loss: 0.0028 - val_loss: 0.0025\n", "Epoch 20/20\n", "7000/7000 [==============================] - 6s 816us/sample - loss: 0.0028 - val_loss: 0.0027\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n", " keras.layers.SimpleRNN(20),\n", " keras.layers.Dense(1)\n", "])\n", "\n", "model.compile(loss=\"mse\", optimizer=\"adam\")\n", "history = model.fit(X_train, y_train, epochs=20,\n", " validation_data=(X_valid, y_valid))" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2000/2000 [==============================] - 1s 342us/sample - loss: 0.0027\n" ] }, { "data": { "text/plain": [ "0.002677031420171261" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(X_valid, y_valid)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAESCAYAAADAEMPrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl8VOXZ//HPlZWQEFYNAoKyilhAlgICFQWtO1pta9UWalFbH2txq2Arbo9WfKClKFYtIkoVfGir1ao/H4pQRYKIBRdAcVdAQHYCZJ3r98eZhCQOMElmJgP5vl+v85qZ+9xzn+tMJueas923uTsiIiKxllLfAYiIyOFJCUZEROJCCUZEROJCCUZEROJCCUZEROJCCUZEROJCCUZEROIioQnGzFqY2TNmttvMPjezS/ZTz8xsopltCU/3mZlVmu/hNgrC0/TErYWIiEQjLcHLmwYUA3lAb+AFM3vb3VdWq3clcD7QC3BgHvAJ8FClOr3c/aP4hywiIrWRsD0YM8sGLgRudfcCd18EPAf8OEL1UcBkd1/r7uuAycDoRMUqIiJ1l8g9mK5AmbuvqVT2NnByhLo9wvMq1+tRrc6rZpYCLAaud/fPIi3UzK4k2CMiKyur79FHH1276MNCoRApKclx6iqZYoHkikexRJZMsUByxaNYIluzZs1mdz+iVm9294RMwFBgQ7WyK4CFEeqWAcdVet2F4FCZhV9/B8gAmgEPAO8BaQeLoW/fvl5XCxYsqHMbsZJMsbgnVzyKJbJkisU9ueJRLJEBy7yW2/1EpsgCILdaWS6wK4q6uUBBeGVx91fdvdjdtwO/Ao4Fusc+ZBERqa1EJpg1QJqZdalU1guofoKfcFmvKOqVc8AOMF9ERBIsYQnG3XcDfwfuNLNsMxsMjARmRaj+BHC9mbU1szbADcBMADPrYWa9zSzVzHIILgBYB6xOxHqIiEh0En0W6WogC9gEzAZ+4e4rzWyomRVUqvcw8DzwLsH5lRfCZRBc4vw0sJPg0uVjgHPcvSQhayAiIlFJ6H0w7r6V4P6W6uWvATmVXjvw6/BUve4rQLc4hikiIjGQ6BstRaQWQqEQa9euZffu3XVqp2nTpqxenTxHk5MpnoYaS3Z2Nu3atYvLZdFKMCKHgM2bN2NmdOvWrU4bgl27dtGkSZMYRlY3yRRPQ4wlFAqxbt06Nm/ezJFHHhnz9pPjTh4ROaDt27eTl5eXNDffyeEhJSWFvLw8duzYEZ/249KqiMRUWVkZ6enp9R2GHIbS09MpLS2NS9tKMCKHiEodiovETDy/V0owIiISF0owIiISF0owInLIufjii7noootq9J6BAwdy4403ximifcaNG0e/fv3ivpxDgS5TFpGYO9hx/VGjRjFz5sxat//www+X97QetRdffFEXSiSYEoyIxNxXX31V8fyf//wnV1xxRZWyrKysiO8rKSmJKgk0bdq0xjG1aNGixu+RutEhMpEG5I03Uvjd7yA/P77Lad26dcXUrFmzb5Q1bdqU999/n9zcXObOncvJJ59Mo0aNePzxx9m4cSM//OEPadu2LY0bN+aEE07gySefrNJ+9UNkAwcO5LrrruOmm26iRYsWtG7dmltuuaXKXk71Q2StW7dm4sSJXH755TRp0oTu3bszderUKstZtWoVgwcPplGjRhx//PHMmzePtLQ05syZE/VnUVZWxoQJE2jXrh2ZmZn07t2bF198sWK+u3PrrbfSvn17MjMzadOmDddcc03F/Pnz5/Ptb3+b7OxsmjVrxsCBA/nggw+iXn590h6MyCFo7FhYsaJm79mxA955pzGhEKSkQM+eUJMdgd69YcqUmi0zGuPGjWPy5Mn06tWLzMxM9u7dy8CBAxk/fjy5ubm89NJLjBo1ig4dOjBkyJD9tjNjxgxuuukm3njjDZYuXcpPfvIT+vfvzwUXXLDf90yaNIm77rqLW265haeffppf/epXDBkyhD59+lBaWsrIkSPp1KkTS5cuZefOnVx33XWEQqEard99993H1KlTefjhh+nduzczZsxg5MiRvPPOO3Tv3p2nnnqKadOmMXv2bLp3787GjRtZtGgRAEVFRZx//vn88pe/ZM6cORQVFbFs2bJD5oZbJRiRBmLHDijfNoZCwetaHGmKueuvv57zz6/aB+51111X8fy//uu/mDdvHnPmzDlggunTpw+//e1vAejSpQsPPfQQ8+fPP2CCOeecc/j5z38OwLXXXstDDz3EK6+8Qp8+fXjhhRf4/PPPef311yu6UZk4cSLDhw+v0fpNmjSJW265hR/+8IcVbfz73/9m8uTJTJ8+nc8//5y2bdsyYsQIUlNTad++PccddxwAW7ZsoaCggJEjR9KxY0cAunc/dMZWVIIROQTVZk8iPx+GD4fiYsjIgCefhEGDYh9bTVW/4qq0tJS7776bv/71r6xbt47i4mKKioo488wzD9hOz549q7xu06YNmzZtqvV73n//fY455pgqfXQNGDDgoOtT2aZNm9i6dSuDBw+uUj5kyBAWL14MBIf7pk2bxrHHHst3v/tdzjjjDE455ZSKeC6++GKGDRvGiBEjGD58ON///vdp27ZtjeKoL4fGfpaI1NmgQfDcc3u46y6YPz85kgsEvflWdvfddzNt2jTGjx/PggULWLFiBWeddRbFxcUHbKf6xQFmdtDDWQd6j7vX+S738nNAkdopL+vYsSMfffQRDzzwAI0bN+baa6/l1FNPpbCwEIDZs2fz+uuvc9JJJ/G3v/2NLl26sGDBgjrFlShKMCINyIABIcaPT57kEsmiRYu44IILuOSSS+jVqxcdO3ZkzZo1CY+je/fufPbZZ3z99dcVZUuXLq1RG3l5ebRs2bLinEq5RYsWcfzxx1e8zsrK4rzzzuOPf/wjixcv5u23366yrD59+jB+/Hhee+01BgwYwKxZkQYCTj46RCYiSaVr16688MIL5Ofn06xZM37/+9+zfv16OnTokNA4zj77bNq3b8+oUaO499572bVrF+PGjcPMarRnc+ONN3LPPfdw7LHH0qtXL2bMmMFbb73FY489BsCf//xn0tLS6N+/P9nZ2cyaNYuMjAw6derEBx98wBNPPME555xDmzZt+PDDD1m1ahVnn312vFY7ppRgRCSp3HHHHXz55ZecdtppZGdnM2bMGC666CLWrVuX0DjS0tL4xz/+wZgxY+jfvz8dO3Zk0qRJnHvuuTRq1Cjqdm666Sb27NnD2LFj+frrr+nevTvPPvtsxcn6Zs2aMWnSJMaOHUtZWRk9evRg9uzZtG3blnXr1rFy5Uoee+wxtmzZwlFHHcWYMWOqXASR1Ny9wUx9+/b1ulqwYEGd24iVZIrFPbniOdxiWbVqVd0DcfedO3fGpJ1YSaZ4oollyZIlDvh7771X77HE0oG+X8Ayr+U2V3swIiL7MXfuXJo3b07nzp35+OOPGTt2LN/+9rfp0aNHfYd2SFCCERHZjx07djB+/HjWrl1Ly5YtGT58OJMnT67vsA4ZSjAiIvsxZswYxowZU99hHLJ0mbKIiMSFEoyIiMSFEoyIiMSFEoyIiMSFEoyIiMSFEoyIiMSFEoyIJLXp06dXjIoZ6XUk9957L507d475suPlt7/9Lb179477chJNCUZEYu7cc89lxIgREeetXr0aM2PevHm1avvSSy+Nee/KpaWl5Obm8uyzz8Z9WQ2JEoyIxNyYMWN45ZVX+Oyzz74x79FHH6VDhw41HhmyXFZWVpVBwOIpkcs6HCnBiDQgKW+8Ab/7XTC8ZRydffbZ5OXlVXRJX66kpIRZs2Zx+eWXV4wrf+ONN9K1a1eysrI49thjGTduHEVFRfttO9Jhq9/97nfk5eXRpEkTRo8ezZ49e6rMf+ONNzjttNNo1aoVTZs2ZejQoVXGWznmmGMAuOCCCzCzisNrkZb14IMP0qlTJzIyMujSpQszZsyomFdaWoqZMX36dC688EKys7Pp1KkTs2fPjvKTC4RCIe644w7atWtHZmYmPXv25Pnnn6+Y7+7cfvvtdOjQgczMTI466ih++tOfVsxfuHAhAwYMIDs7m2bNmjFgwABWr15doxhiQV3FiByKxo6FFStq9p4dO2j8zjsQCkFKCvTsCU2bRv/+3r2jHqs5LS2NUaNGMXPmTG677baKZPL888+zefPmKhvD3NxcZs6cSZs2bVi5ciVXXXUVWVlZ3HbbbVEt66mnnuL222/ngQce4OSTT2bOnDlMmjSpyp7Hrl27GDVqFFOnTgXg/vvv58wzz+Sjjz6iefPmvPnmm7Rp04bHHnuMM844g7S0yJvGuXPnMnbsWKZMmcKIESN48cUXufLKKznqqKOqDOl8xx13MHHiRCZOnMjDDz/M6NGjGTp0KO3atYtqne6//35+//vf89BDD9GnTx+eeOIJLrjgAlasWMEJJ5zA//7v/zJlyhRmz55Njx492LhxI2+++SYQJPGRI0fy85//nKeeeoqSkhKWLVtW8TdIJO3BiDQUO3YEyQWCxx074rq4n/3sZ3zxxRf861//qih79NFHOf300zn66KMryiZMmMBJJ53EMcccw9lnn824ceNq9It/ypQpXH755VxxxRV07dqVCRMm0KdPnyp1RowYwWWXXUb37t3p3r0706ZNIyUlhZdffhmAI444AgjGZmndujWtWrWKuKxJkyYxevRorr76arp27crYsWO5+OKLmThxYpV6o0eP5pJLLqFz587cfffdAN8Y1fJApk6dys0338yPfvQjunXrxt13383AgQOZNGkSAJ9/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EpgVofoTwPVm1tbM2gA3ADMBzCwXeBl43d3HJSR4ERGpsURfpnw1weiXm4DZwC/cfaWZDTWzgkr1HgaeB94F3gNeCJcBXAD0B35qZgWVpvYJWwsRETmoWg04VlvuvpXg/pbq5a8BOZVeO/Dr8FS97uPA43EMU0REYkBdxYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFwowYiISFw0qARTVlbfEYiINBwNKsEUFNR3BCIiDYcSjIiIxIUSjIiIxEWDSjC7d0NhYX1HISLSMDSoBOMOb75Z31GIiDQMDSrBACxaVN8RiIg0DA0qwTRqBK+9Vt9RiIg0DA0qweTkwOuv634YEZFEaFAJpkkT2LkT3nuvviMRETn8JTTBmFkLM3vGzHab2edmdsl+6pmZTTSzLeHpPjOzSvMfMbMPzCxkZqOjXX5OTvCow2QiIvGX6D2YaUAxkAdcCvzJzHpEqHclcD7QC+gJnANcVWn+28DVwH9qsvCMDDj6aCUYEZFESFiCMbNs4ELgVncvcPdFwHPAjyNUHwVMdve17r4OmAyMLp/p7tPcfT5Q47tahgwJEox7bdZCRESiZZ6gLa2ZnQgsdvesSmU3Aie7+7nV6u4ATnf3N8Kv+wEL3L1JtXqLgOnuPvMAy72SYI+IvLy8vj/60atMmdKVJ59cQps2Nb/rsqCggJzyY231LJligeSKR7FElkyxQHLFo1giO+WUU95y9361erO7J2QChgIbqpVdASyMULcMOK7S6y6AE06IlcoXAaOjjaFv377+7rvu4D5zptfKggULavfGOEimWNyTKx7FElkyxeKeXPEolsiAZV7L7X4iz8EUALnVynKBXVHUzQUKwitbJ8cfD82b6zyMiEi8JTLBrAHSzKxLpbJewMoIdVeG5x2sXo2lpMDgwbqjX0Qk3hKWYNx9N/B34E4zyzazwcBIYFaE6k8A15tZWzNrA9wAzCyfaWYZZtYIMCDdzBqZWdTrMnQofPABbNpUhxUSEZEDSvRlylcDWcAmYDbwC3dfaWZDzaxyZ/oPA88D7wLvAS+Ey8r9H7AX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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_learning_curves(history.history[\"loss\"], history.history[\"val_loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "y_pred = model.predict(X_valid)\n", "plot_series(X_valid[0, :, 0], y_valid[0, 0], y_pred[0, 0])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Forecasting Several Steps Ahead" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "np.random.seed(43) # not 42, as it would give the first series in the train set\n", "\n", "series = generate_time_series(1, n_steps + 10)\n", "X_new, Y_new = series[:, :n_steps], series[:, n_steps:]\n", "X = X_new\n", "for step_ahead in range(10):\n", " y_pred_one = model.predict(X[:, step_ahead:])[:, np.newaxis, :]\n", " X = np.concatenate([X, y_pred_one], axis=1)\n", "\n", "Y_pred = X[:, n_steps:]" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 10, 1)" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y_pred.shape" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving figure forecast_ahead_plot\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_multiple_forecasts(X, Y, Y_pred):\n", " n_steps = X.shape[1]\n", " ahead = Y.shape[1]\n", " plot_series(X[0, :, 0])\n", " plt.plot(np.arange(n_steps, n_steps + ahead), Y[0, :, 0], \"ro-\", label=\"Actual\")\n", " plt.plot(np.arange(n_steps, n_steps + ahead), Y_pred[0, :, 0], \"bx-\", label=\"Forecast\", markersize=10)\n", " plt.axis([0, n_steps + ahead, -1, 1])\n", " plt.legend(fontsize=14)\n", "\n", "plot_multiple_forecasts(X_new, Y_new, Y_pred)\n", "save_fig(\"forecast_ahead_plot\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's use this model to predict the next 10 values. We first need to regenerate the sequences with 9 more time steps." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "np.random.seed(42)\n", "\n", "n_steps = 50\n", "series = generate_time_series(10000, n_steps + 10)\n", "X_train, Y_train = series[:7000, :n_steps], series[:7000, -10:, 0]\n", "X_valid, Y_valid = series[7000:9000, :n_steps], series[7000:9000, -10:, 0]\n", "X_test, Y_test = series[9000:, :n_steps], series[9000:, -10:, 0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's predict the next 10 values one by one:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "X = X_valid\n", "for step_ahead in range(10):\n", " y_pred_one = model.predict(X)[:, np.newaxis, :]\n", " X = np.concatenate([X, y_pred_one], axis=1)\n", "\n", "Y_pred = X[:, n_steps:, 0]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2000, 10)" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y_pred.shape" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0285489" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(keras.metrics.mean_squared_error(Y_valid, Y_pred))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's compare this performance with some baselines: naive predictions and a simple linear model:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.22278848" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y_naive_pred = Y_valid[:, -1:]\n", "np.mean(keras.metrics.mean_squared_error(Y_valid, Y_naive_pred))" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 0s 46us/sample - loss: 0.1334 - val_loss: 0.0605\n", "Epoch 2/20\n", "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0498 - val_loss: 0.0424\n", "Epoch 3/20\n", "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0385 - val_loss: 0.0356\n", "Epoch 4/20\n", "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0332 - val_loss: 0.0313\n", "Epoch 5/20\n", "7000/7000 [==============================] - 0s 32us/sample - loss: 0.0298 - val_loss: 0.0284\n", "Epoch 6/20\n", "7000/7000 [==============================] - 0s 31us/sample - loss: 0.0274 - val_loss: 0.0264\n", "Epoch 7/20\n", "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0256 - val_loss: 0.0248\n", "Epoch 8/20\n", "7000/7000 [==============================] - 0s 31us/sample - loss: 0.0244 - val_loss: 0.0239\n", "Epoch 9/20\n", "7000/7000 [==============================] - 0s 32us/sample - loss: 0.0234 - val_loss: 0.0229\n", "Epoch 10/20\n", "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0226 - val_loss: 0.0223\n", "Epoch 11/20\n", "7000/7000 [==============================] - 0s 31us/sample - loss: 0.0220 - val_loss: 0.0216\n", "Epoch 12/20\n", "7000/7000 [==============================] - 0s 32us/sample - loss: 0.0215 - val_loss: 0.0213\n", "Epoch 13/20\n", "7000/7000 [==============================] - 0s 32us/sample - loss: 0.0210 - val_loss: 0.0207\n", "Epoch 14/20\n", "7000/7000 [==============================] - 0s 31us/sample - loss: 0.0207 - val_loss: 0.0204\n", "Epoch 15/20\n", "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0203 - val_loss: 0.0201\n", "Epoch 16/20\n", "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0199 - val_loss: 0.0196\n", "Epoch 17/20\n", "7000/7000 [==============================] - 0s 32us/sample - loss: 0.0196 - val_loss: 0.0196\n", "Epoch 18/20\n", "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0194 - val_loss: 0.0191\n", "Epoch 19/20\n", "7000/7000 [==============================] - 0s 30us/sample - loss: 0.0191 - val_loss: 0.0189\n", "Epoch 20/20\n", "7000/7000 [==============================] - 0s 33us/sample - loss: 0.0188 - val_loss: 0.0188\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " keras.layers.Flatten(input_shape=[50, 1]),\n", " keras.layers.Dense(10)\n", "])\n", "\n", "model.compile(loss=\"mse\", optimizer=\"adam\")\n", "history = model.fit(X_train, Y_train, epochs=20,\n", " validation_data=(X_valid, Y_valid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's create an RNN that predicts all 10 next values at once:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 7s 1ms/sample - loss: 0.0670 - val_loss: 0.0341\n", "Epoch 2/20\n", "7000/7000 [==============================] - 6s 867us/sample - loss: 0.0267 - val_loss: 0.0195\n", "Epoch 3/20\n", "7000/7000 [==============================] - 7s 961us/sample - loss: 0.0189 - val_loss: 0.0195\n", "Epoch 4/20\n", "7000/7000 [==============================] - 6s 903us/sample - loss: 0.0152 - val_loss: 0.0129\n", "Epoch 5/20\n", "7000/7000 [==============================] - 6s 870us/sample - loss: 0.0136 - val_loss: 0.0125\n", "Epoch 6/20\n", "7000/7000 [==============================] - 6s 914us/sample - loss: 0.0126 - val_loss: 0.0128\n", "Epoch 7/20\n", "7000/7000 [==============================] - 6s 860us/sample - loss: 0.0121 - val_loss: 0.0107\n", "Epoch 8/20\n", "7000/7000 [==============================] - 6s 840us/sample - loss: 0.0112 - val_loss: 0.0109\n", "Epoch 9/20\n", "7000/7000 [==============================] - 6s 886us/sample - loss: 0.0109 - val_loss: 0.0106\n", "Epoch 10/20\n", "7000/7000 [==============================] - 6s 857us/sample - loss: 0.0114 - val_loss: 0.0100\n", "Epoch 11/20\n", "7000/7000 [==============================] - 6s 841us/sample - loss: 0.0105 - val_loss: 0.0109\n", "Epoch 12/20\n", "7000/7000 [==============================] - 6s 824us/sample - loss: 0.0104 - val_loss: 0.0095\n", "Epoch 13/20\n", "7000/7000 [==============================] - 6s 823us/sample - loss: 0.0098 - val_loss: 0.0098\n", "Epoch 14/20\n", "7000/7000 [==============================] - 6s 839us/sample - loss: 0.0099 - val_loss: 0.0104\n", "Epoch 15/20\n", "7000/7000 [==============================] - 6s 818us/sample - loss: 0.0096 - val_loss: 0.0089\n", "Epoch 16/20\n", "7000/7000 [==============================] - 6s 821us/sample - loss: 0.0096 - val_loss: 0.0088\n", "Epoch 17/20\n", "7000/7000 [==============================] - 6s 827us/sample - loss: 0.0094 - val_loss: 0.0092\n", "Epoch 18/20\n", "7000/7000 [==============================] - 6s 840us/sample - loss: 0.0090 - val_loss: 0.0083\n", "Epoch 19/20\n", "7000/7000 [==============================] - 6s 812us/sample - loss: 0.0090 - val_loss: 0.0113\n", "Epoch 20/20\n", "7000/7000 [==============================] - 6s 808us/sample - loss: 0.0098 - val_loss: 0.0082\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n", " keras.layers.SimpleRNN(20),\n", " keras.layers.Dense(10)\n", "])\n", "\n", "model.compile(loss=\"mse\", optimizer=\"adam\")\n", "history = model.fit(X_train, Y_train, epochs=20,\n", " validation_data=(X_valid, Y_valid))" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "np.random.seed(43)\n", "\n", "series = generate_time_series(1, 50 + 10)\n", "X_new, Y_new = series[:, :50, :], series[:, -10:, :]\n", "Y_pred = model.predict(X_new)[..., np.newaxis]" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaIAAAEUCAYAAABpmDIHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsnXd4lFXa/z/3pJEKIfSShF6lN0UgcbGwirCArBpRV4X96arruraVdUVfXVzbq74qiriKGlBEENS1LJLQQwk9dEJCL6mQhLSZ8/vjmYQkJCEJU54Zzue65prMOec5z32SyXznnHOf+xalFBqNRqPRuAuLuw3QaDQazZWNFiKNRqPRuBUtRBqNRqNxK1qINBqNRuNWtBBpNBqNxq1oIdJoNBqNW9FCpNFoNBq3YkohEpGHRWSTiBSJyKeXaPsXETkpIrki8m8RCahQFy0iCSJSICJ7RGS0043XaDQaTb0wpRABx4GXgH/X1khEbgSeAX4DRAMdgRcqNJkPbAEigOnAQhFp7gR7NRqNRtNAxMyRFUTkJaCdUureGurnAWlKqWftr38DxCulWolIV2AH0Ewpdc5ev8pe/4FLBqDRaDSaS+LrbgMuk17AkgqvtwEtRSTCXpdaJkIV6ntV15GITAOmATRq1GhgZGSkcyw2ATabDYvFrJPhy0ePz3Px5rGB949v3759GUqpeq86eboQhQC5FV6X/RxaTV1ZfdvqOlJKzQZmA3Tr1k3t3bvXsZaaiMTERGJiYtxthtPQ4/NcvHls4P3jE5H0hlzn6dKcB4RVeF3287lq6srqz6HRaDQa0+DpQpQC9K3wui9wSimVaa/rKCKhVepTXGifRqPRaC6BKYVIRHxFpBHgA/iISCMRqW4Z8TPgfhHpKSLhwN+BTwGUUvuArcDz9ut/B/QBvnHJIDQajUZTJ0wpRBiCch7DNfsu+89/F5FIEckTkUgApdRPwKtAApBufzxfoZ/bgUFANvAKMEkpdcZlo9BoNBrNJTGls4JSagYwo4bqkCpt3wTerKGfNCDGcZZpNBqNxtGYdUak0Wg0misELUQajUajcStaiDQajUbjVrQQaTQajcataCHSaDQajVvRQqTRaDQat6KFSKPRaDRuRQuRRqPRaNyKFiKNRqPRuBUtRBqNRqNxK1qINBqNRuNWtBBpNBqNxq1oIdJoNBqNW9FCpNFoNBq3ooVIo9FoNG5FC5FGo9Fo3IoWIo1Go9G4FdMKkYg0FZHFIpIvIukicmcN7X60pw8vexSLyI4K9Wkicr5C/S+uG4VGo9FoLoUpU4XbeQ8oBloC/YAfRGSbUiqlYiOl1JiKr0UkEVhepa+xSqllTrRVo9FoNA3ElDMiEQkGJgLPKaXylFKrgaXAlEtcFw2MAD53to0ajUajcQymFCKgK2BVSu2rULYN6HWJ6+4GVimlDlUpjxeRMyLyi4j0daShGsex5kAGr/+8l+T0bHebotFoXIgopdxtw0WIyAjga6VUqwplU4E4pVRMLdcdAF5SSn1aoWw4sBkQ4M/2R3elVE6Va6cB0wCaN28+cMGCBQ4bj9nIy8sjJCTE3WZUIuFwCXN3FQPgZ4GnBzeic7hPg/oy4/gciTePz5vHBt4/vtjY2GSl1KD6XmfWPaI8IKxKWRhwrqYLRORaoBWwsGK5UmpNhZczReQejOW776q0mw3MBujWrZuKiYlpqO2mJzExEbOMTynFp2vT+Hz3rvKyUhsUNYkiJqZzg/o00/icgTePz5vHBt4/voZi1qW5fYCviHSpUNYXSKmhPcA9wCKlVN4l+lYYsyONm8kvKuWR+Vt44btdDIgMJ8D3wttxcHS4Gy3TaDSuxJQzIqVUvogsAl4UkQcwvObGAddU115EAoHbgAlVyiOB9sBGDNF9BGgGrKnah8a1LN16jBnf7SI7v5inb+rOH0d2ZMuRHD5fl8a3W49zIrfQ3SZqNBoXYdYZEcBDQCBwGpgPPKiUShGRESJSddYzHsgFEqqUhwKzgGzgGHATMEYplelUyzW18u2WYzz65Vay8ovx87EwpENTLBZhYFQ4b07uR9eWIbyXcACbzXz7lxqNxvGYVoiUUllKqfFKqWClVKRSap69fJVSKqRK2/lKqShVxfNCKZWilOpj7yNCKfUbpdQmV45DczFv/7q//GerzUZS6oXvBRaL8FBMZ/adyuO/u0+5wzyNRuNiTCtEGu9k7YEMDmXk42sRfAT8fC0M6xhRqc0tfVoT2TSI9xIOYEavTo1G41i0EGlchs2mmPnjHto2CeTz+4fw+A3diH9gGAOjKjsm+PpYeCimE9uP5rJyf4abrNVoXEB8PERHg8ViPMfHV1/m5ZjSWUHjnXy/4wQ7juXy5uS+XN2pGVd3alZj2wkD2vH2r/t5b/kBRnVt7kIrNRonEB8P06cz6vBhiIyEl182yqdNg4IC4+f0dPjDH0AEiosvlE2bZvwcF+d6u12EnhFpXEJRqZXXft5Dj9ZhjO/X9pLt/X0tTBvZkQ1pWaxP1b4lGg8mPt4Qk/R0RClDXO67Dx544IIIlVFSckGEyigogOnTXWevG9BCpHEJ8UmHOZJ1nmfGdMdiqdsxrtsHRxIR7M8//7Ob9xIO6NA/Gs9k+vSLBae4GArrcUTh8GHH2mQy9NKcxumcLSzh/5bv59rOzRjZpebluKoE+vswpndrvlifzo5jufj7WqrdU9JoTI0jRCQy8vL7MDF6RqRxOh8kHiS7oIRnxnRHpH5BLSJC/ACwKSgurezqrdF4BDWJSEQEBAVVLvPzA3//ymU+Phf2lLwULUQap/LflFPMXpnKiC7N6N22cb2vH9m1RXnoH6WgT7v696HRuJWXX75YcIKC4O23YfZsiIoyHBSiouCTT+Df/75QFhoKViv07+8e212EFiKN00hOz+b/xSdTalNsOJTVoD2egVHhzJs6jNsGtcMi8OGKVEqsNidYq9E4ibi4csFRZYIze7ZRHhcHaWlgsxnPVctSUw0xeu45Nw/CuWgh0jiNdQczsNrD9JRaG76sNjAqnNcm9WXmxD6sPpDB3xbt0AddNabn1VchoSzomF1cVixfzqsPpZHQxnDFTkgw2lWlvLxZM/jrX2HRIti40WW2uxotRBqn0TKsEQCWGiIo1JfJg9rz5990YWHyUZ7+Zrv2pNOYmsGDYfLkCmJUpfzNN43nwYMr1yckVCl//HFDkJ591iV2uwMtRBqnca6wFIBpIzs6zNvtsdFdiOnanAWbjvL6z3uJm5OkxUhjSmJjYcGCi8UoNhb+9jd44gnjOTb2Ql2ZCC1YUKE8NNRouGwZtGzplREXtBBpnMbGtCzahQfyzJgeDnO5FhEG2PtSQIn2pNOYmOrEKCEBZs6E1183nv/znwvlF4lQGU2bGs4Lp08bXjtlERe8RIy0EGmcglKGg8KQDk0d3vfwzs3w9zHcwH0sl7/kp9E4kzIxGjsWbr11OKNHw/nzxiQnIwNuvtlYeRs/vgYRApgxgwQ1ild58kKZF0Vc0EKkcQoHz+STmV/MUCcI0cCocD6+dzACjOvfRh9w1Zie2Fi44QY4d86Pvn3h/vuNrZ8XX4Srr4bMTDh3Do4dq/76hPSOTGYBg6nisOAlERe0EGmcwoZDWQAM6eCc2cqILs3p1TaMI1kFl26s0biZhARYtQqmTEnjyBFj9jNzJlx7LezfD1OmGCtuU6bAG29cfO1ky9csYDKxJFau9JKIC1qINE5hw6FMmocGEB0RdOnGDWRohwi2HM6hqNTqtHtoNJdLxb2f++5LK98zKvOaW7AAPvsMPv/c8EN44gl49FFDmMqvfWYLsUEbKnccFOQ1ERe0EGkcjlKK9fb9ofqG9KkPQzo0pajUxvajuU67h0bTEDalZfFewgE+nH/uIgeEmrzm7roLliwBX1/4v/+DQYMqOC+8PNo4BFs2AwoMvHAo1gswrRCJSFMRWSwi+SKSLiJ31tBuhoiUiEhehUfHCvX9RCRZRArsz/1cN4ork6PZ5zmRW8iQaMfvD1WkrP+yZUCNxgysPpDBbR+s439mZ/CnBwJ46Z1zF7loV/Saq+jafcst8OOPhhht3mxkhcgscwqNizO85R56yPCgmzChvL/qDsV6EqYVIuA9oBhoCcQBs0SkVw1tv1JKhVR4pAKIiD+wBPgCCAfmAkvs5RonsTGtbH/IuUIUHuxPt5ahrNdCpDERc1amooCik41pMW4zpa1OVarfuNGY5Tz+uPFcNWCCjw8EB0Pv3pCba8yK3n23QoNx4wyPuWXLLj786qGYUohEJBiYCDynlMpTSq0GlgJT6tlVDEaqi7eUUkVKqXcAAa5zpL2aymw4lEVYI1+6tQx1+r2GdGhKcloWpTr+nMYEFJZY2Xo0B4tA02GphHXKvuh4wVNPVV6me+qpC3VlwrJ4MezYAXPmGOWPPGJE+gEgJgbCwkiYtafmc0cehpgxZpeI9AfWKqUCK5Q9AYxSSo2t0nYG8BfACpwA3lVKzbLX/QW4QSk1pkL774EEpdQbVfqZBkwDaN68+cAFCxY4Y2imIC8vj5CQEKf1/8zKAloFW3hsYCOn3aOMDSdKeX9bEf+4uhEdG/sAzh+fu/Hm8Xn62BIOlzB3VzFxPfwpKlV0b+pD53Cf8vraxrdlSxNeeKEnzz+/i/79c8rLV6+O4Pnne2GzWRg6NIMXX0wh7+kl/HHbszz72mH6Dzzr9HHVldjY2GSl1KB6X6iUMt0DGAGcrFI2FUispm1PoA3gA1yDIUZ32OueA76s0j4emFHb/bt27aq8mYSEBKf1ferseRX19PfqwxUHnHaPSvfLvfh+zhyfGfDm8Xny2EpKrWrEv5arce+uVjabrdo2NY1v+XKlmjUznqvjv/9Vyt9fKVCqVy+lmoWeV8uJUWrtWgdZ7xiATaoBn/mmXJoD8oCwKmVhwLmqDZVSu5RSx5VSVqXUWuBtYFJ9+9E4ho2HjLhvzjo/VJUWYY3o0CxYOyxo3M4PO05wOKuAh2I61dtbtGzfqKYlttGj4aefjAwSKSnw+98Lsb6rDTc7L8CsQrQP8BWRLhXK+gIpdbhWYewDYW/fRyq/K/rUsR9NA9hwKJNAPx96tamq/85jaIembDiUhc1mvmVmzZWBzaZ4P+EgXVuGMLpHy3pfX3HfqDbOnTPOGn38RQAJVz2qhciZKKXygUXAiyISLCLDgXHA51Xbisg4EQkXgyHAoxiecgCJGHtHj4pIgIg8bC9f7vRBXKGsP5TFwKhw/Hxc99Ya0qEpZwtL2XNST3Q17mH5ntPsPXWOB2M6YbE4/uxcmRPDwoVwzz1Gzrzb9r1Ewp5WsG+fw+/nakwpRHYeAgKB08B84EGlVIqIjBCRvArtbgcOYCy3fQb8Syk1F0ApVQyMB+4GcoD7gPH2co2DyS0oYe+pc053265K2f02HNJRuDWuRynFe4kHaBceyNg+bRzef9Wo3I8/DsXFMP6WUiazgIQ3tzj8nq7G190G1IRSKgtDRKqWrwJCKry+4xL9bAEGOtxAzUVsSs9CKeefH6pKu/Ag2jYJZENaFvcO7+DSe2s0SalZbDmcw/+M742vg1cCqksN0bu3EUD1hxWhfNHhSSZ//AoLfu/ZLtxmnhFpPIwNh7Lw97HQr30Tl9+7bJ9ImfA4gsa7eT/xAM1CArhtYDuH912TE8Nf/wonT8KJq25kgXUiGxPyqu/AQ9BCpHEY6w9l0bd9Yxr5+Vy6sYMZ0qEpGXnFHDyT7/J7a65cvt54hFX7MxjTu5VT3vc1OTFcfz1cdRW8uesmYtRynuq40OH3diVaiDQOYc2BDLYfzaF9uPOibdfGUPvpde3GrXEVyenZPL1oOwBfbzri0pT1r70GY8bAjgOB/DdkghF/rkoKcU+KQaeFSHPZJKdn84dPNmJT8P324y79hywjOiKI5qEBrNcOCxoX8evuU5SdGCixujZl/eDB8O9/Q3hwEW/k/9FI+VohhXjC9GUeFYNOC5HmsklKzaTYHuvNalMu/YcsQ0QY0qEp61P1PpHGNZwrLAXAIuDn69qU9WXpx4sKrPyibmAnF+JBJxQMYfIr/T0qBp0WIs1l09t+eFVw/T9kRYZ1aMrJs4Us2FvsllmZ5srBZlOs2n+GHq1D+esN3Yh/YJjLU9bHxkK8uhNQPImxBpdADJNZwALbbR4jQqCFSOMA9p0yPHbuvjraLf+QZYQE+AHwU1opcXOStBhpnEZSaiZpmQX8cWQn/hTb2W3v+fFRWxnHEn5iDI/zhiFCTCY2KtUt9jQULUSay8JmU3yelM7g6HBeGNfLbf+QAMdyCgAjxlNJqWvX7DVXFvEbDtM40I+berdyryEvv8yrjZ4HhP/lcR5klpFS3MNSiGsh0lwWK/ad4XBWAXdfHe1uU7i6UzN87OFV/Hzct0So8W4y8or4JeUkEwe0c8tRhUrExXHs8TfwpYRWnGCWPETCY0s8LoW4FiLNZTF3XRotQgO4sZebvxkCA6PC+cctPQF4yI3LJRrv5pvko5RYFXcMae9uU4zIC7NH88eHfDhJa167ehGTZ4+ulH7cE9BCpGkwaRn5JO49w51DI/H3Ncdb6a5hUTQJEFKO57rbFI0XopRi/obDDI4Op4sLMhDXRsXwP9P/bsEiNlK357PgK8XkyXiUGJnj00PjkXyRlI6vRbhzSKS7TSnHxyIMbuVDwt4znC0scbc5Gi9jnd1J4c6h7n3PV41B17o1xHY/wby8scS03M2CBXiUGGkh0jSIguJSFmw6wk29W9EizPkpwevD0Na+FJfa+G/KKXebovEy5m84QuNAP8b0bu1WO6qLQXfnHwI4SGc2fry9/JzRxo3us7E+aCHSNIglW49ztrCUe66JdrcpF9GpsYW2TQL5bvtxd5ui8SIy84r4eedJJgxo63Ynhepi0E2Y2gx/KWbet4GAUf/UU24wrgFoIdLUG6UUc9em0aN1GINM6BAgIozt24bV+zPIyteppzSOYdHmYxRbbdxhoqXoijRpAjdH7+KrtKFYPWxZWguRpt7Erz/MnpPnGNW1GZWzsJuHsX1bU2pT/LTzpLtN0XgByWlZvJ94gO6tQunqZieF2rhzYiEnVSsSP9jjblPqhRYiTb1ITs/mH0t2AvDpmjTTRi/o2TqMjs2D+W6bXp7TXB7J6dnc/lES2QUlHDyTZ9r3PMDNf+lGKGeZN1fPiByCiDQVkcUiki8i6SJyZw3tnhSRnSJyTkQOiciTVerTROS8iOTZH7+4ZgTeybJd7os4XB9EhLF92pB0KJPTZwvdbY7Gg5m/IZ0Sq/Gmt7kpqG9dCWwTzu8iVvHNji4UetDb3rRCBLwHFAMtgThgloj0qqadAHcD4cBNwMMicnuVNmOVUiH2xw3ONNrbOWn/UHdHxOH6MrZva5SCH3accLcpGg9ly+Fslm49gQA+Jn/Pv/qq4a595/VnyLWG8uPCi5NEmjVHkSmFSESCgYnAc0qpPKXUamApMKVqW6XUq0qpzUqpUqXUXmAJMNy1Fl8ZFBSXsnzPaYZ2aOq2iMP1oXOLUHq0DtPLc5oGcfBMHvd9upGWjQP46J5BPG7y9/zgwcbZIZ9B/WnOaebNqnyou+zskRlzFIkZc7eISH9grVIqsELZE8AopdTYWq4TYDPwoVLqA3tZGhCIIbpbgCeVUtuquXYaMA2gefPmAxcsWOC4AZmMvLw8QkJC6n3d8sMlfLarmGeHNqJruJtjbNVCxfF9n1rMwn0lvDYykOZBpvzeVW8a+vfzBMwytuxCGy8lFVJsU/x9aCAtgx3z3nH2+LZsacILL/Qk5tyP/MQYvlm6nuBga3n588/von//HKfdPzY2NlkpNajeFyqlTPcARgAnq5RNBRIvcd0LwDYgoELZcAwhCgL+BpwEmtTWT9euXZU3k5CQUO9rrFabin09Qd3yzipls9kcb5QDqTi+w5n5Kurp79WsxAPuM8jBNOTv5ynUZ2y/7Dyp3l2+T21Ky3KoDSv2nlaD/ucX1W36f9T2IzkO7dsVf7vly5Vq4ntOgVJz5xqvmzUznp0NsEk14DPfrF8R84CwKmVhwLmaLhCRhzH2im5WShWVlSul1iilziulCpRSM4EcDKHT1IMV+86Qeiaf+6/tYFqX7epo3zSILi1C+PfqQ6b2dtLUj9krDzL18028/vM+h+SeUkqx9+Q5nvlmO/f8ewNn8oqxKcozD3sSsbHwzci3sWBlxj0HmTw6kwXTlpk6UZ6vuw2ogX2Ar4h0UUrtt5f1BVKqaywi9wHPACOVUkcv0bfCcHDQ1IOPVx+iZVgAv73KvaFN6ktyejaHMvIptSnu/CiJeVPNu8avqRsFxaW8u/wAYPwzF9tzT9X375qclsWiLcfIKypl65Ec0jMLKtVbbQ3r1+3Ex3Pd2pe4luGsJIb/Z3uf2LeehJ6zTZsewpQzIqVUPrAIeFFEgkVkODAO+LxqWxGJA/4JXK+USq1SFykiw0XEX0Qa2V27mwFrnD8K72HPybOsPpDB3VdHmybKdl1JSs3EZt8HLdbJ8ryCt5bt52xhKX4+F75PDuvQtF59JKdnM3l2EvHrD7Nk63GaBPrx0vjezLl7EI38LKb3kKuV6dNJKBxGCr3xpZhPuI+EgiEwfbq7LasRM3+qPISxt3MamA88qJRKEZERIpJXod1LQASwscJZoQ/sdaHALCAbOIbh3j1GKaU/jerBJ6vTaORnMVWU7boyrGNEuXhaRDzzg0VTzq7jZ/l49SHuGNKeL6ddzXXdW2BTcDTnfL36mb3yIFb7gTgfgRt6teKuYVGM7tmS+AeGmd5DrjYS0jsymQV8zW38ifcpwZdJLCQhvaO7TasRsy7NoZTKAsZXU74KCKnwukMtfaQAfZxi4BVCRl4Ri7ceY9LAdoQH+7vbnHozMCqc+AeG8bdF28nKL/bIDxaNgdWmeHbxDpoE+vH0Td1pEuTPR3cPYsL7a/if73cxqmtzmgRd+j269mAGy3adwiLGGn3Vmc/AqHCPfZ8kJMBky9cssE0ilkQ6c4D3+BOjWGGUJ1wcLNUMmHlGpDEB8UmHKS61cd/wGvXe9AyMCueOIZFk5BVzNLvg0hdoTMm89elsPZLDc7f0LBccH4vwzwlXkV1Qwr9+unR8tUMZ+Tz4xWY6NA9h7n1DPHrmU5XyHEXPbCE2aAMA7TnKXXzBT9zE7Ed2mjZHkRYiTY0kpWbw4cqD9I9sQucW7j/bcTkM7WB8491wKMvNlmgawumzhbz6016u7dyMcf3aVKrr1aYx9w2PZv6GI7X+fXMLSrj/041YBD6+ZxAjujTnT16UUr48R9HLo2H2bIg0ltKfCnyXQglkc+go0+Yo0kKkqZbk9GymfLyBgmIrKcfOerzrc7dWoYQ18tVC5IEkp2cz5d8bOF9q5aXxvas9PvCX67vStkkgf1mwlXd+3XfR+3XDoUxufXc16Vn5fHDXQKIigl1lvsuolKMoLg7S02HiRHq0zGL8eOHdd2HQIHPmKNJCpKmWtQczygM9lrmxejI+FmFIh6as10LkUSSnZ3PH7HXsPXkOFGTWkF8qyN+Xe6+J5lj2ed78735un72Of/5nN5+uOcSMpTu5fXYS6VkFWETw9bmCPvZGjuTVtNsYPSCLnBz48MPqm7k7Bt0V9BfR1IdS+0E+TwhuWleGdojgUEa+jsbtISilmLXiIMX2L0RK1R75uuLh0xKrYvbKVGZ8t4tP16aXR4w3e/RshzNyJIPZyPOvBtG/P7z5JhQVVW5ihhh0DhciEfk/EfmumvIwEZkhIj0qlP1FRLaLiBZEE1FqtfHdthNENQ3i8eu7es1m7hD7WRM9KzI/p88Vct+nG8u92+pyrmdYxwga+VmwCAT4Wphz9yCS/z6az+8fQiNfDz8b1FCuuorYxltYMOo9UlPhxAn47LML1eUODgvc603nUPdtEekE/BG4pprqQcDzGAdVy/gAeBq4B/jEkbZoGs7SbcdJzcjng7sGcFNvz4qkUBu92oQR7O/D+kOZjO3b5tIXaFxKcno23x8sZhcHmLPqEPlFpbxway96twkj6VAWwzpG1PqFqMxVPyk1s1LbEV2aEz/14vIrAh8fuPZaYg/MYdGiv3LjjTBjBtx3H6xcaQ4RAsefI3oM2KaU2lRNXX+gCNhVVqCUOi8inwFPoIXIFJRabfzf8gP0aB3GDT1budsch+LrY2FgdFPtsGBCktOzifsoicJSG+zfS8dmQSz44zA6tzDScg+MrlvkhJrOAHny2aDLZuRI+OEHrut9munTW/DCCzBpEqxebQ4RgjouzYlIZxEpEZEXqpTPsmdGHSQiAcBdwLxqrt8NvA4EACUiokRkob36S6CniFQ3i9JUIDk9m/cSDjjVg23J1uMcysjnz7/pgsXifSH5hnZoyr5TeWTVsOmtcQ9JqZkUlRp7PAKM79+uXIQ0l8nIkcbzqlU89xy0bg3ffgt3320OEYI6CpFS6gAwB/iLiDQDEJF/APcBv7PPgIYBTYBV1XRxN5AKfAdcbX/81V63FTiLEX5HUwNl3xjf+GXvZUUbLlv+qO56Yza0n56tw7ixV8vLNdmUDLXvE+lZkbkYUiFWXICfheGdm7nRGi9jwAAICoKVK1m5EgoLwWKBd981z+HW+jgJvAD4AE+LyP0Y+z1TlFLL7PXDMILhbq/m2m1AO2C5UirJ/kgHUErZ7NcMa+AYrgiSUjMoLLVhU1BU0jB3asMVNolv9pdUK2bfbj1OWmYBj43u4lGpHupDn3ZNCPC1sP7QFeQ55QHkFpSggGGtfbzGOcY0+PvD1VeT8EMBkyfDN9/Ayy9DcTGMG2cOMaqzECmlTgJvAY8AHwKPKqUqpjFtA5xVSlW35tEL8MfInlodZ+zXa2qguPRCJl0F5BeV1LuPX1JOUmy1oYDCEhufr0srSx5YPhvq1SaM63t652wIwN/XwoDIcD0jMhlz16XRKqwRD1wVoEXICSS0v5vJB//Jgn/nlS/Hde8OIsZ+UXVi5MqzRfV1m96Psc+zTin1XpW6RhjOCNUxAOPzc2sN9ecxIm1rqiEjr4jP1qXRtWUIfxndhX7tm/DBilR+2H6izn0opdhknwGJ/fHt1uNMnLWWjWlZvPXrftILSY/LAAAgAElEQVQzCxjbt43XzobKGNqxKbtOnCX3fP3FXON4DpzOY9X+DO4aFomvF+5LupuEBJi8+HYWMJlYywoAhg6FU6fg/Hno2ZOLYtC5+mxRnYVIRK7DmAmtA4aLSN8qTTKBmr7K9AcOKqXO1lDfFMioqy1XGs8vTSG/yMp7dw7gz6O7Mt+e3O2xr7aQsPd0nfr4fvsJktOzufeaKCZ28eOrPw7jXxOv4ljOeW77YF15orG3ll0cHsXbGNKhKUpBcrqeFZmBz9el4e9j4XYPTDPiCWzcCAu+VMT6rTF8trFncf3GWLVbvRqmTbsQg84dZ4vq6jU3APgWw2EhBjiMkYyuInsAPxFpV00XPangtl0NHYC9dbHlSuPnlJP8sP0Ej1zXmS4tDS+iQH8fPr53MF1bhvLgF8l8sS69Vm+63IISXvguhavaNubvN/fklk7+DOkQwe8HR5L4RCwjulzYGC65ApLHDYgMx9/HwvpULUTu5lxhCQuTj3JLn9Y0CwlwtzleyVNPQexNATBkSLkQgSEy334Lvr7wzjswZYr7DrheUohEpDPwI/AL8Ih9D+gF4LciMrJC07IRDqmmmxygr4jcKCLDRKT8aLOINAG6VrheYyf3fAnPfbuTHq3D+H8xnSrVhTXy47P7hhAR7M/fl+ys1Zvun//ZTXZBCTMnXHVRnK1Afx8eG93V87NS1oNGfj70bd9YR1gwAYs2HyO/2Mo910S72xTvZ+RI2LQJ8vPLi0aPhjlzIC8PYmLcd8C1ViESkVYYArQbiLN7uAF8hjEDeqWsrVIqDdgAjK2mq38ApzBmVeuAHhXqbgaKgcUNGoEX888fdpOZX8xrk/rgV02gxoiQgPIIAWXedGsOnKnUZt3BTL7adIQHru1A77aNq71P2Yl0b8rNcimGdGjKjmO55BeVutuUKxabTTF3XRp92zehb/sm7jbH+xk5EkpLISmpUvE99xiCtG8f3HSTe84W1SpESqmTSqmOSqkYpVRRhXKrUqqHUqrqIdRZwAQRCarSz06l1FClVKBSSpRSqytU3wV8XTV9t4g0FZHFIpIvIukicmd1NorBv0Qk0/54VSrstotIPxFJFpEC+3O/2n8l5uCT1Yf4atMRbu3bpkYBAbi+ZysC7KmwFfDVpqNsOWzMigpLrExfvIP2TQN5bHTXWu83MCrcq3KzXIqhHSKw2hQzvkvx+j0xs7LmYAapZ/K595ood5tyZXDNNcYBopWVF58SEmDrVggNhS+/hOXLXW+ao4ONfg4cAx6qS2O7KMRiLPVV5T2MmVJLIA6YJSK9qmk3DSOleF+MtOC3YMS7Q0T8gSXAFxiOFHOBJfZy07J8zyle/N7YUvtxx4laPygHRoUzb+ownryxG8/d0gNlU0yctZZH529mysfrSc3I55+/u4pAfx9Xme8RlEWNWLjp6GUdENY0nLlr02gW4s9vr/KeeIamJiwM+vWrJEQV94Ree82YMP3ud64/W+RQIVJKWTGiLdQ1H3Mr4A/2yA3liEgwMBF4TimVZ59BLQWmVNPHPcAbSqmjSqljwBvAvfa6GIx4em8ppYqUUu9geC5fV6+BuZDc8yU8880Oyk4NlVgv7TxQNpu5/9qO/PyXkYzu0ZKl206wMS0bHxGC/B0dUtDz2XYkBzBmkUUlNn5OOeleg64wDmcW8Oue09wxJJIAX/0lyWW0aAGJiWCxkNDqDiaPKyzfE/rDHyA6Glq1utid29lI2YFGMyEi/YG1SqnACmVPAKOUUmOrtM0FblBKrbe/HgQkKKVCReQv9roxFdp/b69/o0o/0zBmVwQFBQ0sKKirljoO8QugxeT/IaB1V1A2EAvKZuXUl9MpPr6nzv2EDbuNJiPuQiw+KJuVnFVfcDbpayda7nn4t+lOy9tfRnz9AAGblbwd/yV37QJ8QiNoFHkVhYd31Ov3rqk7Ebf8leAeoziz6CXOH9zgbnOuCO4A/o1x4DOBGCazgLlM5gsSmV/e6g/2VtMxYlhPBhLrc5tkpdSg+tpm1q/KIUBulbJcoLooiFXb5gIh9n2iOvejlJoNzAbo1q2b2rvXtd7kRaVWHpi7iTUHMnjvzgG0CGt0IWz9G7vr1VdyejZxc5IoKbXhF+DHoi8/ZGDUhSAYiYmJxMTEOHgE5qGu40tOzyYpNZMuLUJYtT+Dr/z9aTJgDCAopfD3tZjSecPT/37rUzP5/WxjwzzyjhmVfseePrZL4dbxRUcb6cOBjQw2DriSyG+jopiXlgYYS3M9ekBw8Mu88QYkJyfUK7V4Qw/Dm1WI8oCwKmVhwLk6tA0D8pRSSkTq04/bKLXaeGTeFlbtz+C1SX0YY18zb+gHYE15WTSVqZga4IZerXgwphMPxSez9Yjx3aXsTJX+/TmWrzYdKf9Z/45dyOHD5T8+xWvVlr/5Jtx2G8ycCTk5VCtCCQnG4df6CNSlMGtm1H2Ar4h0qVDWF0ippm2Kva66dilAH6ks031q6MctbErLYty7a/hl1ylmjO3JbYPaO6TfK80LzhG0aRLIc7f0oizKzJVwpsodnD5rOOBeKefWTENkDZErKpQPHgwffQTt28Pzz4PVWrmps0L/mFKIlFL5GJlcXxSRYBEZDozD8MqrymfA4yLSVkTaYKSX+NRelwhYgUdFJEBEHraXu8FB8WKS07O5fXYSKSfO4msRrmqnz1K4m4FR4Tx3c08A7r+2gxZyB1NQXEpyejbX92x5RZ1bMwUvv2ykg6hIUJBRbic21vCgy8mBlBTj5zKcGXXBlEJk5yGMQKingfnAg0qpFBEZYV9yK+NDjDxHO4CdwA/2MuxRIMZj5EPKwfDoG19DhHCXk5SaSanNcBZRSnl9aB1P4d7h0XRvFcqyXacxozOPJ/PfXac4X2LlgWs76Bm7q4mLg9mzIcp+bstigVmzjPIKxMbC4sVGlvGnnjL2jZwd+se0QqSUylJKjVdKBSulIpVS8+zlq5RSIRXaKaXUU0qppvbHU6rCp4dSaotSaqD9MO0ApdQWd4ynOnq1MbavBL1EYSZEhKkjOrL31DlW7texeB3Jd9uO07pxIwbXMfW3xsHExUFaGixdCjYbRFT/mfOb38Bzz8HRozBxovND/5hWiK4ECkuMiEl3DInUSxQmY2zfNrQMC2DOqlR3m+I15BQUs2LfGcb2beOVaeg9ihtvNEToiy9qbPKPf0DbtoZmxcU5N/SPFiI3kpSaSSM/CzNu7aVFyGT4+1q455poVu3PYPeJmrKX1I/k9Oxao6R7Oz/uPEmJVXFrX50D0+34+8Pvf2+E3z5b/fs7MREKCsDPD95/H5Ytq7aZQ9BC5EaSUjMZFNUUf1/9ZzAjcUOiCPTzYc6qQ5fdV3J6Nnd8lFRrlHRvZ8nWY3RsHly+JK1xM3fdBYWFxoZQFcr2hL75Bj78EEpKnJtWXH8Cuoms/GL2nDzHsI56rdysNA7yY/KgdizddoxTZwsvq69vtxyjuNSGTRlLsj/sqHt2XW/gZG4h6w9lcesVkAHYYxg2DDp2vGh5rqpjwunTRoqIwkKYMME5acW1ELmJDYcMDzntoGBu7ru2A6U2xdy1aQ3u48y5In7YfqI8RTsY0dUf+3ILS7cduyKW677ffhyl0MtyZkLEmBX9+iscPw5U7x03ZAjs2AHNm0OjRsaBV0enFddC5CaSUrMI9POhjz47ZGqiIoK5sWcr4tcfpqC4/rmLiktt/Cl+MwUlpbx2Wx+euLEbn9w7iD+O6sSPO0/y6PytvPbzXu78yLuX65ZsPc5VbRvTsXnIpRtrXEdcHCgF841ocxs3XuwdFxsLX38NRUVw6pQRwNvRacW1ELmJpNRMBkWH6/0hD2DqyA7kni/hkflb6i0WL/2wiw1pWfxrYh8mDWzPn2I7E9u9Jc+M6c4DIzqUz5CKSm0s233K8cabgNQzeew4lsu4fno2ZDq6djWmPPbluaeeql5QYmNh0SIIDDQmUK1bO/Zskf4UdAMX9of0spxnIIjAr7tPc9sHa5m+eAdbDmdTarXV6gm3YNMRPluXzgPXdmBcv7YX1V/XvSUBfpbykEILk49wKCP/onaeztJtxxGBW/poITIl3boZmfEsFiMwanx8tc1iY2HJEvD1hfvvN84XOepskVmDnno1F/aHtKOCJ5CUmolg5C6yKYhff5j49YcJ9POhqNSKUuDnY+GTPwxmeOdmJKdn8+2WY8zfeJhrOkXwzJju1fZbMTht8xB/XvlpL5NmrWXufUNqzcrrSSSnZTF3XRo9W4fSqnEjd5ujqUp8PCxcaPyslBGde9o043WViAtgpBR/6CF45x2YMsVxZ4u0ELmBsv2hq9rq/SFPYFjHCPx9LUZaDV8L78cN4HyxjY9WHSyP1F1stXHXnPVERgRxNPs8VptCgKkjO+LrU/PCQ8UI4IOimzLl4w3cPjuJJ27oSn6x1aOjpyenZ3PHnPUUl9rIKzRizHnqWLyW6dPh/PnKZQUFRnk1QpSQAPPmGVEXZs2C8eMdI0Z6ac4N6P0hz6Js5lIWpPO67i25uU9rnrulF438LPgI+PsIkwa1QwCrPX6gCOw6XvfDsB2bh/DNg9cQHuTHjO928frPnn3mKCk1k5JSI3qIzaZjKZqSCikgLiqPjzeW6uxLdgnTl5XvCb34ovHsqEyu+pPQxej9Ic+kurQaFQVq/rSreW1SX96Y3O+CODUgfmCrxo0Y39/YT1IYXnee+gE+rGMEZUeGdCxFk1JTagiljNzh6emgFAnpHZj8z74smLasfAZUFqnbEWKkhcjFrE/V+0PeRFWBqjp7ashSVEy3FgTYZ8tKwSAPXc7q064xvhYLAyKb6FiKZqW61BCNGhkhgEpKgAtpxRcwmdj4Byo1dZQYaSFyMUmpmfr8kJdzuUkJB0aFM2/qMH7Xrw0KWL7ntGMNdBF7Tpyj2GrjD8N1XifTUjE1hIjxPGdOuQhB5bTi1S3llYlR2dmihqCdFVxMUmoWg6LD8atlA1ujKXNiCAzw5cOVqYzs2pzhnZu526x6kZyeBTQ85b3GRcTFXeyYMH26sSxHlbTiNSzlxcYaj6efbpgJ+tPQhWTmFbH3lN4f0tSdv9/cg47Ng/nrgm1k55sin2Od2ZSeTevGjWjTJNDdpmjqS3VLdgEBlbK5OhItRC5kwyHjG6IWIk1dCfL35Z3b+5OZX8Szi3d4VMbYzdpd23OpumTn4wPNmhmB5pyA6YRIRJqKyGIRyReRdBG5s5a2T4rIThE5JyKHROTJKvVpInJeRPLsj1+cP4KaubA/5B2HFTWuoXfbxjxxQzd+3HmS137ew/cHi03v0n085zzHcwu1EHkyZdlcbTYjb9GxY/Dmm065lemECHgPKAZaAnHALBHpVUNbAe4GwoGbgIdF5PYqbcYqpULsjxucZXRdSNhzhpZhAWw/mutOMzQeyNQRHbmqbRjvJ6byzf4S058vKrNtUJT2DvUKbrnFyAHx4otw6PLzc1XFVEIkIsHAROA5pVSeUmo1sBSYUl17pdSrSqnNSqlSpdReYAkw3HUW152EPac4nF1AemaB6T9ENObDYpFyZwUFlJj8fFFyejaBfj50bx3qblM0juLtt43ZUc+el4xLV1/M5jXXFbAqpfZVKNsGjLrUhWJk2xoBfFilKl5ELMAW4Eml1LYarp8GTANo3rw5iYmJ9be+Ft7cZITRUEBxiY35yzZyrpO/Q+9RV/Ly8hw+PjPhreNrVmi1x7xTWEQIyEknMfGou82qlhU7zxMVCmtWrazXdd76tyvDk8fXYtkyulutWErt6VDS07Hefz97d+/m9OjRl9W32YQoBKi6bpUL1OVr1QyMGd4nFcrigM0YS3h/Bn4Wke5KqZyqFyulZgOzAbp166ZiYmLqa3uNFJZYObLyVyxiQzBOmd8xerDb1s8TExNx5PjMhreOLwYobXqQV37cw5M3deeBkZ3cbVK1FBSXcviXX3hwVCdiYrrV61pv/duV4dHju/deKK2ck8unqIieX3xBz5deuqyuXbo0JyKJIqJqeKwG8oCqCe3DgHOX6PdhjL2im5VSRWXlSqk1SqnzSqkCpdRMIAdj1uRSFm85Rk5BCf+4pedlnbjXaO4b3oFQP9hm4n3GbUdysdqUfo97G7XFpbtMXDojUkrF1FZv3yPyFZEuSqn99uK+QEot19wHPAOMVEpdap1CcSFbs0uw2hQfrjhIn3aNueeaaERcenuNl+Hva2Foa1/+u+sUuedLaBzo526TLmLzYWP/s3+kjh7iVURGlh9yvaj8MjGVs4JSKh9YBLwoIsEiMhwYB3xeXXsRiQP+CVyvlEqtUhcpIsNFxF9EGtldu5sBa5w7isr8tPMkaZkF/L9RnbQIaRzC8La+FJfa+GH7CXebUi2b0rLo0iKEJkHu2QPVOInqDrkGBTnkkKuphMjOQ0AgcBqYDzyolEoBEJERIpJXoe1LQASwscJZoQ/sdaHALCAbOIbh3j1GKeUyVyOlFB+sOEiHZsHc2KuVq26r8XKiwyx0bhHCos3mc1Sw2RSbD+foZTlvpLq4dLNnV5u3qL6YzVkBpVQWML6GulUYDg1lrzvU0k8K0MfhBtaDNQcy2XEsl1cmXIWPRc+GNI5BRJgwoC2v/rSX9Mx8oiKC3W1SOakZeeSeL9FC5K1UF5fOAZhxRuQ1zFpxgBahAfxuQFt3m6LxMsb3a4sILNp8zN2mVGJTmrE/pIVIUx+0EDmJ7UdzWHMgk/uv7UCAr4+7zdF4GW2aBHJNpwgWbTlqqvhzyenZNA32p0Mz88zSNOZHC5GT+GDFQUIb+XLn0Mv3KNFoqmNC/3YcyTrPJhNF6UhOz2ZAZLh2zNHUCy1ETuC7bcf4z46T3NCzJaGNzOdeq/EOburdiiB/H9M4LWTlF5Oaka+X5TT1RguRg0lOz+axr4woQt9vP6FjymmcRnCALzf1bsX3209QWGJ1tzlsTtf7Q5qGoYXIwazefwarzVizL7WaOzClxvOZOKAd5wpLeXLhNrd/6dmUno2fj+g0J5p6o4XI0djXxi1ixJTTSfA0zsTf1/gX/m7bCbdHdV+x9zTNQgJIOX7WbTZoPBMtRA5m+5EcIoL9efz6rjqmnMbpbDiUVR6zyp2pIdYdzGD3yXOczC10uyBqPA8tRA4kK7+YFfvOMGlgOx6+rosWIY3TGdYxonxWJCJum4HPWW0kS/OEXEka86GFyIH8sOMEpTbFuH76AKvGNQyMCmfe1GG0Dw+kabAf/du7PtBocamNrYdzEAEfvSStaQCmC/HjySzZcoyuLUPoobNSalzIwKhwnrixG3/+citrD2ZybZdmLr3/os1Hycwv5rlbelBYYmNYxwi9GqCpF1qIHMSRrAI2pWfz5I3d9GE+jcu5sVcrGgf68eXGwy4VolKrjfcTjTQn9w3voN/7mgahl+YcxNJtxwEY16+Nmy3RXIk08vPhd/3b8kvKKbLyi1123++2H+dwVgEPx3bWIqRpMFqIHIBSim+3HGNwdDjtwoMufYFG4wRuH9KeYqvNZZEWbDbFu8sP0L1VKKN7tHTJPTXeiRYiB7DrxFn2n87jVu2koHEj3VuF0a99E77ceMQlgVB/3HmSg2fyefi6zlh0mhPNZaCFyAEs2XocX4tw81Wt3W2K5grnjiHtOXA6z+nneJRS/N/y/XRsHsyY3vp9r7k8tBBdJlabYunW44zq2pymwTo1ssa93NKnDcH+Pny58YhT7/Pr7tPsOXmOP8V01kkfNZeN6YRIRJqKyGIRyReRdBG5s5a2M0SkpEKa8DwR6Vihvp+IJItIgf25n6PtXX8ok5NnCxnXXy/LadxPcIAvt/Zrw/fbj3O2sMQp90hOy+LvS3bSItSfW7VzjsYBmE6IgPeAYqAlEAfMEpFetbT/SikVUuGRCiAi/sAS4AsgHJgLLLGXO4ylW48T7O/D9XqzVmMSfj84ksISG0u3Hnd438np2dzx0XpO5haSXVDC9qO5Dr+H5srDVEIkIsHAROA5pVSeUmo1sBSY0oDuYjDOSb2llCpSSr0DCHCdo+xNSs1g8ZZjDIoOJ9BfZ2HVmIO+7RrTvVUoX2487PC+k1IzKbbaAMNrTofy0TgCsx1o7QpYlVL7KpRtA0bVcs1YEckCTgDvKqVm2ct7AdtVZfeh7fbyn6p2IiLTgGkAzZs3JzExsVZDD2RbeWVDIaUK1uzPYM7iX+kc7hlilJeXd8nxeTJ6fDAwvIT43cXc//7PXN3a12HvTd/s0vKffQQCctJJTHScu7j+212ZmE2IQoCqc/1coKaYOQuA2cApYCjwjYjkKKXm17cvpdRse19069ZNxcTE1GrozuX7KbXrpQKKmkQRE9O51mvMQmJiIpcanyejxweWvWeI372BXw+XsuaEzWGR4ANTM2FDEuP7tWHK1dEOD+Wj/3ZXJi4VIhFJpObZzRrgESCsSnkYcK66C5RSuyq8XCsibwOTgPlAXn36qi/23Hc675DGlOw4fuE7WFk0bEeIxsr9Z/CxCC+O701YI7/L6qukpISjR49SWFhYXta4cWN27959uWaaFk8en4+PD02aNKFZs2ZYLI7d1XGpECmlYmqrt+8R+YpIF6XUfntxXyClrreA8vQsKcBfRUQqLM/1wXCGuCysNsXSbcdpFx7I7YPbc3WnZjrIo8ZUDOsYgb+PhWKrDYvFcekhVu3PoH/7JpctQgBHjx4lNDSU6Ojo8vBA586dIzTUe4MGe+r4lFKUlJRw6tQpjh49SmRkpEP7N5WzglIqH1gEvCgiwSIyHBgHfF5dexEZJyLhYjAEeBTDUw4gEbACj4pIgIg8bC9ffrl2fr/9OAdO5/G3MT103iGNKRkYFU781KGEBvjSs3WYQ96jWfnF7DiWy8iuzR1gIRQWFhIREaFj1HkAIoK/vz9t27YlPz/f4f2bSojsPAQEAqcxltgeVEqlAIjICBHJq9D2duAAxnLbZ8C/lFJzAZRSxcB44G4gB7gPGG8vbzClVhtvLdtP91ahjOnd6nK60micyuDopvxheDTbj+VyPOf8Zfe3+kAGSsEIB0b31iLkWTh6Sa4MszkroJTKwhCQ6upWYTghlL2+4xJ9bQEGOtK+b7ce51BGPh9OGajja2lMz6SB7Xln+QEWbT7Kw9d1uay+Vu47Q+NAP/q0c33yPY13Y8YZkWkpsdp459f99GoTxg099QFWjfmJjAhiaIemLEw+elmBUJVSrNp/hms7N9MhfTQORwtRPVi0+SiHswp4/PqueklB4zHcNqg9aZkFbExreCDUfafyOHW2iJFdXZv9VVM/EhMTEREyMjLcbUq90EJUR4pLbbzz6wH6tm/Cdd1buNscjabO/PaqVgT7+/D1poYHQl257wwAI7o4xlHBG9iyZQs+Pj4MHz68XtfNmDGD3r17O8kqz0QLUR15/Ze9HMs5z619W+vZkMajCPL35ZY+bfhhxwnyi0ovfUE1rNx/hs4tQmjTJNDB1l0m8fEQHQ0Wi/EcH++yW3/00Uc89NBD7Ny502PPBpkFLUR1YH1qJrNXpgLw2s97nZ7rRaNxNLcNakdBsZUfdpyo97WFJVY2HMpipNlmQ/HxMG0apKeDUsbztGkuEaPz588zb948pk6dyqRJk/j4448r1R8/fpy4uDgiIiIICgqiX79+JCQkEB8fzwsvvEBKSgoigojw6aefAoYH4cKFCyv1Ex0dzeuvv17++s0336RPnz4EBwfTtm1bHnjgAXJycpw+XmdjOq85M/Lp2rTynx15Sl2jcRUDo8Lp2CyYhZuOMnlQ+3pdu+FQFkWlNkY4e3/osccITE4GnzrGxUtKgqKiymUFBXD//fDRR3Xro18/eOut+tkJLFy4kKioKPr06cOUKVOYPHkyM2fOxM/Pj/z8fEaNGkWLFi1YvHgxbdu2Zdu2bQBMmDCBAwcO8P3335fHnGvcuHGd72uxWHjrrbfo2LEj6enpPPLIIzzyyCN8/nm1Ry09Bi1El8BmU2w/moOgw/loPBcRYdKgdrz6017SMvKJbhZc52tX7juDv4+FYR1M9r6vKkKXKncgc+bMYcoUIynAqFGjCAoKYunSpUycOJF58+Zx8uRJ1q1bR7Nmhnh36tQJMCIrhISE4OvrS6tW9T+H+Nhjj5X/HB0dzauvvsq4ceOYO3eu0874uAItRJdg2e5THMsp5LHRXfDzMURIz4Y0nsjEAe147ae9PLNoO0/e2L3O7+NV+zMY3MEFqU7eeovz9QmBEx1tLMdVJSoKnBjh+sCBA6xZs4b58+cDhsjHxcUxZ84cJk6cyJYtW+jTp0+5CDmS5cuXM3PmTHbv3k1ubi5Wq5Xi4mJOnjxJmzaem6RQC1EtKKX4YMVB2jcN5OHYzvj6eO43Do3maPZ5RCApNYu4OUl1ish9MreQvafOMWFAdxdZWQ9eftnYEyoouFAWFGSUO5E5c+ZgtVorxVsrO6N15MiRBp/XEpGLri0puZBlNz09nZtvvpmpU6fy4osvEhERwebNm7njjjsoLr6sgDFuR3+y1sLGtGw2H85h6oiOWoQ0Hk9SaiZln3NFJbY6JbVbtd/EbttxcTB7tjEDEjGeZ882yp1EaWkpc+fOZebMmWzdurX8sW3bNvr06cMnn3zCgAED2L59e41nefz9/bFarReVN2/enBMnLjiTnDp1qtLrTZs2UVxczP/+7/9y9dVX07VrV44fd3wWXnegZ0S18MGKgzQN9ue2gfXb3NVozMiwjhEE+FkoLLGhgKiIoEtes3J/Bs1CAujR2qQRo+PinCo8Vfnhhx/IyMhg6tSpRERU3jO7/fbbmTVrFikpKbzyyiuMHz+emTNn0q5dO3bs2EFoaCiDBg0iOjqa9PR0Nm/eTGRkJKGhoQQEBHDdddfx3nvvcc011+Dj48Ozzz5Lo0aNyvvv0qULNpuNt956iwkTJpCUlMRbDXC0MCP6a34N7D15juV7TnPvNYzswFsAABHqSURBVNE6DbjGKxgYFU78A8N4MKYTQf4+fLY2HZut5mUkm02RuOcULUMD2HzY812EHcHHH39MbGzsRSIEcNttt5Gens6aNWtYsWIFbdu2ZezYsfTq1Yvnn3++/PzhxIkT+e1vf8tvfvMbmjdvXr7X9MYbb9CxY0diYmKYNGkSDzzwAC1aXDg836dPH95++23efPNNevbsyZw5cyq5dnsycjnxp7yVbt26qZtf/IqfUk6y9pnraBLk726THIq3Z4nU47s0X286wpMLt/PiuF7cfXV0tW1e/mEXH606hAABfhaHZXktY/fu3fTo0aNSmafm66kr3jC+6v5uZYhIslJqUH371DOiaii1wZJtx7ljSKTXiZBGAzBpYDtGdm3OKz/u4UhWQaU6pRRvLdvHR6sOGa+5cH5Oo3EGWoiq4WyxQoD7r+3gblM0GqcgIsyccBUWEZ5ZtL3cW6vUauPZxTt4a9l+Yro2p5GfBR99fk7jZLSzQjWcLVbc3LmZ+eJqaTQOpG2TQP722+5MX7yTrzYeYVy/tjwyfwvLdp/iT7GdeOKGbmw+nENSaqY+P6dxKlqIamBdaibJ6dn6n0/j1dwxOJLvt53gxe928fav+zmRW1hp32hgVLj+H9A4HdMtzYlIUxFZLCL5IpIuInfW0vZHEcmr8CgWkR0V6tNE5HyF+l/qakepVa+Ja7wfi0W4a1gkBSVWTuQW4ucj9GpT99hnGo0jMOOM6D2gGGgJ9AN+EJFtSqmUqg2VUmMqvhaRRGB5lWZjlVLL6muEXhPXXCmkZRZgEbApw2VbB/XVuBpTzYhEJBiYCDynlMpTSq0GlgJT6nBtNDACuOwwtOEB4nBXVY3GrAzrGIG/r3ZK0LgPs82IugJWpdS+CmXbgFF1uPZuYJVS6lCV8ngRsQBbgCeVUtsu1VHjANEipLliKDvoqp0SNO7CbEIUAuRWKcsF6nIC7G7gpSplccBmQIA/Az+LSHel1EXHxEVkGjANjJhPiU6M3utu8vLy9Pg8GGeNr5fAuUNHSaz6Vc5JNG7cmHPnzlUqs1qtF5V5E94wvsLCQse//5RSLnsAiRjn46p7rAb6AwVVrvkr8N0l+r0WyANCLtFuD8aeUa12du3aVXkzCQkJ7jbBqejx/f/27j04qjLN4/j3Ry4kRlgFQnQyEojhbnGJgrIMLBaMMGvVji6zKSu4RShYFKRY1gtaskJAnZnoyg7OKiyFlLcVTYHrlsWtaovESryBYAYkoMhIUBdYdVEQQqTMu3+ck6YTEy6hO6dP83yqTpFz3nMOz5PuztN9ztvvGw61tbU/2Xbs2LFzHldW5tyWLWffZ8sWb79Ecz75JbrWHrcmwAeuHbWhQ+8ROefGOefUxvIL4BMgVVLfqMOGAj/pqNDCVOB159z35woB79ORMSakRoyAoiKoqGi9vaLCax8xIj7/f0lJSWSa7+ilpqYmPv9hB6isrERSmyOGx1tCdVZwzp0AXgeWSMqSNBr4NWfpgCApE/g74PkW23tJGi0pXVKGpAeAHsDbcUvAGBN3N98M5eWtF6OmIlRe7u0XLxMmTODQoUPNluuuu65d54qec+hSlVCFyDcbyAT+F1gDzHJ+121JYyS1/NRzG959pJbvj7oAy4GjwJfAJOBXzjn7cpAxIddaMeqoIgTQuXNnrrrqqmZLamoqDQ0NzJs3j5ycHDIyMrjpppuorq6OHFdVVYUkNmzYwMiRI0lPT2fz5s0AvPnmm1x//fVkZGTQp08fFixY0GzCux9++IGHH36YvLw8OnfuTH5+Pk8//TTg3XuaPn06ffr0ITMzk759+/LEE0/Q2NgYOX7Xrl2MHz+erl270qVLF4YOHUpFRQUHDhzgZv8Xlp2djSRKSkri+wtsIdE6K+Cc+z+84tJaWxVeh4bobWvwClbLfXcDQ+IRozEm9ubNg+3bM0m5gFlXfvYzmDgRrr4aDh2CgQNh8WJvOR/DhkEsp/SZP38+5eXlrF69mvz8fJYuXcqkSZPYt28fV199dWS/Bx98kKeeeoqCggK6dOnC5s2bmTJlCsuWLWPs2LEcPHiQu+++m4aGhshUD1OnTqWqqoply5YxfPhw6urq+PzzzwFobGwkNzeX8vJysrOz2bp1KzNnzqR79+5Mnz4dgOLiYoYOHcrWrVtJTU1l165dZGRkcM0117Bu3TomT57M7t276datG5mZHTu8WcIVImOMOV9XXukVoYMHoVcvb70jbNq0icsvP/OeeMyYMaxdu5bly5ezatUqbr31VgBWrFjBli1beOaZZ3jssTOdektLS7nlllsi648//jgPPPAA06ZNA+Daa6+lrKyMO++8kyeffJJPP/2UV199lY0bNzJp0iQA8vPzI8enpaWxZMmSyHrv3r3ZsWMHa9asiRSiuro67r//fgYM8KZ9LygoiOzfrVs3AHr27EmPHj1i80u6AFaIjDEJ4Q9/gOPH6y9ovp6my3GPPALLl8OiRfG/LAcwduxYVq5cGVnPzMxk//79nD59mtGjR0e2p6SkMGrUKGpra5sdf8MNzafs2b59O1u3bqWsrCyyrbGxkfr6eg4fPsyHH35Ip06dIpfQWrNixQpWrVpFXV0d9fX1nD59mry8vEj7vffey4wZM3jhhRcYP348kydPjhSloCXiPSJjjDmn6HtCS5a03YEhHi677DIKCgoiS25ubmQqjaaZWKO13JaVldVsvbGxkUWLFlFTUxNZdu7cyb59+8jOzo6cuy2vvfYa8+bNo6SkhM2bN1NTU8Ps2bOb3WMqLS2ltraW2267jXfeeYchQ4awevXq9v4KYsoKkTEmdFrrmHC23nQdoaCggPT09GadE3788UfeffddBg0adNZjCwsL2bt3b7Pi1rSkpqZSWFhIY2MjFW0kVl1dzY033sicOXMoLCykoKCA/fv3/2S/vn37MnfuXNavX8/06dNZtWoVAOnp6ZF4g2CFyBgTKmfrHRdkMcrKymLWrFk89NBDbNiwgT179jBr1iyOHDnC7Nmzz3rswoULeeWVV1i4cCEfffQRe/fuZe3atcyfPx/wCkhRUREzZsxg3bp1fPbZZ1RVVfHSS943W/r168eOHTvYuHEj+/bt49FHH+Wtt96KnL++vp577rmHyspKDhw4wPvvv091dXWkQObl5SGJ9evX89VXX/H99+f6SmZsWSEyxoTKtm1n76LdVIy2bevYuADKysooKipi2rRpDBs2jJ07d7Jp06ZmPeZaM3HiRNavX09FRQUjR45k5MiR/P73v6dXr16RfV588UWKi4uZO3cuAwYMoKSkhO++80ZEu+uuuygqKqK4uJgRI0Zw4MAB7rvvvsixKSkpHD16lKlTp9K/f39uv/12Ro0axdKlSwHIzc1l8eLFLFiwgJycHObMmROH307bdK5rj5ei/v37u48//jjoMOKmsrKScePGBR1G3Fh+4bBnzx4GDhzYbNvx48cvqLNC2CRDfq09bk0kbXfO3dBq41nYJyJjjDGBskJkjDEmUFaIjDHGBMoKkTHGmEBZITLGBMY6S4VLvB4vK0TGmECkpKTYFAghU19fT1paWszPa4XIGBOIK664giNHjjSbqsAkJuccJ0+e5Msvv6Rnz54xP78NemqMCUSPHj344osviP7O3qlTp8jIyAgwqvgKc35paWnk5OTQtWvXmJ/bCpExJhCdOnVqNnIAeF/WHT58eEARxV+y59dedmnOGGNMoKwQGWOMCVTCFSJJcyR9IKlB0vPnsf8/STos6TtJqyV1jmrrLalC0klJeyVNiGvwxhhjLljCFSLgf4DHgHPO2CRpIvAQMB7oDeQD0bPVrwE+BLoDC4C1krJjHK8xxpiLkHCFyDn3unPuDeCb89h9KvCcc263c+4o8ChQAiCpH1AILHLO1Tvn1gG7gMnxidwYY0x7hL3X3GDgv6LW/wTkSOrut/3ZOXe8Rfvg1k4kaSYw019tkPRRHOJNFD2Ar4MOIo4sv/BK5twg+fPr356Dwl6ILge+i1pv+rlLK21N7bmtncg5txJYCSDpg/bMqREWll+4JXN+yZwbXBr5tee4Dr00J6lSkmtjqT73GX7ieyD621VNPx9vpa2p/TjGGGMSRocWIufcOOec2lh+0Y5T7gaGRq0PBY44577x2/IldWnRvrv9GRhjjIm1hOusIClVUgaQAqRIypDU1iXEF4HpkgZJuhL4Z+B5AOfcJ0ANsMg/x+3AEGDdeYSx8mLzSHCWX7glc37JnBtYfq1Sog3DLqkUWNRi82LnXKmkXkAtMMg5d9Df/17gQSATr8jc7Zxr8Nt64xWmG4GDwD3Ouf+OfxbGGGPOV8IVImOMMZeWhLs0Z4wx5tJihcgYY0ygrBBFkdRN0n9KOiGpTlJx0DFdjLON2ydpvD/+3kl/PL68gMJsF0mdJT3nP07HJX0o6VdR7aHOD0DSy5IOSTom6RNJM6LaQp8fgKS+kk5JejlqW7H/uJ6Q9IakbkHG2F7+11VOSfreXz6Oagt9jpLukLTHz2G/pDH+9gt+blohau4Z4AcgB5gCLJfU6kgMIdHquH2SegCvA48A3YAPgNc6PLqLkwp8DvwV8Bd4uZT7A90mQ34AvwN6O+e6An8DPCbp+iTKD7zX3LamFf/19u/A3+O9Dk8CzwYTWkzMcc5d7i/9ITlylPRLoAyYhjeAwFjgz+19blpnBZ+kLOAocJ3f9RtJLwFfOuceCjS4iyTpMeDnzrkSf30mUOKc+0t/PQtv2JHhzrm9gQV6kSTtxBv0tjtJlp+k/kAl8I/AFSRBfpLuAP4WrydsgXPuTkm/xSu+xf4+1wJ7gO4thutKeJIqgZedc6tabA99jpLewRvn87kW29v1t8U+EZ3RD/ixqQj52hybLuQG4+UGgHPuBLCfEOcqKQfvMdxNEuUn6VlJJ4G9wCFgA0mQn6SuwBLgvhZNLXPbj3eVol/HRRdTv5P0taS3JY3zt4U6R0kpwA1AtqRPJX0h6d8kZdLO56YVojPaGpuuSyv7hl1S5SopDfgP4AX/XVfS5Oecm40X9xi8Sx4NJEd+j+K9o/68xfZkyK3Jg3hT0+TifdHzTf/TT9hzzAHSgN/gPS+HAcPxBhRoV25WiM64lMamS5pcJXUCXsJ7RznH35w0+QE45350zlUDPwdmEfL8JA0DJgD/2kpzqHOL5px73zl33DnX4Jx7AXgb+GvCn2O9/+8fnXOHnHNfA0u5iNysEJ3xCZAqqW/UtmQdm67ZGH3+ddxrCVmukgQ8h/cObbJz7rTflBT5tSKVM3mEOb9xeBNZHpR0GLgfmCxpBz/NLR/ojPf6DDsHiJDn6M/99gVePi2177npnLPFX4BX8WZ1zQJG432kHBx0XBeRTyqQgdf76iX/51Qg289tsr+tDHgv6Hjbkd8K4D3g8hbbQ58f0BO4A+9SRwowETgB/Drs+QGXAVdFLf8CrPXzGgwcw7vkkwW8DLwadMztyPEK/zFres1N8R+//smQI979vW3+8/RKoArvcmu7npuBJ5RIC153wzf8J8xBoDjomC4yn1K8dy3RS6nfNgHvBng9Xm+s3kHHe4G55fn5nMK7HNC0TEmS/LKBt4Bv/T9au4B/iGoPdX4tci3F613WtF7sv/5O4E182S3oGNv5+G3DuyT1Ld4bpl8mS45494ie9XM7DDwNZPhtF/zctO7bxhhjAmX3iIwxxgTKCpExxphAWSEyxhgTKCtExhhjAmWFyBhjTKCsEBljjAmUFSJjjDGBskJkTEhI6iqpVNLAoGMxJpasEBkTHjcAi/C+1W5M0rBCZEx4DMebBqI26ECMiSUb4seYEJC0BxjQYvM659xvgojHmFiyQmRMCEgagTc6/G7gt/7mQ865uuCiMiY2UoMOwBhzXv6ENzHeH51z7wUdjDGxZPeIjAmHwUA6sCPoQIyJNStExoRDId78SzVBB2JMrFkhMiYchgP7nXPHgg7EmFizQmRMOAzCum2bJGWdFYwJh2+BQkkTge+Afc65bwKOyZiYsO7bxoSApOuA54AhQAYwxjlXHWxUxsSGFSJjjDGBsntExhhjAmWFyBhjTKCsEBljjAmUFSJjjDGBskJkjDEmUFaIjDHGBMoKkTHGmEBZITLGGBOo/wcbS42gwKoCgwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_multiple_forecasts(X_new, Y_new, Y_pred)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's create an RNN that predicts the next 10 steps at each time step. That is, instead of just forecasting time steps 50 to 59 based on time steps 0 to 49, it will forecast time steps 1 to 10 at time step 0, then time steps 2 to 11 at time step 1, and so on, and finally it will forecast time steps 50 to 59 at the last time step. Notice that the model is causal: when it makes predictions at any time step, it can only see past time steps." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "np.random.seed(42)\n", "\n", "n_steps = 50\n", "series = generate_time_series(10000, n_steps + 10)\n", "X_train = series[:7000, :n_steps]\n", "X_valid = series[7000:9000, :n_steps]\n", "X_test = series[9000:, :n_steps]\n", "Y = np.empty((10000, n_steps, 10))\n", "for step_ahead in range(1, 10 + 1):\n", " Y[..., step_ahead - 1] = series[..., step_ahead:step_ahead + n_steps, 0]\n", "Y_train = Y[:7000]\n", "Y_valid = Y[7000:9000]\n", "Y_test = Y[9000:]" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((7000, 50, 1), (7000, 50, 10))" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train.shape, Y_train.shape" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 7s 1ms/sample - loss: 0.0505 - last_time_step_mse: 0.0395 - val_loss: 0.0422 - val_last_time_step_mse: 0.0321\n", "Epoch 2/20\n", "7000/7000 [==============================] - 6s 889us/sample - loss: 0.0408 - last_time_step_mse: 0.0306 - val_loss: 0.0421 - val_last_time_step_mse: 0.0350\n", "Epoch 3/20\n", "7000/7000 [==============================] - 6s 897us/sample - loss: 0.0376 - last_time_step_mse: 0.0291 - val_loss: 0.0345 - val_last_time_step_mse: 0.0270\n", "Epoch 4/20\n", "7000/7000 [==============================] - 6s 891us/sample - loss: 0.0317 - last_time_step_mse: 0.0215 - val_loss: 0.0274 - val_last_time_step_mse: 0.0155\n", "Epoch 5/20\n", "7000/7000 [==============================] - 6s 879us/sample - loss: 0.0279 - last_time_step_mse: 0.0166 - val_loss: 0.0259 - val_last_time_step_mse: 0.0136\n", "Epoch 6/20\n", "7000/7000 [==============================] - 6s 875us/sample - loss: 0.0244 - last_time_step_mse: 0.0120 - val_loss: 0.0233 - val_last_time_step_mse: 0.0105\n", "Epoch 7/20\n", "7000/7000 [==============================] - 6s 880us/sample - loss: 0.0225 - last_time_step_mse: 0.0101 - val_loss: 0.0213 - val_last_time_step_mse: 0.0091\n", "Epoch 8/20\n", "7000/7000 [==============================] - 6s 900us/sample - loss: 0.0210 - last_time_step_mse: 0.0086 - val_loss: 0.0201 - val_last_time_step_mse: 0.0082\n", "Epoch 9/20\n", "7000/7000 [==============================] - 6s 895us/sample - loss: 0.0203 - last_time_step_mse: 0.0080 - val_loss: 0.0212 - val_last_time_step_mse: 0.0097\n", "Epoch 10/20\n", "7000/7000 [==============================] - 6s 845us/sample - loss: 0.0198 - last_time_step_mse: 0.0076 - val_loss: 0.0196 - val_last_time_step_mse: 0.0080\n", "Epoch 11/20\n", "7000/7000 [==============================] - 6s 843us/sample - loss: 0.0196 - last_time_step_mse: 0.0074 - val_loss: 0.0188 - val_last_time_step_mse: 0.0068\n", "Epoch 12/20\n", "7000/7000 [==============================] - 6s 837us/sample - loss: 0.0191 - last_time_step_mse: 0.0071 - val_loss: 0.0190 - val_last_time_step_mse: 0.0067\n", "Epoch 13/20\n", "7000/7000 [==============================] - 6s 881us/sample - loss: 0.0189 - last_time_step_mse: 0.0069 - val_loss: 0.0184 - val_last_time_step_mse: 0.0068\n", "Epoch 14/20\n", "7000/7000 [==============================] - 6s 855us/sample - loss: 0.0193 - last_time_step_mse: 0.0076 - val_loss: 0.0198 - val_last_time_step_mse: 0.0079\n", "Epoch 15/20\n", "7000/7000 [==============================] - 6s 847us/sample - loss: 0.0189 - last_time_step_mse: 0.0070 - val_loss: 0.0181 - val_last_time_step_mse: 0.0065\n", "Epoch 16/20\n", "7000/7000 [==============================] - 6s 849us/sample - loss: 0.0189 - last_time_step_mse: 0.0072 - val_loss: 0.0180 - val_last_time_step_mse: 0.0058\n", "Epoch 17/20\n", "7000/7000 [==============================] - 6s 837us/sample - loss: 0.0186 - last_time_step_mse: 0.0068 - val_loss: 0.0173 - val_last_time_step_mse: 0.0056\n", "Epoch 18/20\n", "7000/7000 [==============================] - 6s 831us/sample - loss: 0.0181 - last_time_step_mse: 0.0063 - val_loss: 0.0184 - val_last_time_step_mse: 0.0072\n", "Epoch 19/20\n", "7000/7000 [==============================] - 6s 830us/sample - loss: 0.0184 - last_time_step_mse: 0.0067 - val_loss: 0.0180 - val_last_time_step_mse: 0.0066\n", "Epoch 20/20\n", "7000/7000 [==============================] - 6s 848us/sample - loss: 0.0181 - last_time_step_mse: 0.0066 - val_loss: 0.0198 - val_last_time_step_mse: 0.0095\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n", " keras.layers.SimpleRNN(20, return_sequences=True),\n", " keras.layers.TimeDistributed(keras.layers.Dense(10))\n", "])\n", "\n", "def last_time_step_mse(Y_true, Y_pred):\n", " return keras.metrics.mean_squared_error(Y_true[:, -1], Y_pred[:, -1])\n", "\n", "model.compile(loss=\"mse\", optimizer=keras.optimizers.Adam(lr=0.01), metrics=[last_time_step_mse])\n", "history = model.fit(X_train, Y_train, epochs=20,\n", " validation_data=(X_valid, Y_valid))" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "np.random.seed(43)\n", "\n", "series = generate_time_series(1, 50 + 10)\n", "X_new, Y_new = series[:, :50, :], series[:, 50:, :]\n", "Y_pred = model.predict(X_new)[:, -1][..., np.newaxis]" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_multiple_forecasts(X_new, Y_new, Y_pred)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Deep RNN with Batch Norm" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.1939 - last_time_step_mse: 0.1922 - val_loss: 0.0876 - val_last_time_step_mse: 0.0834\n", "Epoch 2/20\n", "7000/7000 [==============================] - 6s 840us/sample - loss: 0.0536 - last_time_step_mse: 0.0448 - val_loss: 0.0553 - val_last_time_step_mse: 0.0467\n", "Epoch 3/20\n", "7000/7000 [==============================] - 6s 854us/sample - loss: 0.0472 - last_time_step_mse: 0.0377 - val_loss: 0.0450 - val_last_time_step_mse: 0.0353\n", "Epoch 4/20\n", "7000/7000 [==============================] - 6s 843us/sample - loss: 0.0438 - last_time_step_mse: 0.0338 - val_loss: 0.0423 - val_last_time_step_mse: 0.0331\n", "Epoch 5/20\n", "7000/7000 [==============================] - 6s 849us/sample - loss: 0.0408 - last_time_step_mse: 0.0304 - val_loss: 0.0394 - val_last_time_step_mse: 0.0285\n", "Epoch 6/20\n", "7000/7000 [==============================] - 6s 835us/sample - loss: 0.0385 - last_time_step_mse: 0.0277 - val_loss: 0.0381 - val_last_time_step_mse: 0.0274\n", "Epoch 7/20\n", "7000/7000 [==============================] - 6s 831us/sample - loss: 0.0365 - last_time_step_mse: 0.0253 - val_loss: 0.0363 - val_last_time_step_mse: 0.0244\n", "Epoch 8/20\n", "7000/7000 [==============================] - 6s 829us/sample - loss: 0.0350 - last_time_step_mse: 0.0236 - val_loss: 0.0348 - val_last_time_step_mse: 0.0242\n", "Epoch 9/20\n", "7000/7000 [==============================] - 6s 830us/sample - loss: 0.0339 - last_time_step_mse: 0.0223 - val_loss: 0.0333 - val_last_time_step_mse: 0.0212\n", "Epoch 10/20\n", "7000/7000 [==============================] - 6s 830us/sample - loss: 0.0330 - last_time_step_mse: 0.0215 - val_loss: 0.0345 - val_last_time_step_mse: 0.0241\n", "Epoch 11/20\n", "7000/7000 [==============================] - 6s 835us/sample - loss: 0.0321 - last_time_step_mse: 0.0206 - val_loss: 0.0319 - val_last_time_step_mse: 0.0203\n", "Epoch 12/20\n", "7000/7000 [==============================] - 6s 843us/sample - loss: 0.0316 - last_time_step_mse: 0.0199 - val_loss: 0.0314 - val_last_time_step_mse: 0.0200\n", "Epoch 13/20\n", "7000/7000 [==============================] - 6s 842us/sample - loss: 0.0312 - last_time_step_mse: 0.0195 - val_loss: 0.0313 - val_last_time_step_mse: 0.0195\n", "Epoch 14/20\n", "7000/7000 [==============================] - 6s 844us/sample - loss: 0.0307 - last_time_step_mse: 0.0190 - val_loss: 0.0339 - val_last_time_step_mse: 0.0227\n", "Epoch 15/20\n", "7000/7000 [==============================] - 6s 845us/sample - loss: 0.0303 - last_time_step_mse: 0.0183 - val_loss: 0.0306 - val_last_time_step_mse: 0.0184\n", "Epoch 16/20\n", "7000/7000 [==============================] - 6s 846us/sample - loss: 0.0297 - last_time_step_mse: 0.0178 - val_loss: 0.0292 - val_last_time_step_mse: 0.0172\n", "Epoch 17/20\n", "7000/7000 [==============================] - 6s 840us/sample - loss: 0.0294 - last_time_step_mse: 0.0174 - val_loss: 0.0291 - val_last_time_step_mse: 0.0168\n", "Epoch 18/20\n", "7000/7000 [==============================] - 6s 845us/sample - loss: 0.0291 - last_time_step_mse: 0.0172 - val_loss: 0.0286 - val_last_time_step_mse: 0.0160\n", "Epoch 19/20\n", "7000/7000 [==============================] - 6s 841us/sample - loss: 0.0288 - last_time_step_mse: 0.0169 - val_loss: 0.0294 - val_last_time_step_mse: 0.0174\n", "Epoch 20/20\n", "7000/7000 [==============================] - 6s 838us/sample - loss: 0.0282 - last_time_step_mse: 0.0161 - val_loss: 0.0289 - val_last_time_step_mse: 0.0171\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.SimpleRNN(20, return_sequences=True),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.TimeDistributed(keras.layers.Dense(10))\n", "])\n", "\n", "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n", "history = model.fit(X_train, Y_train, epochs=20,\n", " validation_data=(X_valid, Y_valid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Deep RNNs with Layer Norm" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "from tensorflow.keras.layers import LayerNormalization" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "class LNSimpleRNNCell(keras.layers.Layer):\n", " def __init__(self, units, activation=\"tanh\", **kwargs):\n", " super().__init__(**kwargs)\n", " self.state_size = units\n", " self.output_size = units\n", " self.simple_rnn_cell = keras.layers.SimpleRNNCell(units,\n", " activation=None)\n", " self.layer_norm = LayerNormalization()\n", " self.activation = keras.activations.get(activation)\n", " def get_initial_state(self, inputs=None, batch_size=None, dtype=None):\n", " if inputs is not None:\n", " batch_size = tf.shape(inputs)[0]\n", " dtype = inputs.dtype\n", " return [tf.zeros([batch_size, self.state_size], dtype=dtype)]\n", " def call(self, inputs, states):\n", " outputs, new_states = self.simple_rnn_cell(inputs, states)\n", " norm_outputs = self.activation(self.layer_norm(outputs))\n", " return norm_outputs, [norm_outputs]" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 16s 2ms/sample - loss: 0.1636 - last_time_step_mse: 0.1493 - val_loss: 0.0725 - val_last_time_step_mse: 0.0675\n", "Epoch 2/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0629 - last_time_step_mse: 0.0548 - val_loss: 0.0562 - val_last_time_step_mse: 0.0448\n", "Epoch 3/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0528 - last_time_step_mse: 0.0415 - val_loss: 0.0487 - val_last_time_step_mse: 0.0357\n", "Epoch 4/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0466 - last_time_step_mse: 0.0344 - val_loss: 0.0443 - val_last_time_step_mse: 0.0315\n", "Epoch 5/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0428 - last_time_step_mse: 0.0306 - val_loss: 0.0408 - val_last_time_step_mse: 0.0284\n", "Epoch 6/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0398 - last_time_step_mse: 0.0275 - val_loss: 0.0377 - val_last_time_step_mse: 0.0246\n", "Epoch 7/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0376 - last_time_step_mse: 0.0257 - val_loss: 0.0368 - val_last_time_step_mse: 0.0254\n", "Epoch 8/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0356 - last_time_step_mse: 0.0237 - val_loss: 0.0351 - val_last_time_step_mse: 0.0240\n", "Epoch 9/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0343 - last_time_step_mse: 0.0223 - val_loss: 0.0333 - val_last_time_step_mse: 0.0210\n", "Epoch 10/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0331 - last_time_step_mse: 0.0211 - val_loss: 0.0321 - val_last_time_step_mse: 0.0199\n", "Epoch 11/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0323 - last_time_step_mse: 0.0203 - val_loss: 0.0316 - val_last_time_step_mse: 0.0193\n", "Epoch 12/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0317 - last_time_step_mse: 0.0196 - val_loss: 0.0311 - val_last_time_step_mse: 0.0198\n", "Epoch 13/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0309 - last_time_step_mse: 0.0188 - val_loss: 0.0301 - val_last_time_step_mse: 0.0169\n", "Epoch 14/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0304 - last_time_step_mse: 0.0181 - val_loss: 0.0296 - val_last_time_step_mse: 0.0171\n", "Epoch 15/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0299 - last_time_step_mse: 0.0174 - val_loss: 0.0295 - val_last_time_step_mse: 0.0168\n", "Epoch 16/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0295 - last_time_step_mse: 0.0170 - val_loss: 0.0293 - val_last_time_step_mse: 0.0171\n", "Epoch 17/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0292 - last_time_step_mse: 0.0166 - val_loss: 0.0288 - val_last_time_step_mse: 0.0162\n", "Epoch 18/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0288 - last_time_step_mse: 0.0160 - val_loss: 0.0294 - val_last_time_step_mse: 0.0175\n", "Epoch 19/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0284 - last_time_step_mse: 0.0158 - val_loss: 0.0277 - val_last_time_step_mse: 0.0151\n", "Epoch 20/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0281 - last_time_step_mse: 0.0153 - val_loss: 0.0275 - val_last_time_step_mse: 0.0149\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " keras.layers.RNN(LNSimpleRNNCell(20), return_sequences=True,\n", " input_shape=[None, 1]),\n", " keras.layers.RNN(LNSimpleRNNCell(20), return_sequences=True),\n", " keras.layers.TimeDistributed(keras.layers.Dense(10))\n", "])\n", "\n", "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n", "history = model.fit(X_train, Y_train, epochs=20,\n", " validation_data=(X_valid, Y_valid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Creating a Custom RNN Class" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "class MyRNN(keras.layers.Layer):\n", " def __init__(self, cell, return_sequences=False, **kwargs):\n", " super().__init__(**kwargs)\n", " self.cell = cell\n", " self.return_sequences = return_sequences\n", " self.get_initial_state = getattr(\n", " self.cell, \"get_initial_state\", self.fallback_initial_state)\n", " def fallback_initial_state(self, inputs):\n", " return [tf.zeros([self.cell.state_size], dtype=inputs.dtype)]\n", " @tf.function\n", " def call(self, inputs):\n", " states = self.get_initial_state(inputs)\n", " n_steps = tf.shape(inputs)[1]\n", " if self.return_sequences:\n", " sequences = tf.TensorArray(inputs.dtype, size=n_steps)\n", " outputs = tf.zeros(shape=[n_steps, self.cell.output_size], dtype=inputs.dtype)\n", " for step in tf.range(n_steps):\n", " outputs, states = self.cell(inputs[:, step], states)\n", " if self.return_sequences:\n", " sequences = sequences.write(step, outputs)\n", " if self.return_sequences:\n", " return sequences.stack()\n", " else:\n", " return outputs" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 16s 2ms/sample - loss: 0.2296 - last_time_step_mse: 0.2117 - val_loss: 0.1150 - val_last_time_step_mse: 0.1047\n", "Epoch 2/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0869 - last_time_step_mse: 0.0769 - val_loss: 0.0637 - val_last_time_step_mse: 0.0535\n", "Epoch 3/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0562 - last_time_step_mse: 0.0452 - val_loss: 0.0514 - val_last_time_step_mse: 0.0397\n", "Epoch 4/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0475 - last_time_step_mse: 0.0342 - val_loss: 0.0433 - val_last_time_step_mse: 0.0279\n", "Epoch 5/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0414 - last_time_step_mse: 0.0268 - val_loss: 0.0393 - val_last_time_step_mse: 0.0244\n", "Epoch 6/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0380 - last_time_step_mse: 0.0232 - val_loss: 0.0366 - val_last_time_step_mse: 0.0215\n", "Epoch 7/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0357 - last_time_step_mse: 0.0210 - val_loss: 0.0342 - val_last_time_step_mse: 0.0192\n", "Epoch 8/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0347 - last_time_step_mse: 0.0202 - val_loss: 0.0361 - val_last_time_step_mse: 0.0214\n", "Epoch 9/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0339 - last_time_step_mse: 0.0192 - val_loss: 0.0329 - val_last_time_step_mse: 0.0175\n", "Epoch 10/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0327 - last_time_step_mse: 0.0181 - val_loss: 0.0320 - val_last_time_step_mse: 0.0171\n", "Epoch 11/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0319 - last_time_step_mse: 0.0176 - val_loss: 0.0315 - val_last_time_step_mse: 0.0170\n", "Epoch 12/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0311 - last_time_step_mse: 0.0171 - val_loss: 0.0307 - val_last_time_step_mse: 0.0161\n", "Epoch 13/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0307 - last_time_step_mse: 0.0166 - val_loss: 0.0304 - val_last_time_step_mse: 0.0166\n", "Epoch 14/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0302 - last_time_step_mse: 0.0163 - val_loss: 0.0300 - val_last_time_step_mse: 0.0159\n", "Epoch 15/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0297 - last_time_step_mse: 0.0159 - val_loss: 0.0294 - val_last_time_step_mse: 0.0154\n", "Epoch 16/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0293 - last_time_step_mse: 0.0155 - val_loss: 0.0291 - val_last_time_step_mse: 0.0155\n", "Epoch 17/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0288 - last_time_step_mse: 0.0151 - val_loss: 0.0283 - val_last_time_step_mse: 0.0141\n", "Epoch 18/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0283 - last_time_step_mse: 0.0146 - val_loss: 0.0287 - val_last_time_step_mse: 0.0153\n", "Epoch 19/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0280 - last_time_step_mse: 0.0144 - val_loss: 0.0275 - val_last_time_step_mse: 0.0134\n", "Epoch 20/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0275 - last_time_step_mse: 0.0138 - val_loss: 0.0276 - val_last_time_step_mse: 0.0139\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " MyRNN(LNSimpleRNNCell(20), return_sequences=True,\n", " input_shape=[None, 1]),\n", " MyRNN(LNSimpleRNNCell(20), return_sequences=True),\n", " keras.layers.TimeDistributed(keras.layers.Dense(10))\n", "])\n", "\n", "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n", "history = model.fit(X_train, Y_train, epochs=20,\n", " validation_data=(X_valid, Y_valid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# LSTMs" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0759 - last_time_step_mse: 0.0615 - val_loss: 0.0551 - val_last_time_step_mse: 0.0364\n", "Epoch 2/20\n", "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0477 - last_time_step_mse: 0.0275 - val_loss: 0.0421 - val_last_time_step_mse: 0.0211\n", "Epoch 3/20\n", "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0390 - last_time_step_mse: 0.0183 - val_loss: 0.0364 - val_last_time_step_mse: 0.0151\n", "Epoch 4/20\n", "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0351 - last_time_step_mse: 0.0152 - val_loss: 0.0336 - val_last_time_step_mse: 0.0132\n", "Epoch 5/20\n", "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0327 - last_time_step_mse: 0.0135 - val_loss: 0.0314 - val_last_time_step_mse: 0.0121\n", "Epoch 6/20\n", "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0311 - last_time_step_mse: 0.0126 - val_loss: 0.0302 - val_last_time_step_mse: 0.0114\n", "Epoch 7/20\n", "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0300 - last_time_step_mse: 0.0120 - val_loss: 0.0293 - val_last_time_step_mse: 0.0111\n", "Epoch 8/20\n", "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0292 - last_time_step_mse: 0.0115 - val_loss: 0.0283 - val_last_time_step_mse: 0.0103\n", "Epoch 9/20\n", "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0283 - last_time_step_mse: 0.0110 - val_loss: 0.0289 - val_last_time_step_mse: 0.0112\n", "Epoch 10/20\n", "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0277 - last_time_step_mse: 0.0105 - val_loss: 0.0272 - val_last_time_step_mse: 0.0102\n", "Epoch 11/20\n", "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0271 - last_time_step_mse: 0.0104 - val_loss: 0.0268 - val_last_time_step_mse: 0.0101\n", "Epoch 12/20\n", "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0266 - last_time_step_mse: 0.0100 - val_loss: 0.0268 - val_last_time_step_mse: 0.0102\n", "Epoch 13/20\n", "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0262 - last_time_step_mse: 0.0098 - val_loss: 0.0260 - val_last_time_step_mse: 0.0100\n", "Epoch 14/20\n", "7000/7000 [==============================] - 12s 2ms/sample - loss: 0.0259 - last_time_step_mse: 0.0098 - val_loss: 0.0254 - val_last_time_step_mse: 0.0095\n", "Epoch 15/20\n", "7000/7000 [==============================] - 11s 2ms/sample - loss: 0.0255 - last_time_step_mse: 0.0097 - val_loss: 0.0259 - val_last_time_step_mse: 0.0112\n", "Epoch 16/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0252 - last_time_step_mse: 0.0095 - val_loss: 0.0250 - val_last_time_step_mse: 0.0098\n", "Epoch 17/20\n", "7000/7000 [==============================] - 15s 2ms/sample - loss: 0.0248 - last_time_step_mse: 0.0093 - val_loss: 0.0245 - val_last_time_step_mse: 0.0091\n", "Epoch 18/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0245 - last_time_step_mse: 0.0091 - val_loss: 0.0247 - val_last_time_step_mse: 0.0101\n", "Epoch 19/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0242 - last_time_step_mse: 0.0090 - val_loss: 0.0240 - val_last_time_step_mse: 0.0090\n", "Epoch 20/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0239 - last_time_step_mse: 0.0089 - val_loss: 0.0237 - val_last_time_step_mse: 0.0085\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " keras.layers.LSTM(20, return_sequences=True, input_shape=[None, 1]),\n", " keras.layers.LSTM(20, return_sequences=True),\n", " keras.layers.TimeDistributed(keras.layers.Dense(10))\n", "])\n", "\n", "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n", "history = model.fit(X_train, Y_train, epochs=20,\n", " validation_data=(X_valid, Y_valid))" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2000/2000 [==============================] - 2s 753us/sample - loss: 0.0237 - last_time_step_mse: 0.0085\n" ] }, { "data": { "text/plain": [ "[0.023689542233943938, 0.008518972]" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(X_valid, Y_valid)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "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19KhQwdKlixJ0aJFad269UXzrVSpUgWAHj16ICIZl9fcHeutt96ievXqhISEULNmTSZNmpSxLTU1FRFh4sSJ9OzZk/DwcKpXr86MHF7qSE9PZ+TIkVSoUIHQ0FAaNGjAvHnzMrarKiNGjKBy5cqEhoZStmxZ7r///oztcXFxNGvWjPDwcIoVK0azZs3Ytm1bjmLIDzZcf25ERMC0aRRu25b3wx/nlVfeo3NnXwdlriuDBsGmTTl7zalTFNyyxWlyBwRAgwZQtGj2Xx8Vle25moOCgujduzdTpkzhueeey0gm8+bN4+jRoxd9GBYpUoQpU6ZQrlw5tm7dykMPPURYWBjPPfdcto41ffp0RowYwZtvvkmbNm2YOXMmY8aMuajlkZCQQO/evRk/fjwAb7zxBp06dWLHjh1ERESwfv16ypUrx+TJk7ntttsICnL/0Th79mwGDRrEuHHjaN++PQsXLqR///6ULVv2oimdR44cyahRoxg1ahTvvvsuffr0oXXr1lSoUCFb5/TGG2/w6quv8s4779C4cWOmTp1Kjx492LRpEzfccAP/+c9/GDduHDNmzKB+/focOnSI9evXA04S79atGw8//DDTp08nJSWFDRs2ZPwOvMlaMLnVpg3y9NP0Ov0+pVZ9xqpVvg7ImCs4derC9dz0dGfdgx544AF+/fVXlixZklH2wQcf0LFjRypWvDCm3/Dhw2nRogVVqlThjjvuYMiQITn6j3/cuHH07duXBx98kFq1ajF8+HAaN258UZ327dtz3333UbduXerWrcuECRMICAhg0aJFABnjixUrVowyZcpQsmRJt8caM2YMffr0YcCAAdSqVYtBgwZx9913M2rUqIvq9enTh169elGjRg1efPFFgD/Mank548eP5+mnn+aee+6hdu3avPjiizRv3pwxY8YAsGfPHsqVK0eHDh2oVKkSTZs2ZcCAAQCcOHGC33//na5du1K9enXq1KnDfffdR+3atbN9/Pzi1RaMiBQHPgA6AkeBoao63U09AV4B+rmKPgCeds1NkLleb2AK8KCqer/T8MiRpC1azMRND/LkyGa0/F85r4dgrlPZbElcJD4e2rWD5GQICYGPP/bo3Mk1a9bk5ptvZtKkSXTs2JEDBw6waNEiZs2adVG9WbNmMX78eHbu3EliYiKpqak5+m9727ZtDBw48KKymJgYZs+e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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_learning_curves(history.history[\"loss\"], history.history[\"val_loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "np.random.seed(43)\n", "\n", "series = generate_time_series(1, 50 + 10)\n", "X_new, Y_new = series[:, :50, :], series[:, 50:, :]\n", "Y_pred = model.predict(X_new)[:, -1][..., np.newaxis]" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_multiple_forecasts(X_new, Y_new, Y_pred)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# GRUs" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 21s 3ms/sample - loss: 0.0742 - last_time_step_mse: 0.0667 - val_loss: 0.0528 - val_last_time_step_mse: 0.0414\n", "Epoch 2/20\n", "7000/7000 [==============================] - 15s 2ms/sample - loss: 0.0476 - last_time_step_mse: 0.0365 - val_loss: 0.0440 - val_last_time_step_mse: 0.0326\n", "Epoch 3/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0418 - last_time_step_mse: 0.0303 - val_loss: 0.0394 - val_last_time_step_mse: 0.0271\n", "Epoch 4/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0373 - last_time_step_mse: 0.0249 - val_loss: 0.0359 - val_last_time_step_mse: 0.0226\n", "Epoch 5/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0328 - last_time_step_mse: 0.0181 - val_loss: 0.0316 - val_last_time_step_mse: 0.0168\n", "Epoch 6/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0308 - last_time_step_mse: 0.0157 - val_loss: 0.0299 - val_last_time_step_mse: 0.0146\n", "Epoch 7/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0298 - last_time_step_mse: 0.0149 - val_loss: 0.0289 - val_last_time_step_mse: 0.0137\n", "Epoch 8/20\n", "7000/7000 [==============================] - 15s 2ms/sample - loss: 0.0288 - last_time_step_mse: 0.0140 - val_loss: 0.0282 - val_last_time_step_mse: 0.0136\n", "Epoch 9/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0280 - last_time_step_mse: 0.0135 - val_loss: 0.0274 - val_last_time_step_mse: 0.0126\n", "Epoch 10/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0272 - last_time_step_mse: 0.0126 - val_loss: 0.0268 - val_last_time_step_mse: 0.0126\n", "Epoch 11/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0269 - last_time_step_mse: 0.0126 - val_loss: 0.0262 - val_last_time_step_mse: 0.0120\n", "Epoch 12/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0264 - last_time_step_mse: 0.0122 - val_loss: 0.0264 - val_last_time_step_mse: 0.0128\n", "Epoch 13/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0261 - last_time_step_mse: 0.0120 - val_loss: 0.0260 - val_last_time_step_mse: 0.0123\n", "Epoch 14/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0258 - last_time_step_mse: 0.0119 - val_loss: 0.0254 - val_last_time_step_mse: 0.0116\n", "Epoch 15/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0256 - last_time_step_mse: 0.0117 - val_loss: 0.0258 - val_last_time_step_mse: 0.0127\n", "Epoch 16/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0254 - last_time_step_mse: 0.0116 - val_loss: 0.0253 - val_last_time_step_mse: 0.0116\n", "Epoch 17/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0252 - last_time_step_mse: 0.0116 - val_loss: 0.0250 - val_last_time_step_mse: 0.0118\n", "Epoch 18/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0248 - last_time_step_mse: 0.0111 - val_loss: 0.0250 - val_last_time_step_mse: 0.0120\n", "Epoch 19/20\n", "7000/7000 [==============================] - 13s 2ms/sample - loss: 0.0246 - last_time_step_mse: 0.0110 - val_loss: 0.0243 - val_last_time_step_mse: 0.0109\n", "Epoch 20/20\n", "7000/7000 [==============================] - 14s 2ms/sample - loss: 0.0245 - last_time_step_mse: 0.0110 - val_loss: 0.0246 - val_last_time_step_mse: 0.0111\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " keras.layers.GRU(20, return_sequences=True, input_shape=[None, 1]),\n", " keras.layers.GRU(20, return_sequences=True),\n", " keras.layers.TimeDistributed(keras.layers.Dense(10))\n", "])\n", "\n", "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n", "history = model.fit(X_train, Y_train, epochs=20,\n", " validation_data=(X_valid, Y_valid))" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2000/2000 [==============================] - 2s 777us/sample - loss: 0.0246 - last_time_step_mse: 0.0111\n" ] }, { "data": { "text/plain": [ "[0.024557730346918105, 0.011060879]" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(X_valid, Y_valid)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "image/png": "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P5uhzPgOv1Wr4MUX3X799pprriEqKip3SPrjMjMzmTp1KrfffnvuvPKPPvoojRs3JjQ0lHr16jF06FDS09NPuu/CLlu9+OKLREVFUbZsWQYMGEBaWlq+9atWraJbt25UqlSJyMhIOnXqlG++lbp16wLQs2dPRCT38lphx3rjjTdo0KABQUFBNGrUiEmTJuWuy8rKQkSYOHEivXr1Ijw8nAYNGjB9+vQi/uQcOTk5PPvss9SsWZPg4GCaN2/O3Llzc9erKs888wx16tQhODiYatWqcdttt+WuX7p0Ke3atSM8PJxy5crRrl071q9fX6wYSoM9aFnK4uKAuBs4euEobhj2KK91r02FhFEUmBXWmDMzeDCsWVO8bZKTCfv5Z2daVj8/aN4cIiOLvn2LFkWeqzkgIID+/fszefJknn766dxkMnfuXA4cOJDvyzAiIoLJkydTvXp1EhMTufPOOwkNDeXpp58u0rGmTZvGM888w7hx47j00kuZMWMGo0aNytfySElJoX///owdOxaA119/nauuuorNmzdTvnx5vv/+e6pXr857773HlVdeSUBA4V+Ns2bNYvDgwYwZM4auXbsyf/58Bg0aRLVq1fJN6fzss88ycuRIRo4cyYQJExgwYACdOnWiZs2aRTqn119/nVdeeYW33nqLVq1aMWXKFHr27MmaNWto1qwZH330EWPGjGH69OnExMSwd+9evv/+e8BJ4j169OCuu+5i2rRpZGZmsnr16tzfgSdZC8ZNQp98mCO338+DWaP5uMvr/PabtyMy573k5BNzfufkOO/d6J///Cfbt2/nq6++yi179913ufzyy6lV68TMsMOHD+fiiy+mbt26XHPNNQwdOrRYf/GPGTOG22+/nTvuuIPGjRszfPhwWrVqla9O165d6devH9HR0URHRzN+/Hj8/PxYsGABQO74YuXKlaNq1apUqlSp0GONGjWKAQMGcM8999C4cWMGDx5Mnz59GDlyZL56AwYM4JZbbqFhw4a88MILAH+b1fJUxo4dy7/+9S9uvvlmmjRpwgsvvED79u0ZNWoUANu2baN69ep069aN2rVr07ZtW+655x4A/vrrLw4fPsx1111HgwYNaNq0Kf369aNJkyZFPn5p8WgLRkQqAO8ClwMHgMdV9W8jeYkzXdxLwEBX0bvAv1xzE+St1x+YDNyhqhPdGHrxiRD+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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_learning_curves(history.history[\"loss\"], history.history[\"val_loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "np.random.seed(43)\n", "\n", "series = generate_time_series(1, 50 + 10)\n", "X_new, Y_new = series[:, :50, :], series[:, 50:, :]\n", "Y_pred = model.predict(X_new)[:, -1][..., np.newaxis]" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_multiple_forecasts(X_new, Y_new, Y_pred)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using One-Dimensional Convolutional Layers to Process Sequences" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "1D conv layer with kernel size 4, stride 2, VALID padding:\n", "\n", " |-----2-----| |-----5---...------| |-----23----|\n", " |-----1-----| |-----4-----| ... |-----22----|\n", " |-----0----| |-----3-----| |---...|-----21----|\n", "X: 0 1 2 3 4 5 6 7 8 9 10 11 12 ... 42 43 44 45 46 47 48 49\n", "Y: 1 2 3 4 5 6 7 8 9 10 11 12 13 ... 43 44 45 46 47 48 49 50\n", " /10 11 12 13 14 15 16 17 18 19 20 21 22 ... 52 53 54 55 56 57 58 59\n", "\n", "Output:\n", "\n", "X: 0/3 2/5 4/7 6/9 8/11 10/13 .../43 42/45 44/47 46/49\n", "Y: 4/13 6/15 8/17 10/19 12/21 14/23 .../53 46/55 48/57 50/59\n", "```" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 8s 1ms/sample - loss: 0.0681 - last_time_step_mse: 0.0608 - val_loss: 0.0477 - val_last_time_step_mse: 0.0397\n", "Epoch 2/20\n", "7000/7000 [==============================] - 7s 962us/sample - loss: 0.0411 - last_time_step_mse: 0.0338 - val_loss: 0.0367 - val_last_time_step_mse: 0.0287\n", "Epoch 3/20\n", "7000/7000 [==============================] - 7s 966us/sample - loss: 0.0339 - last_time_step_mse: 0.0259 - val_loss: 0.0310 - val_last_time_step_mse: 0.0217\n", "Epoch 4/20\n", "7000/7000 [==============================] - 7s 941us/sample - loss: 0.0284 - last_time_step_mse: 0.0186 - val_loss: 0.0260 - val_last_time_step_mse: 0.0151\n", "Epoch 5/20\n", "7000/7000 [==============================] - 7s 943us/sample - loss: 0.0248 - last_time_step_mse: 0.0140 - val_loss: 0.0243 - val_last_time_step_mse: 0.0137\n", "Epoch 6/20\n", "7000/7000 [==============================] - 6s 928us/sample - loss: 0.0234 - last_time_step_mse: 0.0126 - val_loss: 0.0228 - val_last_time_step_mse: 0.0118\n", "Epoch 7/20\n", "7000/7000 [==============================] - 7s 939us/sample - loss: 0.0227 - last_time_step_mse: 0.0119 - val_loss: 0.0222 - val_last_time_step_mse: 0.0112\n", "Epoch 8/20\n", "7000/7000 [==============================] - 7s 974us/sample - loss: 0.0221 - last_time_step_mse: 0.0112 - val_loss: 0.0217 - val_last_time_step_mse: 0.0109\n", "Epoch 9/20\n", "7000/7000 [==============================] - 7s 946us/sample - loss: 0.0217 - last_time_step_mse: 0.0109 - val_loss: 0.0215 - val_last_time_step_mse: 0.0108\n", "Epoch 10/20\n", "7000/7000 [==============================] - 6s 925us/sample - loss: 0.0212 - last_time_step_mse: 0.0105 - val_loss: 0.0210 - val_last_time_step_mse: 0.0102\n", "Epoch 11/20\n", "7000/7000 [==============================] - 7s 934us/sample - loss: 0.0210 - last_time_step_mse: 0.0105 - val_loss: 0.0208 - val_last_time_step_mse: 0.0098\n", "Epoch 12/20\n", "7000/7000 [==============================] - 7s 973us/sample - loss: 0.0207 - last_time_step_mse: 0.0101 - val_loss: 0.0206 - val_last_time_step_mse: 0.0100\n", "Epoch 13/20\n", "7000/7000 [==============================] - 7s 949us/sample - loss: 0.0204 - last_time_step_mse: 0.0099 - val_loss: 0.0205 - val_last_time_step_mse: 0.0099\n", "Epoch 14/20\n", "7000/7000 [==============================] - 7s 962us/sample - loss: 0.0202 - last_time_step_mse: 0.0098 - val_loss: 0.0200 - val_last_time_step_mse: 0.0094\n", "Epoch 15/20\n", "7000/7000 [==============================] - 7s 930us/sample - loss: 0.0200 - last_time_step_mse: 0.0096 - val_loss: 0.0200 - val_last_time_step_mse: 0.0094\n", "Epoch 16/20\n", "7000/7000 [==============================] - 7s 949us/sample - loss: 0.0197 - last_time_step_mse: 0.0094 - val_loss: 0.0200 - val_last_time_step_mse: 0.0094\n", "Epoch 17/20\n", "7000/7000 [==============================] - 7s 932us/sample - loss: 0.0196 - last_time_step_mse: 0.0093 - val_loss: 0.0195 - val_last_time_step_mse: 0.0093\n", "Epoch 18/20\n", "7000/7000 [==============================] - 7s 951us/sample - loss: 0.0193 - last_time_step_mse: 0.0090 - val_loss: 0.0195 - val_last_time_step_mse: 0.0090\n", "Epoch 19/20\n", "7000/7000 [==============================] - 7s 968us/sample - loss: 0.0190 - last_time_step_mse: 0.0088 - val_loss: 0.0188 - val_last_time_step_mse: 0.0084\n", "Epoch 20/20\n", "7000/7000 [==============================] - 7s 930us/sample - loss: 0.0187 - last_time_step_mse: 0.0085 - val_loss: 0.0186 - val_last_time_step_mse: 0.0081\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential([\n", " keras.layers.Conv1D(filters=20, kernel_size=4, strides=2, padding=\"valid\",\n", " input_shape=[None, 1]),\n", " keras.layers.GRU(20, return_sequences=True),\n", " keras.layers.GRU(20, return_sequences=True),\n", " keras.layers.TimeDistributed(keras.layers.Dense(10))\n", "])\n", "\n", "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n", "history = model.fit(X_train, Y_train[:, 3::2], epochs=20,\n", " validation_data=(X_valid, Y_valid[:, 3::2]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## WaveNet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "C2 /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\.../\\ /\\ /\\ /\\ /\\ /\\\n", " \\ / \\ / \\ / \\ / \\ / \\ / \\ / \\ / \\ / \\\n", " / \\ / \\ / \\ / \\\n", "C1 /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /.../\\ /\\ /\\ /\\ /\\ /\\ /\\\n", "X: 0 1 2 3 4 5 6 7 8 9 10 11 12 ... 43 44 45 46 47 48 49\n", "Y: 1 2 3 4 5 6 7 8 9 10 11 12 13 ... 44 45 46 47 48 49 50\n", " /10 11 12 13 14 15 16 17 18 19 20 21 22 ... 53 54 55 56 57 58 59\n", "```" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/20\n", "7000/7000 [==============================] - 3s 451us/sample - loss: 0.0668 - last_time_step_mse: 0.0546 - val_loss: 0.0376 - val_last_time_step_mse: 0.0249\n", "Epoch 2/20\n", "7000/7000 [==============================] - 2s 302us/sample - loss: 0.0325 - last_time_step_mse: 0.0202 - val_loss: 0.0296 - val_last_time_step_mse: 0.0175\n", "Epoch 3/20\n", "7000/7000 [==============================] - 2s 286us/sample - loss: 0.0284 - last_time_step_mse: 0.0170 - val_loss: 0.0269 - val_last_time_step_mse: 0.0153\n", "Epoch 4/20\n", "7000/7000 [==============================] - 2s 305us/sample - loss: 0.0264 - last_time_step_mse: 0.0149 - val_loss: 0.0256 - val_last_time_step_mse: 0.0138\n", "Epoch 5/20\n", "7000/7000 [==============================] - 2s 303us/sample - loss: 0.0251 - last_time_step_mse: 0.0135 - val_loss: 0.0244 - val_last_time_step_mse: 0.0128\n", "Epoch 6/20\n", "7000/7000 [==============================] - 2s 301us/sample - loss: 0.0244 - last_time_step_mse: 0.0129 - val_loss: 0.0238 - val_last_time_step_mse: 0.0122\n", "Epoch 7/20\n", "7000/7000 [==============================] - 2s 309us/sample - loss: 0.0238 - last_time_step_mse: 0.0124 - val_loss: 0.0233 - val_last_time_step_mse: 0.0117\n", "Epoch 8/20\n", "7000/7000 [==============================] - 2s 307us/sample - loss: 0.0231 - last_time_step_mse: 0.0116 - val_loss: 0.0227 - val_last_time_step_mse: 0.0113\n", "Epoch 9/20\n", "7000/7000 [==============================] - 2s 326us/sample - loss: 0.0227 - last_time_step_mse: 0.0113 - val_loss: 0.0228 - val_last_time_step_mse: 0.0114\n", "Epoch 10/20\n", "7000/7000 [==============================] - 2s 349us/sample - loss: 0.0225 - last_time_step_mse: 0.0112 - val_loss: 0.0222 - val_last_time_step_mse: 0.0108\n", "Epoch 11/20\n", "7000/7000 [==============================] - 2s 317us/sample - loss: 0.0221 - last_time_step_mse: 0.0107 - val_loss: 0.0225 - val_last_time_step_mse: 0.0116\n", "Epoch 12/20\n", "7000/7000 [==============================] - 2s 306us/sample - loss: 0.0219 - last_time_step_mse: 0.0104 - val_loss: 0.0215 - val_last_time_step_mse: 0.0101\n", "Epoch 13/20\n", "7000/7000 [==============================] - 2s 296us/sample - loss: 0.0216 - last_time_step_mse: 0.0102 - val_loss: 0.0213 - val_last_time_step_mse: 0.0099\n", "Epoch 14/20\n", "7000/7000 [==============================] - 2s 306us/sample - loss: 0.0215 - last_time_step_mse: 0.0102 - val_loss: 0.0214 - val_last_time_step_mse: 0.0100\n", "Epoch 15/20\n", "7000/7000 [==============================] - 2s 320us/sample - loss: 0.0212 - last_time_step_mse: 0.0098 - val_loss: 0.0212 - val_last_time_step_mse: 0.0102\n", "Epoch 16/20\n", "7000/7000 [==============================] - 2s 300us/sample - loss: 0.0210 - last_time_step_mse: 0.0096 - val_loss: 0.0209 - val_last_time_step_mse: 0.0096\n", "Epoch 17/20\n", "7000/7000 [==============================] - 2s 298us/sample - loss: 0.0210 - last_time_step_mse: 0.0096 - val_loss: 0.0205 - val_last_time_step_mse: 0.0091\n", "Epoch 18/20\n", "7000/7000 [==============================] - 2s 299us/sample - loss: 0.0206 - last_time_step_mse: 0.0093 - val_loss: 0.0207 - val_last_time_step_mse: 0.0096\n", "Epoch 19/20\n", "7000/7000 [==============================] - 2s 303us/sample - loss: 0.0205 - last_time_step_mse: 0.0092 - val_loss: 0.0206 - val_last_time_step_mse: 0.0093\n", "Epoch 20/20\n", "7000/7000 [==============================] - 2s 330us/sample - loss: 0.0204 - last_time_step_mse: 0.0091 - val_loss: 0.0207 - val_last_time_step_mse: 0.0095\n" ] } ], "source": [ "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "model = keras.models.Sequential()\n", "model.add(keras.layers.InputLayer(input_shape=[None, 1]))\n", "for rate in (1, 2, 4, 8) * 2:\n", " model.add(keras.layers.Conv1D(filters=20, kernel_size=2, padding=\"causal\",\n", " activation=\"relu\", dilation_rate=rate))\n", "model.add(keras.layers.Conv1D(filters=10, kernel_size=1))\n", "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n", "history = model.fit(X_train, Y_train, epochs=20,\n", " validation_data=(X_valid, Y_valid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is the original WaveNet defined in the paper: it uses Gated Activation Units instead of ReLU and parametrized skip connections, plus it pads with zeros on the left to avoid getting shorter and shorter sequences:" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "class GatedActivationUnit(keras.layers.Layer):\n", " def __init__(self, activation=\"tanh\", **kwargs):\n", " super().__init__(**kwargs)\n", " self.activation = keras.activations.get(activation)\n", " def call(self, inputs):\n", " n_filters = inputs.shape[-1] // 2\n", " linear_output = self.activation(inputs[..., :n_filters])\n", " gate = keras.activations.sigmoid(inputs[..., n_filters:])\n", " return self.activation(linear_output) * gate" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "def wavenet_residual_block(inputs, n_filters, dilation_rate):\n", " z = keras.layers.Conv1D(2 * n_filters, kernel_size=2, padding=\"causal\",\n", " dilation_rate=dilation_rate)(inputs)\n", " z = GatedActivationUnit()(z)\n", " z = keras.layers.Conv1D(n_filters, kernel_size=1)(z)\n", " return keras.layers.Add()([z, inputs]), z" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "keras.backend.clear_session()\n", "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "n_layers_per_block = 3 # 10 in the paper\n", "n_blocks = 1 # 3 in the paper\n", "n_filters = 32 # 128 in the paper\n", "n_outputs = 10 # 256 in the paper\n", "\n", "inputs = keras.layers.Input(shape=[None, 1])\n", "z = keras.layers.Conv1D(n_filters, kernel_size=2, padding=\"causal\")(inputs)\n", "skip_to_last = []\n", "for dilation_rate in [2**i for i in range(n_layers_per_block)] * n_blocks:\n", " z, skip = wavenet_residual_block(z, n_filters, dilation_rate)\n", " skip_to_last.append(skip)\n", "z = keras.activations.relu(keras.layers.Add()(skip_to_last))\n", "z = keras.layers.Conv1D(n_filters, kernel_size=1, activation=\"relu\")(z)\n", "Y_proba = keras.layers.Conv1D(n_outputs, kernel_size=1, activation=\"softmax\")(z)\n", "\n", "model = keras.models.Model(inputs=[inputs], outputs=[Y_proba])" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 7000 samples, validate on 2000 samples\n", "Epoch 1/2\n", "7000/7000 [==============================] - 4s 546us/sample - loss: 0.1300 - last_time_step_mse: 0.1261 - val_loss: 0.1230 - val_last_time_step_mse: 0.1200\n", "Epoch 2/2\n", "7000/7000 [==============================] - 3s 410us/sample - loss: 0.1222 - last_time_step_mse: 0.1178 - val_loss: 0.1217 - val_last_time_step_mse: 0.1189\n" ] } ], "source": [ "model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n", "history = model.fit(X_train, Y_train, epochs=2,\n", " validation_data=(X_valid, Y_valid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this chapter we explored the fundamentals of RNNs and used them to process sequences (namely, time series). In the process we also looked at other ways to process sequences, including CNNs. In the next chapter we will use RNNs for Natural Language Processing, and we will learn more about RNNs (bidirectional RNNs, stateful vs stateless RNNs, Encoder–Decoders, and Attention-augmented Encoder-Decoders). We will also look at the Transformer, an Attention-only architecture." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Exercise solutions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. to 6." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "See Appendix A." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 7. Embedded Reber Grammars" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we need to build a function that generates strings based on a grammar. The grammar will be represented as a list of possible transitions for each state. A transition specifies the string to output (or a grammar to generate it) and the next state." ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "np.random.seed(42)\n", "\n", "default_reber_grammar = [\n", " [(\"B\", 1)], # (state 0) =B=>(state 1)\n", " [(\"T\", 2), (\"P\", 3)], # (state 1) =T=>(state 2) or =P=>(state 3)\n", " [(\"S\", 2), (\"X\", 4)], # (state 2) =S=>(state 2) or =X=>(state 4)\n", " [(\"T\", 3), (\"V\", 5)], # and so on...\n", " [(\"X\", 3), (\"S\", 6)],\n", " [(\"P\", 4), (\"V\", 6)],\n", " [(\"E\", None)]] # (state 6) =E=>(terminal state)\n", "\n", "embedded_reber_grammar = [\n", " [(\"B\", 1)],\n", " [(\"T\", 2), (\"P\", 3)],\n", " [(default_reber_grammar, 4)],\n", " [(default_reber_grammar, 5)],\n", " [(\"T\", 6)],\n", " [(\"P\", 6)],\n", " [(\"E\", None)]]\n", "\n", "def generate_string(grammar):\n", " state = 0\n", " output = []\n", " while state is not None:\n", " index = np.random.randint(len(grammar[state]))\n", " production, state = grammar[state][index]\n", " if isinstance(production, list):\n", " production = generate_string(grammar=production)\n", " output.append(production)\n", " return \"\".join(output)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's generate a few strings based on the default Reber grammar:" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BTXXTTVPXTVPXTTVPSE BPVPSE BTXSE BPVVE BPVVE BTSXSE BPTVPXTTTVVE BPVVE BTXSE BTXXVPSE BPTTTTTTTTVVE BTXSE BPVPSE BTXSE BPTVPSE BTXXTVPSE BPVVE BPVVE BPVVE BPTTVVE BPVVE BPVVE BTXXVVE BTXXVVE BTXXVPXVVE " ] } ], "source": [ "for _ in range(25):\n", " print(generate_string(default_reber_grammar), end=\" \")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looks good. Now let's generate a few strings based on the embedded Reber grammar:" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BTBPVVETE BTBTSSSSSSSXXVVETE BPBTSSSXXTTTTVPSEPE BTBPTTVVETE BPBTXXTVVEPE BTBTXSETE BPBTSSSSSXXTTVPXVPXTTTVVEPE BPBTSSXXTVPSEPE BPBPTTTTTTTVPSEPE BTBTSXSETE BPBPTVPXVVEPE BPBPVVEPE BPBPTVVEPE BTBPTTVPXTTVPSETE BTBTSSXSETE BTBTXXTTVVETE BPBTSXSEPE BPBPTVPSEPE BTBPVVETE BPBTXXTTTVPXTVVEPE BPBPTTVPXTVVEPE BTBPVVETE BPBPTVPXVPXTVVEPE BTBPVVETE BPBTSXSEPE " ] } ], "source": [ "for _ in range(25):\n", " print(generate_string(embedded_reber_grammar), end=\" \")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Okay, now we need a function to generate strings that do not respect the grammar. We could generate a random string, but the task would be a bit too easy, so instead we will generate a string that respects the grammar, and we will corrupt it by changing just one character:" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [], "source": [ "def generate_corrupted_string(grammar, chars=\"BEPSTVX\"):\n", " good_string = generate_string(grammar)\n", " index = np.random.randint(len(good_string))\n", " good_char = good_string[index]\n", " bad_char = np.random.choice(sorted(set(chars) - set(good_char)))\n", " return good_string[:index] + bad_char + good_string[index + 1:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's look at a few corrupted strings:" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BTTTXXVVETE BPBTXXSPXTVVEPE BTBTXSPTE BPTTSXXTVPXVVEPE PPBPVPSEPE BTBPTVETE BPTTSSSSSXSEPE BPBSVPSEPE BTBPVVESE BPBTXSEPS BEBTXSETE XPBTXXTVPSEPE BTBPVVEPE BTXPTVVETE BTBPVXETE BVBTXSETE BPTTXXVPXVPSEPE BTBPXVPSETE STBPTTVPXVPXTVPSETE BPBPTVPSESE BPBPVEEPE ETBTXSETE BTBTXSVTE BPBTXXVPSEPP BTBTXXVPSETS " ] } ], "source": [ "for _ in range(25):\n", " print(generate_corrupted_string(embedded_reber_grammar), end=\" \")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To be continued..." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 6, "toc_cell": false, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 1 }