Neural networks are computing systems inspired by the biological neural networks that make up the animal brain. Such systems learn tasks (progressively improve their performance on them) by looking at examples, generally without special programming for the task. For example, in image recognition, they can learn to identify images that contain cats by analyzing examples of images labeled as “cat” and “not cat” and using the results to identify cats in other images. They do this without any a priori knowledge about cats, such as that they have fur, tails, whiskers, and cat-like squeaks. Instead, they develop their own set of relevant characteristics from the training material they process.
The TensorFlow library is a powerful open source software library developed by Google. It is very well suited and precisely tailored for large-scale machine learning. Its basic principle is simple: you define a graph of computations to be performed in Python, and TensorFlow takes this graph and runs it efficiently using optimized C++ code. Most importantly, the graph can be split into parts and run in parallel on multiple CPUs or GPUs. The TensorFlow library also supports distributed computing, so you can train huge neural networks on incredibly large training sets in a reasonable amount of time by distributing computation across hundreds of servers.
It is widely used for various ML tasks such as classification, regression, and deep learning. This tool can help companies build intelligent applications for self-learning and decision-making without explicit programming. With TensorFlow, companies can train machine learning models to recognize data patterns and make predictions based on them. For example, we can use TensorFlow to build a propensity model that predicts which customers are likely to leave or vice versa which products will sell well. TensorFlow is also highly scalable, meaning it can process large amounts of data and train complex models to solve a variety of business problems or create custom applications tailored to specific business needs.
Strengths:
- By far the most popular DL tool, open source, fast to adopt, well supported by a strong industrial company (Google);
- Powerful numerical library for programming data flows, which is the basis for DL research and development;
- Works efficiently with mathematical expressions involving multidimensional arrays;
- Very well documented;
- GPU/CPU computing, mobile computing;
- high scalability of computing across different machines and huge data sets;
- Higher layer of abstraction than Theano.
Weaknesses:
- Lower-level APIs are difficult to use directly to create DL models;
- Each computational thread must be plotted as a static graph (although the Tensorflow Fold package tries to alleviate this problem), and there are no symbolic loops.