{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# tfgraphviz\n", "\n", "Examples" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import tensorflow as tf\n", "import tfgraphviz as tfg" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "calc_g = tf.Graph()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "with calc_g.as_default():\n", " a = tf.constant(1, name=\"a\")\n", " b = tf.constant(2, name=\"b\")\n", " c = tf.add(a, b, name=\"add\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visualize a graph with tfg.board(...)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "G\n", "\n", "\n", "\n", "a\n", "\n", "a\n", "\n", "\n", "\n", "add\n", "\n", "add\n", "\n", "\n", "\n", "a->add\n", "\n", "\n", "\n", "\n", "\n", "b\n", "\n", "b\n", "\n", "\n", "\n", "b->add\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tfg.board(calc_g)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "reg_g = tf.Graph()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "with reg_g.as_default():\n", " import numpy as np\n", " x_data = np.random.rand(100).astype(np.float32)\n", " y_data = x_data * 0.1 + 0.3\n", " W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))\n", " b = tf.Variable(tf.zeros([1]))\n", " y = W * x_data + b\n", " loss = tf.reduce_mean(tf.square(y - y_data))\n", " optimizer = tf.train.GradientDescentOptimizer(0.5)\n", " train = optimizer.minimize(loss)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "G\n", "\n", "\n", "\n", "Square\n", "\n", "Square\n", "\n", "\n", "\n", "Mean\n", "\n", "Mean\n", "\n", "\n", "\n", "Square->Mean\n", "\n", "\n", "100\n", "\n", "\n", "\n", "Const\n", "\n", "Const\n", "\n", "\n", "\n", "Const->Mean\n", "\n", "\n", "1\n", "\n", "\n", "\n", "sub\n", "\n", "sub\n", "\n", "\n", "\n", "sub->Square\n", "\n", "\n", "100\n", "\n", "\n", "\n", "gradients\n", "\n", "gradients\n", "\n", "\n", "\n", "sub->gradients\n", "\n", "\n", "100\n", "\n", "\n", "\n", "GradientDescent\n", "\n", "GradientDescent\n", "\n", "\n", "\n", "add\n", "\n", "add\n", "\n", "\n", "\n", "add->sub\n", "\n", "\n", "100\n", "\n", "\n", "\n", "zeros\n", "\n", "zeros\n", "\n", "\n", "\n", "Variable_1\n", "\n", "Variable_1\n", "\n", "\n", "\n", "zeros->Variable_1\n", "\n", "\n", "1\n", "\n", "\n", "\n", "Variable_1->GradientDescent\n", "\n", "\n", "1\n", "\n", "\n", "\n", "Variable_1->add\n", "\n", "\n", "1\n", "\n", "\n", "\n", "Variable\n", "\n", "Variable\n", "\n", "\n", "\n", "Variable->GradientDescent\n", "\n", "\n", "1\n", "\n", "\n", "\n", "mul\n", "\n", "mul\n", "\n", "\n", "\n", "Variable->mul\n", "\n", "\n", "1\n", "\n", "\n", "\n", "Variable->gradients\n", "\n", "\n", "1\n", "\n", "\n", "\n", "mul->add\n", "\n", "\n", "100\n", "\n", "\n", "\n", "mul->gradients\n", "\n", "\n", "100\n", "\n", "\n", "\n", "gradients->GradientDescent\n", "\n", "\n", "\n", "\n", "\n", "random_uniform\n", "\n", "random_uniform\n", "\n", "\n", "\n", "random_uniform->Variable\n", "\n", "\n", "1\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tfg.board(reg_g)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "G\n", "\n", "\n", "cluster_6\n", "\n", "random_uniform\n", "\n", "\n", "cluster_0\n", "\n", "sub\n", "\n", "\n", "cluster_1\n", "\n", "GradientDescent\n", "\n", "\n", "cluster_2\n", "\n", "Variable_1\n", "\n", "\n", "cluster_3\n", "\n", "Variable\n", "\n", "\n", "cluster_4\n", "\n", "mul\n", "\n", "\n", "cluster_5\n", "\n", "gradients\n", "\n", "\n", "\n", "Square\n", "\n", "Square\n", "\n", "\n", "\n", "Mean\n", "\n", "Mean\n", "\n", "\n", "\n", "Square->Mean\n", "\n", "\n", "100\n", "\n", "\n", "\n", "Const\n", "\n", "Const\n", "\n", "\n", "\n", "Const->Mean\n", "\n", "\n", "1\n", "\n", "\n", "\n", "add\n", "\n", "add\n", "\n", "\n", "\n", "sub\n", "\n", "sub\n", "\n", "\n", "\n", "add->sub\n", "\n", "\n", "100\n", "\n", "\n", "\n", "zeros\n", "\n", "zeros\n", "\n", "\n", "\n", "Variable_1/Assign\n", "\n", "Assign\n", "\n", "\n", "\n", "zeros->Variable_1/Assign\n", "\n", "\n", "1\n", "\n", "\n", "\n", "sub/y\n", "\n", "y\n", "\n", "\n", "\n", "sub/y->sub\n", "\n", "\n", "100\n", "\n", "\n", "\n", "sub->Square\n", "\n", "\n", "100\n", "\n", "\n", "\n", "gradients/Square_grad\n", "\n", "Square_grad\n", "\n", "\n", "\n", "sub->gradients/Square_grad\n", "\n", "\n", "100\n", "\n", "\n", "\n", "GradientDescent/update_Variable_1\n", "\n", "update_Variable_1\n", "\n", "\n", "\n", "GradientDescent/learning_rate\n", "\n", "learning_rate\n", "\n", "\n", "\n", "GradientDescent/learning_rate->GradientDescent/update_Variable_1\n", "\n", "\n", "\n", "\n", "\n", "GradientDescent/update_Variable\n", "\n", "update_Variable\n", "\n", "\n", "\n", "GradientDescent/learning_rate->GradientDescent/update_Variable\n", "\n", "\n", "\n", "\n", "\n", "GradientDescent\n", "\n", "GradientDescent\n", "\n", "\n", "\n", "Variable_1/read\n", "\n", "read\n", "\n", "\n", "\n", "Variable_1/read->add\n", "\n", "\n", "1\n", "\n", "\n", "\n", "Variable_1\n", "\n", "Variable_1\n", "\n", "\n", "\n", "Variable_1->GradientDescent/update_Variable_1\n", "\n", "\n", "1\n", "\n", "\n", "\n", "Variable_1->Variable_1/Assign\n", "\n", "\n", "1\n", "\n", "\n", "\n", "Variable_1->Variable_1/read\n", "\n", "\n", "1\n", "\n", "\n", "\n", "Variable/read\n", "\n", "read\n", "\n", "\n", "\n", "mul\n", "\n", "mul\n", "\n", "\n", "\n", "Variable/read->mul\n", "\n", "\n", "1\n", "\n", "\n", "\n", "gradients/mul_grad\n", "\n", "mul_grad\n", "\n", "\n", "\n", "Variable/read->gradients/mul_grad\n", "\n", "\n", "1\n", "\n", "\n", "\n", "Variable/Assign\n", "\n", "Assign\n", "\n", "\n", "\n", "Variable\n", "\n", "Variable\n", "\n", "\n", "\n", "Variable->GradientDescent/update_Variable\n", "\n", "\n", "1\n", "\n", "\n", "\n", "Variable->Variable/read\n", "\n", "\n", "1\n", "\n", "\n", "\n", "Variable->Variable/Assign\n", "\n", "\n", "1\n", "\n", "\n", "\n", "mul/y\n", "\n", "y\n", "\n", "\n", "\n", "mul/y->mul\n", "\n", "\n", "100\n", "\n", "\n", "\n", "mul/y->gradients/mul_grad\n", "\n", "\n", "100\n", "\n", "\n", "\n", "mul->add\n", "\n", "\n", "100\n", "\n", "\n", "\n", "gradients/Mean_grad\n", "\n", "Mean_grad\n", "\n", "\n", "\n", "gradients/Mean_grad->gradients/Square_grad\n", "\n", "\n", "\n", "\n", "\n", "gradients/Shape\n", "\n", "Shape\n", "\n", "\n", "\n", "gradients/Fill\n", "\n", "Fill\n", "\n", "\n", "\n", "gradients/Shape->gradients/Fill\n", "\n", "\n", "0\n", "\n", "\n", "\n", "gradients/Fill->gradients/Mean_grad\n", "\n", "\n", "\n", "\n", "\n", "gradients/add_grad\n", "\n", "add_grad\n", "\n", "\n", "\n", "gradients/add_grad->GradientDescent/update_Variable_1\n", "\n", "\n", "\n", "\n", "\n", "gradients/add_grad->gradients/mul_grad\n", "\n", "\n", "\n", "\n", "\n", "gradients/sub_grad\n", "\n", "sub_grad\n", "\n", "\n", "\n", "gradients/sub_grad->gradients/add_grad\n", "\n", "\n", "\n", "\n", "\n", "gradients/Square_grad->gradients/sub_grad\n", "\n", "\n", "\n", "\n", "\n", "gradients/Const\n", "\n", "Const\n", "\n", "\n", "\n", "gradients/Const->gradients/Fill\n", "\n", "\n", "\n", "\n", "\n", "gradients/mul_grad->GradientDescent/update_Variable\n", "\n", "\n", "\n", "\n", "\n", "gradients\n", "\n", "gradients\n", "\n", "\n", "\n", "random_uniform/sub\n", "\n", "sub\n", "\n", "\n", "\n", "random_uniform/mul\n", "\n", "mul\n", "\n", "\n", "\n", "random_uniform/sub->random_uniform/mul\n", "\n", "\n", "\n", "\n", "\n", "random_uniform/RandomUniform\n", "\n", "RandomUniform\n", "\n", "\n", "\n", "random_uniform/RandomUniform->random_uniform/mul\n", "\n", "\n", "1\n", "\n", "\n", "\n", "random_uniform\n", "\n", "random_uniform\n", "\n", "\n", "\n", "random_uniform/mul->random_uniform\n", "\n", "\n", "1\n", "\n", "\n", "\n", "random_uniform/min\n", "\n", "min\n", "\n", "\n", "\n", "random_uniform/min->random_uniform/sub\n", "\n", "\n", "\n", "\n", "\n", "random_uniform/min->random_uniform\n", "\n", "\n", "\n", "\n", "\n", "random_uniform/max\n", "\n", "max\n", "\n", "\n", "\n", "random_uniform/max->random_uniform/sub\n", "\n", "\n", "\n", "\n", "\n", "random_uniform/shape\n", "\n", "shape\n", "\n", "\n", "\n", "random_uniform/shape->random_uniform/RandomUniform\n", "\n", "\n", "1\n", "\n", "\n", "\n", "random_uniform->Variable/Assign\n", "\n", "\n", "1\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tfg.board(reg_g, depth=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## MNIST For ML Beginners\n", "\n", "https://www.tensorflow.org/get_started/mnist/beginners" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "mnist_g = tf.Graph()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "with mnist_g.as_default():\n", " x = tf.placeholder(tf.float32, [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", " y_ = tf.placeholder(tf.float32, [None, 10])\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)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "G\n", "\n", "\n", "\n", "GradientDescent\n", "\n", "GradientDescent\n", "\n", "\n", "\n", "Const\n", "\n", "Const\n", "\n", "\n", "\n", "Mean\n", "\n", "Mean\n", "\n", "\n", "\n", "Const->Mean\n", "\n", "\n", "1\n", "\n", "\n", "\n", "Log\n", "\n", "Log\n", "\n", "\n", "\n", "mul\n", "\n", "mul\n", "\n", "\n", "\n", "Log->mul\n", "\n", "\n", "?×10\n", "\n", "\n", "\n", "gradients\n", "\n", "gradients\n", "\n", "\n", "\n", "Log->gradients\n", "\n", "\n", "?×10\n", "\n", "\n", "\n", "Neg\n", "\n", "Neg\n", "\n", "\n", "\n", "Neg->gradients\n", "\n", "\n", "?\n", "\n", "\n", "\n", "Neg->Mean\n", "\n", "\n", "?\n", "\n", "\n", "\n", "Sum\n", "\n", "Sum\n", "\n", "\n", "\n", "Sum->Neg\n", "\n", "\n", "?\n", "\n", "\n", "\n", "Sum->gradients\n", "\n", "\n", "?\n", "\n", "\n", "\n", "MatMul\n", "\n", "MatMul\n", "\n", "\n", "\n", "add\n", "\n", "add\n", "\n", "\n", "\n", "MatMul->add\n", "\n", "\n", "?×10\n", "\n", "\n", "\n", "MatMul->gradients\n", "\n", "\n", "?×10\n", "\n", "\n", "\n", "Placeholder_1\n", "\n", "Placeholder_1\n", "\n", "\n", "\n", "Placeholder_1->mul\n", "\n", "\n", "?×10\n", "\n", "\n", "\n", "Placeholder_1->gradients\n", "\n", "\n", "?×10\n", "\n", "\n", "\n", "zeros_1\n", "\n", "zeros_1\n", "\n", "\n", "\n", "Variable_1\n", "\n", "Variable_1\n", "\n", "\n", "\n", "zeros_1->Variable_1\n", "\n", "\n", "10\n", "\n", "\n", "\n", "Softmax\n", "\n", "Softmax\n", "\n", "\n", "\n", "add->Softmax\n", "\n", "\n", "?×10\n", "\n", "\n", "\n", "zeros\n", "\n", "zeros\n", "\n", "\n", "\n", "Variable\n", "\n", "Variable\n", "\n", "\n", "\n", "zeros->Variable\n", "\n", "\n", "784×10\n", "\n", "\n", "\n", "Softmax->Log\n", "\n", "\n", "?×10\n", "\n", "\n", "\n", "Softmax->gradients\n", "\n", "\n", "?×10\n", "\n", "\n", "\n", "Variable_1->GradientDescent\n", "\n", "\n", "10\n", "\n", "\n", "\n", "Variable_1->add\n", "\n", "\n", "10\n", "\n", "\n", "\n", "Variable->GradientDescent\n", "\n", "\n", "784×10\n", "\n", "\n", "\n", "Variable->MatMul\n", "\n", "\n", "784×10\n", "\n", "\n", "\n", "Variable->gradients\n", "\n", "\n", "784×10\n", "\n", "\n", "\n", "mul->Sum\n", "\n", "\n", "?×10\n", "\n", "\n", "\n", "mul->gradients\n", "\n", "\n", "?×10\n", "\n", "\n", "\n", "gradients->GradientDescent\n", "\n", "\n", "\n", "\n", "\n", "Placeholder\n", "\n", "Placeholder\n", "\n", "\n", "\n", "Placeholder->MatMul\n", "\n", "\n", "?×784\n", "\n", "\n", "\n", "Placeholder->gradients\n", "\n", "\n", "?×784\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tfg.board(mnist_g, depth=1)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [Root]", "language": "python", "name": "Python [Root]" }, "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" }, "toc": { "colors": { "hover_highlight": "#DAA520", "running_highlight": "#FF0000", "selected_highlight": "#FFD700" }, "moveMenuLeft": true, "nav_menu": { "height": "30px", "width": "252px" }, "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 4, "toc_cell": false, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }