Tensorflow Introduction


Tensorflow is a powerful open source library for large-scale machine learning from Google. In this tutorial, we'll be discuss the basic principle of Tensorflow, with a code example.
Tensorflow is,
* A numerical computation library well suited for deep learning applications.
* Modular and actively maintained.
* Allows parallelization and efficient usage of available hardware. Supports distributed computing.
* Powers many of Google’s large-scale services, including Search, Photos, Cloud Speech etc.
* Comes with a great visualization tool called Tensorboard.
* Easy to install, with PIP: pip3 install –upgrade tensorflow

Code example:
import tensorflow as tf

# Declare variables (with initial values)
x = tf.Variable(3, name='x')
y = tf.Variable(4, name='y')

# Function (i.e. graph) to compute
f = (x * x * y) + y + 2

'''
Till this point no actual computation will be done
if we run the code, we just have declared a 
computation graph. 
Even the variables are not acutally initialized yet.
Let's start the computation using a tensorflow session!
'''

# Create session
sess = tf.Session()

# Initialize variables
sess.run(x.initializer)
sess.run(y.initializer)

# Evaluate result
result = sess.run(f)
print(result)
Couple of things to notice:
  • When we define a graph node, e.g. f = (x * x * y) + y + 2, Tensorflow doesn’t compute the value of f immediately, it just knows how to compute it. This is the basic principle of Tensorflow (i.e., separation of declaration and execution).
  • Tensorflow graphs are computed under a session, and are needed to be explicitly run with session.run() function. A session is an isolated environment which hold the state of variables and graphs being computed. If a new session is created, the previous values are cleared up (except in distributed computing).
  • Tensorflow variables and graphs require explicit declaration.
Q. Which of these can be a potential advantage of separation of declaration and execution?