Skip to content

Instantly share code, notes, and snippets.

@JanDupal
Created November 23, 2015 22:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JanDupal/e1f73832445884153981 to your computer and use it in GitHub Desktop.
Save JanDupal/e1f73832445884153981 to your computer and use it in GitHub Desktop.
TensorFlow & MNIST learning visualization
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# TensorFlow & MNIST learning visualization\n",
"\n",
"Requirements:\n",
"\n",
"1. [TensorFlow](http://tensorflow.org/) installed\n",
"2. [input_data.py](https://tensorflow.googlesource.com/tensorflow/+/master/tensorflow/g3doc/tutorials/mnist/input_data.py)\n",
"\n",
"The first part is taken from [MNIST For ML Beginners](http://tensorflow.org/tutorials/mnist/beginners/index.html) tutorial:"
]
},
{
"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": [
"import input_data\n",
"import tensorflow as tf\n",
"\n",
"mnist = input_data.read_data_sets(\"MNIST_data/\", one_hot=True)\n",
"\n",
"x = tf.placeholder(\"float\", [None, 784])\n",
"W = tf.Variable(tf.zeros([784,10]))\n",
"b = tf.Variable(tf.zeros([10]))\n",
"y = tf.nn.softmax(tf.matmul(x,W) + b)\n",
"\n",
"y_ = tf.placeholder(\"float\", [None,10])\n",
"cross_entropy = -tf.reduce_sum(y_*tf.log(y))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.9054\n"
]
}
],
"source": [
"train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)\n",
"init = tf.initialize_all_variables()\n",
"\n",
"sess = tf.Session()\n",
"sess.run(init)\n",
"\n",
"masks = []\n",
"for i in range(1000):\n",
" batch_xs, batch_ys = mnist.train.next_batch(50)\n",
" sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})\n",
" \n",
" # save the intermediate weights\n",
" masks.append(sess.run(W)) \n",
"\n",
"correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))\n",
"accuracy = tf.reduce_mean(tf.cast(correct_prediction, \"float\"))\n",
"print sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And now the visualization:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f44104e23d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"from ipywidgets import interact\n",
"import numpy as np\n",
"\n",
"plt.rcParams['image.cmap'] = 'gray'\n",
"\n",
"def view_mask(number, learning_iteration):\n",
" data = np.transpose(masks[learning_iteration])[number]\n",
" pos = map(lambda x: x if x > 0 else 0, data)\n",
" neg = map(lambda x: x if x < 0 else 0, data)\n",
" pos /= np.amax(pos)\n",
" neg /= np.amin(neg)\n",
" data = pos - neg\n",
" image = np.split(data, 28)\n",
" plt.imshow(image);\n",
"\n",
"interact(view_mask, number=(0, 9), learning_iteration=(0, len(masks) - 1))"
]
}
],
"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.10"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment