TensorFlow is an open source software library aimed at numerical computation and machine learning. It uses data flow graphs for different types of perceptual and language understanding tasks. This library is written in Python and C++ and provides corresponding APIs.
TensorFlow was originally developed by the Google Brain Team within Google's Machine Intelligence research organization. Their first-generation machine learning system was called DistBelief and was applied in dozens of commercial Google products, including search, speech recognition, Google Photos, Google Maps, Google translate, Youtube, etc. After considerable codebase refactoring Google Brain's second generation machine learning system appeared.
TensorFlow is faster and more robust, since it can ran on multiple CPUs and GPUs. Google and other Alphabet companies use it both for production purposes and for conducting machine learning and deep neural networks research. Nevertheless, this library is general enough to be applicable in a wide variety of other areas, that’s why its release under the Apache 2.0 open source license on November 9, 2015 is so significant.
TensorFlow’s architecture
TensorFlow computations are expressed as directed dataflow graphs. Graph consists of nodes and edges. Nodes are used mainly to implement mathematical operations, more rarely - to represent endpoints to feed in data, push out results, or read/write persistent variables. Graph edges carry dynamically-sized multidimensional data arrays (tensors) to represent the input/output relationships between nodes. TensorFlow got its name because of the flow of tensors through the computation graph.
TensorFlow programs describe all data via a tensor data structure. It can be divided into a construction phase (graphs are assembled and nodes are assigned to the computational devices) and an execution phase (operation in the graph are executed asynchronously or in parallel). For instance, this way Google trains neural networks for deep machine learning: creates a graph to represent a neural network and repeatedly executes a set of training operations in the graph.
TensorFlow features
Deep Flexibility. If you can construct a data flow graph for your computation, then you can definitely benefit from TensorFlow. It has flexible architecture and allows developers to add their own low-level data operators, define some useful compositions of operators, or write higher-level libraries on top of TensorFlow.
True Portability. TensorFlow runs on CPUs or GPUs, and on desktop, server, or mobile computing platforms. It can run the model as a service in the cloud using Docker containers.
Maximized Performance. TensorFlow allows using available hardware at its maximum capacity. Compute graph elements can be assigned to different devices and TensorFlow handles everything with a help of threads, queues, and asynchronous computation.
Auto-Differentiation. TensorFlow features automatic differentiation capabilities and handles the derivatives computing. It is especially valuable for gradient based machine learning algorithms.
Language Options. This library has Python interface, C++ interface, and even interactive TensorFlow iPython notebook - easy-to-use tools to build and execute computational graphs.
TensorFlow is not rigid, so people with different areas of expertise can use it for their projects: researchers, engineers, developers, inventors, and students. This library allows to narrow the chasm that existed between research and production. TensorFlow significantly improves scientific reproducibility, so researchers can experiment with new algorithms and turn ideas into products quicker. Developers can train and serve models live to real customers. For more information visit TensorFlow website.