What is TensorFlow?

It is definitely not the same as, say, cloud-based machine-learning service (like, for example, Azure ML is).

It is a machine-learning library using data flow graphs to build models. The main purpose of the library is to create models to solve various NLP and image recognition tasks.

TensorFlow has been created for Deep Learning to let a user create a neural network architecture by himself (or herself, of course). Still, the library allows the user to work with statistical machine learning algorithms. However, it does not provide them out-of-the-box – user has to implement them on his own and TensorFlow provides only tools to do this.

Also, TensorFlow is a second generation machine learning system and it has been created to replace its predecessor called DistBelief.

What is data flow graph?

In TensorFlow all the computations are represented as directed graphs, where the computations themselves (and input/output data as well) are nodes. The edges of the graph are paths, by which the data flows from node to node.

By the way, TensorFlow has its own visualization module called TensorBoard, which can visualize the created model in order to let a user trace the data flow in the model (Captain Obvious to rescue!).

And what about tensors?

Data in TensorFlow are represented as tensors (multidimensional and dynamically sized data arrays). Actually, tensors flow in the graph from node to node, thus making the name of the library sound logical. Simply speaking, a tensor is a 3D matrix (but it is not a strict mathematical definition, of course!). On a figure below, you may see a tensor in terms of vivisection. Comparing to matrix it has more degrees of freedom regarding data selection and slicing.

What is cool about TensorFlow?

Flexibility of representation – user can create almost any type of data flow graph, visualize and admire it. If you can express your algorithm as data flow graph, you can do it with TensorFlow – no exceptions.

TensorFlow performs calculations both on CPU and GPU (if you have CUDA installed, of course) + it has support for parallel and asynchronous computations. Also, you can easily port your TensorFlow model to any other hardware, for example, from server to PC and from PC to laptop with no code changes. Perfect, isn’t it?

You may use TensorFlow for both research and production purposes. Therefore, you can create some model for research and then push this very model into a product (after some code rewriting, of course, as researchers usually forget about code optimization) using the same TensorFlow library.

Auto-differentiation. TensorFlow can automatically compute derivatives for you. It is very convenient if you love gradient-based machine learning algorithms like Stochastic Gradient Descent.

Python interface! However, it has a poorly documented C++ interface as well, but it is poorly documented (Captain Obvious to rescue!). Go, Java, Lua, JavaScript, and R interfaces are coming soon.

What about the license?

It is Apache 2.0 – you may freely use TensorFlow for both research and commercial purposes. Truly nice.