data-science-ipython-notebooks/deep-learning/tensor-flow-examples/notebooks/5_ui/graph_visualization.ipynb

225 lines
1.5 MiB
Python
Raw Normal View History

2015-12-28 21:02:28 +08:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Graph Visualization in TensorFlow\n",
"\n",
"Credits: Forked from [TensorFlow-Examples](https://github.com/aymericdamien/TensorFlow-Examples) by Aymeric Damien\n",
"\n",
"## Setup\n",
"\n",
"Refer to the [setup instructions](http://nbviewer.ipython.org/github/donnemartin/data-science-ipython-notebooks/blob/master/deep-learning/tensor-flow-examples/Setup_TensorFlow.md)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Extracting /tmp/data/train-images-idx3-ubyte.gz\n",
"Extracting /tmp/data/train-labels-idx1-ubyte.gz\n",
"Extracting /tmp/data/t10k-images-idx3-ubyte.gz\n",
"Extracting /tmp/data/t10k-labels-idx1-ubyte.gz\n"
]
}
],
"source": [
"import tensorflow as tf\n",
"import numpy\n",
"\n",
"# Import MINST data\n",
"import input_data\n",
"mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Use Logistic Regression from our previous example\n",
"\n",
"# Parameters\n",
"learning_rate = 0.01\n",
"training_epochs = 10\n",
"batch_size = 100\n",
"display_step = 1\n",
"\n",
"# tf Graph Input\n",
"x = tf.placeholder(\"float\", [None, 784], name='x') # mnist data image of shape 28*28=784\n",
"y = tf.placeholder(\"float\", [None, 10], name='y') # 0-9 digits recognition => 10 classes\n",
"\n",
"# Create model\n",
"\n",
"# Set model weights\n",
"W = tf.Variable(tf.zeros([784, 10]), name=\"weights\")\n",
"b = tf.Variable(tf.zeros([10]), name=\"bias\")\n",
"\n",
"# Construct model\n",
"activation = tf.nn.softmax(tf.matmul(x, W) + b) # Softmax\n",
"\n",
"# Minimize error using cross entropy\n",
"cost = -tf.reduce_sum(y*tf.log(activation)) # Cross entropy\n",
"optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) # Gradient Descent\n",
"\n",
"# Initializing the variables\n",
"init = tf.initialize_all_variables()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Launch the graph\n",
"with tf.Session() as sess:\n",
" sess.run(init)\n",
"\n",
" # Set logs writer into folder /tmp/tensorflow_logs\n",
" summary_writer = tf.train.SummaryWriter('/tmp/tensorflow_logs', graph_def=sess.graph_def)\n",
"\n",
" # Training cycle\n",
" for epoch in range(training_epochs):\n",
" avg_cost = 0.\n",
" total_batch = int(mnist.train.num_examples/batch_size)\n",
" # Loop over all batches\n",
" for i in range(total_batch):\n",
" batch_xs, batch_ys = mnist.train.next_batch(batch_size)\n",
" # Fit training using batch data\n",
" sess.run(optimizer, feed_dict={x: batch_xs, y: batch_ys})\n",
" # Compute average loss\n",
" avg_cost += sess.run(cost, feed_dict={x: batch_xs, y: batch_ys})/total_batch\n",
" # Display logs per epoch step\n",
" if epoch % display_step == 0:\n",
" print \"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(avg_cost)\n",
"\n",
" print \"Optimization Finished!\"\n",
"\n",
" # Test model\n",
" correct_prediction = tf.equal(tf.argmax(activation, 1), tf.argmax(y, 1))\n",
" # Calculate accuracy\n",
" accuracy = tf.reduce_mean(tf.cast(correct_prediction, \"float\"))\n",
" print \"Accuracy:\", accuracy.eval({x: mnist.test.images, y: mnist.test.labels})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Run the command line\n",
"```\n",
"tensorboard --logdir=/tmp/tensorflow_logs\n",
"```\n",
"\n",
"### Open http://localhost:6006/ into your web browser"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nM6s0u2aOmjuY8823mXdOIkxyniSYVDWpy4Jq4WWRb1Fj0WPJtAyxLLSst3w52WBy4uR1ky9O/mpl\nb5VptcfqvrWy9VTrQutG69c2ZjYcm0qbm7Y0W3/bxbYNtq/szO14dtvt7tgz7EPtl9u32H9xcHQQ\nORx26Hc0cExy3OrY5aTiFOG0yumSM8HZ23mxc5PzRxcHlzyXoy5/u1q4ZrgecH0+xXgKb8qeKb1u\nem5st11u3e4s9yT3ne7dHroebI8qj8ee+p5cz72ez7xMvdK9Dnq99LbyFnmf8H7v4+Kz0KfZF/MN\n8C3xbfdT9ovxq/B75K/nn+pf4z8YYB8wP6A5kBAYHLgusCtIK4gTVB00ONVx6sKprcHU4KjgiuDH\nIWYhopDGUDR0auj60AdhhmGCsPpwEB4Uvj78YYRxRE7Eb9OI0yKmVU57GmkduSDyYhQjanbUgah3\n0d7Ra6Lvx5jEiGNaYhViZ8RWx76P840ri+uOnxy/MP5qgkYCP6EhkZQYm7g3cWi63/SN0/tm2M8o\nnnF7pvHMuTMvz9KYlTnr1GyF2ezZx5IISXFJB5I+s8PZVeyh5KDkrcmDHB/OJs4Lrid3A7ef58Yr\n4z1LcUspS3me6pa6PrU/zSOtPG2A78Ov4L9KD0zfkf4+IzxjX8ZIZlxmbRY5KynrpEBZkCFozdbO\nnpvdKTQXFgu7c1xyNuYMioJFe3OR3Jm5DXkqcKvTJjYR/yTuyXfPr8z/MCd2zrG5SnMFc9vmmc1b\nOe9ZgX/BL/Px+Zz5LQt0Fyxd0LPQa+GuRcii5EUti/UXFy3uWxKwZP9SytKMpb8XWhWWFb5dFres\nsUiraElR708BP9UU04tFxV3LXZfvWIGv4K9oX2m7csvKryXckiulVqXlpZ9XcVZd+dn6580/j6xO\nWd2+xmHN9rXEtYK1t9d5rNtfplRWUNa7PnR93QbWhpINbzfO3ni53K58xybKJvGm7s0hmxu2GGxZ\nu+VzRVrFrUrvytqtmltXbn2/jbvt+nbP7Yd3aO0o3fFpJ3/nnV0Bu+qqjKrKdxN35+9+uid2z8Vf\nnH6p3quxt3Tvl32Cfd37I/e3VjtWVx/QPLCmBq0R1/QfnHGw45DvoYbDFod31TJrS4+AI+Ijf/6a\n9Ovto8FHW445HTt83PD41hOMEyV1SN28usH6tPruhoSGzpNTT7Y0ujae+M3yt31Nuk2Vp1RPrTlN\nOV10euRMwZmhZmHzwNnUs70ts1vun4s/d7N1Wmv7+eDzly74Xzh30evimUtul5ouu1w+ecXpSv1V\nh6t1bfZtJ363//1Eu0N73TXHaw0dzh2NnVM6T1/3uH72hu+NCzeDbl69FXar83bM7TtdM7q673Dv\nPL+beffVvfx7w/eXPCA8KHmo+LD8keajqj9M/6jtdug+1ePb0/Y46vH9Xk7viye5Tz73FT2lPS1/\npvOs+rnN86Z+//6OP6f/2fdC+GJ4oPgvpb+2vjR5efxvz7/bBuMH+16JXo28XvVG/c2+t3ZvW4Yi\nhh69y3o3/L7kg/qH/R+
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Graph Visualization\n",
"# Tensorflow makes it easy for you to visualize all computation graph, \n",
"# you can click on any part of the graph for more in-depth details"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nM6s0u2aOmjuY8823mXdOIkxyniSYVDWpy4Jq4WWRb1Fj0WPJtAyxLLSst3w52WBy4uR1ky9O/mpl\nb5VptcfqvrWy9VTrQutG69c2ZjYcm0qbm7Y0W3/bxbYNtq/szO14dtvt7tgz7EPtl9u32H9xcHQQ\nORx26Hc0cExy3OrY5aTiFOG0yumSM8HZ23mxc5PzRxcHlzyXoy5/u1q4ZrgecH0+xXgKb8qeKb1u\nem5st11u3e4s9yT3ne7dHroebI8qj8ee+p5cz72ez7xMvdK9Dnq99LbyFnmf8H7v4+Kz0KfZF/MN\n8C3xbfdT9ovxq/B75K/nn+pf4z8YYB8wP6A5kBAYHLgusCtIK4gTVB00ONVx6sKprcHU4KjgiuDH\nIWYhopDGUDR0auj60AdhhmGCsPpwEB4Uvj78YYRxRE7Eb9OI0yKmVU57GmkduSDyYhQjanbUgah3\n0d7Ra6Lvx5jEiGNaYhViZ8RWx76P840ri+uOnxy/MP5qgkYCP6EhkZQYm7g3cWi63/SN0/tm2M8o\nnnF7pvHMuTMvz9KYlTnr1GyF2ezZx5IISXFJB5I+s8PZVeyh5KDkrcmDHB/OJs4Lrid3A7ef58Yr\n4z1LcUspS3me6pa6PrU/zSOtPG2A78Ov4L9KD0zfkf4+IzxjX8ZIZlxmbRY5KynrpEBZkCFozdbO\nnpvdKTQXFgu7c1xyNuYMioJFe3OR3Jm5DXkqcKvTJjYR/yTuyXfPr8z/MCd2zrG5SnMFc9vmmc1b\nOe9ZgX/BL/Px+Zz5LQt0Fyxd0LPQa+GuRcii5EUti/UXFy3uWxKwZP9SytKMpb8XWhWWFb5dFres\nsUiraElR708BP9UU04tFxV3LXZfvWIGv4K9oX2m7csvKryXckiulVqXlpZ9XcVZd+dn6580/j6xO\nWd2+xmHN9rXEtYK1t9d5rNtfplRWUNa7PnR93QbWhpINbzfO3ni53K58xybKJvGm7s0hmxu2GGxZ\nu+VzRVrFrUrvytqtmltXbn2/jbvt+nbP7Yd3aO0o3fFpJ3/nnV0Bu+qqjKrKdxN35+9+uid2z8Vf\nnH6p3quxt3Tvl32Cfd37I/e3VjtWVx/QPLCmBq0R1/QfnHGw45DvoYbDFod31TJrS4+AI+Ijf/6a\n9Ovto8FHW445HTt83PD41hOMEyV1SN28usH6tPruhoSGzpNTT7Y0ujae+M3yt31Nuk2Vp1RPrTlN\nOV10euRMwZmhZmHzwNnUs70ts1vun4s/d7N1Wmv7+eDzly74Xzh30evimUtul5ouu1w+ecXpSv1V\nh6t1bfZtJ363//1Eu0N73TXHaw0dzh2NnVM6T1/3uH72hu+NCzeDbl69FXar83bM7TtdM7q673Dv\nPL+beffVvfx7w/eXPCA8KHmo+LD8keajqj9M/6jtdug+1ePb0/Y46vH9Xk7viye5Tz73FT2lPS1/\npvOs+rnN86Z+//6OP6f/2fdC+GJ4oPgvpb+2vjR5efxvz7/bBuMH+16JXo28XvVG/c2+t3ZvW4Yi\nhh69y3o3/L7kg/qH/R+
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Weights details"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nM6s0u2aOmjuY8823mXdOIkxyniSYVDWpy4Jq4WWRb1Fj0WPJtAyxLLSst3w52WBy4uR1ky9O/mpl\nb5VptcfqvrWy9VTrQutG69c2ZjYcm0qbm7Y0W3/bxbYNtq/szO14dtvt7tgz7EPtl9u32H9xcHQQ\nORx26Hc0cExy3OrY5aTiFOG0yumSM8HZ23mxc5PzRxcHlzyXoy5/u1q4ZrgecH0+xXgKb8qeKb1u\nem5st11u3e4s9yT3ne7dHroebI8qj8ee+p5cz72ez7xMvdK9Dnq99LbyFnmf8H7v4+Kz0KfZF/MN\n8C3xbfdT9ovxq/B75K/nn+pf4z8YYB8wP6A5kBAYHLgusCtIK4gTVB00ONVx6sKprcHU4KjgiuDH\nIWYhopDGUDR0auj60AdhhmGCsPpwEB4Uvj78YYRxRE7Eb9OI0yKmVU57GmkduSDyYhQjanbUgah3\n0d7Ra6Lvx5jEiGNaYhViZ8RWx76P840ri+uOnxy/MP5qgkYCP6EhkZQYm7g3cWi63/SN0/tm2M8o\nnnF7pvHMuTMvz9KYlTnr1GyF2ezZx5IISXFJB5I+s8PZVeyh5KDkrcmDHB/OJs4Lrid3A7ef58Yr\n4z1LcUspS3me6pa6PrU/zSOtPG2A78Ov4L9KD0zfkf4+IzxjX8ZIZlxmbRY5KynrpEBZkCFozdbO\nnpvdKTQXFgu7c1xyNuYMioJFe3OR3Jm5DXkqcKvTJjYR/yTuyXfPr8z/MCd2zrG5SnMFc9vmmc1b\nOe9ZgX/BL/Px+Zz5LQt0Fyxd0LPQa+GuRcii5EUti/UXFy3uWxKwZP9SytKMpb8XWhWWFb5dFres\nsUiraElR708BP9UU04tFxV3LXZfvWIGv4K9oX2m7csvKryXckiulVqXlpZ9XcVZd+dn6580/j6xO\nWd2+xmHN9rXEtYK1t9d5rNtfplRWUNa7PnR93QbWhpINbzfO3ni53K58xybKJvGm7s0hmxu2GGxZ\nu+VzRVrFrUrvytqtmltXbn2/jbvt+nbP7Yd3aO0o3fFpJ3/nnV0Bu+qqjKrKdxN35+9+uid2z8Vf\nnH6p3quxt3Tvl32Cfd37I/e3VjtWVx/QPLCmBq0R1/QfnHGw45DvoYbDFod31TJrS4+AI+Ijf/6a\n9Ovto8FHW445HTt83PD41hOMEyV1SN28usH6tPruhoSGzpNTT7Y0ujae+M3yt31Nuk2Vp1RPrTlN\nOV10euRMwZmhZmHzwNnUs70ts1vun4s/d7N1Wmv7+eDzly74Xzh30evimUtul5ouu1w+ecXpSv1V\nh6t1bfZtJ363//1Eu0N73TXHaw0dzh2NnVM6T1/3uH72hu+NCzeDbl69FXar83bM7TtdM7q673Dv\nPL+beffVvfx7w/eXPCA8KHmo+LD8keajqj9M/6jtdug+1ePb0/Y46vH9Xk7viye5Tz73FT2lPS1/\npvOs+rnN86Z+//6OP6f/2fdC+GJ4oPgvpb+2vjR5efxvz7/bBuMH+16JXo28XvVG/c2+t3ZvW4Yi\nhh69y3o3/L7kg/qH/R+
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Gradient descent details"
]
}
],
"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.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}