Skip to content

Instantly share code, notes, and snippets.

@zaheersm
Created December 17, 2016 10:38
Show Gist options
  • Save zaheersm/1e4d888f599a62c6b1ea66f3ca08f230 to your computer and use it in GitHub Desktop.
Save zaheersm/1e4d888f599a62c6b1ea66f3ca08f230 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Lab 10 - Getting started with Recognition Task using TensorFlow\n",
"\n",
"In this lab, we're going to tinker with MNIST dataset using TensorFlow. MNIST dataset consists of images of handwritten digits (0-9). Goal here is to recognize the digit in the image.\n",
"\n",
"For now, the recognition task could be conceptualized as a BLACK-BOX taking an image of H x L pixels as input and outputting a target label. Concretely, each MNIST image consists of 28 x 28 pixels which would subsequently be flattened out into a vector of 784 (28x28) values. This vector of 784 values will serve as input to the BLACK-BOX. BLACK-BOX would output an integer value between 0 and 9 (inclusive).\n",
"\n",
"So what is the BLACK-BOX?\n",
"\n",
"BLACK-BOX is the model architecture that we will train on the MNIST dataset. We will start by fitting a softmax (linear-classifier) and extend it to a much more powerful Deep Convolutional Neural Network.\n",
"\n",
"\n",
"This notebook draws heavily from [Tensorflow's Tutorial](https://www.tensorflow.org/tutorials/mnist/pros/) with lab-tasks interleaved. You should (read must) refer to the tutorial to seek further explanation of what's going on."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Let's download the MNIST dataset and load it in our environment. TensorFlow provides some wrapper functions to download and load the MNIST dataset."
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Extracting MNIST_data/train-images-idx3-ubyte.gz\n",
"Extracting MNIST_data/train-labels-idx1-ubyte.gz\n",
"Extracting MNIST_data/t10k-images-idx3-ubyte.gz\n",
"Extracting MNIST_data/t10k-labels-idx1-ubyte.gz\n"
]
}
],
"source": [
"from tensorflow.examples.tutorials.mnist import input_data\n",
"mnist = input_data.read_data_sets('MNIST_data', one_hot=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Let's display a few MNIST images along with the labels"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nRK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f572882ed90>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nAJ4ndoDw/yWQAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f57288e2850>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f57288b2310>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"%matplotlib inline\n",
"for i in range (3):\n",
" img = mnist.train._images[i].reshape(28,28)\n",
" plt.figure(figsize= (1,1))\n",
" plt.axis('off')\n",
" plt.imshow(img, cmap='gray')\n",
" plt.text(30, 20, 'Label: ' + str(np.argmax(mnist.train.labels[i])))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Starting TensorFlow session"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"sess = tf.InteractiveSession()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Task 1a: What is TensorFlow session? What is the difference betweeen Session and Interactive Session?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### In TensorFlow, we build a computation graph to define our network structure. Let's create nodes for input images and output labels"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"x = tf.placeholder(tf.float32, shape=[None, 784])\n",
"y_ = tf.placeholder(tf.float32, shape=[None, 10])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Task 1b: Why do we have 'None' while defining the shape of our Image placeholder node?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Defining the model parameters using the Variable construct of TF"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"W = tf.Variable(tf.zeros([784,10]))\n",
"b = tf.Variable(tf.zeros([10]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Initializing variables"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"sess.run(tf.initialize_all_variables())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Implementing the Softmax model"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"y = tf.matmul(x,W) + b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Defining the cross entropy loss function"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(y, y_))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Training the model"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Task 1c: What does the value 0.5 represent in the above code snippet?"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"for i in range(1000):\n",
" batch = mnist.train.next_batch(200)\n",
" train_step.run(feed_dict={x: batch[0], y_: batch[1]})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Task 1d: What are we doing with feed_dict functional parameter?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Evaluating the Model"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.9179\n"
]
}
],
"source": [
"print(accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels}))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Let's also try our model on a test image"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f572ad24050>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f5726ef58d0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f5726da1f90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"prediction=tf.argmax(y,1)\n",
"predictions = prediction.eval(feed_dict={x: mnist.test.images})\n",
"for i in range (3):\n",
" img = mnist.test.images[i].reshape(28,28)\n",
" plt.figure(figsize= (1,1))\n",
" plt.axis('off')\n",
" plt.imshow(img, cmap='gray')\n",
" plt.text(30, 20, 'Label: ' + str(np.argmax(mnist.test.labels[i])) + ' Prediction: ' + str(predictions[i]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Task 1e: Draw the network structure of the SoftMax model that we just built"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Task 2\n",
"Now you are supposed to make this more interesting. Follow the TensorFlow tutorial and build a Convolutional Neural\n",
"Network. Code snippets are given in the tutorial, you are supposed to copy them over here, execute them and understand\n",
"what's happening.\n",
"\n",
"For each code snippet, provide a comment description of what's happening in the snippet. This will set you up for the quiz as well as the course project. \n",
"\n",
"Goodluck :)"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [conda env:tensorflow]",
"language": "python",
"name": "conda-env-tensorflow-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment