Tensorflow works on principle of dataflow graphs. To perform some computation there are two steps:
- Represent the computation as a graph.
- Execute the graph.
Like any directed graph a Tensorflow graph consists of nodes and directional edges.
Node: A Node is also called an Op(stands for operation). An node can have multiple incoming edges but single outgoing edge.
Edge: Indicate incoming or outgoing data from a Node. In this case input(s) and output of some Node(Op).
Whenever we say data we mean an n-dimensional vector known as Tensor. A Tensor has three properties: Rank, Shape and Type
- Rank means number of dimensions of the Tensor(a cube or box has rank 3).
- Shape means values of those dimensions(box can have shape 1x1x1 or 2x5x7).
- Type means datatype in each coordinate of Tensor.
Even though a graph is constructed it is still an abstract entity. No computation actually occurs until we run it. To run a graph, we need to allocate CPU resource to Ops inside the graph. This is done using Tensorflow Sessions. Steps are:
- Create a new session.
- Run any Op inside the Graph. Usually we run the final Op where we expect the output of our computation.
An incoming edge on an Op is like a dependency for data on another Op. Thus when we run any Op, all incoming edges on it are traced and the ops on other side are also run.
Note: Special nodes called playing role of data source or sink are also possible. For example you can have an Op which gives a constant value thus no incoming edges(refer value ‘matrix1’ in the example below) and similarly Op with no outgoing edges where results are collected(refer value ‘product’ in the example below).
import tensorflow as tf # Create a Constant op that produces a 1x2 matrix. The op is # added as a node to the default graph. # # The value returned by the constructor represents the output # of the Constant op. matrix1 = tf.constant([[3., 3.]]) # Create another Constant that produces a 2x1 matrix. matrix2 = tf.constant([[2.],[2.]]) # Create a Matmul op that takes 'matrix1' and 'matrix2' as inputs. # The returned value, 'product', represents the result of the matrix # multiplication. product = tf.matmul(matrix1, matrix2) # Launch the default graph. sess = tf.Session() # To run the matmul op we call the session 'run()' method, passing 'product' # which represents the output of the matmul op. This indicates to the call # that we want to get the output of the matmul op back. # # All inputs needed by the op are run automatically by the session. They # typically are run in parallel. # # The call 'run(product)' thus causes the execution of three ops in the # graph: the two constants and matmul. # # The output of the op is returned in 'result' as a numpy `ndarray` object. result = sess.run(product) print(result) # ==> [[ 12.]] # Close the Session when we're done. sess.close()
if you want to reproduce, please indicate the source:
Getting started with tensorflow – Tensorflow Basics - CodeDay