Skip to content
Snippets Groups Projects
neural_nets_intro.ipynb 655 KiB
Newer Older
  • Learn to ignore specific revisions
  • chadhat's avatar
    chadhat committed
    {
     "cells": [
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "# Introduction to Neural Networks\n",
        "\n",
        "## TO DO: Almost all the figues and schematics will be replaced or improved slowly\n",
        "\n",
    
        "<center>\n",
        "<figure>\n",
        "<img src=\"./images/neuralnets/neural_net_ex.svg\" width=\"700\"/>\n",
        "<figcaption>A 3 layer Neural Network (By convention the input layer is not counted).</figcaption>\n",
        "</figure>\n",
        "</center>"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## History of Neural networks\n",
        "\n",
        "**TODO: Make it more complete and format properly**\n",
        "\n",
        "1943 - Threshold Logic\n",
        "\n",
        "1940s - Hebbian Learning\n",
        "\n",
        "1958 - Perceptron\n",
        "\n",
        "1975 - Backpropagation\n",
        "\n",
        "1980s - Neocognitron\n",
        "\n",
        "1982: Hopfield Network\n",
        "\n",
        "1986: Convolutional Neural Networks\n",
        "\n",
        "1997: Long-short term memory (LSTM) model\n",
        "\n",
    
        "2014: Gated Recurrent Units, Generative Adversarial Networks(Check)?"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## Why the boom now?\n",
        "* Data\n",
        "* Data\n",
        "* Data\n",
        "* Availability of GPUs\n",
        "* Algorithmic developments which allow for efficient training and training for deeper networks\n",
        "* Much easier access than a decade ago"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## Building blocks\n",
        "### Perceptron\n",
        "\n",
    
        "The smallest unit of a neural network is a **perceptron** like node.\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "**What is a Perceptron?**\n",
        "\n",
    
        "It is a simple function which can have multiple inputs and has a single output.\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
    
        "<center>\n",
        "<figure>\n",
        "<img src=\"./images/neuralnets/perceptron_ex.svg\" width=\"400\"/>\n",
        "<figcaption>A simple perceptron with 3 inputs and 1 output.</figcaption>\n",
        "</figure>\n",
        "</center>\n",
        "\n",
        "\n",
        "It works as follows: \n",
        "\n",
        "Step 1: A **weighted sum** of the inputs is calculated\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "\\begin{equation*}\n",
        "weighted\\_sum = \\sum_{k=1}^{num\\_inputs} w_{i} x_{i}\n",
        "\\end{equation*}\n",
        "\n",
    
        "Step 2: A **step** activation function is applied\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "$$\n",
        "f(weighted\\_sum) = \\left\\{\n",
        "        \\begin{array}{ll}\n",
    
        "            0 & \\quad weighted\\_sum < threshold \\\\\n",
        "            1 & \\quad weighted\\_sum \\geq threshold\n",
    
    chadhat's avatar
    chadhat committed
        "        \\end{array}\n",
        "    \\right.\n",
        "$$\n",
    
        "\n",
        "You can see that this is also a linear classifier as we introduced in script 02."
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 28,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [],
       "source": [
        "%matplotlib inline\n",
    
        "%config IPCompleter.greedy=True\n",
    
    chadhat's avatar
    chadhat committed
        "import matplotlib as mpl\n",
    
        "mpl.rcParams['lines.linewidth'] = 3\n",
        "#mpl.rcParams['font.size'] = 16"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "code",
    
    chadhat's avatar
    chadhat committed
       "execution_count": 1,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
    
    chadhat's avatar
    chadhat committed
       "outputs": [],
    
    chadhat's avatar
    chadhat committed
       "source": [
        "import numpy as np\n",
    
        "import matplotlib.pyplot as plt\n",
        "\n",
        "\n",
    
    chadhat's avatar
    chadhat committed
        "def perceptron(X, w, threshold=1):\n",
    
        "    # This function computes sum(w_i*x_i) and\n",
    
    chadhat's avatar
    chadhat committed
        "    # applies a perceptron activation\n",
    
        "    linear_sum = np.dot(X, w)\n",
        "    output = 0\n",
    
    chadhat's avatar
    chadhat committed
        "    if linear_sum >= threshold:\n",
        "        output = 1\n",
    
    chadhat's avatar
    chadhat committed
        "    return output"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "#### Boolean AND\n",
        "\n",
        "| x$_1$ | x$_2$ | output |\n",
        "| --- | --- | --- |\n",
        "| 0 | 0 | 0 |\n",
        "| 1 | 0 | 0 |\n",
        "| 0 | 1 | 0 |\n",
        "| 1 | 1 | 1 |"
       ]
      },
      {
       "cell_type": "code",
    
    chadhat's avatar
    chadhat committed
       "execution_count": 2,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
          "Perceptron output for x1, x2 =  [0, 0]  is  0\n",
          "Perceptron output for x1, x2 =  [1, 0]  is  0\n",
          "Perceptron output for x1, x2 =  [0, 1]  is  0\n",
          "Perceptron output for x1, x2 =  [1, 1]  is  1\n"
    
    chadhat's avatar
    chadhat committed
         ]
        }
       ],
       "source": [
        "# Calculating Boolean AND using a perceptron\n",
    
        "threshold = 1.5\n",
    
        "w = [1, 1]\n",
        "X = [[0, 0], [1, 0], [0, 1], [1, 1]]\n",
    
    chadhat's avatar
    chadhat committed
        "for i in X:\n",
    
        "    print(\"Perceptron output for x1, x2 = \", i,\n",
        "          \" is \", perceptron(i, w, threshold))"
    
    chadhat's avatar
    chadhat committed
       ]
      },
    
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "In this simple case we can rewrite our equation to $x_2 = ...... $ which describes a line in 2D:"
       ]
      },
      {
       "cell_type": "code",
    
    chadhat's avatar
    chadhat committed
       "execution_count": 3,
    
       "metadata": {},
       "outputs": [],
       "source": [
    
    chadhat's avatar
    chadhat committed
        "def perceptron_DB(X, w, threshold):\n",
    
        "    # Plotting the decision boundary\n",
        "    for i in X:\n",
        "        plt.plot(i, \"o\", color=\"b\")\n",
        "    plt.xlim(-1, 2)\n",
        "    plt.ylim(-1, 2)\n",
        "    # The decision boundary is a line given by\n",
        "    # w_1*x_1+w_2*x_2-threshold=0\n",
        "    x1 = np.arange(-3, 4)\n",
        "    x2 = (threshold - x1*w[0])/w[1]\n",
        "    plt.plot(x1, x2, \"--\", color=\"black\")\n",
        "    plt.xlabel(\"x$_1$\", fontsize=16)\n",
        "    plt.ylabel(\"x$_2$\", fontsize=16)"
       ]
      },
      {
       "cell_type": "code",
    
    chadhat's avatar
    chadhat committed
       "execution_count": 4,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [
        {
         "data": {
    
    chadhat's avatar
    chadhat committed
          "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAEQCAYAAACN2GLgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl8VPX9/fHXe8Iuq0BFtiJIhYRAgLCpWARBtgKi1qUKCgKCVKpVyxcVxVIoyq4sgiCLVMQdEUWq8JMWBcIeEhUEW2SRRYoLFQQ+vz9mSGMMMIGZubOc5+Mxj8yduTM514s5c+fe+7nmnENERCTUfF4HEBGR+KSCERGRsFDBiIhIWKhgREQkLFQwIiISFioYEREJi6grGDOrZmbLzCzbzLaY2aB85jEzm2hm28xsk5k18iKriIicXiGvA+TjOPBH59w6MysFrDWzpc65rFzzdABqB27NgCmBnyIiEiWibgvGObfHObcucP9bIBuokme2rsAc5/cxUNbMLo5wVBEROYOoK5jczKwG0BBYleepKsDOXNNf8vMSEhERD0XjV2QAmFlJ4FXgD865b/I+nc9LfjbmjZn1BfoCXHDBBY3r1KkT8pzR4NixYxQpUgSA/fv3U758eXy+qP7sICIxYu3atQeccxXP5bVRWTBmVhh/ucxzzr2WzyxfAtVyTVcFduedyTk3DZgGkJ6e7jIyMsKQNnps2LCBRo0a4Zzj2WefpUOHDl5HEpEYZ2b/OtfXRt3HXDMzYAaQ7Zwbe5rZFgI9AkeTNQcOO+f2RCxklEpLS+Of//wnJUuWpGPHjvTo0YODBw96HUtEElTUFQxwBXA70NrMNgRuHc3sbjO7OzDPYmA7sA2YDgzwKGvUadGiBevXr+fRRx/lxRdfpFWrVpw8edLrWCKSgCxRhutPhK/I8tq0aRN79+6lXbt2HD9+nAMHDlCpUiWvY4lIDDGztc659HN5bTRuwUiI1K9fn3bt2gEwYcIE6tSpw8yZM0mUDxUi4i0VTILo0qULDRo0oHfv3rRr147t27d7HUlE4pwKJkHUrl2bZcuWMWXKFFatWkVqaiovvPCC17FEJI6pYBKIz+fj7rvvZsuWLbRu3ZqaNWt6HUlE4lhUngcj4VWtWjXeeuutnOkHH3yQ0qVL86c//SnnhE0RkfOlLZgEd/LkSXbv3s3QoUNp0qQJiXaknYiEjwomwfl8PubNm8ebb77JgQMHaNasGQ899BBHjhzxOpqIxDgVjAD+o8y2bNlC7969mTRpEnv2JPzACCJynlQwkqNs2bJMmzaNrVu3UqtWLZxzTJkyhW++yTvWqIjI2alg5GcqV64MwMaNGxk4cCApKSm8/fbbHqcSkVijgpHTSktLY+XKlZQpU4bOnTtz2223ceDAAa9jiUiMUMHIGTVr1ox169bx2GOPsWDBAq6++moNnikiQdF5MHJWRYoU4fHHH+f6669n7969+Hw+jh8/zv79+7n4Yl2pWkTypy0YCVpqaipt27YFYPz48dStW5fnnntOg2eKSL5UMHJOunXrRsOGDenTpw9t2rTh888/9zqSiEQZFYyck0svvZT333+fadOmsXbtWlJTU5k7d67XsUQkiqhg5Jz5fD769OlDVlYW7dq149JLL/U6kohEEe3kl/NWpUoV3njjjZzp+++/n9KlSzNkyBANnimSwLQFIyF18uRJ9u/fz7Bhw2jcuDGrV6/2OpKIeEQFIyHl8/mYO3cub731FocOHaJFixb88Y9/1OCZIglIBSNh0blzZ7Kysujbty9Tp07V4JkiCUgFI2FTunRppkyZwrZt23IGz5w0aRKHDx/2OpqIRIAKRsLu1Nn+mzZt4t577yU5OfknV9QUkfikgpGIadCgAatWraJ8+fJ06dKFW265hX379nkdS0TCRAUjEZWenk5GRgZPPPEEr776Kq1bt9bgmSJxSufBSMQVKVKERx99lO7du/9k8MyvvvqKKlWqeB1PREJEWzDimZSUFNq0aQPAuHHjqFu3LlOnTtUWjUiciLqCMbOZZrbPzDJP83wrMztsZhsCt6GRziihd/3119O0aVP69+9P69at2bp1q9eRROQ8RV3BALOA9meZZ4VzLi1weyICmSTMatasydKlS5kxYwYbNmygfv36zJkzx+tYInIeoq5gnHMfAl97nUMiz8zo1asXWVlZdOjQgV/96ldeRxKR8xCrO/lbmNlGYDfwgHNui9eBJHQqV67Ma6+9ljN93333UbJkSR555BGKFi3qYTIRKYio24IJwjrgl865BsDTwBunm9HM+ppZhpll7N+/P2IBJXROnjzJoUOHGD58OI0aNeLjjz/2OpKIBCnmCsY5941z7rvA/cVAYTOrcJp5pznn0p1z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\n",
    
    chadhat's avatar
    chadhat committed
          "text/plain": [
    
    chadhat's avatar
    chadhat committed
           "<Figure size 432x288 with 1 Axes>"
    
    chadhat's avatar
    chadhat committed
          ]
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
    
    chadhat's avatar
    chadhat committed
        "perceptron_DB(X, w, threshold)"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "**Exercise 1 : Compute a Boolean \"OR\" using a perceptron?**\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "Hint: copy the code from the \"AND\" example and edit the weights and/or threshold"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "#### Boolean OR\n",
        "\n",
        "| x$_1$ | x$_2$ | output |\n",
        "| --- | --- | --- |\n",
        "| 0 | 0 | 0 |\n",
        "| 1 | 0 | 1 |\n",
        "| 0 | 1 | 1 |\n",
        "| 1 | 1 | 1 |"
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 21,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [],
       "source": [
        "# Calculating Boolean OR using a perceptron\n",
        "# Edit the code below"
       ]
      },
      {
       "cell_type": "code",
    
    chadhat's avatar
    chadhat committed
       "execution_count": 10,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
          "Perceptron output for x1, x2 =  [0, 0]  is  0\n",
          "Perceptron output for x1, x2 =  [1, 0]  is  1\n",
          "Perceptron output for x1, x2 =  [0, 1]  is  1\n",
          "Perceptron output for x1, x2 =  [1, 1]  is  1\n"
    
    chadhat's avatar
    chadhat committed
         ]
        },
        {
         "data": {
    
    chadhat's avatar
    chadhat committed
          "image/png": "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\n",
    
    chadhat's avatar
    chadhat committed
          "text/plain": [
    
    chadhat's avatar
    chadhat committed
           "<Figure size 432x288 with 1 Axes>"
    
    chadhat's avatar
    chadhat committed
          ]
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
        "# Solution\n",
        "# Calculating Boolean OR using a perceptron\n",
        "threshold=0.6\n",
        "w=[1,1]\n",
        "X=[[0,0],[1,0],[0,1],[1,1]]\n",
        "for i in X:\n",
    
        "    print(\"Perceptron output for x1, x2 = \" , i , \" is \" , perceptron(i,w,threshold))\n",
    
    chadhat's avatar
    chadhat committed
        "# Plotting the decision boundary\n",
    
        "perceptron_DB(X,w)"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "**Exercise 2 : Create a NAND gate using a perceptron**\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "#### Boolean NAND\n",
        "\n",
        "| x$_1$ | x$_2$ | output |\n",
        "| --- | --- | --- |\n",
        "| 0 | 0 | 1 |\n",
        "| 1 | 0 | 1 |\n",
        "| 0 | 1 | 1 |\n",
        "| 1 | 1 | 0 |"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 38,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [],
       "source": [
    
        "# Calculating Boolean NAND using a perceptron"
    
    chadhat's avatar
    chadhat committed
       ]
      },
    
    chadhat's avatar
    chadhat committed
      {
       "cell_type": "code",
       "execution_count": 19,
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "Perceptron output for x1, x2 =  [0, 0]  is  1\n",
          "Perceptron output for x1, x2 =  [1, 0]  is  1\n",
          "Perceptron output for x1, x2 =  [0, 1]  is  1\n",
          "Perceptron output for x1, x2 =  [1, 1]  is  0\n"
         ]
        },
        {
         "data": {
          "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAEQCAYAAACN2GLgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl8VPX9/fHXe8Iuq0BFtiJIhYRAgLCpWARBtgKi1qUKCgKCVKpVyxcVxVIoyq4sgiCLVMQdEUWq8JMWBcIeEhUEW2SRRYoLFQQ+vz9mSGMMMIGZubOc5+Mxj8yduTM514s5c+fe+7nmnENERCTUfF4HEBGR+KSCERGRsFDBiIhIWKhgREQkLFQwIiISFioYEREJi6grGDOrZmbLzCzbzLaY2aB85jEzm2hm28xsk5k18iKriIicXiGvA+TjOPBH59w6MysFrDWzpc65rFzzdABqB27NgCmBnyIiEiWibgvGObfHObcucP9bIBuokme2rsAc5/cxUNbMLo5wVBEROYOoK5jczKwG0BBYleepKsDOXNNf8vMSEhERD0XjV2QAmFlJ4FXgD865b/I+nc9LfjbmjZn1BfoCXHDBBY3r1KkT8pzR4NixYxQpUgSA/fv3U758eXy+qP7sICIxYu3atQeccxXP5bVRWTBmVhh/ucxzzr2WzyxfAtVyTVcFduedyTk3DZgGkJ6e7jIyMsKQNnps2LCBRo0a4Zzj2WefpUOHDl5HEpEYZ2b/OtfXRt3HXDMzYAaQ7Zwbe5rZFgI9AkeTNQcOO+f2RCxklEpLS+Of//wnJUuWpGPHjvTo0YODBw96HUtEElTUFQxwBXA70NrMNgRuHc3sbjO7OzDPYmA7sA2YDgzwKGvUadGiBevXr+fRRx/lxRdfpFWrVpw8edLrWCKSgCxRhutPhK/I8tq0aRN79+6lXbt2HD9+nAMHDlCpUiWvY4lIDDGztc659HN5bTRuwUiI1K9fn3bt2gEwYcIE6tSpw8yZM0mUDxUi4i0VTILo0qULDRo0oHfv3rRr147t27d7HUlE4pwKJkHUrl2bZcuWMWXKFFatWkVqaiovvPCC17FEJI6pYBKIz+fj7rvvZsuWLbRu3ZqaNWt6HUlE4lhUngcj4VWtWjXeeuutnOkHH3yQ0qVL86c//SnnhE0RkfOlLZgEd/LkSXbv3s3QoUNp0qQJiXaknYiEjwomwfl8PubNm8ebb77JgQMHaNasGQ899BBHjhzxOpqIxDgVjAD+o8y2bNlC7969mTRpEnv2JPzACCJynlQwkqNs2bJMmzaNrVu3UqtWLZxzTJkyhW++yTvWqIjI2alg5GcqV64MwMaNGxk4cCApKSm8/fbbHqcSkVijgpHTSktLY+XKlZQpU4bOnTtz2223ceDAAa9jiUiMUMHIGTVr1ox169bx2GOPsWDBAq6++moNnikiQdF5MHJWRYoU4fHHH+f6669n7969+Hw+jh8/zv79+7n4Yl2pWkTypy0YCVpqaipt27YFYPz48dStW5fnnntOg2eKSL5UMHJOunXrRsOGDenTpw9t2rTh888/9zqSiEQZFYyck0svvZT333+fadOmsXbtWlJTU5k7d67XsUQkiqhg5Jz5fD769OlDVlYW7dq149JLL/U6kohEEe3kl/NWpUoV3njjjZzp+++/n9KlSzNkyBANnimSwLQFIyF18uRJ9u/fz7Bhw2jcuDGrV6/2OpKIeEQFIyHl8/mYO3cub731FocOHaJFixb88Y9/1OCZIglIBSNh0blzZ7Kysujbty9Tp07V4JkiCUgFI2FTunRppkyZwrZt23IGz5w0aRKHDx/2OpqIRIAKRsLu1Nn+mzZt4t577yU5OfknV9QUkfikgpGIadCgAatWraJ8+fJ06dKFW265hX379nkdS0TCRAUjEZWenk5GRgZPPPEEr776Kq1bt9bgmSJxSufBSMQVKVKERx99lO7du/9k8MyvvvqKKlWqeB1PREJEWzDimZSUFNq0aQPAuHHjqFu3LlOnTtUWjUiciLqCMbOZZrbPzDJP83wrMztsZhsCt6GRziihd/3119O0aVP69+9P69at2bp1q9eRROQ8RV3BALOA9meZZ4VzLi1weyICmSTMatasydKlS5kxYwYbNmygfv36zJkzx+tYInIeoq5gnHMfAl97nUMiz8zo1asXWVlZdOjQgV/96ldeRxKR8xCrO/lbmNlGYDfwgHNui9eBJHQqV67Ma6+9ljN93333UbJkSR555BGKFi3qYTIRKYio24IJwjrgl865BsDTwBunm9HM+ppZhpll7N+/P2IBJXROnjzJoUOHGD58OI0aNeLjjz/2OpKIBCnmCsY5941z7rvA/cVAYTOrcJp5pznn0p1z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\n",
          "text/plain": [
           "<Figure size 432x288 with 1 Axes>"
          ]
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
        "# Solution\n",
        "# Calculating Boolean OR using a perceptron\n",
        "import matplotlib.pyplot as plt\n",
        "threshold=-1.5\n",
        "w=[-1,-1]\n",
        "X=[[0,0],[1,0],[0,1],[1,1]]\n",
        "for i in X:\n",
        "    print(\"Perceptron output for x1, x2 = \" , i , \" is \" , perceptron(i,w,threshold))\n",
        "# Plotting the decision boundary\n",
        "perceptron_DB(X,w)"
       ]
      },
    
    chadhat's avatar
    chadhat committed
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "In fact, a single perceptron can compute \"AND\", \"OR\" and \"NOT\" boolean functions.\n",
    
    chadhat's avatar
    chadhat committed
        "However, it cannot compute some other boolean functions such as \"XOR\"\n",
        "\n",
    
        "**WHAT CAN WE DO?**\n",
        "\n",
        "\n",
        "Hint: Think about what is the significance of the NAND gate we created above?\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
    
        "We said a single perceptron can't compute these functions. We didn't say that about **multiple Perceptrons**."
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "**XOR function using multiple perceptrons**\n",
        "\n",
        "<center>\n",
        "<figure>\n",
        "<img src=\"./images/neuralnets/perceptron_XOR.svg\" width=\"400\"/>\n",
        "<figcaption>Multiple perceptrons put together to output a XOR function.</figcaption>\n",
        "</figure>\n",
        "</center>"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "### Google Playground\n",
        "\n",
        "https://playground.tensorflow.org/\n",
        "\n",
        "<img src=\"./images/neuralnets/google_playground.png\"/>"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## Learning\n",
        "\n",
        "Now we know that we can compute complex functions if we stack together a number of perceptrons.\n",
        "\n",
        "However, we can DO NOT want to set the weights and thresholds by hand as we did in the examples above.\n",
        "\n",
        "We want some algorithm to do this for us!\n",
        "\n",
        "In order to achieve this we first need to choose a loss function for the problem at hand\n",
        "\n",
        "\n",
        "### Loss function\n",
        "As in the case of other machine learning algorithms we need to define a so-called \"Loss function\". In simple words this function measures how close are the predictions of our network to the supplied labels. Once we have this function we need an algorithm to update the weights of the network such that this loss decreases. As one can already imagine the choice of an appropriate loss function is very important to the success of the trained model. Fortunately, for classification and regression (which comprise of a large range of probelms) these loss functions are well known. Generally **crossentropy** and **mean squared error** loss functions are chosen for classification and regression problems, respectively.\n",
        "\n",
        "### Gradient based learning\n",
        "Once we have a loss function we want to solve an **optimization problem** which minimizes this loss by updating the weights of the network and this is how the learning actually happens.\n",
        "\n",
        "One of the most popular optimization method used in machine learning is **Gradient-descent**\n",
        "\n",
        "INSERT MORE EXPLAINATIONS HERE\n",
        "\n",
    
    chadhat's avatar
    chadhat committed
        "### Activation Functions\n",
        "\n",
    
        "In order to train the network we need to change Perceptron's **step** activation function as it does not allow training using the back-propagation algorithm among other drawbacks.\n",
        "\n",
        "Non-Linear functions such as:\n",
        "\n",
        "* ReLU (Rectified linear unit)\n",
        "\n",
        "\\begin{equation*}\n",
        "f(z) = \\mathrm{max}(0,z)\n",
        "\\end{equation*}\n",
        "\n",
        "* Sigmoid\n",
        "\n",
        "\\begin{equation*}\n",
        "f(z) = \\frac{1}{1+e^{-z}}\n",
        "\\end{equation*}\n",
        "\n",
        "* tanh\n",
        "\n",
        "\\begin{equation*}\n",
        "f(z) = \\frac{e^{z} - e^{-z}}{e^{z} + e^{-z}}\n",
        "\\end{equation*}\n",
        "\n",
        "\n",
        "are some of the most popular choices used as activation functions.\n",
        "\n",
        "Linear activations are **NOT** used because it can be mathematically shown that if linear activations are used then output is just a linear function of the input. So adding any number of hidden layers does not help to learn interesting functions.\n",
        "\n",
        "Non-linear activation functions allow the network to learn more complex representations."
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "code",
    
    chadhat's avatar
    chadhat committed
       "execution_count": 172,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [
        {
         "data": {
    
    chadhat's avatar
    chadhat committed
          "image/png": "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\n",
    
    chadhat's avatar
    chadhat committed
          "text/plain": [
    
    chadhat's avatar
    chadhat committed
           "<matplotlib.figure.Figure at 0x7ff6cef06fd0>"
    
    chadhat's avatar
    chadhat committed
          ]
         },
         "metadata": {
    
          "image/png": {
           "height": 250,
           "width": 597
          },
    
    chadhat's avatar
    chadhat committed
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
        "import matplotlib.pyplot as plt\n",
        "import numpy as np\n",
        "\n",
    
        "plt.figure(figsize=(10, 4))\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "pts=np.arange(-20,20, 0.1)\n",
        "\n",
    
        "plt.subplot(1, 3, 1)\n",
    
    chadhat's avatar
    chadhat committed
        "# Sigmoid\n",
    
        "plt.plot(pts, 1/(1+np.exp(-pts))) ;\n",
        "\n",
        "plt.subplot(1, 3, 2)\n",
    
    chadhat's avatar
    chadhat committed
        "# tanh\n",
    
        "plt.plot(pts, np.tanh(pts*np.pi)) ;\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "# Rectified linear unit (ReLu)\n",
    
        "plt.subplot(1, 3, 3)\n",
    
    chadhat's avatar
    chadhat committed
        "pts_relu=[max(0,i) for i in pts];\n",
    
        "plt.plot(pts, pts_relu) ;"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "### Multi-layer preceptron neural network\n",
        "Universal function theorem\n",
    
        "epochs\n",
    
        "Suggestion Uwe:\n",
    
        "\n",
        "3. way around: look at nature how neuron works and introduce non linear activation functions.\n",
        "\n",
    
        "4. theoretical background: universal approximation theorem."
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "# Introduction to Keras"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "### What is Keras?\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "* It is a high level API to create and work with neural networks\n",
    
        "* Supports multiple backends such as TensorFlow from Google, Theano (Although Theano is dead now) and CNTK (Microsoft Cognitive Toolkit)\n",
        "* Very good for creating neural nets very quickly and hides away a lot of tedious work\n",
        "* Has been incorporated into official TensorFlow (which obviously only works with tensforflow) and as of TensorFlow 2.0 this will the main api to use TensorFlow (check reference)\n"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 35,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [
        {
    
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "_________________________________________________________________\n",
          "Layer (type)                 Output Shape              Param #   \n",
          "=================================================================\n",
          "dense_9 (Dense)              (None, 4)                 36        \n",
          "_________________________________________________________________\n",
          "activation_7 (Activation)    (None, 4)                 0         \n",
          "_________________________________________________________________\n",
          "dense_10 (Dense)             (None, 4)                 20        \n",
          "_________________________________________________________________\n",
          "dense_11 (Dense)             (None, 1)                 5         \n",
          "_________________________________________________________________\n",
          "activation_8 (Activation)    (None, 1)                 0         \n",
          "=================================================================\n",
          "Total params: 61\n",
          "Trainable params: 61\n",
          "Non-trainable params: 0\n",
          "_________________________________________________________________\n"
    
    chadhat's avatar
    chadhat committed
         ]
        }
       ],
       "source": [
        "# Say hello to keras\n",
        "\n",
        "from keras.models import Sequential\n",
        "from keras.layers import Dense, Activation\n",
        "\n",
        "# Creating a model\n",
        "model = Sequential()\n",
        "\n",
        "# Adding layers to this model\n",
        "# 1st Hidden layer\n",
    
        "# A Dense/fully-connected layer which takes as input a \n",
        "# feature array of shape (samples, num_features)\n",
        "# Here input_shape = (8,) means that the layer expects an input with num_features = 8 \n",
        "# and the sample size could be anything\n",
        "# Then we specify an activation function\n",
        "model.add(Dense(units=4, input_shape=(8,)))\n",
    
    chadhat's avatar
    chadhat committed
        "model.add(Activation(\"relu\"))\n",
        "\n",
    
        "# 2nd Hidden layer\n",
        "# This is also a fully-connected layer and we do not need to specify the\n",
        "# shape of the input anymore (We need to do that only for the first layer)\n",
    
        "# NOTE: Now\n",
        " we didn't add the activation seperately. Instead we just added it\n",
    
        "# while calling Dense(). This and the way used for the first layer are Equivalent!\n",
        "model.add(Dense(units=4, activation=\"relu\"))\n",
        "\n",
        "          \n",
    
    chadhat's avatar
    chadhat committed
        "# The output layer\n",
        "model.add(Dense(units=1))\n",
        "model.add(Activation(\"sigmoid\"))\n",
        "\n",
        "model.summary()"
       ]
      },
    
    chadhat's avatar
    chadhat committed
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "### XOR using neural networks"
       ]
      },
    
    chadhat's avatar
    chadhat committed
      {
       "cell_type": "code",
    
    chadhat's avatar
    chadhat committed
       "execution_count": 1,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
    
    chadhat's avatar
    chadhat committed
       "outputs": [
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "Using TensorFlow backend.\n"
         ]
        }
       ],
    
    chadhat's avatar
    chadhat committed
       "source": [
    
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "from sklearn.model_selection import train_test_split\n",
        "from keras.models import Sequential\n",
        "from keras.layers import Dense\n",
        "import numpy as np"
    
       "cell_type": "code",
    
    chadhat's avatar
    chadhat committed
       "execution_count": 7,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
    
       "outputs": [
        {
         "data": {
    
    chadhat's avatar
    chadhat committed
          "image/png": "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\n",
    
          "text/plain": [
    
    chadhat's avatar
    chadhat committed
           "<Figure size 360x360 with 1 Axes>"
    
          ]
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
    
    chadhat's avatar
    chadhat committed
       "source": [
    
        "# Creating a network to solve the XOR problem\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
    
        "# Loading and plotting the data\n",
        "xor = pd.read_csv(\"xor.csv\")\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
    
        "# Using x and y coordinates as featues\n",
        "features = xor.iloc[:, :-1]\n",
        "# Convert boolean to integer values (True->1 and False->0)\n",
        "labels = xor.iloc[:, -1].astype(int)\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
    
        "colors = [[\"steelblue\", \"chocolate\"][i] for i in xor[\"label\"]]\n",
        "plt.figure(figsize=(5, 5))\n",
        "plt.xlim([-2, 2])\n",
        "plt.ylim([-2, 2])\n",
        "plt.title(\"Blue points are False\")\n",
    
        "\n",
        "\n",
    
    chadhat's avatar
    chadhat committed
        "plt.scatter(features[\"x\"], features[\"y\"], color=colors, marker=\"o\") ;"
    
       ]
      },
      {
       "cell_type": "code",
    
    chadhat's avatar
    chadhat committed
       "execution_count": 4,
    
       "metadata": {},
       "outputs": [],
       "source": [
    
        "# Building a Keras model\n",
    
        "def a_simple_NN():\n",
        "    \n",
        "    model = Sequential()\n",
    
        "    model.add(Dense(4, input_shape = (2,), activation = \"relu\"))\n",
        "\n",
        "    model.add(Dense(4, activation = \"relu\"))\n",
        "\n",
        "    model.add(Dense(1, activation = \"sigmoid\"))\n",
        "\n",
        "    model.compile(loss=\"binary_crossentropy\", optimizer=\"rmsprop\", metrics=[\"accuracy\"])\n",
        "    \n",
        "    return model"
    
       ]
      },
      {
       "cell_type": "code",
    
    chadhat's avatar
    chadhat committed
       "execution_count": 39,
    
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
    chadhat's avatar
    chadhat committed
          "Train on 350 samples, validate on 150 samples\n",
          "Epoch 1/300\n",
          "350/350 [==============================] - 1s 3ms/step - loss: 0.7098 - acc: 0.5257 - val_loss: 0.7071 - val_acc: 0.4267\n",
          "Epoch 2/300\n",
          "350/350 [==============================] - 0s 90us/step - loss: 0.7017 - acc: 0.5457 - val_loss: 0.7006 - val_acc: 0.4467\n",
          "Epoch 3/300\n",
          "350/350 [==============================] - 0s 116us/step - loss: 0.6960 - acc: 0.5657 - val_loss: 0.6954 - val_acc: 0.4667\n",
          "Epoch 4/300\n",
          "350/350 [==============================] - 0s 129us/step - loss: 0.6909 - acc: 0.5857 - val_loss: 0.6901 - val_acc: 0.4733\n",
          "Epoch 5/300\n",
          "350/350 [==============================] - 0s 102us/step - loss: 0.6861 - acc: 0.5971 - val_loss: 0.6854 - val_acc: 0.5000\n",
          "Epoch 6/300\n",
          "350/350 [==============================] - 0s 99us/step - loss: 0.6815 - acc: 0.6143 - val_loss: 0.6808 - val_acc: 0.5133\n",
          "Epoch 7/300\n",
          "350/350 [==============================] - 0s 113us/step - loss: 0.6767 - acc: 0.6314 - val_loss: 0.6739 - val_acc: 0.5533\n",
          "Epoch 8/300\n",
          "350/350 [==============================] - 0s 112us/step - loss: 0.6690 - acc: 0.6629 - val_loss: 0.6616 - val_acc: 0.6467\n",
          "Epoch 9/300\n",
          "350/350 [==============================] - 0s 111us/step - loss: 0.6581 - acc: 0.6857 - val_loss: 0.6500 - val_acc: 0.6467\n",
          "Epoch 10/300\n",
          "350/350 [==============================] - 0s 100us/step - loss: 0.6476 - acc: 0.7086 - val_loss: 0.6407 - val_acc: 0.6267\n",
          "Epoch 11/300\n",
          "350/350 [==============================] - 0s 90us/step - loss: 0.6383 - acc: 0.7229 - val_loss: 0.6315 - val_acc: 0.6267\n",
          "Epoch 12/300\n",
          "350/350 [==============================] - 0s 74us/step - loss: 0.6296 - acc: 0.7171 - val_loss: 0.6234 - val_acc: 0.6200\n",
          "Epoch 13/300\n",
          "350/350 [==============================] - 0s 80us/step - loss: 0.6218 - acc: 0.7086 - val_loss: 0.6159 - val_acc: 0.6133\n",
          "Epoch 14/300\n",
          "350/350 [==============================] - 0s 95us/step - loss: 0.6137 - acc: 0.6971 - val_loss: 0.6084 - val_acc: 0.6067\n",
          "Epoch 15/300\n",
          "350/350 [==============================] - 0s 108us/step - loss: 0.6061 - acc: 0.7029 - val_loss: 0.6020 - val_acc: 0.6067\n",
          "Epoch 16/300\n",
          "350/350 [==============================] - 0s 104us/step - loss: 0.5993 - acc: 0.7000 - val_loss: 0.5966 - val_acc: 0.6067\n",
          "Epoch 17/300\n",
          "350/350 [==============================] - 0s 93us/step - loss: 0.5927 - acc: 0.6971 - val_loss: 0.5917 - val_acc: 0.6067\n",
          "Epoch 18/300\n",
          "350/350 [==============================] - 0s 93us/step - loss: 0.5863 - acc: 0.7000 - val_loss: 0.5869 - val_acc: 0.6067\n",
          "Epoch 19/300\n",
          "350/350 [==============================] - 0s 97us/step - loss: 0.5800 - acc: 0.7000 - val_loss: 0.5822 - val_acc: 0.6000\n",
          "Epoch 20/300\n",
          "350/350 [==============================] - 0s 96us/step - loss: 0.5735 - acc: 0.7000 - val_loss: 0.5776 - val_acc: 0.6000\n",
          "Epoch 21/300\n",
          "350/350 [==============================] - 0s 97us/step - loss: 0.5675 - acc: 0.7000 - val_loss: 0.5732 - val_acc: 0.6067\n",
          "Epoch 22/300\n",
          "350/350 [==============================] - 0s 103us/step - loss: 0.5616 - acc: 0.6971 - val_loss: 0.5696 - val_acc: 0.6067\n",
          "Epoch 23/300\n",
          "350/350 [==============================] - 0s 103us/step - loss: 0.5560 - acc: 0.7000 - val_loss: 0.5658 - val_acc: 0.6067\n",
          "Epoch 24/300\n",
          "350/350 [==============================] - 0s 101us/step - loss: 0.5501 - acc: 0.7086 - val_loss: 0.5618 - val_acc: 0.6133\n",
          "Epoch 25/300\n",
          "350/350 [==============================] - 0s 98us/step - loss: 0.5445 - acc: 0.7114 - val_loss: 0.5579 - val_acc: 0.6133\n",
          "Epoch 26/300\n",
          "350/350 [==============================] - 0s 106us/step - loss: 0.5385 - acc: 0.7114 - val_loss: 0.5539 - val_acc: 0.6133\n",
          "Epoch 27/300\n",
          "350/350 [==============================] - 0s 101us/step - loss: 0.5326 - acc: 0.7171 - val_loss: 0.5499 - val_acc: 0.6200\n",
          "Epoch 28/300\n",
          "350/350 [==============================] - 0s 105us/step - loss: 0.5269 - acc: 0.7200 - val_loss: 0.5458 - val_acc: 0.6200\n",
          "Epoch 29/300\n",
          "350/350 [==============================] - 0s 98us/step - loss: 0.5212 - acc: 0.7229 - val_loss: 0.5418 - val_acc: 0.6200\n",
          "Epoch 30/300\n",
          "350/350 [==============================] - 0s 99us/step - loss: 0.5155 - acc: 0.7286 - val_loss: 0.5375 - val_acc: 0.6200\n",
          "Epoch 31/300\n",
          "350/350 [==============================] - 0s 97us/step - loss: 0.5101 - acc: 0.7486 - val_loss: 0.5337 - val_acc: 0.7600\n",
          "Epoch 32/300\n",
          "350/350 [==============================] - 0s 101us/step - loss: 0.5047 - acc: 0.8543 - val_loss: 0.5293 - val_acc: 0.7667\n",
          "Epoch 33/300\n",
          "350/350 [==============================] - 0s 102us/step - loss: 0.4993 - acc: 0.8543 - val_loss: 0.5250 - val_acc: 0.7733\n",
          "Epoch 34/300\n",
          "350/350 [==============================] - 0s 97us/step - loss: 0.4938 - acc: 0.8571 - val_loss: 0.5209 - val_acc: 0.7733\n",
          "Epoch 35/300\n",
          "350/350 [==============================] - 0s 105us/step - loss: 0.4885 - acc: 0.8600 - val_loss: 0.5167 - val_acc: 0.7733\n",
          "Epoch 36/300\n",
          "350/350 [==============================] - 0s 109us/step - loss: 0.4830 - acc: 0.8629 - val_loss: 0.5126 - val_acc: 0.7800\n",
          "Epoch 37/300\n",
          "350/350 [==============================] - 0s 103us/step - loss: 0.4776 - acc: 0.8743 - val_loss: 0.5087 - val_acc: 0.7933\n",
          "Epoch 38/300\n",
          "350/350 [==============================] - 0s 96us/step - loss: 0.4721 - acc: 0.8743 - val_loss: 0.5047 - val_acc: 0.7933\n",
          "Epoch 39/300\n",
          "350/350 [==============================] - 0s 127us/step - loss: 0.4665 - acc: 0.8771 - val_loss: 0.5003 - val_acc: 0.7933\n",
          "Epoch 40/300\n",
          "350/350 [==============================] - 0s 100us/step - loss: 0.4611 - acc: 0.8800 - val_loss: 0.4963 - val_acc: 0.8133\n",
          "Epoch 41/300\n",
          "350/350 [==============================] - 0s 108us/step - loss: 0.4560 - acc: 0.8800 - val_loss: 0.4922 - val_acc: 0.8267\n",
          "Epoch 42/300\n",
          "350/350 [==============================] - 0s 94us/step - loss: 0.4507 - acc: 0.8829 - val_loss: 0.4879 - val_acc: 0.8200\n",
          "Epoch 43/300\n",
          "350/350 [==============================] - 0s 97us/step - loss: 0.4459 - acc: 0.8829 - val_loss: 0.4846 - val_acc: 0.8267\n",
          "Epoch 44/300\n",
          "350/350 [==============================] - 0s 116us/step - loss: 0.4412 - acc: 0.8771 - val_loss: 0.4803 - val_acc: 0.8267\n",
          "Epoch 45/300\n",
          "350/350 [==============================] - 0s 103us/step - loss: 0.4365 - acc: 0.8829 - val_loss: 0.4766 - val_acc: 0.8333\n",
          "Epoch 46/300\n",
          "350/350 [==============================] - 0s 112us/step - loss: 0.4315 - acc: 0.8886 - val_loss: 0.4725 - val_acc: 0.8400\n",
          "Epoch 47/300\n",
          "350/350 [==============================] - 0s 99us/step - loss: 0.4267 - acc: 0.8943 - val_loss: 0.4687 - val_acc: 0.8400\n",
          "Epoch 48/300\n",
          "350/350 [==============================] - 0s 106us/step - loss: 0.4219 - acc: 0.8971 - val_loss: 0.4654 - val_acc: 0.8400\n",
          "Epoch 49/300\n",
          "350/350 [==============================] - 0s 106us/step - loss: 0.4173 - acc: 0.8943 - val_loss: 0.4615 - val_acc: 0.8400\n",
          "Epoch 50/300\n",
          "350/350 [==============================] - 0s 98us/step - loss: 0.4130 - acc: 0.8971 - val_loss: 0.4586 - val_acc: 0.8400\n",
          "Epoch 51/300\n",
          "350/350 [==============================] - 0s 96us/step - loss: 0.4087 - acc: 0.8971 - val_loss: 0.4554 - val_acc: 0.8400\n",
          "Epoch 52/300\n",
          "350/350 [==============================] - 0s 91us/step - loss: 0.4046 - acc: 0.8971 - val_loss: 0.4516 - val_acc: 0.8400\n",
          "Epoch 53/300\n",
          "350/350 [==============================] - 0s 95us/step - loss: 0.4009 - acc: 0.8971 - val_loss: 0.4489 - val_acc: 0.8400\n",
          "Epoch 54/300\n",
          "350/350 [==============================] - 0s 100us/step - loss: 0.3969 - acc: 0.9000 - val_loss: 0.4459 - val_acc: 0.8400\n",
          "Epoch 55/300\n",
          "350/350 [==============================] - 0s 89us/step - loss: 0.3930 - acc: 0.9000 - val_loss: 0.4423 - val_acc: 0.8400\n",
          "Epoch 56/300\n",
          "350/350 [==============================] - 0s 84us/step - loss: 0.3889 - acc: 0.9000 - val_loss: 0.4392 - val_acc: 0.8400\n",
          "Epoch 57/300\n",
          "350/350 [==============================] - 0s 97us/step - loss: 0.3851 - acc: 0.9029 - val_loss: 0.4358 - val_acc: 0.8400\n",
          "Epoch 58/300\n",
          "350/350 [==============================] - 0s 88us/step - loss: 0.3809 - acc: 0.9057 - val_loss: 0.4324 - val_acc: 0.8467\n",
          "Epoch 59/300\n",
          "350/350 [==============================] - 0s 91us/step - loss: 0.3773 - acc: 0.9086 - val_loss: 0.4292 - val_acc: 0.8467\n",
          "Epoch 60/300\n",
          "350/350 [==============================] - 0s 89us/step - loss: 0.3738 - acc: 0.9086 - val_loss: 0.4260 - val_acc: 0.8467\n",
    
    chadhat's avatar
    chadhat committed
          "Epoch 61/300\n",
    
    chadhat's avatar
    chadhat committed
          "350/350 [==============================] - 0s 85us/step - loss: 0.3703 - acc: 0.9086 - val_loss: 0.4221 - val_acc: 0.8533\n",
          "Epoch 62/300\n",
          "350/350 [==============================] - 0s 101us/step - loss: 0.3672 - acc: 0.9114 - val_loss: 0.4195 - val_acc: 0.8533\n",
          "Epoch 63/300\n",
          "350/350 [==============================] - 0s 98us/step - loss: 0.3640 - acc: 0.9086 - val_loss: 0.4162 - val_acc: 0.8533\n",
          "Epoch 64/300\n",
          "350/350 [==============================] - 0s 88us/step - loss: 0.3609 - acc: 0.9114 - val_loss: 0.4136 - val_acc: 0.8533\n",
          "Epoch 65/300\n",
          "350/350 [==============================] - 0s 107us/step - loss: 0.3577 - acc: 0.9114 - val_loss: 0.4111 - val_acc: 0.8533\n",
          "Epoch 66/300\n",
          "350/350 [==============================] - 0s 119us/step - loss: 0.3542 - acc: 0.9143 - val_loss: 0.4084 - val_acc: 0.8533\n",
          "Epoch 67/300\n",
          "350/350 [==============================] - 0s 101us/step - loss: 0.3508 - acc: 0.9143 - val_loss: 0.4053 - val_acc: 0.8600\n",
          "Epoch 68/300\n",
          "350/350 [==============================] - 0s 100us/step - loss: 0.3475 - acc: 0.9143 - val_loss: 0.4026 - val_acc: 0.8600\n",
          "Epoch 69/300\n",
          "350/350 [==============================] - 0s 88us/step - loss: 0.3444 - acc: 0.9143 - val_loss: 0.4002 - val_acc: 0.8600\n",
          "Epoch 70/300\n",
          "350/350 [==============================] - 0s 94us/step - loss: 0.3413 - acc: 0.9143 - val_loss: 0.3971 - val_acc: 0.8667\n",
          "Epoch 71/300\n",
          "350/350 [==============================] - 0s 101us/step - loss: 0.3385 - acc: 0.9171 - val_loss: 0.3952 - val_acc: 0.8667\n",
          "Epoch 72/300\n",
          "350/350 [==============================] - 0s 104us/step - loss: 0.3355 - acc: 0.9143 - val_loss: 0.3926 - val_acc: 0.8667\n",
          "Epoch 73/300\n",
          "350/350 [==============================] - 0s 89us/step - loss: 0.3325 - acc: 0.9229 - val_loss: 0.3894 - val_acc: 0.8667\n",
          "Epoch 74/300\n",
          "350/350 [==============================] - 0s 97us/step - loss: 0.3295 - acc: 0.9200 - val_loss: 0.3872 - val_acc: 0.8667\n",
          "Epoch 75/300\n",
          "350/350 [==============================] - 0s 91us/step - loss: 0.3267 - acc: 0.9229 - val_loss: 0.3848 - val_acc: 0.8667\n",
          "Epoch 76/300\n",
          "350/350 [==============================] - 0s 82us/step - loss: 0.3243 - acc: 0.9229 - val_loss: 0.3825 - val_acc: 0.8667\n",
          "Epoch 77/300\n",
          "350/350 [==============================] - 0s 110us/step - loss: 0.3214 - acc: 0.9229 - val_loss: 0.3803 - val_acc: 0.8667\n",
          "Epoch 78/300\n",
          "350/350 [==============================] - 0s 86us/step - loss: 0.3188 - acc: 0.9229 - val_loss: 0.3782 - val_acc: 0.8667\n",
          "Epoch 79/300\n",
          "350/350 [==============================] - 0s 85us/step - loss: 0.3163 - acc: 0.9257 - val_loss: 0.3750 - val_acc: 0.8667\n",
          "Epoch 80/300\n",
          "350/350 [==============================] - 0s 79us/step - loss: 0.3138 - acc: 0.9257 - val_loss: 0.3726 - val_acc: 0.8667\n",
          "Epoch 81/300\n",
          "350/350 [==============================] - 0s 78us/step - loss: 0.3114 - acc: 0.9286 - val_loss: 0.3702 - val_acc: 0.8667\n",
          "Epoch 82/300\n",
          "350/350 [==============================] - 0s 98us/step - loss: 0.3091 - acc: 0.9286 - val_loss: 0.3674 - val_acc: 0.8667\n",
          "Epoch 83/300\n",
          "350/350 [==============================] - 0s 92us/step - loss: 0.3065 - acc: 0.9286 - val_loss: 0.3654 - val_acc: 0.8667\n",
          "Epoch 84/300\n",
          "350/350 [==============================] - 0s 92us/step - loss: 0.3041 - acc: 0.9286 - val_loss: 0.3632 - val_acc: 0.8667\n",
          "Epoch 85/300\n",
          "350/350 [==============================] - 0s 91us/step - loss: 0.3020 - acc: 0.9286 - val_loss: 0.3609 - val_acc: 0.8667\n",
          "Epoch 86/300\n",
          "350/350 [==============================] - 0s 104us/step - loss: 0.2994 - acc: 0.9286 - val_loss: 0.3588 - val_acc: 0.8800\n",
          "Epoch 87/300\n",
          "350/350 [==============================] - 0s 107us/step - loss: 0.2972 - acc: 0.9314 - val_loss: 0.3564 - val_acc: 0.8800\n",
          "Epoch 88/300\n",
          "350/350 [==============================] - 0s 97us/step - loss: 0.2948 - acc: 0.9314 - val_loss: 0.3543 - val_acc: 0.8800\n",
          "Epoch 89/300\n",
          "350/350 [==============================] - 0s 99us/step - loss: 0.2927 - acc: 0.9314 - val_loss: 0.3523 - val_acc: 0.8800\n",
          "Epoch 90/300\n",
          "350/350 [==============================] - 0s 101us/step - loss: 0.2904 - acc: 0.9314 - val_loss: 0.3503 - val_acc: 0.8800\n",
          "Epoch 91/300\n",
          "350/350 [==============================] - 0s 102us/step - loss: 0.2883 - acc: 0.9314 - val_loss: 0.3484 - val_acc: 0.8800\n",
          "Epoch 92/300\n",
          "350/350 [==============================] - 0s 99us/step - loss: 0.2861 - acc: 0.9314 - val_loss: 0.3457 - val_acc: 0.8800\n",
          "Epoch 93/300\n",
          "350/350 [==============================] - 0s 90us/step - loss: 0.2839 - acc: 0.9314 - val_loss: 0.3429 - val_acc: 0.8800\n",
          "Epoch 94/300\n",
          "350/350 [==============================] - 0s 77us/step - loss: 0.2818 - acc: 0.9343 - val_loss: 0.3405 - val_acc: 0.8800\n",
          "Epoch 95/300\n",
          "350/350 [==============================] - 0s 79us/step - loss: 0.2794 - acc: 0.9343 - val_loss: 0.3385 - val_acc: 0.8800\n",
          "Epoch 96/300\n",
          "350/350 [==============================] - 0s 79us/step - loss: 0.2774 - acc: 0.9314 - val_loss: 0.3366 - val_acc: 0.8800\n",
          "Epoch 97/300\n",
          "350/350 [==============================] - 0s 78us/step - loss: 0.2754 - acc: 0.9314 - val_loss: 0.3340 - val_acc: 0.8800\n",
          "Epoch 98/300\n",
          "350/350 [==============================] - 0s 87us/step - loss: 0.2733 - acc: 0.9314 - val_loss: 0.3317 - val_acc: 0.8800\n",
          "Epoch 99/300\n",
          "350/350 [==============================] - 0s 82us/step - loss: 0.2712 - acc: 0.9371 - val_loss: 0.3301 - val_acc: 0.8800\n",
          "Epoch 100/300\n",
          "350/350 [==============================] - 0s 82us/step - loss: 0.2694 - acc: 0.9314 - val_loss: 0.3280 - val_acc: 0.8800\n",
          "Epoch 101/300\n",
          "350/350 [==============================] - 0s 90us/step - loss: 0.2674 - acc: 0.9343 - val_loss: 0.3262 - val_acc: 0.8800\n",
          "Epoch 102/300\n",
          "350/350 [==============================] - 0s 85us/step - loss: 0.2655 - acc: 0.9400 - val_loss: 0.3242 - val_acc: 0.8800\n",
          "Epoch 103/300\n",
          "350/350 [==============================] - 0s 82us/step - loss: 0.2636 - acc: 0.9400 - val_loss: 0.3226 - val_acc: 0.8867\n",
          "Epoch 104/300\n",
          "350/350 [==============================] - 0s 85us/step - loss: 0.2616 - acc: 0.9400 - val_loss: 0.3198 - val_acc: 0.8933\n",
          "Epoch 105/300\n",
          "350/350 [==============================] - 0s 84us/step - loss: 0.2599 - acc: 0.9400 - val_loss: 0.3176 - val_acc: 0.8933\n",
          "Epoch 106/300\n",
          "350/350 [==============================] - 0s 84us/step - loss: 0.2582 - acc: 0.9400 - val_loss: 0.3156 - val_acc: 0.8933\n",
          "Epoch 107/300\n",
          "350/350 [==============================] - 0s 75us/step - loss: 0.2564 - acc: 0.9400 - val_loss: 0.3133 - val_acc: 0.8933\n",
          "Epoch 108/300\n",
          "350/350 [==============================] - 0s 95us/step - loss: 0.2545 - acc: 0.9429 - val_loss: 0.3105 - val_acc: 0.8933\n",
          "Epoch 109/300\n",
          "350/350 [==============================] - 0s 96us/step - loss: 0.2527 - acc: 0.9429 - val_loss: 0.3083 - val_acc: 0.9000\n",
          "Epoch 110/300\n",
          "350/350 [==============================] - 0s 84us/step - loss: 0.2513 - acc: 0.9429 - val_loss: 0.3071 - val_acc: 0.9067\n",
          "Epoch 111/300\n",
          "350/350 [==============================] - 0s 91us/step - loss: 0.2494 - acc: 0.9457 - val_loss: 0.3051 - val_acc: 0.9067\n",
          "Epoch 112/300\n",
          "350/350 [==============================] - 0s 97us/step - loss: 0.2476 - acc: 0.9457 - val_loss: 0.3026 - val_acc: 0.9067\n",
          "Epoch 113/300\n",
          "350/350 [==============================] - 0s 93us/step - loss: 0.2462 - acc: 0.9514 - val_loss: 0.3008 - val_acc: 0.9000\n",
          "Epoch 114/300\n",
          "350/350 [==============================] - 0s 90us/step - loss: 0.2444 - acc: 0.9514 - val_loss: 0.2991 - val_acc: 0.9067\n",
          "Epoch 115/300\n",
          "350/350 [==============================] - 0s 91us/step - loss: 0.2427 - acc: 0.9514 - val_loss: 0.2963 - val_acc: 0.9067\n",
          "Epoch 116/300\n",
          "350/350 [==============================] - 0s 90us/step - loss: 0.2414 - acc: 0.9514 - val_loss: 0.2947 - val_acc: 0.9067\n",
          "Epoch 117/300\n",
          "350/350 [==============================] - 0s 90us/step - loss: 0.2395 - acc: 0.9514 - val_loss: 0.2930 - val_acc: 0.9067\n",
          "Epoch 118/300\n",
          "350/350 [==============================] - 0s 85us/step - loss: 0.2380 - acc: 0.9514 - val_loss: 0.2913 - val_acc: 0.9133\n",
          "Epoch 119/300\n",
          "350/350 [==============================] - 0s 77us/step - loss: 0.2365 - acc: 0.9571 - val_loss: 0.2894 - val_acc: 0.9133\n",
          "Epoch 120/300\n",
          "350/350 [==============================] - 0s 88us/step - loss: 0.2351 - acc: 0.9514 - val_loss: 0.2876 - val_acc: 0.9133\n",
          "Epoch 121/300\n"
         ]
        },
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "350/350 [==============================] - 0s 78us/step - loss: 0.2336 - acc: 0.9571 - val_loss: 0.2857 - val_acc: 0.9133\n",
          "Epoch 122/300\n",
          "350/350 [==============================] - 0s 90us/step - loss: 0.2318 - acc: 0.9543 - val_loss: 0.2843 - val_acc: 0.9200\n",
          "Epoch 123/300\n",
          "350/350 [==============================] - 0s 77us/step - loss: 0.2304 - acc: 0.9571 - val_loss: 0.2827 - val_acc: 0.9200\n",
          "Epoch 124/300\n",
          "350/350 [==============================] - 0s 76us/step - loss: 0.2295 - acc: 0.9543 - val_loss: 0.2813 - val_acc: 0.9200\n",
          "Epoch 125/300\n",
          "350/350 [==============================] - 0s 79us/step - loss: 0.2276 - acc: 0.9571 - val_loss: 0.2796 - val_acc: 0.9200\n",
          "Epoch 126/300\n",
          "350/350 [==============================] - 0s 83us/step - loss: 0.2262 - acc: 0.9571 - val_loss: 0.2783 - val_acc: 0.9200\n",
          "Epoch 127/300\n",
          "350/350 [==============================] - 0s 82us/step - loss: 0.2247 - acc: 0.9571 - val_loss: 0.2757 - val_acc: 0.9200\n",
          "Epoch 128/300\n",
          "350/350 [==============================] - 0s 84us/step - loss: 0.2234 - acc: 0.9543 - val_loss: 0.2744 - val_acc: 0.9200\n",
          "Epoch 129/300\n",
          "350/350 [==============================] - 0s 88us/step - loss: 0.2218 - acc: 0.9571 - val_loss: 0.2722 - val_acc: 0.9200\n",
          "Epoch 130/300\n",
          "350/350 [==============================] - 0s 79us/step - loss: 0.2205 - acc: 0.9543 - val_loss: 0.2708 - val_acc: 0.9333\n",
          "Epoch 131/300\n",
          "350/350 [==============================] - 0s 82us/step - loss: 0.2192 - acc: 0.9571 - val_loss: 0.2695 - val_acc: 0.9333\n",
          "Epoch 132/300\n",
          "350/350 [==============================] - 0s 100us/step - loss: 0.2174 - acc: 0.9571 - val_loss: 0.2684 - val_acc: 0.9333\n",
          "Epoch 133/300\n",
          "350/350 [==============================] - 0s 116us/step - loss: 0.2163 - acc: 0.9600 - val_loss: 0.2671 - val_acc: 0.9333\n",
          "Epoch 134/300\n",
          "350/350 [==============================] - 0s 93us/step - loss: 0.2146 - acc: 0.9600 - val_loss: 0.2656 - val_acc: 0.9333\n",
          "Epoch 135/300\n",
          "350/350 [==============================] - 0s 83us/step - loss: 0.2134 - acc: 0.9629 - val_loss: 0.2639 - val_acc: 0.9333\n",
          "Epoch 136/300\n",
          "350/350 [==============================] - 0s 89us/step - loss: 0.2122 - acc: 0.9600 - val_loss: 0.2620 - val_acc: 0.9333\n",
          "Epoch 137/300\n",
          "350/350 [==============================] - 0s 80us/step - loss: 0.2107 - acc: 0.9600 - val_loss: 0.2608 - val_acc: 0.9333\n",
          "Epoch 138/300\n",
          "350/350 [==============================] - 0s 74us/step - loss: 0.2095 - acc: 0.9600 - val_loss: 0.2590 - val_acc: 0.9400\n",
          "Epoch 139/300\n",
          "350/350 [==============================] - 0s 81us/step - loss: 0.2080 - acc: 0.9600 - val_loss: 0.2579 - val_acc: 0.9400\n",
          "Epoch 140/300\n",
          "350/350 [==============================] - 0s 73us/step - loss: 0.2069 - acc: 0.9600 - val_loss: 0.2566 - val_acc: 0.9400\n",
          "Epoch 141/300\n",
          "350/350 [==============================] - 0s 80us/step - loss: 0.2056 - acc: 0.9600 - val_loss: 0.2553 - val_acc: 0.9400\n",
          "Epoch 142/300\n",
          "350/350 [==============================] - 0s 82us/step - loss: 0.2041 - acc: 0.9600 - val_loss: 0.2538 - val_acc: 0.9400\n",
          "Epoch 143/300\n",
          "350/350 [==============================] - 0s 83us/step - loss: 0.2030 - acc: 0.9600 - val_loss: 0.2516 - val_acc: 0.9400\n",
          "Epoch 144/300\n",
          "350/350 [==============================] - 0s 83us/step - loss: 0.2017 - acc: 0.9629 - val_loss: 0.2507 - val_acc: 0.9400\n",
          "Epoch 145/300\n",
          "350/350 [==============================] - 0s 83us/step - loss: 0.2007 - acc: 0.9600 - val_loss: 0.2494 - val_acc: 0.9400\n",