Skip to content

Instantly share code, notes, and snippets.

@JnBrymn-EB
Created July 11, 2016 02:47
Show Gist options
  • Save JnBrymn-EB/5f928de336ddf44f026cb5b3c731cd73 to your computer and use it in GitHub Desktop.
Save JnBrymn-EB/5f928de336ddf44f026cb5b3c731cd73 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# MNIST character recognition\n",
"from https://www.tensorflow.org/versions/r0.9/tutorials/mnist/pros/index.html"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.image as mpimg"
]
},
{
"cell_type": "code",
"execution_count": 1,
"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": [
"\"\"\"Functions for downloading and reading MNIST data.\"\"\"\n",
"from __future__ import absolute_import\n",
"from __future__ import division\n",
"from __future__ import print_function\n",
"\n",
"import gzip\n",
"import os\n",
"import tempfile\n",
"\n",
"import numpy as np\n",
"from six.moves import urllib\n",
"from six.moves import xrange # pylint: disable=redefined-builtin\n",
"import tensorflow as tf\n",
"from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets\n",
"\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
"mnist = input_data.read_data_sets('MNIST_data', one_hot=True)\n",
"sess = tf.InteractiveSession()\n"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.9103\n"
]
}
],
"source": [
"x = tf.placeholder(tf.float32, shape=[None, 784])\n",
"y_ = tf.placeholder(tf.float32, shape=[None, 10])\n",
"\n",
"W = tf.Variable(tf.zeros([784,10]))\n",
"b = tf.Variable(tf.zeros([10]))\n",
"\n",
"sess.run(tf.initialize_all_variables())\n",
"y = tf.nn.softmax(tf.matmul(x,W) + b)\n",
"\n",
"cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))\n",
"train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)\n",
"for i in range(1000):\n",
" batch = mnist.train.next_batch(50)\n",
" train_step.run(feed_dict={x: batch[0], y_: batch[1]})\n",
"correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))\n",
"accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))\n",
"\n",
"print(accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels}))"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def weight_variable(shape):\n",
" initial = tf.truncated_normal(shape, stddev=0.1)\n",
" return tf.Variable(initial)\n",
"\n",
"def bias_variable(shape):\n",
" initial = tf.constant(0.1, shape=shape)\n",
" return tf.Variable(initial)\n",
"\n",
"def conv2d(x, W):\n",
" return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')\n",
"\n",
"def max_pool_2x2(x):\n",
" return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],\n",
" strides=[1, 2, 2, 1], padding='SAME')"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {
"collapsed": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"step 0, training accuracy 0.04\n",
"step 100, training accuracy 0.78\n",
"step 200, training accuracy 0.9\n",
"step 300, training accuracy 0.98\n",
"step 400, training accuracy 0.98\n",
"step 500, training accuracy 0.96\n",
"step 600, training accuracy 0.94\n",
"step 700, training accuracy 0.98\n",
"step 800, training accuracy 0.96\n",
"step 900, training accuracy 0.98\n",
"step 1000, training accuracy 0.98\n",
"step 1100, training accuracy 0.98\n"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-72-77e4b174cf75>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 37\u001b[0m x:batch[0], y_: batch[1], keep_prob: 1.0})\n\u001b[1;32m 38\u001b[0m \u001b[0;32mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"step %d, training accuracy %g\"\u001b[0m\u001b[0;34m%\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrain_accuracy\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 39\u001b[0;31m \u001b[0mtrain_step\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfeed_dict\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbatch\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbatch\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkeep_prob\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m0.5\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 40\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 41\u001b[0m print(\"test accuracy %g\"%accuracy.eval(feed_dict={\n",
"\u001b[0;32m/Library/Python/2.7/site-packages/tensorflow/python/framework/ops.pyc\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, feed_dict, session)\u001b[0m\n\u001b[1;32m 1549\u001b[0m \u001b[0mnone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mdefault\u001b[0m \u001b[0msession\u001b[0m \u001b[0mwill\u001b[0m \u001b[0mbe\u001b[0m \u001b[0mused\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1550\u001b[0m \"\"\"\n\u001b[0;32m-> 1551\u001b[0;31m \u001b[0m_run_using_default_session\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgraph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1552\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1553\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Library/Python/2.7/site-packages/tensorflow/python/framework/ops.pyc\u001b[0m in \u001b[0;36m_run_using_default_session\u001b[0;34m(operation, feed_dict, graph, session)\u001b[0m\n\u001b[1;32m 3531\u001b[0m \u001b[0;34m\"the operation's graph is different from the session's \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3532\u001b[0m \"graph.\")\n\u001b[0;32m-> 3533\u001b[0;31m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moperation\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3534\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3535\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Library/Python/2.7/site-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 370\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 371\u001b[0m result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[0;32m--> 372\u001b[0;31m run_metadata_ptr)\n\u001b[0m\u001b[1;32m 373\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 374\u001b[0m \u001b[0mproto_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Library/Python/2.7/site-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_run\u001b[0;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 634\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 635\u001b[0m results = self._do_run(handle, target_list, unique_fetches,\n\u001b[0;32m--> 636\u001b[0;31m feed_dict_string, options, run_metadata)\n\u001b[0m\u001b[1;32m 637\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 638\u001b[0m \u001b[0;31m# The movers are no longer used. Delete them.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Library/Python/2.7/site-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_do_run\u001b[0;34m(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 706\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhandle\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 707\u001b[0m return self._do_call(_run_fn, self._session, feed_dict, fetch_list,\n\u001b[0;32m--> 708\u001b[0;31m target_list, options, run_metadata)\n\u001b[0m\u001b[1;32m 709\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 710\u001b[0m return self._do_call(_prun_fn, self._session, handle, feed_dict,\n",
"\u001b[0;32m/Library/Python/2.7/site-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m 713\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_do_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 714\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 715\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 716\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOpError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 717\u001b[0m \u001b[0mmessage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompat\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_text\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Library/Python/2.7/site-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_run_fn\u001b[0;34m(session, feed_dict, fetch_list, target_list, options, run_metadata)\u001b[0m\n\u001b[1;32m 695\u001b[0m return tf_session.TF_Run(session, options,\n\u001b[1;32m 696\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_list\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 697\u001b[0;31m status, run_metadata)\n\u001b[0m\u001b[1;32m 698\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 699\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_prun_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msession\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"W_conv1 = weight_variable([5, 5, 1, 32])\n",
"b_conv1 = bias_variable([32])\n",
"\n",
"x_image = tf.reshape(x, [-1,28,28,1])\n",
"h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)\n",
"h_pool1 = max_pool_2x2(h_conv1)\n",
"\n",
"W_conv2 = weight_variable([5, 5, 32, 64])\n",
"b_conv2 = bias_variable([64])\n",
"\n",
"h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)\n",
"h_pool2 = max_pool_2x2(h_conv2)\n",
"\n",
"W_fc1 = weight_variable([7 * 7 * 64, 1024])\n",
"b_fc1 = bias_variable([1024])\n",
"\n",
"h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64])\n",
"h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)\n",
"\n",
"keep_prob = tf.placeholder(tf.float32)\n",
"h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)\n",
"\n",
"W_fc2 = weight_variable([1024, 10])\n",
"b_fc2 = bias_variable([10])\n",
"\n",
"y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)\n",
"\n",
"cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y_conv), reduction_indices=[1]))\n",
"train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)\n",
"correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1))\n",
"accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))\n",
"sess.run(tf.initialize_all_variables())\n",
"for i in range(20000):\n",
" batch = mnist.train.next_batch(50)\n",
" if i%100 == 0:\n",
" train_accuracy = accuracy.eval(feed_dict={\n",
" x:batch[0], y_: batch[1], keep_prob: 1.0})\n",
" print(\"step %d, training accuracy %g\"%(i, train_accuracy))\n",
" train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})\n",
"\n",
"print(\"test accuracy %g\"%accuracy.eval(feed_dict={\n",
" x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"------------------------"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"batch=mnist.train.next_batch(50)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(28, 28)"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.shape(np.reshape(batch[0][0],[28,28]))"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"784"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.size(batch[0][0])"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"out = sess.run(tf.argmax(y_conv,1), feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.1})"
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"8"
]
},
"execution_count": 148,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x110801a90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"i=27\n",
"img = np.reshape(batch[0][i],[28,28])*-1+1\n",
"imgplot = plt.imshow(img,cmap='bone',interpolation=\"bicubic\")\n",
"out[i]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
@JnBrymn-EB
Copy link
Author

see... 8 == 8 💃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment