{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "9aiFD8Z_U9h8" }, "source": [ "# Recurrent neural networks\n", "\n", "The goal is to learn to use LSTM layers in keras for sentiment analysis and time series prediction. The code for sentiment analysis is adapted from . The code for time series prediction is adapted from ." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "vMCNVPC3U9h_" }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf" ] }, { "cell_type": "markdown", "metadata": { "id": "Q09VlxB2U9iA" }, "source": [ "## Sentiment analysis\n", "\n", "The goal to use recurrent neural networks (LSTM) to perform **sentiment analysis** on short sentences, i.e. to predict whether the sentence has a positive or negative meaning.\n", "\n", "The following cells represent your training and test data. They are lists of lists, where the first element is the sentence as a string, and the second a boolean, with `True` for positive sentences, `False` for negative ones.\n", "\n", "Notice how some sentences are ambiguous (if you do not notice the \"not\", the sentiment might be very different)." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "g9e62tfqU9iB" }, "outputs": [], "source": [ "train_data = [\n", " ['good', True],\n", " ['bad', False],\n", " ['happy', True],\n", " ['sad', False],\n", " ['not good', False],\n", " ['not bad', True],\n", " ['not happy', False],\n", " ['not sad', True],\n", " ['very good', True],\n", " ['very bad', False],\n", " ['very happy', True],\n", " ['very sad', False],\n", " ['i am happy', True],\n", " ['this is good', True],\n", " ['i am bad', False],\n", " ['this is bad', False],\n", " ['i am sad', False],\n", " ['this is sad', False],\n", " ['i am not happy', False],\n", " ['this is not good', False],\n", " ['i am not bad', True],\n", " ['this is not sad', True],\n", " ['i am very happy', True],\n", " ['this is very good', True],\n", " ['i am very bad', False],\n", " ['this is very sad', False],\n", " ['this is very happy', True],\n", " ['i am good not bad', True],\n", " ['this is good not bad', True],\n", " ['i am bad not good', False],\n", " ['i am good and happy', True],\n", " ['this is not good and not happy', False],\n", " ['i am not at all good', False],\n", " ['i am not at all bad', True],\n", " ['i am not at all happy', False],\n", " ['this is not at all sad', True],\n", " ['this is not at all happy', False],\n", " ['i am good right now', True],\n", " ['i am bad right now', False],\n", " ['this is bad right now', False],\n", " ['i am sad right now', False],\n", " ['i was good earlier', True],\n", " ['i was happy earlier', True],\n", " ['i was bad earlier', False],\n", " ['i was sad earlier', False],\n", " ['i am very bad right now', False],\n", " ['this is very good right now', True],\n", " ['this is very sad right now', False],\n", " ['this was bad earlier', False],\n", " ['this was very good earlier', True],\n", " ['this was very bad earlier', False],\n", " ['this was very happy earlier', True],\n", " ['this was very sad earlier', False],\n", " ['i was good and not bad earlier', True],\n", " ['i was not good and not happy earlier', False],\n", " ['i am not at all bad or sad right now', True],\n", " ['i am not at all good or happy right now', False],\n", " ['this was not happy and not good earlier', False],\n", "]" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "55E2a6QzU9iD" }, "outputs": [], "source": [ "test_data = [\n", " ['this is happy', True],\n", " ['i am good', True],\n", " ['this is not happy', False],\n", " ['i am not good', False],\n", " ['this is not bad', True],\n", " ['i am not sad', True],\n", " ['i am very good', True],\n", " ['this is very bad', False],\n", " ['i am very sad', False],\n", " ['this is bad not good', False],\n", " ['this is good and happy', True],\n", " ['i am not good and not happy', False],\n", " ['i am not at all sad', True],\n", " ['this is not at all good', False],\n", " ['this is not at all bad', True],\n", " ['this is good right now', True],\n", " ['this is sad right now', False],\n", " ['this is very bad right now', False],\n", " ['this was good earlier', True],\n", " ['i was not happy and not good earlier', False],\n", " ['earlier i was good and not bad', True],\n", "]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "AdJBGX0rU9iE", "outputId": "1dc753ca-ade2-4723-ae3b-e2cd75bff941" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "58 training sentences.\n", "21 test sentences.\n" ] } ], "source": [ "N_train = len(train_data)\n", "N_test = len(test_data)\n", "print(N_train, \"training sentences.\")\n", "print(N_test, \"test sentences.\")" ] }, { "cell_type": "markdown", "metadata": { "id": "KjWNlqg_U9iF" }, "source": [ "### Data preparation\n", "\n", "The most boring part when training LSTMs on text is to prepare the data correctly. Sentences are sequences of words (possibly a huge number of words), with a variable length (some sentences are shorter than others).\n", "\n", "What neural networks expect as input is a fixed-length sequence of numerical vectors $\\{\\mathbf{x}_t\\}_{t=0}^T$, i.e. they must have a fixed size. So we need to transform each sentence into this format.\n", "\n", "The first thing to do is to identify the vocabulary, i.e. the **unique** words in the training set (fortunately, the test set uses the same exact words) as well as the maximal number of words in each sentence (again, the test set does not have longer sentences).\n", "\n", "**Q:** Create a list `vocabulary` of unique words in the training set and compute the maximal length `nb_words` of a sentence.\n", "\n", "To extract the words in each sentence, the `split()` method of Python strings might come handy:\n", "\n", "```python\n", "sentence = \"I fear this exercise will be difficult\"\n", "print(sentence.split(\" \"))\n", "```\n", "\n", "You will also find the `set` Python object useful to identify unique works. Check the doc. But there are many ways to do that (for loops), just do it the way you prefer." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "LhX_HdPSU9iG", "outputId": "0f8ec1f4-7f7e-43e9-ecef-d8a07e822e7d" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Unique words found 18\n", "Maximum sequence length: 10\n" ] } ], "source": [ "vocabulary = list(set([w for pair in train_data for w in pair[0].split(' ')]))\n", "print('Unique words found', len(vocabulary)) # 18 unique words found\n", "\n", "nb_words = np.max([len(pair[0].split(' ')) for pair in train_data])\n", "print(\"Maximum sequence length:\", nb_words)" ] }, { "cell_type": "markdown", "metadata": { "id": "2nBAOO0UU9iH" }, "source": [ "Now that we have found our list of 18 unique words, we need to able to perform **one-hot encoding** of each word, i.e. write a method `def one_hot_encoding(word, vocabulary)` that takes a word (e.g. \"good\") and the vocabulary, and returns a vector of size 18, with mostly zeros, except for a `1.0` at the location of the word in the vocabulary.\n", "\n", "For example, if your vocabulary is `[\"I\", \"love\", \"you\"]`, the one-hot encoding of \"I\" should be `np.array([1., 0., 0.])`, the one of \"love\" is `np.array([0., 1., 0.])`, etc.\n", "\n", "**Q:** Implement the `one_hot_encoding()` method for single words.\n", "\n", "*Hint:* you might find the method `index()` of list objects interesting." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "qzWPJV_AU9iI" }, "outputs": [], "source": [ "def one_hot_encoding(word, vocabulary):\n", " r = np.zeros(len(vocabulary))\n", " r[vocabulary.index(word)] = 1.0\n", " return r" ] }, { "cell_type": "markdown", "metadata": { "id": "xlZAe7XyU9iJ" }, "source": [ "**Q:** You can now create the training set `X_train, T_train` and the test set `X_test, T_test`.\n", "\n", "The training input data `X_train` should be a numpy array with 3 dimensions:\n", "\n", "```python\n", " X_train = np.zeros((N_train, nb_words, len(vocabulary)))\n", "```\n", "\n", "The first index corresponds to each sentence. The second index represents the index of each word in the sentence (maximally `nb_words=10`). The third index is for the one-hot encoding (18 elements).\n", "\n", "**Beware:** most sentences are shorter than `nb_words=10`. In that case, the words should be set **at the end of the sequence**, i.e. you prepend zero vectors. \n", "\n", "For example, \"I love you\" should be encoded as:\n", "\n", "```python\n", "\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"I\", \"love\", \"you\"\n", "```\n", "\n", "not as:\n", "\n", "```python\n", "\"I\", \"love\", \"you\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"\n", "```\n", "\n", "The reason for that is that the LSTM will get the words one by one and only respond \"positive\" or \"negative\" after the last word has been seen. If the words are provided at the beginning of the sequence, vanishing gradients might delete them.\n", "\n", "The same holds for the test set, it only has less sentences." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "dTNX0OROU9iK" }, "outputs": [], "source": [ "def prepare_data(data, vocabulary, nb_words):\n", " \n", " N = len(data)\n", " X = np.zeros((N, nb_words, len(vocabulary)))\n", " T = np.zeros((N, ))\n", " \n", " # Iterate over the data\n", " for i in range(N):\n", " x, t = data[i]\n", " # Transform the sentence\n", " words = x.split(\" \")\n", " for j in range(len(words)):\n", " word = words[j]\n", " encoding = one_hot_encoding(word, vocabulary)\n", " X[i, -len(words) + j, :] = encoding\n", " # Transform the output\n", " T[i] = int(t)\n", " return X, T" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "UPK3TogbU9iL", "outputId": "b1ae06a2-4531-4679-955c-cc9defec40e3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(58, 10, 18)\n", "(58,)\n", "(21, 10, 18)\n", "(21,)\n" ] } ], "source": [ "X_train, T_train = prepare_data(train_data, vocabulary, nb_words)\n", "X_test, T_test = prepare_data(test_data, vocabulary, nb_words)\n", "print(X_train.shape)\n", "print(T_train.shape)\n", "print(X_test.shape)\n", "print(T_test.shape)" ] }, { "cell_type": "markdown", "metadata": { "id": "IgQFJr8jU9iM" }, "source": [ "### Training the LSTM\n", "\n", "Now we just have to provide the data to a recurrent network. The problem is not very complicated, so we will need a single LSTM layer, followed by a single output neuron (with the logistic transfer function) whose role is to output 1 for the positive class, 0 for the negative one.\n", "\n", "**Q:** Check the documentation for the LSTM layer of `keras`: . It has many parameters:\n", "\n", "```python\n", "tf.keras.layers.LSTM(\n", " units, \n", " activation='tanh', \n", " recurrent_activation='sigmoid', \n", " use_bias=True, \n", " kernel_initializer='glorot_uniform', \n", " recurrent_initializer='orthogonal', \n", " bias_initializer='zeros', \n", " unit_forget_bias=True, \n", " kernel_regularizer=None, \n", " recurrent_regularizer=None, bias_regularizer=None, \n", " activity_regularizer=None, kernel_constraint=None, \n", " recurrent_constraint=None, bias_constraint=None, \n", " dropout=0.0, recurrent_dropout=0.0, \n", " implementation=2, \n", " return_sequences=False, return_state=False, \n", " go_backwards=False, stateful=False, unroll=False)\n", "```\n", "\n", "The default value for the parameters is the vanilla LSTM seen in the lectures, but you have the possibility to change the activation functions for the inputs and outputs (not the gates, it must be a sigmoid!), initialize the weights differently, add regularization or dropout, use biases or not, etc. That's a lot to play with. For this exercise, stick to the default parameters at the beginning. The only thing you need to define is the number of neurons `units` of the layer. \n", "\n", "```python\n", "tf.keras.layers.LSTM(units=N)\n", "```\n", "\n", "Note that an important parameter is `return_sequences`. When set to False (the default), the LSTM layer will process the complete sequence of 10 word vectors, and output a single vector of $N$ values (the number of units). When set to True, the layer would return a sequence of 10 vectors of size $N$.\n", "\n", "Here, we only want the LSTM layer to encode the sentence and feed a single vector to the output layer, so we can leave it to False. If we wanted to stack two LSTM layers on top of each other, we would need to set `return_sequences` to True for the first layer and False for the second one (you can try that later):\n", "\n", "```python\n", "tf.keras.layers.LSTM(N, return_sequences=True)\n", "tf.keras.layers.LSTM(M, return_sequences=False)\n", "```\n", "\n", "**Q:** Create a model with one LSTM layer (with enough units) and one output layer with one neuron (`'sigmoid'` activation function). Choose an optimizer (SGD, RMSprop, Adam, etc) and a good learning rate. When compiling the model, use the `'binary_crossentropy'` loss function as it is a binary classification.\n", "\n", "The input layer of the network must take a `(nb_words, len(vocabulary))` matrix as input, i.e. (window, nb_features).\n", "\n", "```python\n", "tf.keras.layers.Input((nb_words, len(vocabulary)))\n", "```\n", "\n", "When training the model with `model.fit()`, you can pass the test set as validation data, as we do not have too many examples:\n", "\n", "```python\n", "model.fit(X_train, T_train, validation_data=(X_test, T_test), ...)\n", "```\n", "\n", "Train the model for enough epochs, using a batch size big enough but not too big. In other terms: do the hyperparameter search yourself ;). \n", " " ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "id": "wyUSAGVPU9iO" }, "outputs": [], "source": [ "def small_model():\n", " tf.keras.backend.clear_session()\n", "\n", " model = tf.keras.models.Sequential()\n", " \n", " model.add(tf.keras.layers.Input((nb_words, len(vocabulary))))\n", " \n", " model.add(tf.keras.layers.LSTM(10))\n", " \n", " model.add(tf.keras.layers.Dense(1, activation=\"sigmoid\"))\n", " \n", " optimizer = tf.keras.optimizers.Adam(lr=0.01)\n", " \n", " model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['binary_accuracy'])\n", " print(model.summary())\n", " return model" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "zMtqDI9BU9iP", "outputId": "a9ddd445-da18-4420-d478-6928551907f8" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "lstm (LSTM) (None, 10) 1160 \n", "_________________________________________________________________\n", "dense (Dense) (None, 1) 11 \n", "=================================================================\n", "Total params: 1,171\n", "Trainable params: 1,171\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "None\n", "Epoch 1/30\n", "6/6 [==============================] - 4s 114ms/step - loss: 0.6982 - binary_accuracy: 0.4164 - val_loss: 0.6966 - val_binary_accuracy: 0.5238\n", "Epoch 2/30\n", "6/6 [==============================] - 0s 10ms/step - loss: 0.6710 - binary_accuracy: 0.6405 - val_loss: 0.7026 - val_binary_accuracy: 0.4762\n", "Epoch 3/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.6980 - binary_accuracy: 0.5057 - val_loss: 0.6954 - val_binary_accuracy: 0.4762\n", "Epoch 4/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.6846 - binary_accuracy: 0.5564 - val_loss: 0.6934 - val_binary_accuracy: 0.4762\n", "Epoch 5/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.6814 - binary_accuracy: 0.5319 - val_loss: 0.6898 - val_binary_accuracy: 0.4762\n", "Epoch 6/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.6605 - binary_accuracy: 0.6392 - val_loss: 0.6916 - val_binary_accuracy: 0.5238\n", "Epoch 7/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.6487 - binary_accuracy: 0.5997 - val_loss: 0.6900 - val_binary_accuracy: 0.5714\n", "Epoch 8/30\n", "6/6 [==============================] - 0s 10ms/step - loss: 0.6536 - binary_accuracy: 0.6133 - val_loss: 0.6799 - val_binary_accuracy: 0.4762\n", "Epoch 9/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.6062 - binary_accuracy: 0.7737 - val_loss: 0.6733 - val_binary_accuracy: 0.5238\n", "Epoch 10/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.6316 - binary_accuracy: 0.6892 - val_loss: 0.6538 - val_binary_accuracy: 0.5238\n", "Epoch 11/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.5812 - binary_accuracy: 0.6942 - val_loss: 0.6212 - val_binary_accuracy: 0.5714\n", "Epoch 12/30\n", "6/6 [==============================] - 0s 8ms/step - loss: 0.5466 - binary_accuracy: 0.7803 - val_loss: 0.5744 - val_binary_accuracy: 0.7619\n", "Epoch 13/30\n", "6/6 [==============================] - 0s 28ms/step - loss: 0.5181 - binary_accuracy: 0.7368 - val_loss: 0.4873 - val_binary_accuracy: 0.8095\n", "Epoch 14/30\n", "6/6 [==============================] - 0s 10ms/step - loss: 0.4618 - binary_accuracy: 0.8465 - val_loss: 0.4202 - val_binary_accuracy: 0.7619\n", "Epoch 15/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.3706 - binary_accuracy: 0.8382 - val_loss: 0.3515 - val_binary_accuracy: 0.8095\n", "Epoch 16/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.2915 - binary_accuracy: 0.8628 - val_loss: 0.2920 - val_binary_accuracy: 0.9524\n", "Epoch 17/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.2362 - binary_accuracy: 0.9731 - val_loss: 0.2651 - val_binary_accuracy: 0.9524\n", "Epoch 18/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.1909 - binary_accuracy: 0.9306 - val_loss: 0.2213 - val_binary_accuracy: 0.9524\n", "Epoch 19/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.1888 - binary_accuracy: 0.9767 - val_loss: 0.1791 - val_binary_accuracy: 1.0000\n", "Epoch 20/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.1485 - binary_accuracy: 1.0000 - val_loss: 0.1478 - val_binary_accuracy: 1.0000\n", "Epoch 21/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.1104 - binary_accuracy: 1.0000 - val_loss: 0.1258 - val_binary_accuracy: 1.0000\n", "Epoch 22/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.1032 - binary_accuracy: 1.0000 - val_loss: 0.1074 - val_binary_accuracy: 1.0000\n", "Epoch 23/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.0974 - binary_accuracy: 1.0000 - val_loss: 0.0922 - val_binary_accuracy: 1.0000\n", "Epoch 24/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.0590 - binary_accuracy: 1.0000 - val_loss: 0.0757 - val_binary_accuracy: 1.0000\n", "Epoch 25/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.0511 - binary_accuracy: 1.0000 - val_loss: 0.0619 - val_binary_accuracy: 1.0000\n", "Epoch 26/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.0432 - binary_accuracy: 1.0000 - val_loss: 0.0517 - val_binary_accuracy: 1.0000\n", "Epoch 27/30\n", "6/6 [==============================] - 0s 10ms/step - loss: 0.0445 - binary_accuracy: 1.0000 - val_loss: 0.0449 - val_binary_accuracy: 1.0000\n", "Epoch 28/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.0360 - binary_accuracy: 1.0000 - val_loss: 0.0386 - val_binary_accuracy: 1.0000\n", "Epoch 29/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.0370 - binary_accuracy: 1.0000 - val_loss: 0.0353 - val_binary_accuracy: 1.0000\n", "Epoch 30/30\n", "6/6 [==============================] - 0s 9ms/step - loss: 0.0296 - binary_accuracy: 1.0000 - val_loss: 0.0307 - val_binary_accuracy: 1.0000\n", "Test loss: 0.030699074268341064\n", "Test accuracy: 1.0\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" } ], "source": [ "model = small_model()\n", "\n", "history = tf.keras.callbacks.History()\n", "\n", "model.fit(X_train, T_train, validation_data=(X_test, T_test), epochs=30, batch_size=10, callbacks=[history])\n", "\n", "score = model.evaluate(X_test, T_test, verbose=0)\n", "print('Test loss:', score[0])\n", "print('Test accuracy:', score[1])\n", "\n", "plt.figure(figsize=(15, 6))\n", "\n", "plt.subplot(121)\n", "plt.plot(history.history['loss'], '-r', label=\"Training\")\n", "plt.plot(history.history['val_loss'], '-b', label=\"Validation\")\n", "plt.xlabel('Epoch #')\n", "plt.ylabel('Loss')\n", "plt.legend()\n", "\n", "plt.subplot(122)\n", "plt.plot(history.history['binary_accuracy'], '-r', label=\"Training\")\n", "plt.plot(history.history['val_binary_accuracy'], '-b', label=\"Validation\")\n", "plt.xlabel('Epoch #')\n", "plt.ylabel('Accuracy')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "JhPa5tyPZRGM" }, "source": [ "**A:** It works easily." ] }, { "cell_type": "markdown", "metadata": { "id": "XH9l639TQyJE" }, "source": [ "**Q.** Once you have been able to successfully train the network, vary the different parts of the model to understand their influence: learning rate, number of units, optimizer, etc. Add another LSTM layer to see what happens. Exchange the LSTM layer with the GRU layer." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "id": "R7i_xeIVQ4bA" }, "outputs": [], "source": [ "def big_model():\n", " tf.keras.backend.clear_session()\n", " model = tf.keras.models.Sequential()\n", " model.add(tf.keras.layers.Input((nb_words, len(vocabulary))))\n", " model.add(tf.keras.layers.LSTM(20, return_sequences=True))\n", " model.add(tf.keras.layers.LSTM(10, return_sequences=False))\n", " model.add(tf.keras.layers.Dense(1, activation=\"sigmoid\"))\n", " optimizer = tf.keras.optimizers.Adam(lr=0.01)\n", " model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['binary_accuracy'])\n", " print(model.summary())\n", " return model" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "IEhyBe2nU9iQ", "outputId": "eb7ec0fd-589c-41ec-9a3e-3eae2525372b" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "lstm (LSTM) (None, 10, 20) 3120 \n", "_________________________________________________________________\n", "lstm_1 (LSTM) (None, 10) 1240 \n", "_________________________________________________________________\n", "dense (Dense) (None, 1) 11 \n", "=================================================================\n", "Total params: 4,371\n", "Trainable params: 4,371\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "None\n", "Epoch 1/30\n", "6/6 [==============================] - 3s 126ms/step - loss: 0.6949 - binary_accuracy: 0.6490 - val_loss: 0.7004 - val_binary_accuracy: 0.4762\n", "Epoch 2/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.6915 - binary_accuracy: 0.5153 - val_loss: 0.6925 - val_binary_accuracy: 0.4762\n", "Epoch 3/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.6813 - binary_accuracy: 0.5579 - val_loss: 0.6919 - val_binary_accuracy: 0.4762\n", "Epoch 4/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.6781 - binary_accuracy: 0.5419 - val_loss: 0.6874 - val_binary_accuracy: 0.4762\n", "Epoch 5/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.6644 - binary_accuracy: 0.5853 - val_loss: 0.6798 - val_binary_accuracy: 0.4762\n", "Epoch 6/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.6725 - binary_accuracy: 0.6397 - val_loss: 0.6461 - val_binary_accuracy: 0.7619\n", "Epoch 7/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.6507 - binary_accuracy: 0.7549 - val_loss: 0.6170 - val_binary_accuracy: 0.7619\n", "Epoch 8/30\n", "6/6 [==============================] - 0s 12ms/step - loss: 0.6102 - binary_accuracy: 0.7229 - val_loss: 0.5384 - val_binary_accuracy: 0.7619\n", "Epoch 9/30\n", "6/6 [==============================] - 0s 12ms/step - loss: 0.5777 - binary_accuracy: 0.7188 - val_loss: 0.5100 - val_binary_accuracy: 0.7619\n", "Epoch 10/30\n", "6/6 [==============================] - 0s 13ms/step - loss: 0.4356 - binary_accuracy: 0.8078 - val_loss: 0.4245 - val_binary_accuracy: 0.7619\n", "Epoch 11/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.3224 - binary_accuracy: 0.8566 - val_loss: 0.3798 - val_binary_accuracy: 0.7619\n", "Epoch 12/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.2309 - binary_accuracy: 0.9162 - val_loss: 0.3239 - val_binary_accuracy: 0.8095\n", "Epoch 13/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.1888 - binary_accuracy: 0.8865 - val_loss: 0.2813 - val_binary_accuracy: 0.8095\n", "Epoch 14/30\n", "6/6 [==============================] - 0s 12ms/step - loss: 0.2265 - binary_accuracy: 0.8508 - val_loss: 0.2611 - val_binary_accuracy: 0.8095\n", "Epoch 15/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.1821 - binary_accuracy: 0.8974 - val_loss: 0.2211 - val_binary_accuracy: 0.8095\n", "Epoch 16/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.1445 - binary_accuracy: 0.9070 - val_loss: 0.1734 - val_binary_accuracy: 1.0000\n", "Epoch 17/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.1258 - binary_accuracy: 1.0000 - val_loss: 0.1343 - val_binary_accuracy: 1.0000\n", "Epoch 18/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.0961 - binary_accuracy: 1.0000 - val_loss: 0.1001 - val_binary_accuracy: 1.0000\n", "Epoch 19/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.0575 - binary_accuracy: 1.0000 - val_loss: 0.0631 - val_binary_accuracy: 1.0000\n", "Epoch 20/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.0367 - binary_accuracy: 1.0000 - val_loss: 0.0423 - val_binary_accuracy: 1.0000\n", "Epoch 21/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.0290 - binary_accuracy: 1.0000 - val_loss: 0.0247 - val_binary_accuracy: 1.0000\n", "Epoch 22/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.0100 - binary_accuracy: 1.0000 - val_loss: 0.0123 - val_binary_accuracy: 1.0000\n", "Epoch 23/30\n", "6/6 [==============================] - 0s 12ms/step - loss: 0.0091 - binary_accuracy: 1.0000 - val_loss: 0.0070 - val_binary_accuracy: 1.0000\n", "Epoch 24/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.0045 - binary_accuracy: 1.0000 - val_loss: 0.0053 - val_binary_accuracy: 1.0000\n", "Epoch 25/30\n", "6/6 [==============================] - 0s 10ms/step - loss: 0.0042 - binary_accuracy: 1.0000 - val_loss: 0.0043 - val_binary_accuracy: 1.0000\n", "Epoch 26/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.0023 - binary_accuracy: 1.0000 - val_loss: 0.0031 - val_binary_accuracy: 1.0000\n", "Epoch 27/30\n", "6/6 [==============================] - 0s 10ms/step - loss: 0.0026 - binary_accuracy: 1.0000 - val_loss: 0.0026 - val_binary_accuracy: 1.0000\n", "Epoch 28/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.0021 - binary_accuracy: 1.0000 - val_loss: 0.0022 - val_binary_accuracy: 1.0000\n", "Epoch 29/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.0018 - binary_accuracy: 1.0000 - val_loss: 0.0021 - val_binary_accuracy: 1.0000\n", "Epoch 30/30\n", "6/6 [==============================] - 0s 11ms/step - loss: 0.0013 - binary_accuracy: 1.0000 - val_loss: 0.0019 - val_binary_accuracy: 1.0000\n", "Test loss: 0.0019315623212605715\n", "Test accuracy: 1.0\n" ] }, { "data": { "image/png": "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G6ZNm/aPx0aOHMmAAQPyPL5169bs2Fb/jDPOYPXq1bsdM2TIEO677769vu+kSZNYsGDBzvu33nor7733XkHjS4LR51Viae1ayM6OYMbTL7/A3LnQtWtMconEmkbygpSaCh07+hv47Ti/+cbPx/z0U//z1Vf/Pr5cOb+LZ+3au98qVwYzGjeGV17xjdp79fJfQiUlhfOfJyLh6NWrFxMmTOD000/f+diECRO455578n3t1KlT8z1mTyZNmkSnTp2oX78+AMOGDdvnc0ni0OdVYmlHI/RDD83nwPScTd61Hk/ilEbyYik5GZo08aN9zz0HS5bAr7/6rp0PPQQXXeS3g/ryS7+zZ9++vovngQf6XT+bNoXzzqPdknGMGrGNqVPh+uvD/o8SkVjr0aMHb775JptzGnYuXbqU5cuX8+KLL5KWlsbRRx/Nbbfdludra9asycqVKwG44447qFOnDi1btmTRokU7j3nsscdo2rQpjRo1onv37qxfv55PPvmE9PR0rr32Who3bsyPP/5I3759mThxIgDvv/8+TZo0oUGDBlx88cVs2rRp5/vddtttHHvssTRo0IDvvvsuyL8aKYT0eZVYirhHXnq6X3pTp07gmUTCoJG8sB18sL/l+oYTgC1b4Kef4Icf/nmbORNefJGBxzzEgq5vcf/91Tn6aF8fikjsXXmln/ETTY0bw8iRe36+UqVKNGvWjLfeeouuXbsyYcIEzj77bP773/9SqVIltm3bRtu2bfn6669p2LBhnueYM2cOEyZMYO7cuWzdupVjjz2W4447DoCzzjqLSy65BICbb76ZJ554gv/85z906dKFTp060aNHj3+ca+PGjfTt25f333+fOnXq0KdPH8aMGcOVV14JQOXKlfnyyy955JFHuO+++3j88cej8Lck+0KfV31e411ERd6aNb4Jes7/5iLxSCN5hVXx4v7bpY4d/T9Co0fDO+/A0qXw2mvw11+MnFyTdgfOo18/x0cfhR1YRGJpxxQ48FPfevXqxcsvv8yxxx5LkyZNmD9//j/WI+3qo48+olu3bpQuXZoDDjiALrmmLH377becdNJJNGjQgOeff5758+fvNcuiRYuoVasWdXK+Eb/wwguZMWPGzufPOussAI477jiWLl26r//JUoTp8yqxElEj9GnT/JfpWo8ncUwjeUWNGXTrBu3bk3z//bx85xmc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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" } ], "source": [ "model = big_model()\n", "\n", "history = tf.keras.callbacks.History()\n", "\n", "model.fit(X_train, T_train, validation_data=(X_test, T_test), epochs=30, batch_size=10, callbacks=[history])\n", "\n", "score = model.evaluate(X_test, T_test, verbose=0)\n", "print('Test loss:', score[0])\n", "print('Test accuracy:', score[1])\n", "\n", "plt.figure(figsize=(15, 6))\n", "\n", "plt.subplot(121)\n", "plt.plot(history.history['loss'], '-r', label=\"Training\")\n", "plt.plot(history.history['val_loss'], '-b', label=\"Validation\")\n", "plt.xlabel('Epoch #')\n", "plt.ylabel('Loss')\n", "plt.legend()\n", "\n", "plt.subplot(122)\n", "plt.plot(history.history['binary_accuracy'], '-r', label=\"Training\")\n", "plt.plot(history.history['val_binary_accuracy'], '-b', label=\"Validation\")\n", "plt.xlabel('Epoch #')\n", "plt.ylabel('Accuracy')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "jpdgHD7PU9iR" }, "source": [ "## Time series prediction\n", "\n", "Another useful function of RNNs is forecasting, i.e. predicting the rest of a sequence (financial markets, weather, etc.) based on its history.\n", "\n", "Let's generate a dummy one-dimensional signal with 10000 points:\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 374 }, "id": "-jEpsMPyU9iR", "outputId": "c882753f-9b17-45a8-c91b-b6f226e76122" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" } ], "source": [ "N = 10000\n", "time_axis = np.arange(N)\n", "\n", "signal = 0.8*np.sin(time_axis/700) + 0.15*np.sin(time_axis/40)\n", "\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(signal)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "tMJ15BEDUHCh" }, "source": [ "We are going to use a small window (50 points) to feed the LSTM. The goal will be to perform **one-step ahead prediction**: given the last 50 points, what will be the next one?\n", "\n", "The following cell prepares the data for the problem. Check that the data is what you expect." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "i2HYMKoeU9iS", "outputId": "417d1c94-5aab-4092-e56f-4931aad70e88" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(9950, 50)\n", "(9950,)\n" ] } ], "source": [ "window = 50\n", "\n", "X = np.array(\n", " [signal[t: t+ window] for t in time_axis[:-window]]\n", ")\n", "\n", "t = signal[time_axis[1:-window+1]]\n", "\n", "print(X.shape)\n", "print(t.shape)" ] }, { "cell_type": "markdown", "metadata": { "id": "-F1prIbgUfdW" }, "source": [ "We now split the signal into training and test sets. The training set consists of the 9000 first points, while the test set consists of the remaining 1000 points (the future). Note that the test set is not exactly contained in the training set as the function is not periodic, but quite." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "id": "_wzyFA4JU9iT" }, "outputs": [], "source": [ "nb_train = 9000\n", "\n", "X_train = X[:nb_train]\n", "T_train = t[:nb_train]\n", "X_test = X[nb_train:]\n", "T_test = t[nb_train:]" ] }, { "cell_type": "markdown", "metadata": { "id": "Ft8qAwVZU10t" }, "source": [ "**Q:** Create a neural network taking a `(window, 1)` input, with one LSTM layer and one output neuron using the tanh activation function (as the targets are between -1 and 1). Train it on the data as a regression problem (use many epochs). Track the mean average error (`metrics=['mae']`) in addition to the mse, as it indicates better the prediction error. After training, plot the prediction for the test set and compare it to the ground truth." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "id": "P9RkDPtpRKpV" }, "outputs": [], "source": [ "def create_model(window):\n", "\n", " tf.keras.backend.clear_session()\n", " \n", " inputs = tf.keras.layers.Input((window, 1))\n", "\n", " x = tf.keras.layers.LSTM(20)(inputs)\n", "\n", " output = tf.keras.layers.Dense(1, activation=\"tanh\")(x)\n", "\n", " model = tf.keras.models.Model(inputs, output)\n", "\n", " optimizer = tf.keras.optimizers.Adam(lr=0.01)\n", "\n", " model.compile(loss='mse', optimizer=optimizer, metrics=['mae'])\n", "\n", " print(model.summary())\n", "\n", " return model" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "OSakcNXFU9iT", "outputId": "2a839b39-1fd6-4186-f0d6-8a23d6a4366d" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"model\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "input_1 (InputLayer) [(None, 50, 1)] 0 \n", "_________________________________________________________________\n", "lstm (LSTM) (None, 20) 1760 \n", "_________________________________________________________________\n", "dense (Dense) (None, 1) 21 \n", "=================================================================\n", "Total params: 1,781\n", "Trainable params: 1,781\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "None\n", "Epoch 1/50\n", "141/141 [==============================] - 2s 7ms/step - loss: 0.0321 - mae: 0.1348 - val_loss: 0.0260 - val_mae: 0.1357\n", "Epoch 2/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 0.0095 - mae: 0.0818 - val_loss: 0.0052 - val_mae: 0.0596\n", "Epoch 3/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 0.0039 - mae: 0.0510 - val_loss: 0.0020 - val_mae: 0.0384\n", "Epoch 4/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 8.8932e-04 - mae: 0.0237 - val_loss: 2.3679e-04 - val_mae: 0.0132\n", "Epoch 5/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 2.3213e-04 - mae: 0.0122 - val_loss: 4.4895e-04 - val_mae: 0.0187\n", "Epoch 6/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 4.5989e-04 - mae: 0.0159 - val_loss: 3.8623e-04 - val_mae: 0.0158\n", "Epoch 7/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 2.5193e-04 - mae: 0.0126 - val_loss: 1.4829e-04 - val_mae: 0.0103\n", "Epoch 8/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.9236e-04 - mae: 0.0107 - val_loss: 1.1680e-04 - val_mae: 0.0089\n", "Epoch 9/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.5906e-04 - mae: 0.0099 - val_loss: 1.0358e-04 - val_mae: 0.0085\n", "Epoch 10/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 8.3204e-05 - mae: 0.0072 - val_loss: 6.3628e-04 - val_mae: 0.0238\n", "Epoch 11/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 2.3202e-04 - mae: 0.0123 - val_loss: 8.6499e-05 - val_mae: 0.0071\n", "Epoch 12/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.5292e-04 - mae: 0.0098 - val_loss: 1.8333e-04 - val_mae: 0.0125\n", "Epoch 13/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.3011e-04 - mae: 0.0090 - val_loss: 1.2432e-04 - val_mae: 0.0092\n", "Epoch 14/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.2748e-04 - mae: 0.0090 - val_loss: 7.3832e-05 - val_mae: 0.0074\n", "Epoch 15/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 8.2734e-05 - mae: 0.0072 - val_loss: 5.1241e-05 - val_mae: 0.0058\n", "Epoch 16/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.0381e-04 - mae: 0.0081 - val_loss: 2.6565e-05 - val_mae: 0.0044\n", "Epoch 17/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 6.0350e-05 - mae: 0.0061 - val_loss: 4.3032e-05 - val_mae: 0.0056\n", "Epoch 18/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 7.3179e-05 - mae: 0.0070 - val_loss: 2.6526e-04 - val_mae: 0.0147\n", "Epoch 19/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.5532e-04 - mae: 0.0098 - val_loss: 4.6380e-05 - val_mae: 0.0058\n", "Epoch 20/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.8684e-04 - mae: 0.0104 - val_loss: 7.1898e-05 - val_mae: 0.0077\n", "Epoch 21/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 2.7324e-05 - mae: 0.0042 - val_loss: 2.1653e-05 - val_mae: 0.0038\n", "Epoch 22/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 3.3472e-05 - mae: 0.0046 - val_loss: 1.3280e-05 - val_mae: 0.0029\n", "Epoch 23/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 5.0352e-05 - mae: 0.0055 - val_loss: 1.3503e-05 - val_mae: 0.0030\n", "Epoch 24/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 5.2304e-05 - mae: 0.0054 - val_loss: 3.2720e-04 - val_mae: 0.0172\n", "Epoch 25/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.6084e-04 - mae: 0.0098 - val_loss: 4.7370e-05 - val_mae: 0.0061\n", "Epoch 26/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 3.0319e-05 - mae: 0.0044 - val_loss: 1.1324e-04 - val_mae: 0.0081\n", "Epoch 27/50\n", "141/141 [==============================] - 1s 6ms/step - loss: 4.3116e-05 - mae: 0.0051 - val_loss: 1.7483e-04 - val_mae: 0.0121\n", "Epoch 28/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 6.8618e-05 - mae: 0.0061 - val_loss: 1.2294e-04 - val_mae: 0.0096\n", "Epoch 29/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 4.5403e-05 - mae: 0.0052 - val_loss: 6.6824e-06 - val_mae: 0.0021\n", "Epoch 30/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 5.2677e-04 - mae: 0.0155 - val_loss: 1.3084e-05 - val_mae: 0.0028\n", "Epoch 31/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 4.1677e-05 - mae: 0.0050 - val_loss: 1.2648e-05 - val_mae: 0.0030\n", "Epoch 32/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 2.1466e-05 - mae: 0.0037 - val_loss: 7.2209e-06 - val_mae: 0.0022\n", "Epoch 33/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 8.8189e-06 - mae: 0.0024 - val_loss: 9.4702e-06 - val_mae: 0.0026\n", "Epoch 34/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.6518e-05 - mae: 0.0031 - val_loss: 4.7648e-06 - val_mae: 0.0018\n", "Epoch 35/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 6.3752e-05 - mae: 0.0055 - val_loss: 8.0761e-06 - val_mae: 0.0023\n", "Epoch 36/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.2616e-05 - mae: 0.0025 - val_loss: 4.8663e-06 - val_mae: 0.0019\n", "Epoch 37/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.1288e-04 - mae: 0.0075 - val_loss: 1.8049e-05 - val_mae: 0.0038\n", "Epoch 38/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 4.6925e-05 - mae: 0.0053 - val_loss: 7.7753e-06 - val_mae: 0.0024\n", "Epoch 39/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.5035e-05 - mae: 0.0031 - val_loss: 4.5659e-06 - val_mae: 0.0018\n", "Epoch 40/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 5.1643e-05 - mae: 0.0039 - val_loss: 6.4413e-04 - val_mae: 0.0217\n", "Epoch 41/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 3.4189e-04 - mae: 0.0120 - val_loss: 5.2492e-06 - val_mae: 0.0019\n", "Epoch 42/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 9.2156e-06 - mae: 0.0024 - val_loss: 2.2826e-05 - val_mae: 0.0040\n", "Epoch 43/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 9.4703e-06 - mae: 0.0024 - val_loss: 5.3999e-06 - val_mae: 0.0020\n", "Epoch 44/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.5472e-05 - mae: 0.0031 - val_loss: 1.2471e-05 - val_mae: 0.0030\n", "Epoch 45/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 9.6372e-06 - mae: 0.0024 - val_loss: 1.6067e-05 - val_mae: 0.0037\n", "Epoch 46/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 1.1083e-05 - mae: 0.0022 - val_loss: 3.5924e-04 - val_mae: 0.0182\n", "Epoch 47/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 8.1012e-05 - mae: 0.0068 - val_loss: 4.1036e-05 - val_mae: 0.0057\n", "Epoch 48/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 4.1891e-05 - mae: 0.0048 - val_loss: 2.2498e-06 - val_mae: 0.0012\n", "Epoch 49/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 4.7253e-06 - mae: 0.0017 - val_loss: 1.5864e-06 - val_mae: 9.7631e-04\n", "Epoch 50/50\n", "141/141 [==============================] - 1s 5ms/step - loss: 2.3313e-06 - mae: 0.0012 - val_loss: 2.7683e-06 - val_mae: 0.0012\n", "Test loss: 2.7682647214533063e-06\n", "Test accuracy: 0.0012316412758082151\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" } ], "source": [ "model = create_model(window)\n", "\n", "history = tf.keras.callbacks.History()\n", "\n", "model.fit(X_train, T_train, validation_data=(X_test, T_test), epochs=50, batch_size=64, callbacks=[history])\n", "\n", "score = model.evaluate(X_test, T_test, verbose=0)\n", "print('Test loss:', score[0])\n", "print('Test accuracy:', score[1])\n", "\n", "plt.figure(figsize=(15, 6))\n", "\n", "plt.subplot(121)\n", "plt.plot(history.history['loss'], '-r', label=\"Training\")\n", "plt.plot(history.history['val_loss'], '-b', label=\"Validation\")\n", "plt.xlabel('Epoch #')\n", "plt.ylabel('Loss')\n", "plt.legend()\n", "\n", "plt.subplot(122)\n", "plt.plot(history.history['mae'], '-r', label=\"Training\")\n", "plt.plot(history.history['val_mae'], '-b', label=\"Validation\")\n", "plt.xlabel('Epoch #')\n", "plt.ylabel('Mean Average Error')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 374 }, "id": "re_m4AwDU9iU", "outputId": "e6b36a65-1837-4afd-bf82-d661f2ea54ce" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" } ], "source": [ "y = model.predict(X_test)\n", "\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(T_test, label=\"Ground truth\")\n", "plt.plot(y[:, 0], label=\"Prediction\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "SiGLEA5cVlS6" }, "source": [ "It seems possible to get a high precision on the test set, but there is a trick. The sequence fed as an input when testing consists of **real** measurements. The network has only learned to predict the next data point. Can we use that model to predict the next 1000 points without seeing the true data?\n", "\n", "For that, we need to build an **auto-regressive model**, i.e. to feed inputs to the network consisting of predictions, not of real data points. We need a structure that can represent a fixed-size window of data points, where we can append predictions one by one. The following cell provides you with a simple implementation:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "id": "NPAaX0ZaWVhI" }, "outputs": [], "source": [ "from collections import deque\n", "\n", "class Buffer:\n", " \"Fixed size buffer allowing to append predictions.\"\n", " def __init__(self, window, data):\n", " self.window = window\n", " self.data = data.reshape((1, window))\n", "\n", " def append(self, value):\n", " d = deque([x for x in list(self.data[0, :])])\n", " d.popleft()\n", " d.append(value)\n", " self.data = np.array(d).reshape((1, self.window))\n" ] }, { "cell_type": "markdown", "metadata": { "id": "Zez00Q5vYBal" }, "source": [ "You can create the buffer by intializing it with the first test sample consisting of 50 real data points:\n", "\n", "```python\n", "buffer = Buffer(window, X_test[0, :])\n", "```\n", "\n", "`buffer.data` can be passed directly to the model in order to make a prediction:\n", "\n", "```python\n", "y = model.predict(buffer.data)[0, 0]\n", "```\n", "\n", "This prediction can be appended to the buffer, which can be used as the next input to the model:\n", "\n", "```python\n", "buffer.append(y)\n", "```\n", "\n", "**Q:** Make recursive prediction using your trained model. Does it work?" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 378 }, "id": "uoomfW19U9iV", "outputId": "bb4d7496-55e3-4e7c-d2ab-48e581a3e864" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAFpCAYAAACvaj13AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeVhV5frG8e8LCA7ggLMCigMqKk44lpqWQ2WazaOaecxONpzKsnnuNA+nPJaZZafBNEvNBs3UtMwccsYJFQUnVFQUZH5/fyzkh2aKCqy94f5cV5fsvdbaPFsDbtZ61vMaay0iIiIiUrh83C5AREREpCRSyBIREREpAgpZIiIiIkVAIUtERESkCChkiYiIiBQBhSwRERGRIlCgkGWM6WuM2WiMiTXGjD7F9iHGmH3GmJW5/w3Lt22wMWZz7n+DC7N4EREREU9lzjQnyxjjC2wCegEJwFLgRmttTL59hgDR1tqRJx0bDCwDogELLAfaWWsPFuJ7EBEREfE4BTmT1QGItdZutdZmAJOAAQV8/T7AT9bapNxg9RPQ99xKFREREfEeBQlZdYH4fI8Tcp872dXGmNXGmK+MMaFneayIiIhIieJXSK/zLfCFtTbdGHMHMBHoWdCDjTHDgeEAFSpUaNe0adNCKktERESk6Cxfvny/tbb6qbYVJGTtBELzPQ7JfS6PtfZAvofjgVfyHXvRScfOP/kTWGvHAeMAoqOj7bJlywpQloiIiIi7jDHb/25bQS4XLgUaG2PCjTH+wA3AjJM+Qe18D/sD63M/ngX0NsZUMcZUAXrnPiciIiJSop3xTJa1NssYMxInHPkCE6y164wxzwLLrLUzgHuMMf2BLCAJGJJ7bJIx5jmcoAbwrLU2qQjeh4iIiIhHOeMIh+Kmy4UiIiLiLYwxy6210afaVliN70UqMzOThIQE0tLS3C5FgLJlyxISEkKZMmXcLkVERMRjeUXISkhIICgoiPr162OMcbucUs1ay4EDB0hISCA8PNztckRERDyWV6xdmJaWRtWqVRWwPIAxhqpVq+qsooiIyBl4RcgCFLA8iP4tREREzsxrQpbb9u7dy0033USDBg1o164dnTt35ptvvinWGuLi4mjRosUpn//888/P6TXfeustUlNT8x4HBgaec30iIiLy/xSyCsBay5VXXkm3bt3YunUry5cvZ9KkSSQkJPxl36ysrGKv73Qh60z1nByyREREpHB4ReO72+bOnYu/vz8jRozIe65evXrcfffdAHz88cd8/fXXHD16lOzsbL755huGDh3K1q1bKV++POPGjSMqKoqnn36awMBAHnzwQQBatGjBzJkzAbj00ku58MILWbRoEXXr1mX69OmUK1eO5cuXM3ToUAB69+59yvpGjx7N+vXrad26NYMHD6ZKlSon1PPMM8/w2muv5X2ukSNHEh0dTXJyMrt27aJHjx5Uq1aNefPmAfDYY48xc+ZMypUrx/Tp06lZs2bR/MWKiIiUYF4Xsp75dh0xu5IL9TUj61TkqSua/+32devW0bZt29O+xp9//snq1asJDg7m7rvvpk2bNkybNo25c+cyaNAgVq5cedrjN2/ezBdffMEHH3zAddddx9SpU7nlllu47bbbePfdd+nWrRujRo065bEvvfTSCSHq448/PqGe+fPnn/K4e+65hzfeeIN58+ZRrVo1AFJSUujUqRMvvPACDz30EB988AGPP/74aWsXERGRv9LlwnNw11130apVK9q3b5/3XK9evQgODgbg119/5dZbbwWgZ8+eHDhwgOTk0wfD8PBwWrduDUC7du2Ii4vj0KFDHDp0iG7dugHkvWZB5K/nbPj7+9OvX78T6hAREfE22/an8Fvsfldr8LozWac741RUmjdvztSpU/Mejxkzhv379xMd/f8DXitUqHDG1/Hz8yMnJyfvcf4xCAEBAXkf+/r6cuzYsfOqOX89p/u8JytTpkze3YO+vr6u9JiJiIicrZwcy4r4Q/wUs5c56/cSm3iUupXL8evDPVy7K15nsgqgZ8+epKWlMXbs2LznTtcs3rVrVz777DMA5s+fT7Vq1ahYsSL169fnzz//BJzLi9u2bTvt561cuTKVK1fm119/Bch7zZMFBQVx5MiRv32devXqERMTQ3p6OocOHeLnn38u8LEiIiKeKj0rm3kbExk9dTUdXpzD1WMXMX7hVmpWDOCpKyKZNLyTq2OHvO5MlhuMMUybNo1//etfvPLKK1SvXp0KFSrw8ssvn3L/p59+mqFDhxIVFUX58uWZOHEiAFdffTWffPIJzZs3p2PHjkRERJzxc3/00UcMHToUY8zfNr5HRUXh6+tLq1atGDJkCFWqVDlhe2hoKNdddx0tWrQgPDycNm3a5G0b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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light", "tags": [] }, "output_type": "display_data" } ], "source": [ "predictions = []\n", "\n", "buffer = Buffer(window, X_test[0, :])\n", "\n", "for t in range(100):\n", " \n", " # Make a prediction using the current buffer\n", " y = model.predict(buffer.data)[0, 0]\n", "\n", " # Store the prediction\n", " predictions.append(y)\n", "\n", " # Append the prediction to buffer\n", " buffer.append(y)\n", " \n", " \n", "plt.figure(figsize=(10, 6))\n", "plt.plot(T_test[:100], label=\"Ground truth\")\n", "plt.plot(predictions, label=\"Prediction\")\n", "plt.legend()\n", "plt.show()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "id": "6CeMCRlNYw5K" }, "source": [ "**A:** No. The slightest imprecision in the prediction accumulates in the input. After a while, the input to the model does not correspond to something that has been learned, and the output stops making sense. RNN do not have their own dynamics and are quite bad at predicting time series unless you have a lot of training data. " ] } ], "metadata": { "accelerator": "GPU", "colab": { "collapsed_sections": [], "name": "13-RNN-solution.ipynb", "provenance": [], "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.1" } }, "nbformat": 4, "nbformat_minor": 4 }