{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 203 Activation\n",
    "\n",
    "View more, visit my tutorial page: https://morvanzhou.github.io/tutorials/\n",
    "My Youtube Channel: https://www.youtube.com/user/MorvanZhou\n",
    "\n",
    "Dependencies:\n",
    "* torch: 0.1.11\n",
    "* matplotlib\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn.functional as F\n",
    "from torch.autograd import Variable\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Firstly generate some fake data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = torch.linspace(-5, 5, 200)  # x data (tensor), shape=(200, 1)\n",
    "x = Variable(x)\n",
    "x_np = x.data.numpy()   # numpy array for plotting"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Following are popular activation functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\morvanzhou\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\torch\\nn\\functional.py:1006: UserWarning: nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.\n  warnings.warn(\"nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.\")\nC:\\Users\\morvanzhou\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\torch\\nn\\functional.py:995: UserWarning: nn.functional.tanh is deprecated. Use torch.tanh instead.\n  warnings.warn(\"nn.functional.tanh is deprecated. Use torch.tanh instead.\")\n"
     ]
    }
   ],
   "source": [
    "y_relu = F.relu(x).data.numpy()\n",
    "y_sigmoid = torch.sigmoid(x).data.numpy()\n",
    "y_tanh = F.tanh(x).data.numpy()\n",
    "y_softplus = F.softplus(x).data.numpy()\n",
    "\n",
    "# y_softmax = F.softmax(x)\n",
    "# softmax is a special kind of activation function, it is about probability\n",
    "# and will make the sum as 1."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plot to visualize these activation function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe8AAAFpCAYAAAC1YKAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmcjvX+x/HXB1Njl61kbP2ijUhDTjqn0mmTaC+lOClt\nTqtOWrWe03bapaQiydKCSVokCifZkiyJigyVLbKbMd/fH99bBjNmu+e67uX9fDzux9zLNXN9xsN1\nfea7fb7mnENERETiR5mwAxAREZGiUfIWERGJM0reIiIicUbJW0REJM4oeYuIiMQZJW8REZE4E2jy\nNrMlZvatmc02sxlBnltECmZmr5nZSjObm8/nl5nZnMh1/D8zax50jCISTsv7ZOdcC+dcegjnFpF9\nGwicsY/PfwJOdM41Ax4C+gcRlIjsrlzYAYhI7HDOfWFmDffx+f9yvZwKpJV2TCKyt6Bb3g74xMxm\nmlmPgM8tItHVHfgw7CBEklHQLe8TnHPLzaw2MM7MvnPOfbHzw0hC7wFQsWLFYw8//PCAwxOJEb/9\nBpmZUK8e1K69z0Nnzpy52jlXK6DIADCzk/HJ+4R9HKPrWaSICns9W1i1zc3sfmCjc+7JvD5PT093\nM2ZoTpskoalT4a9/hbPPhnffBbN9Hm5mM6M5hyTSbT7GOdc0n8+PBkYCZzrnvi/Mz9T1LFI4hb2e\nA+s2N7OKZlZ553PgNCDPGa0iSev33+GSSyAtDV59tcDEHTQzqw+8B1xe2MQtItEXZLf5gcBI8zej\ncsBbzrmPAjy/SGxzDv7xD1i+HCZPhgMOCDwEMxsKnATUNLNMoA+Q4sNzLwH3ATWAFyPXcrZWjogE\nL7Dk7Zz7EdCaUJH8PPccjB4N//0vHHdcKCE45zoX8PlVwFUBhSMi+YirpWJZWVlkZmaydevWsEOJ\nutTUVNLS0khJSQk7FAnD9Olw++1+nPuWW8KOJhCJfD1Hk+4Nkpe4St6ZmZlUrlyZhg0bYjE2FlgS\nzjnWrFlDZmYmjRo1CjscCdq6dXDxxXDQQTBwYMyNc5eWRL2eo0n3BslPXNU237p1KzVq1Ei4C93M\nqFGjhlogycg5uOoq+PlnGDYMqlcPO6LAJOr1HE26N0h+4qrlDSTshZ6ov5cU4MUX/XKwxx+H448P\nO5rA6f99wfRvJHmJq5Z3PDnppJPQulbZp1mz4NZboX17uO22sKORiKuuuor58+eX6jnat2/PunXr\n9nr//vvv58kn8yx9IbKbuGt5xxLnHM45ypTR30BSRH/8ARddBLVqwaBBoP9DMWPAgAGlfo6xY8eW\n+jkksemOUURLlizhsMMO44orrqBp06YMHjyYv/zlL7Rs2ZILL7yQjRs37vU9lSpV+vP5O++8Q7du\n3QKMWGKOc3D11bBkiR/nrlkz7IiS1qZNmzjrrLNo3rw5TZs2Zfjw4bv1mr366qs0adKE1q1bc/XV\nV9OzZ08AunXrxnXXXUebNm045JBDmDhxIldeeSVHHHHEbtf30KFDadasGU2bNuWOO+748/2GDRuy\nevVqAB555BGaNGnCCSecwMKFC4P75SWuxW/L++abYfbs6P7MFi3gmWcKPGzRokUMGjSIQw89lPPO\nO49PP/2UihUr8thjj/HUU09x3333RTcuSSwvvwwjRsC//w0n5FsaPLmEdD1/9NFHHHzwwXzwwQcA\nrF+/nn79+gGwYsUKHnroIWbNmkXlypVp164dzZvvKlXx+++/8+WXX5KRkUHHjh2ZMmUKAwYMoFWr\nVsyePZvatWtzxx13MHPmTA444ABOO+00Ro0axTnnnPPnz5g5cybDhg1j9uzZZGdn07JlS4499tjo\n/jtIQlLLuxgaNGhAmzZtmDp1KvPnz6dt27a0aNGCQYMGsXTp0rDDk1g2e7ZPVKefDrlaYhKOZs2a\nMW7cOO644w4mTZpE1apV//xs2rRpnHjiiVSvXp2UlBQuvPDC3b737LPPxsxo1qwZBx54IM2aNaNM\nmTIcddRRLFmyhOnTp3PSSSdRq1YtypUrx2WXXcYXX3yx28+YNGkS5557LhUqVKBKlSp07NgxkN9b\n4l/8trwL0UIuLRUrVgT8mPepp57K0KFD93l87tmiWvKRxDZs8OPc1avDG29onDu3kK7nJk2aMGvW\nLMaOHcs999zDKaecUujv3X///QEoU6bMn893vs7OzlZRFSlVunuUQJs2bZgyZQqLFy8G/PjZ99/v\nvVfDgQceyIIFC8jJyWHkyJFBhymxwDm49lr44QcYOrTAbT4lGCtWrKBChQp06dKF22+/nVmzZv35\nWatWrfj888/5/fffyc7O5t133y3Sz27dujWff/45q1evZseOHQwdOpQTTzxxt2P+9re/MWrUKLZs\n2cKGDRt4//33o/J7SeKL35Z3DKhVqxYDBw6kc+fObNu2DYCHH36YJk2a7Hbco48+SocOHahVqxbp\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f5f99d757b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(1, figsize=(8, 6))\n",
    "plt.subplot(221)\n",
    "plt.plot(x_np, y_relu, c='red', label='relu')\n",
    "plt.ylim((-1, 5))\n",
    "plt.legend(loc='best')\n",
    "\n",
    "plt.subplot(222)\n",
    "plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')\n",
    "plt.ylim((-0.2, 1.2))\n",
    "plt.legend(loc='best')\n",
    "\n",
    "plt.subplot(223)\n",
    "plt.plot(x_np, y_tanh, c='red', label='tanh')\n",
    "plt.ylim((-1.2, 1.2))\n",
    "plt.legend(loc='best')\n",
    "\n",
    "plt.subplot(224)\n",
    "plt.plot(x_np, y_softplus, c='red', label='softplus')\n",
    "plt.ylim((-0.2, 6))\n",
    "plt.legend(loc='best')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
