Skip to content

Instantly share code, notes, and snippets.

@stared
Last active April 21, 2019 21:21
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save stared/7de2908b9bcba01c39ee3c591875a23c to your computer and use it in GitHub Desktop.
Save stared/7de2908b9bcba01c39ee3c591875a23c to your computer and use it in GitHub Desktop.
First steps in deep learning with Keras @ PyData Warsaw Meetup (12 Jan 2017)
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# First steps in deep learning with Keras\n",
"\n",
"* [Piotr Migdał](http://p.migdal.pl/), PhD (freelancer / [deepsense.io](https://deepsense.io/))\n",
"* 12 Jan 2017, [PyData Warsaw #8: Deep & Machine Learning + After Party](https://www.meetup.com/PyData-Warsaw/events/233440464/)\n",
"\n",
"![](https://gist.githubusercontent.com/stared/7de2908b9bcba01c39ee3c591875a23c/raw/7ecdca36cbf4de45a92385e57f95aa0d51421387/z_dl_meme.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Why deep learning?\n",
"\n",
"* recent progress in image recognition, painting style transfer, text translation, AlphaGo etc\n",
"* or e.g.: [Colorful Image Colorization](http://richzhang.github.io/colorization/) (grayscale -> RGB):\n",
"\n",
"[![](https://gist.githubusercontent.com/stared/7de2908b9bcba01c39ee3c591875a23c/raw/7ecdca36cbf4de45a92385e57f95aa0d51421387/z_colorization.jpg)](http://richzhang.github.io/colorization/)\n",
"\n",
"* ...but I won't give an introduction to deep learning (this time) - only to one tool"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What is Keras?\n",
"\n",
"from https://keras.io:\n",
"\n",
"> ### Keras: Deep Learning library for Theano and TensorFlow\n",
">\n",
"> Keras is a **high-level neural networks** library, written in **Python** and capable of running on top of either **TensorFlow** or **Theano**. It was developed with a focus on enabling fast experimentation. Being able to go from idea to result with the least possible delay is key to doing good research.\n",
"\n",
"Note: \n",
"\n",
"> Keras (κέρας) means horn in Greek.\n",
"\n",
"So, please don't confuse its name with *caress* /kəˈres/ or *karaś*."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Why Keras?\n",
"\n",
"* easy (to write and read)\n",
"* popular (a lot of blog posts and code samples)\n",
"* active (features and libraries appearing all the time)\n",
"* good documentation (with intro to neural networks, not only API)\n",
"\n",
"\n",
"[![](https://gist.githubusercontent.com/stared/7de2908b9bcba01c39ee3c591875a23c/raw/7ecdca36cbf4de45a92385e57f95aa0d51421387/z_twitter.png)](https://twitter.com/fchollet/status/765212287531495424)\n",
"\n",
"\n",
"I use Keras to give introductions to artificial neural networks:\n",
"\n",
"* big companies (I am instructor at [deepsense.io](https://workshops.deepsense.io/))\n",
"* gifted high-school students ([Krajowy Fundusz na rzecz Dzieci](http://crastina.se/gifted-children-in-poland-by-piotr-migdal/))\n",
"\n",
"I don't want to **talk** about Keras, I want to **show** it!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Data loading\n",
"\n",
"(The boring stuff.)\n",
"\n",
"Keras has some built-in dataset downloaders: https://keras.io/datasets/ to make starting even easier.\n",
"\n",
"I will work on the MNIST digit recognition dataset (60k grayscale 28x28 images); benchmarks: http://yann.lecun.com/exdb/mnist/."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
}
],
"source": [
"from keras.datasets import mnist\n",
"from keras.utils import np_utils"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"(X_train, y_train), (X_test, y_test) = mnist.load_data()\n",
"img_size = 28\n",
"\n",
"# reshaping\n",
"# for TensorFlow: (datapoints, x, y, channels)\n",
"# for Theano it would need (datapoints, channels, x, y) \n",
"X_train = X_train.reshape(-1, img_size, img_size, 1)\n",
"X_test = X_test.reshape(-1, img_size, img_size, 1)\n",
"\n",
"# 0-255 integers to 0-1 floats\n",
"X_train = X_train.astype('float32') / 255.\n",
"X_test = X_test.astype('float32') / 255.\n",
"\n",
"# answers to probability vectors\n",
"Y_train = np_utils.to_categorical(y_train, 10)\n",
"Y_test = np_utils.to_categorical(y_test, 10)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(60000, 28, 28, 1)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.shape"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(60000, 10)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Y_train.shape"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n",
" [ 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
" [ 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n",
" [ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]])"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Y_train[:5]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# plotting and visualization\n",
"%matplotlib inline\n",
"# import pandas as pd\n",
"import seaborn as sns\n",
"sns.set_style(\"whitegrid\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"It is: 2\n"
]
},
{
"data": {
"image/png": "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\n8mVkZmbKHgU5efIkEhMTrcrOnTsnpPfwww8jNzcXx44ds3h67NixWL16NTZt2iQUz44dO7B48WKr\nsqqqKqEHcFQqFS5evGh1c/9Q/FxZWSnbz0CPp3U6nVWZqKdLS0vx+uuvw8nJCQ899BCICEVFRTYf\nirLV14l6eDj6TFsaoh62pSPq4YF05HjYVjwiHralIerhwfbTUD3MDBN3/8HV4SEpKYmioqJIq9VS\nbm4uBQYGypqTqxdvb29Z04HodDqaNGkSvffee9TU1GT1EaG7u5v+8Ic/0NKlS0mn01FBQQFNmzaN\nDhw4IBxTLwkJCbKmA+no6KAZM2bQmjVrSK/XU0FBAYWGhtJHH30krPXKK6/Q/PnzqaqqioqKimjq\n1KmUmZkprENE9Nvf/pa++OILWXXb29tp+vTpFB8fTzU1NZSfn0+TJ0+2OZWDPWbPnk1vvvkm1dbW\n0sGDB8nf35/OnTsnpHGn37q7uykqKori4uLo4sWLlJGRQQEBAXbncRtI506+/fbbQedxG0gjOzub\nfHx8qKCgwMrLra2tQjqNjY0UFBREf/rTn+jSpUuUmZlJv/71r6mqqkp2m4h6PDDYPG4D6Wi1WlIq\nlfTxxx9TbW0tffrpp+Tn50cVFRWSNdrb2yksLIySkpLIYDBQZmYmKZVKWW2qr68nb29vam5ultSW\ngXTOnj1LSqWSPvnkE6qtrbXMM6bT6SRrNDY2kkqloqysLKqtraXk5GSaMWMGdXZ29qtnr68T8bDU\nPrO0tNTmdCD2NEQ8bE9HxMMi5wF7HranI9XD9jREPDxYm+R6mBl+HCZx6+rqooSEBFKr1RQWFkb7\n9+8fkp7cedwyMjJIoVBYfby9ve1OHGmLa9eu0apVqygoKIhCQ0MpIyNDWONO5CZuRD0H7ZIlSygg\nIIBCQ0Ppr3/9qyyd9vZ2io+Pp4CAAJo2bRp98MEHsnSIiPz9/enUqVOy6/e2KSgoiCIiImR7pqam\nhhYuXEgqlYqioqLsTk5ri75+q62tpYULF5Kfnx9FRUVRSUmJLJ1eRBI3hUJhmWtv6dKl/fysUCgk\nzZHYN5aKigqaO3cuqVQq+v3vf0//+te/htQmIqLw8HDJiVtfnfz8fHr++efJ39+fZs2aJemHXl8N\nnU5n2U/PPvus5B+LA20bhUIhNBfhQDonT54kjUZDarWaoqOjJfmmr0ZBQQHNnDmTVCoVLVq0iPR6\n/YD1BuvrDAaDJA9L7TPtJW4DafR+li1bJtnDg8Ui1cMi5wF7Hh5MR4qHB9OQ6mEp20aOh5nhx4lI\n5oRmDMMwDMMwzH8Vh7jHjWEYhmEYhuHEjWEYhmEYxmHgxI1hGIZhGMZB4MSNYRiGYRjGQeDEjWEY\nhmEYxkHgxI1hGIZhGMZB4MSNYRiGYRjGQeDEjWEYhmEYxkHgxI1hGIZhGMZB4MSNYRiGYRjGQeDE\njWEYhmEYxkH4P6LU9vvJe53fAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x12e40fd30>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# what's inside\n",
"nth_digit = 5\n",
"print(\"It is: \", y_train[nth_digit])\n",
"sns.heatmap(X_train[nth_digit].reshape(img_size, img_size));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Logistic regression in Keras"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# importing layers from Keras\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense, Activation, Flatten, Convolution2D, MaxPooling2D, Dropout"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# creating a model\n",
"model = Sequential()\n",
"\n",
"model.add(Flatten(input_shape=(img_size, img_size, 1)))\n",
"model.add(Dense(10))\n",
"model.add(Activation(\"softmax\"))\n",
"\n",
"model.compile(loss='categorical_crossentropy',\n",
" optimizer='adam', metrics=['accuracy'])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 60000 samples, validate on 10000 samples\n",
"Epoch 1/5\n",
"60000/60000 [==============================] - 5s - loss: 0.4701 - acc: 0.8783 - val_loss: 0.3048 - val_acc: 0.9158\n",
"Epoch 2/5\n",
"60000/60000 [==============================] - 4s - loss: 0.3036 - acc: 0.9155 - val_loss: 0.2834 - val_acc: 0.9198\n",
"Epoch 3/5\n",
"60000/60000 [==============================] - 5s - loss: 0.2832 - acc: 0.9212 - val_loss: 0.2767 - val_acc: 0.9225\n",
"Epoch 4/5\n",
"60000/60000 [==============================] - 5s - loss: 0.2726 - acc: 0.9243 - val_loss: 0.2702 - val_acc: 0.9250\n",
"Epoch 5/5\n",
"60000/60000 [==============================] - 5s - loss: 0.2666 - acc: 0.9258 - val_loss: 0.2646 - val_acc: 0.9269\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x12ea95438>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# training\n",
"model.fit(X_train, Y_train,\n",
" nb_epoch=5,\n",
" batch_size=32,\n",
" validation_data=(X_test, Y_test))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" OPERATION DATA DIMENSIONS WEIGHTS(N) WEIGHTS(%)\n",
"\n",
" Input ##### (28, 28, 1)\n",
" Flatten ||||| ------------------- 0 0.0%\n",
" ##### (784,)\n",
" Dense XXXXX ------------------- 7850 100.0%\n",
" softmax ##### (10,)\n"
]
}
],
"source": [
"# showing network structure & number of parameters\n",
"# pip install git+git://github.com/stared/keras-sequential-ascii.git\n",
"from keras_sequential_ascii import sequential_model_to_ascii_printout\n",
"sequential_model_to_ascii_printout(model)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nt9LcKtI+/vhjHTt2TJLu2NWx2Wz69ddfMxZZGhUpXEi+Pj4KD3e96fHWzyWKFU02pnjREDmdTp2J\niFDphx5M2n4m/KxsNptKFC+WmSFLkuo3fkYnj53Wsd9OyhGT+KYp++hD8vGx6fDBo0n7Va/9hHbv\nOKDLl6LveswCBfPJZrNp/67/umw/dfyMov+8ohIPJv9dZLVzkef1046datLwWZdipmzphyRJUVEX\nvF6kpec1dctnXw7X7HkL1bjhsxr8wXvKlkXTImZ9X9wuI9fCKKyQg3Rv57F+02adizyvajXrJHuu\n0lO1NPiD99S0caPMCTgFVnl/e4LFazT3pjsXLlyounXrqnTp0tq3b58OHz6c4sNbBZok2e12Va5Y\nQes3fe+yfe3GTQoKCtSj5R5ONqZI4cIqVDBY6zZsctm+bsMmhRQprOACqa/p5Snd+rRXpx5tXLa1\n79JcV6/EaNfP+5K2lStfWvt2HUzTMSNOn1XCzQRVqOq6bEXR4oV1/7/uU8SZ3zMeuIf9HhmpQZ8O\n1YbNW1y2b/vpF2XPnk3FvHzDvZS+15QkjRwdptnzFqrTy+302ccfZlmBJpn3fXG79F4LI7FCDtK9\nncfo4cM0e9pkzZk+JelRtkxpPVymtOZMn6xaNZ72VviSrPP+xt25tZitr6+v6tWrp/nz5+vs2bOq\nXr363QelUUYWsy1QIL8mT5uho8dPKCBnTi1dvlJTZ8xSn+7dVLlSRTkcDh0+clR2u105/P0lJbaL\nJ02drouXLsnX10fTvp2t5atWa+CAt1SyRPF0xeHOYrY342+qY/c2ia1yH1917tlWjV+qr68Gh+nA\nnsQit0DBfOrUo40WfLtcJ46eSvE4j5Qvo+z27Lp6JUZ//XVDAYE51b5Lc/n525WQ4FSVJ8rrvU/f\n0NXoGH3y3kjFxcbdMS5PLWYrJa6BtnTFKjVr3ChpMVuH49rf1yK7cvj7Kzh/fu07cFCLl69UUGCA\nrlyN0bfzFmjewiXq2a2LnqxWJV3nzuhitu6+pg7/dkTvfTREj5Z7WK+0b6Pzf0S5PAIDAu649lJm\nMMr7Iivy+KffjhzVpi0/ZOkCqlbIQbp388id+1/K+8ADLo9Va9bJbs+urh1fyZL134z0/s7KxWxP\nrN/p8WOWrO+d27XSwu1vHPD19VXVqlUVExOjRx/13EKjGSnSChUsqIceLKX1GzZrzoKFOhcZqdAu\n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\nAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x12ec2f358>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# predictions\n",
"sns.heatmap(100 * model.predict(X_test[:5]),\n",
" yticklabels=y_test[:5],\n",
" annot=True, fmt='.1f');"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# a nicer progress bar\n",
"# pip install keras-tqdm\n",
"from keras_tqdm import TQDMNotebookCallback\n",
"# and let's save history"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Widget Javascript not detected. It may not be installed properly. Did you enable the widgetsnbextension? If not, then run \"jupyter nbextension enable --py --sys-prefix widgetsnbextension\"\n",
"Widget Javascript not detected. It may not be installed properly. Did you enable the widgetsnbextension? If not, then run \"jupyter nbextension enable --py --sys-prefix widgetsnbextension\"\n",
"Widget Javascript not detected. It may not be installed properly. Did you enable the widgetsnbextension? If not, then run \"jupyter nbextension enable --py --sys-prefix widgetsnbextension\"\n",
"Widget Javascript not detected. It may not be installed properly. Did you enable the widgetsnbextension? If not, then run \"jupyter nbextension enable --py --sys-prefix widgetsnbextension\"\n",
"Widget Javascript not detected. It may not be installed properly. Did you enable the widgetsnbextension? If not, then run \"jupyter nbextension enable --py --sys-prefix widgetsnbextension\"\n",
"Widget Javascript not detected. It may not be installed properly. Did you enable the widgetsnbextension? If not, then run \"jupyter nbextension enable --py --sys-prefix widgetsnbextension\"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"history = model.fit(X_train, Y_train,\n",
" nb_epoch=5,\n",
" batch_size=32,\n",
" validation_data=(X_test, Y_test),\n",
" verbose=0,\n",
" callbacks=[TQDMNotebookCallback(leave_inner=False)])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x12ec65b00>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAssAAAHxCAYAAACbAfGNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xl4lOW9//H3ZF/JCiELkBDBsAgJAcKSsFctwQKtcmpp\nDwVBqaJSK0X4uUDtESgWa1v1qLXao60oqLgERFxQCRoEQgAhECSBhISQnYRMtpn5/REZDBBgwoTJ\n8nldV6809zzz5PvcV0w+3Hme+2uwWCwWRERERETkAk6OLkBEREREpK1SWBYRERERaYbCsoiIiIhI\nMxSWRURERESaobAsIiIiItIMhWURERERkWYoLIuIiIiINENhWURERESkGQrLIiIiIiLNaBNhua6u\njqVLlzJs2DCSkpJ4+eWXmz1227ZtTJ06lbi4OObMmUN2drb1NbPZzJNPPkliYiLx8fEsXLiQkpKS\ni57njjvuYMOGDXa/FhERERHpONpEWF61ahUHDhzg1Vdf5bHHHuPvf/87H3300QXHZWVlMX/+fH70\nox/xzjvv0K9fP2bNmoXRaATg+eefZ9OmTTz99NO8+eabVFRU8Pvf/77JOSwWC48//jjbt2+/Jtcm\nIiIiIu2Xw8Oy0Whk/fr1PPzww8TExDBp0iTmzp3La6+9dsGxa9euJS4ujgULFhAZGcmiRYvw9fXl\n/fffBxpXlpcsWUJ8fDzR0dH86le/Yvfu3db3FxYWMmvWLD777DO6dOlyza5RRERERNonh4flzMxM\nTCYTsbGx1rH4+Hj27t17wbG5ubkMHjy4yVjfvn1JT08H4J577mHSpEkAlJSUsG7dOhISEqzHHjhw\ngLCwMN5++228vb1b43JEREREpANxcXQBRUVF+Pv74+JyrpSgoCBqa2spKysjICCgyXhhYWGT9xcU\nFODv799k7G9/+xvPPPMMfn5+vP7669bx8ePHM378+Fa6EhERERHpaBwelo1GI25ubk3Gzn5eV1fX\nZHzy5MncfffdJCcnk5SUxHvvvcf+/fubrB4DTJs2jQkTJvCPf/yDOXPmkJKSYpeV5IaGBioqKnB3\nd8fJyeGL8iIiIiJyHrPZTG1tLX5+fk0WY1vK4WHZ3d39glB89nNPT88m40lJSSxYsIB7770Xs9lM\nQkIC06ZNo7KysslxPXr0ABofHBwzZgxbtmxh2rRpV11rRUUFOTk5V30eEREREWldkZGRBAUFXfV5\nHB6WQ0JCKC8vx2w2W1dri4uL8fDwuOhDeHfddRdz5syhsrKSwMBAFi5cSHh4OABbt26lf//+dOvW\nDWhcoe7RowdlZWV2qdXd3R2A4OBgfHx87HLOjq62tpaCggJCQ0Ot8yeXp3mzneasZTRvttOctYzm\nzXaas5apqqqiuLjYbnPm8LDcr18/XFxc2LNnD0OGDAFg586dDBw48IJjU1JSyMjIYOnSpQQGBlJT\nU0NaWhqrVq0CGleSp0+fzp133gk0TlZOTg69e/e2S61nw7yPj49d/qXSGVRXV1vvK/fy8nJ0Oe2G\n5s12mrOW0bzZTnPWMpo322nOWq64uNhut8w6/MZbDw8Ppk6dymOPPca+ffv4+OOPefnll5k1axbQ\neLG1tbVA43L6G2+8wZYtW8jJyeF3v/sdYWFhjBkzBoCZM2fy0ksv8fnnn5OVlcWiRYuIjIxk7Nix\nDrs+EREREWm/HL6yDLBkyRKWL1/OrFmz8PX15f7777duAZeYmMjKlSuZNm0aAwYMYNmyZaxcuZKK\nigpGjRrF888/bz3PzJkzMRqNLF++nLKyMhITE3n22Wcv+jUNBsM1uTYRERERab/aRFj28PBgxYoV\nrFix4oLXMjMzm3w+ffp0pk+fftHzGAwG5s2bx7x58y77NT/55JOWFSsiIiIinYbDb8MQEREREWmr\nFJZFRERERJqhsCwiIiIi0gyFZRERERGRZigsi4iIiIg0Q2FZRERERKQZCssiIiIiIs1QWBYRERER\naYbCsoiIiIhIMxSWRURERESaobAsIiIiItIMhWURERERkWYoLIuIiIiINENhWURERESkGQrLIiIi\nIiLNUFgWEREREWmGwrKIiIiISDMUlkVEREREmqGwLCIiIiLSDIVlEREREZFmKCyLiIiIiDRDYVlE\nREREpBkKyyIiIiIizVBYFhERERFphsKyiIiIiEgzFJZFRERERJqhsCwiIiIi0gyFZRERERGRZigs\ni4iIiIg0Q2FZRERERKQZCssiIiIiIs1QWBYRERERaYbCsoiIiIhIMxSWRURERESaobAsIiIiItIM\nhWURERERkWYoLIuIiIiINENhWURERESkGQrLIiIiIiLNUFgWEREREWmGwrKIiIiISDMUlkVERERE\nmuHi6AJERERERK6GxWKhpKKGE6eqKCsvx9fZfudWWBYRERGRdsFY28CJoipOnKqyfswrqiK/qIqa\n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\nKp746iV25e8DYGj3Qfxx1Cx8vX1c3DMRERGR1kFh2UOV11SwbNMLZBRmAZAcmci8S2Zg9tZ/fz5t\nzwAAGzdJREFUUhEREZGmomTlgU5XneEvm54nq/gwAKN7DufO5Ol4e3m7uGciIiIirYvCsoc5VVnG\nIxuf43BpDgDje49k1rDf4uXl5eKeiYiIiLQ+CssepKTiJI9seJacU3kA/KLvOH4/dCpeJgVlERER\nkeagsOwhCs8U8/CGZzh+ugCA62Kv4LeDp2AymVzcMxEREZHWS2HZA+SfLuDhL56hoLwYgF8NvJqp\nA69WUBYRERFpZgrLbi731HEe3vAMJRUnAbhx8GQmx13p4l6JiIiItA0Ky27sSGkuj2x4lpNVZQDc\nkjiNX/a/zMW9EhEREWk7FJbd1MHiwzy68XlOV5/BhInbht3IhD6jXd0tERERkTZFYdkN7SvM4rFN\nK6ioqcRkMnHniOmMiUp2dbdERERE2hyFZTfz/YlMln35IlW1VXibvJh36Uwu6THU1d0SERERaZMU\nlt1Iet4envj6b9RYajB7mbl31CySwuNd3S0RERGRNkth2U1syd3B09+8Sq21Fl9vH/48eg6Du8W5\nulsiIiIibZrCshv45shWnv9uJRbDir/Zj/kpdzKgSz9Xd0tERESkzVNYdrENh77lpS1vYBgGgT4B\nLBx7F/1Ce7u6WyIiIiKCwrJLfXJgE69uewuAIN9AHhg3j96deri4VyIiIiJyjperOwBQXV3NwoUL\nGT58OCkpKaxcudJp26+++opJkyaRmJjIjBkzOHTokMP5V155hcsvv5ykpCRuueUWsrKyHM4/99xz\njBo1iuTkZBYtWkR1dXWzXNNP+WDf5/ag3NG/A0vG/1FBWURERMTNuEVYXr58OXv27OGNN95g8eLF\nrFixgk8++aROu/379zN79myuuOIK3n33XeLi4pg+fToVFRUAvPXWW7z++ussWrSId955h4iICG67\n7TaqqqoAW5BetWoVTz/9NK+++irfffcdL7zwQoteK8A7ez7kn+lvAxAa0ImHxv+RHh3DW7wfIiIi\nInJhLg/LFRUVvP322zzwwAPExsYyYcIEbr31Vt588806bVetWkViYiJz584lKiqK++67j6CgINat\nWwfAe++9x8yZMxk7diy9evViyZIllJSUsH37dqxWK6+//jr3338/I0aMID4+nrvvvpvdu3e32LUa\n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\nfnoqzbXG0Vz7wYoVK1i9ejVPP/00v/zlL52201xzdLHjprlmk5OTw1133cWJEyfsx3bt2kVISEid\nwKe59oOGjJvmms2bb77JunXreP/993n//fcZP34848eP51//+ledtk011xSWz/L392fSpEksXryY\nXbt28dlnn7Fy5UqmT58O2H4TqaqqAuDKK6+krKyMxx57jKysLB599FEqKiou+AO1tWrIuI0fP551\n69bx3nvvceTIEVasWMH27du56aabXHkJbkdzrXE01+rKysripZdeYtasWSQmJlJYWGj/A5przjRk\n3DTXbOLj4xk0aBALFy4kKyuLjRs38uSTTzJnzhxAc82Zhoyb5ppN9+7d6dGjh/1PYGAggYGB9l1C\nmmWuNWJru1aroqLCmD9/vpGYmGiMGTPG+J//+R/7uZiYGId9+Xbu3GlMmTLFGDJkiDFt2jRj7969\nruiyW2jIuK1du9aYOHGiMXjwYOP66683tm7d6oouu5Xz9wvWXLs4PzVummuG8fLLLxuxsbEOf2Ji\nYozY2FjDMDTXnGnouGmu2Zw4ccK46667jGHDhhkpKSnGyy+/bD+nueZcQ8ZNc62u+fPnO+yz3Bxz\nzWQYF9isVERERESkDdMyDBERERERJxSWRUREREScUFgWEREREXFCYVlERERExAmFZRERERERJxSW\nRUREREScUFgWEREREXFCYVlERERExAmFZRERERERJ8yu7oCIiFy8m266iS1bttR7zmQy8e233xIc\nHNysfdi8eTM333wz//nPfwgPD2/W9xIRcTWFZRERD3PVVVfxwAMPYBhGnXPNHZTPMZlMLfI+IiKu\nprAsIuJh/Pz8CAkJcXU3RETaBK1ZFhFpZcaPH89LL73EzJkzGTJkCBMnTuTtt992aJOWlsb06dMZ\nNmwYl1xyCQsWLKC0tNR+vra2lmeffZbx48eTkJDADTfcwDfffOPwGl988QXXXnst8fHxXHPNNWzc\nuLFFrk9EpCUpLIuItEIvvfQSSUlJ/Otf/+LGG29k0aJFfPjhhwDs3LmTm2++mf79+7NmzRqee+45\ndu7cycyZM+1LOx599FHWrFnDggULWLduHaNHj2bOnDlkZ2cDYBgGb775JosXL2b9+vVERUVxzz33\nUFFR4apLFhFpFiajvkVvIiLilm666SbS0tLw8fGpc27ixIksX76c8ePHExsby4svvmg/98c//pFj\nx46xatUq7rnnHnJzc1m7dq39fEZGBpMnT+aVV14hKSmJSy65hEWLFjF16lR7m6effporrriC8vJy\nbr75Zl599VVGjx4NwN69e7n++utZs2YN8fHxzTgCIiItS2uWRUQ8zPjx47nvvvvqHG/Xrp3930eM\nGOFwLjExkQ0bNgCwf/9+e8g9JzY2lqCgIDIzMwkJCaG2tpYhQ4Y4tPnDH/4A2HbDMJlM9OrVy36u\nQ4cOGIZBVVXVz7o2ERF3o7AsIuJhAgMD6dGjxwXbnH/n2WKx4O3tDVDvLhrnjpvNZsxms9M2P3bu\n9c5/DRGR1kRrlkVEWqFdu3Y5fL19+3YGDBgAQExMDNu2bXM4n5GRwenTp+nXrx9RUVGYzeY6rzFt\n2jT++c9/Nm/HRUTcjO4si4h4mKqqKgoLC+s916FDBwDWr19PfHw8o0eP5tNPP+Xzzz/n5ZdfBuCW\nW27hxhtv5NFHH+U3v/kNhYWFPProowwcOJBLLrkEb29vbrrpJp555hk6depEv379WLt2Lfv372fs\n2LGcOHFCd5BFpM1QWBYR8TAffvihfWeLcwzDwGQy8eyzzwJw/fXX8/nnn/P444/Tq1cvnn32Wfs6\n5cGDB/Pqq6/yzDPPcP3119O+fXsmTJjAvffea19ace+992I2m1myZAllZWXExMTw97//naioKE6c\nOFFvURIVKhGR1ki7YYiItDLjx4/n+uuvZ+7cua7uioiIx9OaZRERERERJxSWRURaGS2HEBFpOlqG\nISIiIiLihO4si4iIiIg4obAsIiIiIuKEwrKIiIiIiBMKyyIiIiIiTigsi4iIiIg4obAsIiIiIuKE\nwrKIiIiIiBMKyyIiIiIiTvx/gOZlkPqXm/AAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x12ec40668>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# plotting learning process\n",
"sns.plt.plot(range(5), history.history[\"acc\"])\n",
"sns.plt.plot(range(5), history.history[\"val_acc\"])\n",
"sns.plt.xlabel(\"Epoch\")\n",
"sns.plt.ylabel(\"Accuracy\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ConvNets!\n",
"\n",
"Convolutions are able to learn local features.\n",
"\n",
"[![](https://gist.githubusercontent.com/stared/7de2908b9bcba01c39ee3c591875a23c/raw/7ecdca36cbf4de45a92385e57f95aa0d51421387/z_convolution.png)](http://setosa.io/ev/image-kernels/ )"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# our first ConvNet!\n",
"n_channels = 8\n",
"conv_size = 3\n",
"pool_size = 2\n",
"\n",
"model = Sequential()\n",
"\n",
"model.add(Convolution2D(n_channels, conv_size, conv_size,\n",
" input_shape=(img_size, img_size, 1)))\n",
"model.add(Activation(\"relu\"))\n",
"model.add(MaxPooling2D((pool_size, pool_size)))\n",
"\n",
"## we can add more layers!\n",
"# model.add(Convolution2D(4 * n_channels, conv_size, conv_size))\n",
"# model.add(Activation(\"relu\"))\n",
"# model.add(MaxPooling2D((pool_size, pool_size)))\n",
"\n",
"model.add(Flatten())\n",
"# model.add(Dropout(0.5)) # or dropout for regularization\n",
"model.add(Dense(10))\n",
"model.add(Activation(\"softmax\"))\n",
"\n",
"model.compile(loss='categorical_crossentropy',\n",
" optimizer='adam', metrics=['accuracy'])"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" OPERATION DATA DIMENSIONS WEIGHTS(N) WEIGHTS(%)\n",
"\n",
" Input ##### (28, 28, 1)\n",
" Convolution2D \\|/ ------------------- 80 0.6%\n",
" relu ##### (26, 26, 8)\n",
" MaxPooling2D YYYYY ------------------- 0 0.0%\n",
" ##### (13, 13, 8)\n",
" Flatten ||||| ------------------- 0 0.0%\n",
" ##### (1352,)\n",
" Dense XXXXX ------------------- 13530 99.4%\n",
" softmax ##### (10,)\n"
]
}
],
"source": [
"sequential_model_to_ascii_printout(model)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Widget Javascript not detected. It may not be installed properly. Did you enable the widgetsnbextension? If not, then run \"jupyter nbextension enable --py --sys-prefix widgetsnbextension\"\n",
"Widget Javascript not detected. It may not be installed properly. Did you enable the widgetsnbextension? If not, then run \"jupyter nbextension enable --py --sys-prefix widgetsnbextension\"\n",
"Widget Javascript not detected. It may not be installed properly. Did you enable the widgetsnbextension? If not, then run \"jupyter nbextension enable --py --sys-prefix widgetsnbextension\"\n",
"Widget Javascript not detected. It may not be installed properly. Did you enable the widgetsnbextension? If not, then run \"jupyter nbextension enable --py --sys-prefix widgetsnbextension\"\n",
"Widget Javascript not detected. It may not be installed properly. Did you enable the widgetsnbextension? If not, then run \"jupyter nbextension enable --py --sys-prefix widgetsnbextension\"\n",
"Widget Javascript not detected. It may not be installed properly. Did you enable the widgetsnbextension? If not, then run \"jupyter nbextension enable --py --sys-prefix widgetsnbextension\"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"history = model.fit(X_train, Y_train,\n",
" nb_epoch=5,\n",
" batch_size=32,\n",
" validation_data=(X_test, Y_test),\n",
" verbose=0,\n",
" callbacks=[TQDMNotebookCallback()])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x13e3f9588>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nvj8AAADah+lh2GKxqGvXrg7Hml7X19c7HJ8wYYIeeugh3XrrrUpOTta6deu0b98+JSYmOr3vnj17\ntHjxYt17770KCwtzqSar1aq6uroWzxmGoZfeKG4esDF5zIBzrvUGTfdrN/2Ki0PfXEfPWoe+uY6e\ntQ59cx09ax13/yyY6WHY39/fKfQ2vQ4MdBxekZycrOzsbM2aNUs2m02JiYnKyMhwug1i165dmjlz\nplJSUvS73/3O5ZoqKytVWVnZ4rnPvrFo/6FqSdKoqO6q/PoLtbzSu1RUVJhdQodE31xHz1qHvrmO\nnrUOfXMdPTOX6WG4b9++qqmpkc1mU5cu9luYq6qqFBAQoOBg59sP7r//fk2fPl21tbUKDQ3V7Nmz\n1b9//+bz27Zt0wMPPKDk5GT98Y9/bFVN/fr1a7714qcaGm168Z1/SZJ6Bfnrnozr5N/Vt1Xfo7Ow\nWCyqqKhQZGSk019ecG70zXX0rHXom+voWevQN9fRs9apqak550XL1jA9DMfExMjPz0+7d+9uvud3\nx44diouLc1q7fv167dmzR7m5uQoNDdXp06e1bds2LVq0SJL0+eef66GHHtLYsWP1xz/+sTlcu8rf\n31/dunVzOv7WPw/p26pTkqS7JwxRr5CgVr1/ZxQYGNhiz3B+9M119Kx16Jvr6Fnr0DfX0TPXuPu2\nEtOfJhEQEKD09HTl5eVp79692rx5swoKCpSVlSXJfpW46d6QyMhIrVy5Ups2bVJFRYXmzJmj8PBw\njRkzRpL0xBNPKDw8XI8//ri+//57VVVVOfz+S1F3+oxe22gfsHF1eE/ddF3EJb8nAAAAzGX6lWFJ\nysnJ0ZNPPqmsrCwFBQXpkUceUVpamiQpKSlJ+fn5ysjIUGxsrObPn6/8/HydOHFCo0aN0tKlSyXZ\nQ/OePXskSWPHjnV4/4ULFyojI+OSalzzXplOnLTfy8yADQAAgM7BI8JwQECAFi5cqIULFzqdKy0t\ndXidmZmpzMxMp3WXX365SkpK2qS+o9V1enOrfazzdTF9NWxw7zb5PgAAAGhfpt8m0RH8dMDGPROH\nmF0OAAAA3IQwfAFlh6u15dOvJUnjb4jUlVcwYAMAAKCzIAyfh2EYeqVwvyQp0N9Xd94cZXJFAAAA\ncCfC8Hls2/+d9pUflyTdljpIvYICTK4IAAAA7kQYPoeGRpteLbJfFb68Z4DSxww0uSIAAAC4G2H4\n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\ndevWKTU1VampqXrzzTed1rprn3lVGA4ICFB6erry8vK0d+9ebd68WQUFBcrKypJk/9uE1WqVJN18\n882qra3VH/7wB5WXl2vBggWyWCzn/Z9mZ+RKz1JTU1VYWKg33nhDX331lZYsWaKdO3dq2rRpZn4E\nj8Recx17rWXl5eV64YUXNHPmTMXHx6uqqqr5S2KvtcSVnrHXzho6dKji4uKUm5ur8vJybd26Vc88\n84wefPBBSey1lrjSM/aaXb9+/RQREdH81b17d3Xv3r35KRttss9a8ei3Ds1isRiPP/64ER8fb4wZ\nM8b429/+1nwuKirK4dl0xcXFRmZmpjFs2DBj6tSpRklJiRklm86Vnq1evdoYP368ce211xqTJ082\nduzYYUbJHufnz8xlr13YhXrGXrNbunSpER0d7fAVFRVlREdHG4bBXmuJqz1jr5119OhRY9asWcZ1\n111nJCcnG0uXLm0+x15rmSs9Y685e/zxxx2eM9wW+8zHMM7zME8AAACgE/Oq2yQAAACAnyIMAwAA\nwGsRhgEAAOC1CMMAAADwWoRhAAAAeC3CMAAAALwWYRgAAABeizAMAAAAr0UYBgAAgNfyM7sAAMBZ\n06ZN0/bt21s85+Pjo48//lghISFtWsMnn3yiu+++W++9957Cw8Pb9HsBgNkIwwDgYSZMmKB58+bJ\nMAync20dhJv4+Pi0y/cBALMRhgHAw/j7+ys0NNTsMgDAK3DPMAB0MKmpqXrhhRc0Y8YMDRs2TOPH\nj9eaNWsc1uzatUtZWVm67rrrdMMNNygnJ0c1NTXN5xsaGvTss88qNTVVw4cP12233aZ//vOfDu/x\n/vvva9KkSRo6dKgmTpyorVu3tsvnA4D2RBgGgA7ohRdeUEJCgt58803deeedeuKJJ7RhwwZJUnFx\nse6++24NHjxYq1at0n/913+puLhYM2bMaL71YsGCBVq1apVycnJUWFiopKQkPfjgg6qoqJAkGYah\n5cuXKy8vT0VFRYqMjNTs2bNlsVjM+sgA0CZ8jJZuSgMAmGLatGnatWuXLrvsMqdz48eP16JFi5Sa\nmqro6Gg9//zzzef+/d//Xd9++61WrFih2bNn65tvvtHq1aubz5eWliojI0MvvviiEhISdMMNN+iJ\nJ57QlClTmtf8+c9/1rhx41RXV6e7775bL730kpKSkiRJJSUlmjx5slatWqWhQ4e2YQcAoH1xzzAA\neJjU1FTNnTvX6Xi3bt2a//v66693OBcfH68tW7ZIksrKyppDbJPo6GgFBQXp888/V2hoqBoaGjRs\n2DCHNY8++qgk+9MkfHx8NGDAgOZzwcHBMgxDVqv1kj4bAHgawjAAeJju3bsrIiLivGt+fuW4sbFR\nvr6+ktTiUyiajvv5+cnPz++ca36q6f1+/h4A0JlwzzAAdEB79+51eL1z504NGTJEkhQVFaVPP/3U\n4XxpaalOnjypQYMGKTIyUn5+fk7vMXXqVP31r39t28IBwMNwZRgAPIzValVVVVWL54KDgyVJRUVF\nGjp0qJKSkrRp0ya9++67Wrp0qSTpnnvu0Z133qkFCxbojjvuUFVVlRYsWKDY2FjdcMMN8vX11bRp\n0/SXv/xFvXr10qBBg7R69WqVlZUpJSVFR48e5QowAK9BGAYAD7Nhw4bmJ0M0MQxDPj4+evbZZyVJ\nkydP1rvvvqvFixdrwIABevbZZ5vvE7722mv10ksv6S9/+YsmT56sHj16KC0tTXPmzGm+9WHOnDny\n8/PT/PnzVVtbq6ioKP3P//yPIiMjdfTo0RaHbjCIA0BnxNMkAKCDSU1N1eTJk5WdnW12KQDQ4XHP\nMAAAALwWYRgAOhhuVwAA9+E2CQAAAHgtrgwDAADAaxGGAQAA4LUIwwAAAPBahGEAAAB4LcIwAAAA\nvBZhGAAAAF6LMAwAAACvRRgGAACA1/r/xl6EMO4XaykAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x13ead1940>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# plotting learning history\n",
"sns.plt.plot(range(5), history.history[\"acc\"])\n",
"sns.plt.plot(range(5), history.history[\"val_acc\"])\n",
"sns.plt.xlabel(\"Epoch\")\n",
"sns.plt.ylabel(\"Accuracy\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Real networks...\n",
"\n",
"...can be expressed in Keras."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def VGG16_simpler(weights_path=None):\n",
" model = Sequential()\n",
" model.add(Convolution2D(64, 3, 3, activation='relu', border_mode='same', name='conv1_1', input_shape=(3,224,224)))\n",
" model.add(Convolution2D(64, 3, 3, activation='relu', border_mode='same', name='conv1_2'))\n",
" model.add(MaxPooling2D((2,2)))\n",
"\n",
" model.add(Convolution2D(128, 3, 3, activation='relu', border_mode='same', name='conv2_1'))\n",
" model.add(Convolution2D(128, 3, 3, activation='relu', border_mode='same', name='conv2_2'))\n",
" model.add(MaxPooling2D((2,2)))\n",
"\n",
" model.add(Convolution2D(256, 3, 3, activation='relu', border_mode='same', name='conv3_1'))\n",
" model.add(Convolution2D(256, 3, 3, activation='relu', border_mode='same', name='conv3_2'))\n",
" model.add(Convolution2D(256, 3, 3, activation='relu', border_mode='same', name='conv3_3'))\n",
" model.add(MaxPooling2D((2,2)))\n",
"\n",
" model.add(Convolution2D(512, 3, 3, activation='relu', border_mode='same', name='conv4_1'))\n",
" model.add(Convolution2D(512, 3, 3, activation='relu', border_mode='same', name='conv4_2'))\n",
" model.add(Convolution2D(512, 3, 3, activation='relu', border_mode='same', name='conv4_3'))\n",
" model.add(MaxPooling2D((2,2)))\n",
"\n",
" model.add(Convolution2D(512, 3, 3, activation='relu', border_mode='same', name='conv5_1'))\n",
" model.add(Convolution2D(512, 3, 3, activation='relu', border_mode='same', name='conv5_2'))\n",
" model.add(Convolution2D(512, 3, 3, activation='relu', border_mode='same', name='conv5_3'))\n",
" model.add(MaxPooling2D((2,2)))\n",
"\n",
" model.add(Flatten(name=\"flatten\"))\n",
" model.add(Dense(4096, activation='relu', name='dense_1'))\n",
" model.add(Dropout(0.5))\n",
" model.add(Dense(4096, activation='relu', name='dense_2'))\n",
" model.add(Dropout(0.5))\n",
" model.add(Dense(1000, name='dense_3'))\n",
" model.add(Activation(\"softmax\",name=\"softmax\"))\n",
"\n",
" if weights_path:\n",
" model.load_weights(weights_path)\n",
" return model"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## More cool Keras add-ons\n",
"\n",
"* [keras-tqdm](https://github.com/bstriner/keras-tqdm) - nicer progress bars\n",
"* [keras.js](https://transcranial.github.io/keras-js/) - convert Keras models to JavaScript, runnable in a browser (simplest GPU support ever!)\n",
"* [quiver](https://github.com/jakebian/quiver) - interactive ConvNet features visualization for Keras\n",
"* [ASCII summary for sequential models](https://github.com/stared/keras-sequential-ascii) - I started developing :)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Where to learn deep learning?\n",
"\n",
"* [Neural Networks Demystified](http://lumiverse.io/series/neural-networks-demystified) - smooth introduction\n",
"* [Image Kernels - Explained Visually](http://setosa.io/ev/image-kernels/) - on 2d convolutions\n",
"* [Building a simple neural-network with Keras](https://github.com/wxs/keras-mnist-tutorial/blob/master/MNIST%20in%20Keras.ipynb)\n",
"* [How convolutional neural networks see the world - Keras Blog](https://blog.keras.io/how-convolutional-neural-networks-see-the-world.html)\n",
"* [Deep Learning with Keras - Tutorial @ EuroScipy 2016](https://github.com/leriomaggio/deep-learning-keras-tensorflow)\n",
"* [Ian Goodfellow and Yoshua Bengio and Aaron Courville, Deep Learning, An MIT Press book](http://www.deeplearningbook.org/) ([and just PDF](https://github.com/HFTrader/DeepLearningBook))\n",
"* [TensorFlow Tutorials](https://www.tensorflow.org/versions/master/tutorials/index.html)\n",
"* [CS231n: Convolutional Neural Networks for Visual Recognition by Andrej Karpathy](http://cs231n.github.io/) and [its videos](https://www.youtube.com/playlist?list=PLLvH2FwAQhnpj1WEB-jHmPuUeQ8mX-XXG)\n",
"* [How to train your Deep Neural Network](http://rishy.github.io/ml/2017/01/05/how-to-train-your-dnn/) - how many layers, parameters, etc\n",
"* [A Guide to Deep Learning by YN^2](http://yerevann.com/a-guide-to-deep-learning/)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Thank you! Questions?\n",
"\n",
"* for contact & content see [p.migdal.pl](http://p.migdal.pl/)\n",
"* read my last blog post on word2vec: [king - man + woman is queen; but why?](http://p.migdal.pl/2017/01/06/king-man-woman-queen-why.html) (over 250 upvotes on HN!)\n",
"* check machine learnings trainings at [workshops.deepsense.io](https://workshops.deepsense.io/)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [conda root]",
"language": "python",
"name": "conda-root-py"
},
"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"
},
"widgets": {
"state": {
"2a6b30680f7440998cc4a06f2b412a5f": {
"views": [
{
"cell_index": 19
}
]
},
"35d06b84cefa490081fb7bbda8399c48": {
"views": [
{
"cell_index": 24
}
]
},
"3a0309d8caa54ad5bf0010bfee8682b3": {
"views": [
{
"cell_index": 24
}
]
},
"401955626fc94dc5906216dcc7882f99": {
"views": [
{
"cell_index": 19
}
]
},
"4298cb1d04034a5cbade8092912c9e43": {
"views": [
{
"cell_index": 19
}
]
},
"45ac04be25a74d7ca94ed1f9aa91095c": {
"views": [
{
"cell_index": 24
}
]
},
"4631a43306e94550b3c5467b1b0c41f0": {
"views": [
{
"cell_index": 19
}
]
},
"633fd2f193fa464ebedfb60a51aeba92": {
"views": [
{
"cell_index": 24
}
]
},
"844c56ca6b384be6825431af8e1eb0eb": {
"views": [
{
"cell_index": 19
}
]
},
"9debcfc2892c4ce1af854ccd153388f1": {
"views": [
{
"cell_index": 24
}
]
},
"c3417bfc77db45bdb0d0a8647c495eb3": {
"views": [
{
"cell_index": 19
}
]
},
"c5797a1f7b364140ad9450334df0a022": {
"views": [
{
"cell_index": 24
}
]
}
},
"version": "1.2.0"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment