In TensorFlow, the term tensor refers to the representation of data as multi-dimensional array whereas the term flow refers to the series of operations that one performs on tensors.

In TensorFlow, computation is described using a sort of flowchart of operations, called as data flow **graphs**. Each node of the graph represents an instance of a mathematical operation (like addition, division, or multiplication) and each edge is a multi-dimensional data set (tensor) on which the operations are performed. The input goes in at one end, and then it flows through this system of multiple operations and comes out the other end as output.

**A tensor** is a vector or matrix of n-dimensions that represents all types of data. All values in a tensor hold identical data type with a known (or partially known) shape. **The shape** of the data is the dimensionality of the matrix or array. tensors are just multidimensional arrays, that allows you to represent data having higher dimensions. In general, Deep Learning you deal with high dimensional data sets where dimensions refer to different features present in the data set.

- 0-d tensor: scalar (number)
- 1-d tensor: vector
- 2-d tensor: matrix

**Constants**

If you need constants with specific values inside your training model, then the constant object can be used

rate = tf.constant(15.2, name="rate", dtype=tf.float32)

**Variables**

Variables in TensorFlow are in-memory buffers containing tensors which have to be explicitly initialized and used in-graph to maintain state across session. By simply calling the constructor the variable is added in computational graph.

name = tf.Variable("techtrekking.com", name="name")

**The graph** is a set of computation that takes place successively. TensorFlow makes use of a graph framework. The graph gathers and describes all the series computations done during the training

Each operation is called an **op node** and are connected to each other.

**A placeholder** is TensorFlow’s way of allowing developers to inject data into the computation graph through placeholders which are bound inside some expressions. they allow developers to create operations, and the computational graph in general, without needing to provide the data in advance for that, and the data can be added in runtime from external sources.

distance = tf.placeholder(tf.float32, name="distance")

**A Session** object encapsulates the environment in which Operation objects are executed, and Tensor objects are evaluated. In order to actually evaluate the nodes, we must run a computational graph within a session.

A session encapsulates the control and state of the TensorFlow runtime

**Common functions**

TensorFlow operator | Description |
---|---|

tf.add | x+y |

tf.subtract | x-y |

tf.multiply | x*y |

tf.div | x/y |

tf.mod | x % y |

tf.abs | |x| |

tf.negative | -x |

tf.sign | sign(x) |

tf.square | x*x |

tf.round | round(x) |

tf.sqrt | sqrt(x) |

tf.pow | x^y |

tf.exp | e^x |

tf.log | log(x) |

tf.maximum | max(x, y) |

tf.minimum | min(x, y) |

tf.cos | cos(x) |

tf.sin | sin(x) |

**The TensorBoard** enables to monitor graphically and visually what TensorFlow is doing. This can be useful for gaining better understanding of machine learning models. We will look at TensorBoard in separate article