diff --git "a/docs/notebooks/ex11c - lstm on IMDB.ipynb" "b/docs/notebooks/ex11c - lstm on IMDB.ipynb"
new file mode 100644--- /dev/null
+++ "b/docs/notebooks/ex11c - lstm on IMDB.ipynb"
@@ -0,0 +1,1505 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": [],
+ "machine_shape": "hm"
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "accelerator": "GPU",
+ "gpuClass": "standard"
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "WMucfLUS1yhH"
+ },
+ "source": [
+ "# What is this?\n",
+ "\n",
+ "This Jupyter Notebook contains Python code for building a LSTM Recurrent Neural Network that gives 87-88% accuracy on the IMDB Movie Review Sentiment Analysis Dataset.\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "\n",
+ "More information is given on [this blogpost](https://www.bouvet.no/bouvet-deler/explaining-recurrent-neural-networks).\n",
+ "\n",
+ "We investigate the IMDB Movie Dataset.\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "\n",
+ "This code is supplied without license, warranty or support. Feel free to do with it what you will."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "wFUKGe4x3ala"
+ },
+ "source": [
+ "## Built for Google Collaboratory\n",
+ "\n",
+ "Train your network more quickly in Google Collaboratory. From the **Runtime** menu select **Change Runtime** Type and choose \"GPU\"!\n",
+ "\n",
+ "Don't forget to select **Runtime** -> **Restart runtime** to put your changes into effect."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "WP1VrbVp3sVu"
+ },
+ "source": [
+ "## Setting up\n",
+ "\n",
+ "When running this for the first time you may get a warning telling you to restart the Runtime. You can ignore this, but feel free to select \"Runtime->Restart Runtime\" from the overhead menu if you encounter problems."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "2e3txwbh3q76",
+ "outputId": "fe815631-eaec-4d80-838d-a27414a20c0a",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "source": [
+ "# keras.datasets.imdb is broken in TensorFlow 1.13 and 1.14 due to numpy 1.16.3\n",
+ "!pip install numpy==1.16.2\n",
+ "\n",
+ "# All the imports!\n",
+ "import tensorflow as tf\n",
+ "import numpy as np\n",
+ "from tensorflow.keras.preprocessing import sequence\n",
+ "from numpy import array\n",
+ "\n",
+ "# Supress deprecation warnings\n",
+ "import logging\n",
+ "logging.getLogger('tensorflow').disabled = True\n"
+ ],
+ "execution_count": 1,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Collecting numpy==1.16.2\n",
+ " Downloading numpy-1.16.2.zip (5.1 MB)\n",
+ "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/5.1 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━\u001b[0m \u001b[32m4.2/5.1 MB\u001b[0m \u001b[31m137.6 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.1/5.1 MB\u001b[0m \u001b[31m79.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ "Building wheels for collected packages: numpy\n",
+ " \u001b[1;31merror\u001b[0m: \u001b[1msubprocess-exited-with-error\u001b[0m\n",
+ " \n",
+ " \u001b[31m×\u001b[0m \u001b[32mpython setup.py bdist_wheel\u001b[0m did not run successfully.\n",
+ " \u001b[31m│\u001b[0m exit code: \u001b[1;36m1\u001b[0m\n",
+ " \u001b[31m╰─>\u001b[0m See above for output.\n",
+ " \n",
+ " \u001b[1;35mnote\u001b[0m: This error originates from a subprocess, and is likely not a problem with pip.\n",
+ " Building wheel for numpy (setup.py) ... \u001b[?25lerror\n",
+ "\u001b[31m ERROR: Failed building wheel for numpy\u001b[0m\u001b[31m\n",
+ "\u001b[0m\u001b[?25h Running setup.py clean for numpy\n",
+ " \u001b[1;31merror\u001b[0m: \u001b[1msubprocess-exited-with-error\u001b[0m\n",
+ " \n",
+ " \u001b[31m×\u001b[0m \u001b[32mpython setup.py clean\u001b[0m did not run successfully.\n",
+ " \u001b[31m│\u001b[0m exit code: \u001b[1;36m1\u001b[0m\n",
+ " \u001b[31m╰─>\u001b[0m See above for output.\n",
+ " \n",
+ " \u001b[1;35mnote\u001b[0m: This error originates from a subprocess, and is likely not a problem with pip.\n",
+ "\u001b[31m ERROR: Failed cleaning build dir for numpy\u001b[0m\u001b[31m\n",
+ "\u001b[0mFailed to build numpy\n",
+ "\u001b[31mERROR: Could not build wheels for numpy, which is required to install pyproject.toml-based projects\u001b[0m\u001b[31m\n",
+ "\u001b[0m"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Vocabulary Size"
+ ],
+ "metadata": {
+ "id": "nGS3DM56wYhN"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Fetch \"IMDB Movie Review\" data, constraining our reviews to\n",
+ "# the 10000 most commonly used words\n",
+ "vocab_size = 10000\n",
+ "(x_train, y_train), (x_test, y_test) = tf.keras.datasets.imdb.load_data(num_words=vocab_size)\n",
+ "\n",
+ "# Map for readable classnames\n",
+ "class_names = [\"Negative\", \"Positive\"]"
+ ],
+ "metadata": {
+ "id": "ProT4bJrwXZP",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "outputId": "5a9f0147-a19d-4830-a033-3c32965b79e1"
+ },
+ "execution_count": 2,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/imdb.npz\n",
+ "17464789/17464789 [==============================] - 2s 0us/step\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "hdyHL8FF0JJy"
+ },
+ "source": [
+ "## Create map for converting IMDB dataset to readable reviews\n",
+ "\n",
+ "Reviews in the IMDB dataset have been encoded as a sequence of integers. Luckily the dataset also\n",
+ "contains an index for converting the reviews back into human readable form."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "E05AweFu0Imt",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "outputId": "a43cb15f-d97f-43e3-c6af-98d759e514c4"
+ },
+ "source": [
+ "# Get the word index from the dataset\n",
+ "word_index = tf.keras.datasets.imdb.get_word_index()\n",
+ "\n",
+ "# Ensure that \"special\" words are mapped into human readable terms\n",
+ "word_index = {k:(v+3) for k,v in word_index.items()}\n",
+ "word_index[\"\"] = 0\n",
+ "word_index[\"\"] = 1\n",
+ "word_index[\"\"] = 2\n",
+ "word_index[\"\"] = 3\n",
+ "\n",
+ "# Perform reverse word lookup and make it callable\n",
+ "reverse_word_index = dict([(value, key) for (key, value) in word_index.items()])\n",
+ "def decode_review(text):\n",
+ " return ' '.join([reverse_word_index.get(i, '?') for i in text])"
+ ],
+ "execution_count": 3,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/imdb_word_index.json\n",
+ "1641221/1641221 [==============================] - 1s 1us/step\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# IMDB: Data Processing"
+ ],
+ "metadata": {
+ "id": "Up61SKxDNiMD"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "fFXK-g6G81sC"
+ },
+ "source": [
+ "## Data Insight\n",
+ "\n",
+ "Here we take a closer look at our data. How many words do our reviews contain?\n",
+ "\n",
+ "And what do our review look like in machine and human readable form?\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "yD1qHVBn81Y_",
+ "outputId": "8f122f34-98df-485e-dd6d-2c9ea49e9ad9",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "source": [
+ "# Concatonate test and training datasets\n",
+ "allreviews = np.concatenate((x_train, x_test), axis=0)\n",
+ "\n",
+ "# Review lengths across test and training whole datasets\n",
+ "print(\"Maximum review length: {}\".format(len(max((allreviews), key=len))))\n",
+ "print(\"Minimum review length: {}\".format(len(min((allreviews), key=len))))\n",
+ "result = [len(x) for x in allreviews]\n",
+ "print(\"Mean review length: {}\".format(np.mean(result)))\n",
+ "\n",
+ "# Print a review and it's class as stored in the dataset. Replace the number\n",
+ "# to select a different review.\n",
+ "print(\"\")\n",
+ "print(\"Machine readable Review\")\n",
+ "print(\" Review Text: \" + str(x_train[60]))\n",
+ "print(\" Review Sentiment: \" + str(y_train[60]))\n",
+ "\n",
+ "# Print a review and it's class in human readable format. Replace the number\n",
+ "# to select a different review.\n",
+ "print(\"\")\n",
+ "print(\"Human Readable Review\")\n",
+ "print(\" Review Text: \" + decode_review(x_train[60]))\n",
+ "print(\" Review Sentiment: \" + class_names[y_train[60]])"
+ ],
+ "execution_count": 4,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Maximum review length: 2494\n",
+ "Minimum review length: 7\n",
+ "Mean review length: 234.75892\n",
+ "\n",
+ "Machine readable Review\n",
+ " Review Text: [1, 13, 219, 14, 33, 4, 2, 22, 1413, 12, 16, 373, 175, 2711, 1115, 1026, 430, 939, 16, 23, 2444, 25, 43, 697, 89, 12, 16, 170, 8, 130, 262, 19, 32, 4, 665, 7, 4, 2, 322, 5, 4, 1520, 7, 4, 86, 250, 10, 10, 4, 249, 173, 16, 4, 3891, 6, 19, 4, 167, 564, 5, 564, 1325, 36, 805, 8, 216, 638, 17, 2, 21, 25, 100, 376, 507, 4, 2110, 15, 79, 125, 23, 567, 13, 2134, 233, 36, 4852, 2, 5, 81, 1672, 10, 10, 92, 437, 129, 58, 13, 69, 8, 401, 61, 1432, 39, 1286, 46, 7, 12]\n",
+ " Review Sentiment: 0\n",
+ "\n",
+ "Human Readable Review\n",
+ " Review Text: i saw this at the film festival it was awful every clichéd violent rich boy fantasy was on display you just knew how it was going to end especially with all the shots of the wife and the rape of the first girl br br the worst part was the q a with the director writer and writer producer they tried to come across as but you could tell they're the types that get off on violence i bet anything they frequent and do drugs br br don't waste your time i had to keep my boyfriend from walking out of it\n",
+ " Review Sentiment: Negative\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "mF-Votm66zD5"
+ },
+ "source": [
+ "## Pre-processing Data\n",
+ "\n",
+ "We need to make sure that our reviews are of a uniform length. This is for the LSTM's parameters.\n",
+ "\n",
+ "
\n",
+ "\n",
+ "Another way is to use one-hot encode technique. The sentence \"I love cats\" could have a dictionary of [cats, i, love]. Using this dictionary, we can create the following transformation\n",
+ "$$\n",
+ "\\begin{bmatrix}\n",
+ "\\text{cats} \\\\\n",
+ "\\text{i} \\\\\n",
+ "\\text{love}\\\\\n",
+ "\\end{bmatrix}\n",
+ "→\n",
+ "\\begin{bmatrix}\n",
+ "\\text{i} & \\text{love} & \\text{cats} \\\\\n",
+ "0 & 0 & 1 \\\\\n",
+ "1 & 0 & 0 \\\\\n",
+ "0 & 1 & 0 \\\\\n",
+ "\\end{bmatrix}\n",
+ "$$\n",
+ "\n",
+ "Some reviews will need to be truncated, while others need to be padded."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "uNtJTLJA6gaT",
+ "outputId": "72424605-2c3d-4f77-f6b8-57f096c211a0",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "source": [
+ "# The length of reviews\n",
+ "review_length = 300\n",
+ "\n",
+ "# Padding / truncated our reviews\n",
+ "x_train = sequence.pad_sequences(x_train, maxlen = review_length)\n",
+ "x_test = sequence.pad_sequences(x_test, maxlen = review_length)\n",
+ "\n",
+ "# Check the size of our datasets. Review data for both test and training should\n",
+ "# contain 25000 reviews of 500 integers. Class data should contain 25000 values,\n",
+ "# one for each review. Class values are 0 or 1, indicating a negative\n",
+ "# or positive review.\n",
+ "print(\"Shape Training Review Data: \" + str(x_train.shape))\n",
+ "print(\"Shape Training Class Data: \" + str(y_train.shape))\n",
+ "print(\"Shape Test Review Data: \" + str(x_test.shape))\n",
+ "print(\"Shape Test Class Data: \" + str(y_test.shape))\n",
+ "\n",
+ "# Note padding is added to start of review, not the end\n",
+ "print(\"\")\n",
+ "print(\"Human Readable Review Text (post padding): \" + decode_review(x_train[60]))"
+ ],
+ "execution_count": 5,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Shape Training Review Data: (25000, 300)\n",
+ "Shape Training Class Data: (25000,)\n",
+ "Shape Test Review Data: (25000, 300)\n",
+ "Shape Test Class Data: (25000,)\n",
+ "\n",
+ "Human Readable Review Text (post padding): i saw this at the film festival it was awful every clichéd violent rich boy fantasy was on display you just knew how it was going to end especially with all the shots of the wife and the rape of the first girl br br the worst part was the q a with the director writer and writer producer they tried to come across as but you could tell they're the types that get off on violence i bet anything they frequent and do drugs br br don't waste your time i had to keep my boyfriend from walking out of it\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Model Architecture: Theory and Graphs"
+ ],
+ "metadata": {
+ "id": "0WNLCfM8Nk88"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "BfOdV_VCCFee"
+ },
+ "source": [
+ "## Create and build LSTM Recurrent Neural Network\n",
+ "\n",
+ "Given data $X$ and $Y$, we want to feed information forward into a time stamp. Then we form some belief and we make some initial predictions. We investigate our beliefs by looking at the loss function of the initial guesses and the real value. We update our model according to error we observed."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Architecture: Feed-forward\n",
+ "\n",
+ "Consider data with time stamp\n",
+ "$$X_{\\langle 1 \\rangle} \\rightarrow X_{\\langle 2 \\rangle} \\rightarrow \\dots \\rightarrow X_{\\langle T \\rangle}$$\n",
+ "and feed-forward architecture pass information through exactly as the following:\n",
+ "$$\n",
+ "\\text{Information in:} \\rightarrow\n",
+ "\\begin{matrix}\n",
+ "\\{Y_{\\langle 1 \\rangle}, ..., Y_{\\langle k \\rangle}\\} & \\{Y_{\\langle 1 \\rangle}, ..., Y_{\\langle k \\rangle}\\} & & \\{Y_{\\langle 1 \\rangle}, ..., Y_{\\langle k \\rangle}\\} \\\\\n",
+ "\\updownarrow & \\updownarrow & & \\updownarrow \\\\\n",
+ "\\{\\hat{Y}_{\\langle 1 \\rangle}, ..., \\hat{Y}_{\\langle k \\rangle}\\} & \\{\\hat{Y}_{\\langle 1 \\rangle}, ..., \\hat{Y}_{\\langle k \\rangle}\\} & & \\{\\hat{Y}_{\\langle 1 \\rangle}, ..., \\hat{Y}_{\\langle k \\rangle}\\} \\\\\n",
+ "\\uparrow & \\uparrow & & \\uparrow \\\\\n",
+ "a_{\\langle 1 \\rangle} \\rightarrow & a_{\\langle 2 \\rangle} \\rightarrow & \\dots \\rightarrow & a_{\\langle T \\rangle} \\\\\n",
+ "\\uparrow & \\uparrow & & \\uparrow \\\\\n",
+ "X_{\\langle 1 \\rangle} & X_{\\langle 2 \\rangle} & & X_{\\langle T \\rangle} \\\\\n",
+ "\\uparrow & \\uparrow & & \\uparrow \\\\\n",
+ "w_{\\langle 1 \\rangle}, b_{0, \\langle 1 \\rangle} & w_{\\langle 2 \\rangle}, b_{0, \\langle 2 \\rangle} & & w_{\\langle T \\rangle}, b_{0, \\langle T \\rangle} \\\\\n",
+ "\\end{matrix}\n",
+ "\\rightarrow\n",
+ "\\text{Form beliefs about } Y_{\\langle T \\rangle}\n",
+ "$$\n",
+ "while the educated guesses $\\hat{Y}_{\\langle T \\rangle}$ are our beliefs about real $Y$ at time stamp $T$.\n",
+ "\n",
+ "To formally write out the forward propagation, the weights are implemented with the input features. There is a linear transformation and a non-linear transformation (or activation) inside of a hidden neuron. The neuron can be written by taking the following form\n",
+ "$$\n",
+ "\\begin{array}{}\n",
+ "a_{\\langle t \\rangle} &=& h(z), \\text{ where } z := X_{\\langle t \\rangle} \\cdot w_{\\langle t \\rangle} + b_{\\langle t \\rangle} \\\\\n",
+ "&=& h(X_{\\langle t \\rangle} \\cdot w_{\\langle t \\rangle} + b_{\\langle t \\rangle}), \\text{ choose sigmoid} \\\\\n",
+ "&=& 1/(1+\\exp(-(X_{\\langle t \\rangle} \\cdot w_{\\langle t \\rangle} + b_{\\langle t \\rangle})))\n",
+ "\\end{array}\n",
+ "$$"
+ ],
+ "metadata": {
+ "id": "IetEwhVEKDgc"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Architecture: Feed-backward\n",
+ "\n",
+ "Let us clearly define our loss function to make sure we have a proper grip of our mistakes.\n",
+ "$$\\mathcal{L} (y, \\hat{y}) = \\sum_t \\sum_k L(\\hat{y}_{\\langle t,k \\rangle} - y_{\\langle t,k \\rangle})^2$$\n",
+ "and we can compute the gradient (notice $a$ is the activation function)\n",
+ "$$\\triangledown \\mathcal{L} (y, \\hat{y}) = \\frac{\\partial }{\\partial W} \\frac{\\partial }{\\partial a} \\mathcal{L} (y, \\hat{y})$$\n",
+ "where $W = \\{\\vec{w}, b\\}$ and then with respect with parameters $\\vec{w}$ and $b$ where $b$ is the bias (you do not have to have it),\n",
+ "$$\\frac{\\partial}{\\partial \\vec{w}} \\frac{\\partial}{\\partial a} \\mathcal{L} (y, \\hat{y}), \\frac{\\partial}{\\partial b} \\frac{\\partial}{\\partial a} \\mathcal{L} (y, \\hat{y})$$\n",
+ "and now with perspective of where we make our mistakes according to our parameters we can go backward\n",
+ "$$\n",
+ "\\text{Information in:} \\leftarrow\n",
+ "\\underbrace{\n",
+ "\\begin{matrix}\n",
+ "\\{Y_{\\langle 1 \\rangle}, ..., Y_{\\langle k \\rangle}\\} & \\{Y_{\\langle 1 \\rangle}, ..., Y_{\\langle k \\rangle}\\} & & \\{Y_{\\langle 1 \\rangle}, ..., Y_{\\langle k \\rangle}\\} \\\\\n",
+ "\\updownarrow & \\updownarrow & & \\updownarrow \\\\\n",
+ "\\{\\hat{Y}_{\\langle 1 \\rangle}, ..., \\hat{Y}_{\\langle k \\rangle}\\} & \\{\\hat{Y}_{\\langle 1 \\rangle}, ..., \\hat{Y}_{\\langle k \\rangle}\\} & & \\{\\hat{Y}_{\\langle 1 \\rangle}, ..., \\hat{Y}_{\\langle k \\rangle}\\} \\\\\n",
+ "\\downarrow & \\downarrow & & \\downarrow \\\\\n",
+ "a_{\\langle 1 \\rangle} \\leftarrow & a_{\\langle 2 \\rangle} \\leftarrow & \\dots \\leftarrow & a_{\\langle T \\rangle} \\\\\n",
+ "\\downarrow & \\downarrow & & \\downarrow \\\\\n",
+ "X_{\\langle 1 \\rangle} & X_{\\langle 2 \\rangle} & & X_{\\langle T \\rangle} \\\\\n",
+ "\\downarrow & \\downarrow & & \\downarrow \\\\\n",
+ "w'_{\\langle 1 \\rangle}, b'_{0, \\langle 1 \\rangle} & w'_{\\langle 2 \\rangle}, b'_{0, \\langle 2 \\rangle} & & w'_{\\langle T \\rangle}, b'_{0, \\langle T \\rangle} \\\\\n",
+ "\\end{matrix}}_{\\text{Update: } w, b \\text{ with } w', b'}\n",
+ "\\leftarrow\n",
+ "\\text{Total Loss: } \\mathcal{L} (\\hat{y}, y)\n",
+ "$$\n",
+ "and the *update* action in the above architecture is dependent on your optimizer specified in the algorithm. To formally describe the gradient descent algorithm, we can write, for each step $s$, update weights to be the following\n",
+ "$$\n",
+ "\\begin{array}{}\n",
+ "W_s &=& W_{s-1} - \\eta \\cdot \\nabla \\mathcal{L}(y, \\hat{y} \\\\\n",
+ "&=& \\{\\vec{w}_{s-1}, b_{s-1}\\} - \\eta \\cdot \\{\\frac{\\partial}{\\partial \\vec{w}} \\frac{\\partial}{\\partial a} \\mathcal{L} (y, \\hat{y}), \\frac{\\partial}{\\partial b} \\frac{\\partial}{\\partial a} \\mathcal{L} (y, \\hat{y})\\} \\\\\n",
+ "\\end{array}\n",
+ "$$\n",
+ "\n",
+ "Andrew Ng has a [video](https://www.coursera.org/lecture/nlp-sequence-models/backpropagation-through-time-bc7ED) on Coursera explaining Backward Propagation Through Time."
+ ],
+ "metadata": {
+ "id": "uC6j45XYKFub"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Embedding\n",
+ "\n",
+ "Embedding layer turns positive integers (indexes) into dense vectors of fixed size.\n",
+ "\n",
+ "```\n",
+ "eg. [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]\n",
+ "```\n",
+ "\n",
+ "
\n"
+ ],
+ "metadata": {
+ "id": "V04BSbvVIyoo"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# We begin by defining the a empty stack. We'll use this for building our\n",
+ "# network, later by layer.\n",
+ "model = tf.keras.models.Sequential()\n",
+ "\n",
+ "# The Embedding Layer provides a spatial mapping (or Word Embedding) of all the\n",
+ "# individual words in our training set. Words close to one another share context\n",
+ "# and or meaning. This spatial mapping is learning during the training process.\n",
+ "model.add(\n",
+ " tf.keras.layers.Embedding(\n",
+ " input_dim = vocab_size, # The size of our vocabulary\n",
+ " output_dim = 64, # Dimensions to which each words shall be mapped\n",
+ " input_length = review_length # Length of input sequences\n",
+ " )\n",
+ ")"
+ ],
+ "metadata": {
+ "id": "tChiwU_qsFjQ"
+ },
+ "execution_count": 6,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Recall the dimension of the input data."
+ ],
+ "metadata": {
+ "id": "_UGfpjrps0pg"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# display shape\n",
+ "x_train.shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "npc4ULuMsREY",
+ "outputId": "45715af9-34b5-469a-e199-3e2a9ba1ed8f"
+ },
+ "execution_count": 7,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(25000, 300)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 7
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "These are the arguments required. Vocabulary size is define above. Review length is the length of the features, which is also defined above. The output dimension is a choice by the scientist."
+ ],
+ "metadata": {
+ "id": "tU8svnRDs4YI"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# recall args\n",
+ "vocab_size, review_length"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "iGhMEhSRsgCo",
+ "outputId": "ce6cd43c-09fb-4731-f4da-42b7b28b566c"
+ },
+ "execution_count": 8,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(10000, 300)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 8
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "We can generate output without training anything. This will not be a trained model. However, the dimension should match and the *.predict()* function should work."
+ ],
+ "metadata": {
+ "id": "HkiFzML4te7P"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# test\n",
+ "some_fake_test_ = model.predict(x_train)\n",
+ "some_fake_test_.shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "o1z_E21gsKmv",
+ "outputId": "8f0fa619-9adb-4b80-af85-a3a119c18904"
+ },
+ "execution_count": 9,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "782/782 [==============================] - 1s 1ms/step\n"
+ ]
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(25000, 300, 64)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 9
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Dropout\n",
+ "\n",
+ "Simply put, dropout refers to ignoring units (i.e. neurons) during the training phase of certain set of neurons which is chosen at random. By “ignoring”, I mean these units are not considered during a particular forward or backward pass.\n",
+ "\n",
+ "Given that we know a bit about dropout, a question arises — why do we need dropout at all? Why do we need to literally shut-down parts of a neural networks?\n",
+ "\n",
+ "The answer to these questions is “to prevent over-fitting”.\n",
+ "\n",
+ "A fully connected layer occupies most of the parameters, and hence, neurons develop co-dependency amongst each other during training which curbs the individual power of each neuron leading to over-fitting of training data.\n",
+ "\n",
+ "
\n",
+ "\n",
+ "More see this [blog](https://medium.com/@amarbudhiraja/https-medium-com-amarbudhiraja-learning-less-to-learn-better-dropout-in-deep-machine-learning-74334da4bfc5)."
+ ],
+ "metadata": {
+ "id": "v4fRjOmgI1IW"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## LSTM\n",
+ "\n",
+ "All recurrent neural networks have the form of a chain of repeating modules of neural network. In standard RNNs, this repeating module will have a very simple structure, such as a single tanh layer.\n",
+ "\n",
+ "
\n",
+ "\n",
+ "\n",
+ "LSTMs also have this chain like structure, but the repeating module has a different structure. Instead of having a single neural network layer, there are four, interacting in a very special way.\n",
+ "\n",
+ "
\n",
+ "\n",
+ "The cell state is kind of like a conveyor belt. It runs straight down the entire chain, with only some minor linear interactions. It’s very easy for information to just flow along it unchanged.\n",
+ "\n",
+ "
\n",
+ "\n",
+ "Gates are a way to optionally let information through. They are composed out of a sigmoid neural net layer and a pointwise multiplication operation.\n",
+ "\n",
+ "
\n",
+ "\n",
+ "The first step in our LSTM is to decide what information we’re going to throw away from the cell state. This decision is made by a sigmoid layer called the “forget gate layer.”\n",
+ "\n",
+ "
\n",
+ "\n",
+ "The next step is to decide what new information we’re going to store in the cell state. This has two parts. First, a sigmoid layer called the “input gate layer” decides which values we’ll update. Next, a tanh layer creates a vector of new candidate values that could be added to the state.\n",
+ "\n",
+ "
\n",
+ "\n",
+ "It’s now time to update the old cell state and into the new cell state. The previous steps already decided what to do, we just need to actually do it.\n",
+ "\n",
+ "
\n",
+ "\n",
+ "Finally, we need to decide what we’re going to output. This output will be based on our cell state, but will be a filtered version. First, we run a sigmoid layer which decides what parts of the cell state we’re going to output. Then, we put the cell state through tanh (to push the values to be between −1 and 1) and multiply it by the output of the sigmoid gate, so that we only output the parts we decided to.\n",
+ "\n",
+ "
\n",
+ "\n",
+ "More can be read in this [blog](https://colah.github.io/posts/2015-08-Understanding-LSTMs/).\n",
+ "\n",
+ "\n"
+ ],
+ "metadata": {
+ "id": "OT0UMFnmI2UV"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Application: Build, Train, and Evaluate"
+ ],
+ "metadata": {
+ "id": "UF8oXNFCNqs7"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Build the Model: Simple RNN\n",
+ "\n",
+ "Build a single layer Recurrent Neural Network."
+ ],
+ "metadata": {
+ "id": "IJxut6sivQg2"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# We begin by defining the a empty stack. We'll use this for building our\n",
+ "# network, later by layer.\n",
+ "model = tf.keras.models.Sequential()\n",
+ "\n",
+ "# The Embedding Layer provides a spatial mapping (or Word Embedding) of all the\n",
+ "# individual words in our training set. Words close to one another share context\n",
+ "# and or meaning. This spatial mapping is learning during the training process.\n",
+ "model.add(\n",
+ " tf.keras.layers.Embedding(\n",
+ " input_dim = vocab_size, # The size of our vocabulary\n",
+ " output_dim = 16, # Dimensions to which each words shall be mapped\n",
+ " input_length = review_length # Length of input sequences\n",
+ " )\n",
+ ")\n",
+ "\n",
+ "# Fully-connected RNN where the output is to be fed back to input.\n",
+ "model.add(\n",
+ " tf.keras.layers.SimpleRNN(4) # unit: Positive integer, dimensionality of the output space\n",
+ ")\n",
+ "\n",
+ "# All LSTM units are connected to a single node in the dense layer. A sigmoid\n",
+ "# activation function determines the output from this node - a value\n",
+ "# between 0 and 1. Closer to 0 indicates a negative review. Closer to 1\n",
+ "# indicates a positive review.\n",
+ "model.add(\n",
+ " tf.keras.layers.Dense(\n",
+ " units=1, # Single unit\n",
+ " activation='sigmoid' # Sigmoid activation function (output from 0 to 1)\n",
+ " )\n",
+ ")\n",
+ "\n",
+ "# Compile the model\n",
+ "model.compile(\n",
+ " loss=tf.keras.losses.binary_crossentropy, # loss function\n",
+ " optimizer=tf.keras.optimizers.Adam(), # optimiser function\n",
+ " metrics=['accuracy']) # reporting metric\n",
+ "\n",
+ "# Display a summary of the models structure\n",
+ "model.summary()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "oQtzt9LvchD_",
+ "outputId": "2fb35a03-5f07-42dc-de2c-ed2828762217"
+ },
+ "execution_count": 10,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Model: \"sequential_1\"\n",
+ "_________________________________________________________________\n",
+ " Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ " embedding_1 (Embedding) (None, 300, 16) 160000 \n",
+ " \n",
+ " simple_rnn (SimpleRNN) (None, 4) 84 \n",
+ " \n",
+ " dense (Dense) (None, 1) 5 \n",
+ " \n",
+ "=================================================================\n",
+ "Total params: 160,089\n",
+ "Trainable params: 160,089\n",
+ "Non-trainable params: 0\n",
+ "_________________________________________________________________\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Train Simple RNN"
+ ],
+ "metadata": {
+ "id": "n4kylHLGeAzu"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import tensorflow as tf\n",
+ "device_name = tf.test.gpu_device_name()"
+ ],
+ "metadata": {
+ "id": "56d3yZp1dpof"
+ },
+ "execution_count": 11,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "outputId": "f1a27a94-3b54-4f81-eee6-18ee5ae76be6",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "IIKYaAfsdpof"
+ },
+ "source": [
+ "# Train the LSTM on the training data\n",
+ "with tf.device('/device:GPU:0'):\n",
+ " history = model.fit(\n",
+ "\n",
+ " # Training data : features (review) and classes (positive or negative)\n",
+ " x_train, y_train,\n",
+ "\n",
+ " # Number of samples to work through before updating the\n",
+ " # internal model parameters via back propagation. The\n",
+ " # higher the batch, the more memory you need.\n",
+ " batch_size=256,\n",
+ "\n",
+ " # An epoch is an iteration over the entire training data.\n",
+ " epochs=10,\n",
+ "\n",
+ " # The model will set apart his fraction of the training\n",
+ " # data, will not train on it, and will evaluate the loss\n",
+ " # and any model metrics on this data at the end of\n",
+ " # each epoch.\n",
+ " validation_split=0.2,\n",
+ "\n",
+ " # Set verbose=1 if it is desired to have output printed.\n",
+ " # In some scenarios where output needs to be hidden, we\n",
+ " # set verbose=0.\n",
+ " verbose=1\n",
+ " )"
+ ],
+ "execution_count": 15,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Epoch 1/10\n",
+ "79/79 [==============================] - 33s 347ms/step - loss: 0.6746 - accuracy: 0.6119 - val_loss: 0.6482 - val_accuracy: 0.7158\n",
+ "Epoch 2/10\n",
+ "79/79 [==============================] - 24s 306ms/step - loss: 0.5932 - accuracy: 0.8235 - val_loss: 0.5742 - val_accuracy: 0.8262\n",
+ "Epoch 3/10\n",
+ "79/79 [==============================] - 23s 291ms/step - loss: 0.5308 - accuracy: 0.8443 - val_loss: 0.5259 - val_accuracy: 0.8262\n",
+ "Epoch 4/10\n",
+ "79/79 [==============================] - 20s 260ms/step - loss: 0.4723 - accuracy: 0.8696 - val_loss: 0.4899 - val_accuracy: 0.8340\n",
+ "Epoch 5/10\n",
+ "79/79 [==============================] - 21s 260ms/step - loss: 0.4419 - accuracy: 0.8638 - val_loss: 0.4702 - val_accuracy: 0.8242\n",
+ "Epoch 6/10\n",
+ "79/79 [==============================] - 18s 229ms/step - loss: 0.4131 - accuracy: 0.8629 - val_loss: 0.4518 - val_accuracy: 0.8254\n",
+ "Epoch 7/10\n",
+ "79/79 [==============================] - 17s 222ms/step - loss: 0.3695 - accuracy: 0.8903 - val_loss: 0.4398 - val_accuracy: 0.8292\n",
+ "Epoch 8/10\n",
+ "79/79 [==============================] - 18s 223ms/step - loss: 0.3420 - accuracy: 0.8992 - val_loss: 0.4268 - val_accuracy: 0.8298\n",
+ "Epoch 9/10\n",
+ "79/79 [==============================] - 16s 208ms/step - loss: 0.3202 - accuracy: 0.9046 - val_loss: 0.4228 - val_accuracy: 0.8296\n",
+ "Epoch 10/10\n",
+ "79/79 [==============================] - 16s 201ms/step - loss: 0.3013 - accuracy: 0.9110 - val_loss: 0.4215 - val_accuracy: 0.8280\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Plot"
+ ],
+ "metadata": {
+ "id": "ustSMX80eDIf"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# import\n",
+ "import matplotlib.pyplot as plt"
+ ],
+ "metadata": {
+ "id": "Qz97Ha9fdXl_"
+ },
+ "execution_count": 16,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# plot history\n",
+ "plt.figure(figsize=(10,4))\n",
+ "plt.subplot(1, 2, 1)\n",
+ "plt.plot(history.history['loss'])\n",
+ "plt.plot(history.history['val_loss'])\n",
+ "plt.legend(['train', 'test'])\n",
+ "plt.title('loss')\n",
+ "plt.subplot(1, 2, 2)\n",
+ "plt.plot(history.history['accuracy'])\n",
+ "plt.plot(history.history['val_accuracy'])\n",
+ "plt.legend(['train', 'test'])\n",
+ "plt.title('accuracy')\n",
+ "plt.show()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 391
+ },
+ "id": "RRCBfloidXmE",
+ "outputId": "93ff4dfe-ef47-4e1a-a16a-7a1755a7aa47"
+ },
+ "execution_count": 17,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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r732Gr/99hu///57+T8ZEREpd/Pnz2fkyJG888473HbbbVx33XX06NGjUAXS8PBwdu7cecFzhYeHExMTQ25ubrFtatWqBVDo/PkjFy7Fjh072Lt3L++88w7PPPMMgwYNIjIykrp16xZo17hxY4CLxg0wbNgwTCYTX3/9NV9++SXOzs4MHTr0kmMSKQklQyLlJDIyEhcXF9577z2sVqt9/6xZs0hNTeWGG24AIC0tjby8vALHtmnTBqPRSHZ2NgAnT54sdP727dsD2NuIiEjVZjKZCnxfALz//vuFempuvfVWtm3bVmQJ6vzjb731VlJSUpg2bVqxbRo2bIjJZGL16tUF7v/ggw9KFPM/z5l/+9133y3QLiAggF69ejF79mzi4uKKjCefv78//fv354svvuDLL7+kX79++Pv7X3JMIiWh0toi5SQgIIDx48czadIk+vXrx0033URMTAwffPABV155pb3L/7fffuPhhx9myJAhNGvWjLy8PD7//HNMJhO33norAC+//DKrV6/mhhtuoGHDhiQlJfHBBx9Qv359evTo4cinKSIiZeTGG2/k888/x9fXl5YtW7J+/XpWrFhBnTp1CrR76qmnmD9/PkOGDOHee++lY8eOnDx5kkWLFjFjxgzatWvHiBEjmDt3LuPGjWPjxo307NmTzMxMVqxYwUMPPcSgQYPw9fVlyJAhvP/++xgMBsLDw/n5559JSkq65JibN29OeHg4Tz75JMeOHcPHx4fvv/+eU6dOFWr73nvv0aNHDzp06MADDzxAo0aNiI2NZfHixWzdurVA2xEjRnDbbbcB8Morr5T8xRS5VI4rZCdS/fyztHa+adOmWZs3b251dna2BgUFWceMGWM9deqU/f6DBw9a7733Xmt4eLjVzc3NWrt2bevVV19tXbFihb1NVFSUddCgQda6detaXVxcrHXr1rXecccd1r1791bgsxMRkfJ06tQp66hRo6z+/v5WLy8va9++fa179uyxNmzY0Dpy5MgCbU+cOGF9+OGHrfXq1bO6uLhY69evbx05cqQ1JSXF3iYrK8v6/PPPWxs1amR1dna2BgcHW2+77TbrgQMH7G2Sk5Ott956q9XDw8Naq1Yt63/+8x/rzp07iyyt7enpWWTcu3fvtkZGRlq9vLys/v7+1tGjR1u3bdtW6BxWq9W6c+dO6+DBg61+fn5WNzc3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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Build the Model: LSTM\n",
+ "\n",
+ "Build a Long Short Term Memory (LSTM) model and add multiple dense layers."
+ ],
+ "metadata": {
+ "id": "zFWSZgp9dub1"
+ }
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "8nmO8M4aCKwT",
+ "outputId": "7735951a-b244-4a70-e6de-080c06d765f0",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "source": [
+ "# We begin by defining the a empty stack. We'll use this for building our\n",
+ "# network, later by layer.\n",
+ "model = tf.keras.models.Sequential()\n",
+ "\n",
+ "# The Embedding Layer provides a spatial mapping (or Word Embedding) of all the\n",
+ "# individual words in our training set. Words close to one another share context\n",
+ "# and or meaning. This spatial mapping is learning during the training process.\n",
+ "model.add(\n",
+ " tf.keras.layers.Embedding(\n",
+ " input_dim = vocab_size, # The size of our vocabulary\n",
+ " output_dim = 16, # Dimensions to which each words shall be mapped\n",
+ " input_length = review_length # Length of input sequences\n",
+ " )\n",
+ ")\n",
+ "\n",
+ "# Dropout layers fight overfitting and forces the model to learn multiple\n",
+ "# representations of the same data by randomly disabling neurons in the\n",
+ "# learning phase.\n",
+ "model.add(\n",
+ " tf.keras.layers.Dropout(\n",
+ " rate=0.25 # Randomly disable 25% of neurons\n",
+ " )\n",
+ ")\n",
+ "\n",
+ "# We are using a fast version of LSTM whih is optimised for GPUs. This layer\n",
+ "# looks at the sequence of words in the review, along with their word embeddings\n",
+ "# and uses both of these to determine to sentiment of a given review.\n",
+ "model.add(\n",
+ " tf.keras.layers.LSTM(\n",
+ " units=32 # 32 LSTM units in this layer\n",
+ " )\n",
+ ")\n",
+ "\n",
+ "# Add a second dropout layer with the same aim as the first.\n",
+ "model.add(\n",
+ " tf.keras.layers.Dropout(\n",
+ " rate=0.25 # Randomly disable 25% of neurons\n",
+ " )\n",
+ ")\n",
+ "\n",
+ "# All LSTM units are connected to a single node in the dense layer. A sigmoid\n",
+ "# activation function determines the output from this node - a value\n",
+ "# between 0 and 1. Closer to 0 indicates a negative review. Closer to 1\n",
+ "# indicates a positive review.\n",
+ "model.add(\n",
+ " tf.keras.layers.Dense(\n",
+ " units=1, # Single unit\n",
+ " activation='sigmoid' # Sigmoid activation function (output from 0 to 1)\n",
+ " )\n",
+ ")\n",
+ "\n",
+ "# Compile the model\n",
+ "model.compile(\n",
+ " loss=tf.keras.losses.binary_crossentropy, # loss function\n",
+ " optimizer=tf.keras.optimizers.Adam(), # optimiser function\n",
+ " metrics=['accuracy']) # reporting metric\n",
+ "\n",
+ "# Display a summary of the models structure\n",
+ "model.summary()"
+ ],
+ "execution_count": 18,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Model: \"sequential_2\"\n",
+ "_________________________________________________________________\n",
+ " Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ " embedding_2 (Embedding) (None, 300, 16) 160000 \n",
+ " \n",
+ " dropout (Dropout) (None, 300, 16) 0 \n",
+ " \n",
+ " lstm (LSTM) (None, 32) 6272 \n",
+ " \n",
+ " dropout_1 (Dropout) (None, 32) 0 \n",
+ " \n",
+ " dense_1 (Dense) (None, 1) 33 \n",
+ " \n",
+ "=================================================================\n",
+ "Total params: 166,305\n",
+ "Trainable params: 166,305\n",
+ "Non-trainable params: 0\n",
+ "_________________________________________________________________\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "8Xx1Q2I8WNI9"
+ },
+ "source": [
+ "### Visualise the Model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "cz0Erj2WU3Vh",
+ "outputId": "7ebc1454-5057-41fe-a8d9-f9e8df38d7b8",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 644
+ }
+ },
+ "source": [
+ "tf.keras.utils.plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=False)"
+ ],
+ "execution_count": 19,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "image/png": "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lr777jv68MMPyd7engCQs7MzHThwgA4dOkTOzs4EgBwdHengwYNERJSRkUEvvfQSDR48mKysrGjgwIH02muv0fXr17X5dNYaqqamhv7yl7/QwIEDydbWliZPnkxr164lADR06FD6+eefO41ZuHBht1uMffvttzRw4ECdfSMUCum5556j48ePG73fiXgIkDF4CBAzVkd/TwIi0pmEfOTIEUREROCRxcxE0tPTUVRUhG3btmmXNTU1YeXKlUhPT8e9e/eMblcfHh4OADh69Giv5Pok4O8zM1ZHf0+9enWb6bp9+zaio6P1zplaW1vD3d0darUaarXa7Pf0YIz922N/dftxIhaLIRQKsW/fPlRUVECtVuPmzZvYu3cv1q5di8jISJOdu2WMmQYXyT5kb2+PU6dO4ZdffoGvry/EYjGGDRuGjIwMfPjhh/j000/NnSJ7RG5uLuLj4/X6pr7xxht6scHBwZDJZLC0tMTw4cMN3jfGXLZs2QJ/f3+IxWJIpVL4+/sjISFB7zavZ8+exaRJkyCRSODi4oIVK1boDYszJqYrWltbsW3bNgQGBrb7vFqtRnJyMry9vWFtbQ0HBweMGDECJSUl+OKLL7Bly5beaQT96ElKPtH9+OALN53ryfd57dq1NHPmTKqurtYuk8vl2gtvX375pd5rcnJydO5V09/MmDGDPvroI1IqlVRTU0NHjhwhoVBIL7/8sjbml19+IbFYTAkJCVRbW0vff/89DRo0iBYsWNClmK74/fffadKkSQSAnn/++XZjQkNDyc/Pj86fP09qtZpu3rxJISEh2v4QaWlpNGXKFLp37163cuB73DyBzFkkVSoVBQQE9Pt1d/f7vHnzZvL19aX6+nqd5XK5nA4cOEAWFhbk6upK9+/f13m+vxfJ0NBQvW0KDw8nAHTz5k0iIoqIiCBPT0+dG3ClpKSQQCCg3377zegYY+Xn59OcOXNo//79NHr06HaL5MGDB0kgEFBBQYHBdUVHR1NAQACp1eou5UDE97hhJrZv3z4olcrHbt3GuHLlChISErB+/Xq9efbAwwYmMTExuHHjBj744AMzZNh9mZmZetvk6uoKAKitrUVzczOys7MxZcoUnR6q06ZNAxEhKyvLqJiueP7553H8+HG8/vrrsLGxaTfmb3/7G8aOHdvp7WUTExORn59v0inRXCSfMkSE1NRUPPfc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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "execution_count": 19
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "5KdfAoHsGwzo"
+ },
+ "source": [
+ "### Train the LSTM"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import tensorflow as tf\n",
+ "device_name = tf.test.gpu_device_name()"
+ ],
+ "metadata": {
+ "id": "FzggVO33rDLB"
+ },
+ "execution_count": 20,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "rEN1vV4nG1V3",
+ "outputId": "3ad40a02-9660-40bd-ff47-44be61f15f79",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "source": [
+ "# Train the LSTM on the training data\n",
+ "with tf.device('/device:GPU:0'):\n",
+ " history = model.fit(\n",
+ "\n",
+ " # Training data : features (review) and classes (positive or negative)\n",
+ " x_train, y_train,\n",
+ "\n",
+ " # Number of samples to work through before updating the\n",
+ " # internal model parameters via back propagation. The\n",
+ " # higher the batch, the more memory you need.\n",
+ " batch_size=256,\n",
+ "\n",
+ " # An epoch is an iteration over the entire training data.\n",
+ " epochs=10,\n",
+ "\n",
+ " # The model will set apart his fraction of the training\n",
+ " # data, will not train on it, and will evaluate the loss\n",
+ " # and any model metrics on this data at the end of\n",
+ " # each epoch.\n",
+ " validation_split=0.2,\n",
+ "\n",
+ " # Set verbose=1 if it is desired to have output printed.\n",
+ " # In some scenarios where output needs to be hidden, we\n",
+ " # set verbose=0.\n",
+ " verbose=1\n",
+ " )"
+ ],
+ "execution_count": 21,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Epoch 1/10\n",
+ "79/79 [==============================] - 15s 142ms/step - loss: 0.6549 - accuracy: 0.6346 - val_loss: 0.5275 - val_accuracy: 0.8044\n",
+ "Epoch 2/10\n",
+ "79/79 [==============================] - 11s 137ms/step - loss: 0.3858 - accuracy: 0.8536 - val_loss: 0.3611 - val_accuracy: 0.8550\n",
+ "Epoch 3/10\n",
+ "79/79 [==============================] - 9s 110ms/step - loss: 0.2497 - accuracy: 0.9064 - val_loss: 0.2867 - val_accuracy: 0.8856\n",
+ "Epoch 4/10\n",
+ "79/79 [==============================] - 6s 71ms/step - loss: 0.2124 - accuracy: 0.9237 - val_loss: 0.2991 - val_accuracy: 0.8852\n",
+ "Epoch 5/10\n",
+ "79/79 [==============================] - 6s 80ms/step - loss: 0.1663 - accuracy: 0.9428 - val_loss: 0.3147 - val_accuracy: 0.8894\n",
+ "Epoch 6/10\n",
+ "79/79 [==============================] - 5s 62ms/step - loss: 0.1428 - accuracy: 0.9520 - val_loss: 0.3265 - val_accuracy: 0.8806\n",
+ "Epoch 7/10\n",
+ "79/79 [==============================] - 4s 47ms/step - loss: 0.1197 - accuracy: 0.9620 - val_loss: 0.3169 - val_accuracy: 0.8816\n",
+ "Epoch 8/10\n",
+ "79/79 [==============================] - 4s 50ms/step - loss: 0.1042 - accuracy: 0.9663 - val_loss: 0.4370 - val_accuracy: 0.8748\n",
+ "Epoch 9/10\n",
+ "79/79 [==============================] - 3s 34ms/step - loss: 0.0978 - accuracy: 0.9675 - val_loss: 0.4231 - val_accuracy: 0.8768\n",
+ "Epoch 10/10\n",
+ "79/79 [==============================] - 4s 49ms/step - loss: 0.0804 - accuracy: 0.9746 - val_loss: 0.3690 - val_accuracy: 0.8754\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# import\n",
+ "import matplotlib.pyplot as plt"
+ ],
+ "metadata": {
+ "id": "NqsGmotUwWym"
+ },
+ "execution_count": 22,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# plot history\n",
+ "plt.figure(figsize=(10,4))\n",
+ "plt.subplot(1, 2, 1)\n",
+ "plt.plot(history.history['loss'])\n",
+ "plt.plot(history.history['val_loss'])\n",
+ "plt.legend(['train', 'test'])\n",
+ "plt.title('loss')\n",
+ "plt.subplot(1, 2, 2)\n",
+ "plt.plot(history.history['accuracy'])\n",
+ "plt.plot(history.history['val_accuracy'])\n",
+ "plt.legend(['train', 'test'])\n",
+ "plt.title('accuracy')\n",
+ "plt.show()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 391
+ },
+ "id": "e3asOXqDv9Je",
+ "outputId": "2ca13a99-7cc3-4420-a26d-7fc9dd23544a"
+ },
+ "execution_count": 23,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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9Ons2LGD559/nl9//ZUlS5bU/8WIiEi9++qrr7jzzjt59dVXufHGG7nssssYNmxYhUqdnTt3Jj4+/ozn6ty5M7t376a4uLjKNq1atQKocP6yEQfVsW3bNvbs2cOrr77KY489xjXXXENMTAzh4eHl2nXq1AngrHED3HLLLVgsFj777DM++eQTXF1dGTNmTLVjEqkJJToitRATE4Obmxv/+c9/sNvtjv3vvvsuWVlZXHnllQBkZ2dTUlJS7tg+ffpgNpspLCwE4Pjx4xXO379/fwBHGxERadosFku5zwuA119/vUIPyw033MCWLVsqLcNcdvwNN9xAeno6b7zxRpVtOnTogMViYdmyZeXuf/PNN2sU8+nnLLv92muvlWsXHBzMRRddxJw5c0hMTKw0njJBQUFcfvnlfPzxx3zyySeMGjWKoKCgasckUhMqLy1SC8HBwUyePJlnnnmGUaNGcfXVV7N7927efPNNBg8e7OiG//XXX5k0aRI33XQT3bp1o6SkhI8++giLxcINN9wAwLPPPsuyZcu48sor6dChA6mpqbz55pu0a9eOYcOGOfMyRUSkjlx11VV89NFH+Pv707NnT1avXs0vv/xC69aty7X729/+xldffcVNN93E3XffzcCBAzl+/Djff/89s2fPpl+/fowbN44PP/yQuLg41q1bx/Dhw8nLy+OXX37hgQce4JprrsHf35+bbrqJ119/HZPJROfOnfnhhx9ITU2tdszdu3enc+fOPProoyQlJeHn58fXX3/NiRMnKrT9z3/+w7BhwzjvvPO477776NixIwcPHmT+/Pls3ry5XNtx48Zx4403AvDcc8/V/MkUqS7nFXwTaVpOLy9d5o033rB3797d7urqag8NDbVPnDjRfuLECcf9+/fvt9999932zp072z08POyBgYH2Sy65xP7LL7842ixevNh+zTXX2MPDw+1ubm728PBw+9ixY+179uxpwKsTEZH6dOLECfv48ePtQUFBdh8fH3tsbKx9165d9g4dOtjvvPPOcm0zMjLskyZNsrdt29bu5uZmb9eunf3OO++0p6enO9rk5+fbn3jiCXvHjh3trq6u9rCwMPuNN95o37dvn6NNWlqa/YYbbrB7eXnZW7VqZf/zn/9sj4+Pr7S8tLe3d6Vx79ixwx4TE2P38fGxBwUF2SdMmGDfsmVLhXPY7XZ7fHy8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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Save Model"
+ ],
+ "metadata": {
+ "id": "PCpCTao7xraz"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "model.save(\"lstm_model_sentiment_classification_on_imdb.h5\")"
+ ],
+ "metadata": {
+ "id": "VmMk6sElxsEW"
+ },
+ "execution_count": 24,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "rpCS2-jFH1KY"
+ },
+ "source": [
+ "## Evaluate model with test data and view results"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "nPnfxwbnITqV",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "outputId": "44778322-f85d-44d6-9bae-a39a1ad5442e"
+ },
+ "source": [
+ "# Get Model Predictions for test data\n",
+ "from sklearn.metrics import classification_report\n",
+ "predicted_classes = model.predict(x_test)"
+ ],
+ "execution_count": 25,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "782/782 [==============================] - 4s 4ms/step\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "predicted_classes = (predicted_classes > 0.5).astype(int)"
+ ],
+ "metadata": {
+ "id": "OZQ3GKjA4Pn7"
+ },
+ "execution_count": 26,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "print(classification_report(y_test, predicted_classes, target_names=class_names))"
+ ],
+ "metadata": {
+ "id": "mvhWpt9n4NqL",
+ "outputId": "1f10b4ef-3ba2-424a-93e3-67151c7530f8",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "execution_count": 27,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " precision recall f1-score support\n",
+ "\n",
+ " Negative 0.86 0.87 0.86 12500\n",
+ " Positive 0.87 0.85 0.86 12500\n",
+ "\n",
+ " accuracy 0.86 25000\n",
+ " macro avg 0.86 0.86 0.86 25000\n",
+ "weighted avg 0.86 0.86 0.86 25000\n",
+ "\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "CkfHCIVHrJni"
+ },
+ "source": [
+ "## View some incorrect predictions\n",
+ "\n",
+ "Lets have a look at some of the incorrectly classified reviews. For readability we remove the padding.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "bwKLBwBbp7zg",
+ "outputId": "b69383d7-a00c-421e-b1ee-7113b5281268",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "source": [
+ "predicted_classes_reshaped = np.reshape(predicted_classes, 25000)\n",
+ "\n",
+ "incorrect = np.nonzero(predicted_classes_reshaped!=y_test)[0]\n",
+ "\n",
+ "# We select the first 10 incorrectly classified reviews\n",
+ "for j, incorrect in enumerate(incorrect[0:20]):\n",
+ "\n",
+ " predicted = class_names[predicted_classes_reshaped[incorrect]]\n",
+ " actual = class_names[y_test[incorrect]]\n",
+ " human_readable_review = decode_review(x_test[incorrect])\n",
+ "\n",
+ " print(\"Incorrectly classified Test Review [\"+ str(j+1) +\"]\")\n",
+ " print(\"Test Review #\" + str(incorrect) + \": Predicted [\"+ predicted + \"] Actual [\"+ actual + \"]\")\n",
+ " print(\"Test Review Text: \" + human_readable_review.replace(\" \", \"\"))\n",
+ " print(\"\")"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Incorrectly classified Test Review [1]\n",
+ "Test Review #2: Predicted [Negative] Actual [Positive]\n",
+ "Test Review Text: alive simultaneously while for his part is depicted as a white guy in the clouds who looks like he'd rather be taking a when sends them a tree like god who regards them the decide that this is no improvement and demand a different king irritated sends them a br br delighted with this looking new king who towers above them the welcome him with a of dressed the mayor steps forward to hand him the key to the as cameras record the event to everyone's horror the promptly eats the mayor and then goes on a merry rampage citizens at random a title card reads news of the king's throughout the kingdom when the now terrified once more for help he loses his temper and their community with lightning the moral of our story delivered by a hapless frog just before he is eaten is let well enough alone br br considering the time period when this startling little film was made and considering the fact that it was made by a russian at the height of that country's civil war it would be easy to see this as a about those events may or may not have had turmoil in mind when he made but whatever his choice of material the film stands as a tale of universal could be the soviet union italy germany or japan in the 1930s or any country of any era that lets its guard down and is overwhelmed by it's a fascinating film even a charming one in its macabre way but its message is no joke\n",
+ "\n",
+ "Incorrectly classified Test Review [2]\n",
+ "Test Review #8: Predicted [Positive] Actual [Negative]\n",
+ "Test Review Text: hollywood had a long love affair with bogus nights tales but few of these products have stood the test of time the most memorable were the jon hall maria films which have long since become camp this one is filled with dubbed songs and slapstick it's a truly crop of corn and pretty near today it was nominated for its imaginative special effects which are almost in this day and age mainly of trick photography the only outstanding positive feature which survives is its beautiful color and clarity sad to say of the many films made in this genre few of them come up to alexander original thief of