TensorFlow DataFlow Graph
To represent your computation and their dependencies Tensorflow uses a computation graph named as Dataflow Graph which is incorporated with operations between individual entities
A Tensorflow Dataflow Graph consist of Nodes,Edges(Normal Edges,Special Edges)
Defining these graphs leads to low-level programming and a session is created to run these graphs across local and remote devices.
Machine learning aplications are complex blend of mathematical Expressions which are computed repeatedly to achieve better results Where each node held by the graph is mathematical operation(addition,multiplication,division,and so on),and every Edge is dataset of multiple dimentions(tensors) which undergoes for operations
Node: In Dataflow Graph, each node is an instantion of an operation. Comprises of inputs and outputs.
Edges: These are categorized to two types:
Normal Edges: They carry data structures (tensors), ouptup from one node to Another node as input
Special Edges: Unlike Normal Edges, they don’t carrydata between the output of a node (operator) and the input of another node. It represents a control dependency between two nodes. For Example, we have two nodes x and y and a special edges connects x and y; it means that y start its operation only after A’s excecution ends.
Operation: An operation manages tensors by adding or multiplying matrices. It can just be polymorphic: the same operation can manipulate different tensor element types. For example, Multiply of two int32 tensors, Division of two float tensors, and so on.
Kernel: The concrete implementation of an operation on a particular device. For example, any operation can have a GPU implementation and a CPU one.
Session: A session must be created When client program wants to establish communication with the TensorFlow runtime system. As soon as the session is created, an initial empty graph is created Which has two fundamental methods:
extend: Requesting to add more operations (nodes) and edges (data).
In a computation
run: sessions are created for execution of full graphs to get some outputs, or sometimes, subgraphs are executed reccursively using run invocations to provide outputs.