AI Frameworks and Tools – A Review
- Bhavika Patel
- March 23, 2020
Confused about choosing the best frameworks/ tools for your Artificial Intelligence apps?
This blog lists top 6 AI frameworks and tools that are selected on the factors of popularity and features …
In recent years, AI frameworks and Tools are much friendlier for researchers and developers. If you are the one who is AI enthusiasts and wish to know about the various AI sourcing tools, frameworks, and libraries, this blog can be worth reading. With my experience in the field of AI as a developer, I tried to made a comparison to identify the AI framework and tools which are specific to use cases. I am sure this read can help you in choosing right framework that works best for your use case.
TensorFlow
TensorFlow(TF) is one of my favourite open source AI frameworks or libraries. Most popular and widely used by technology companies like AMD, SAP, Google, Intel, Nvidia, and others. TensorFlow uses data-flow graphs and machine learning to solve complex numerical computations on massive datasets. TF architecture allows deployment of computation on CPU ,GPU and even on mobile devices.
One can build and train ML and DNN models at ease using high-level APIs like Keras with eager execution. It also keeps the code simple and development efficient. Availability of TensorBoard for visualization of model training helps the developer in analyzing the loss and the model performance during the process. For beginners it may sound a bit complex to learn, but when compared to the efficiency and support, i feel this will be an effort worth spending.
Programming language: Python, C++, CUDA
Microsoft CNTK
Microsoft Cognitive Toolkit or CNTK is an open-source toolkit for deep-learning. It uses a directed graph to describe neural networks as a series of computational steps.It is designed keeping high performance in mind. This library enhances maintenance of separating computation networks, providing learning algorithms and model descriptions.It can build, train and evaluate deep neural networks in C++ ,python, C# or Java.
CNTK has its own model description language called BrainScript and can be used as a standalone machine-learning tool. Also it can be scalable efficiently from a single CPU to GPUs efficient scalable from a single CPU to GPUs. It serves big clients like Skype, Cortana, and Bing. It would have been better if there is a support in terms of visualization and documentation as compared to TensorFlow. Microsoft being top pick among windows developer community, CNTneeds much more focus and support compared to other frameworks from the creators.
Programming languages: C++, C#, Java, and Python
Keras
Keras is an open-source AI tool. This neural network library is written in Python just like Tensorflow, CNTK but unlike them, it is not meant to be an end-to-end machine learning framework. Keras serve as an interface and provide a high level of abstraction, resulting in easy configuration of neural networks regardless the framework it is sitting on, unlike as an independent framework. TensorFlow, Microsoft Cognitive Toolkit, and Theano currently supports Keras as its backend.
New modules are easy to add but with few restrictions on combination of neural layers, cost functions, and other standalone modules. Keras runs seamlessly on both CPU and GPU.
Programming language: Python
Caffe
When we talk about expression, speed, and modularity, we cant miss out Caffe. Architecture supports configuration-defined models and optimization without hard coding. Also capable of switching between CPU and GPU. Caffe interface is more of C++ which demands users to perform more tasks manually such as configuration file creation etc. To deploy one need to compile each and every source code. Message Passing Interface (MPI ) library is used for multi-node support.
As mentioned, caffe is known for its processing speed, suitable for research projects and industry applications. Training a convolutional neural network (CNN) for image classification with Caffe is easy but doesn’t work well on recurrent neural networks.
Programming language: C++
Pytorch
PyTorch is a computing framework for scientific and numerical operations. It builds algorithms with speed, flexibility, and simplicity. It is wrapped in THNN library and has an underlying implementation of C/CUDA. PyTorch is popular in applications such as computer vision and natural language processing due to tensor libraries which helps in matrix operations. It provides optimized algorithms for building neural network and flexibility in implementing their topologies. One thing which disappoints is documentation, which is quite unclear.
Programing language:Python, C, CUDA and C++
Theano
Theano is a Python library that allows defining, optimizing and evaluating mathematical expressions, that involves multi-dimensional arrays efficiently. It particularly evaluates matrix-valued expressions as most of the features integrate with numpy. Lasagne is a lightweight library to build and train neural networks in Theano. You will see most of the Data intensive computing have been powered by Theano.
Theano combines components of a computer algebra system (CAS) with optimizing compiler in solving complicated mathematical expressions being evaluated repeatedly and maintaining an ideal evaluation speed.New development for Theano has been ceased in 2017 but still it is a powerful and efficient platform for deep learning.
Programming language: Python
Sample Data Run
The below table compares the results of MNIST handwritten digits recognition trained on these frameworks
Dataset description
The MNIST dataset is one of the most common datasets used for image classification and accessible from many different sources. Database contains 60,000 training images and 10,000 testing images
Performance Comparison Table
Note: These are the top AI tools that have their own merit in this constantly changing world of AI. This list is not ordered or populated according to the efficiency of these frameworks.
Summary
Now with this, you got a very high-level overview on the framework discussed. These are just top 6 of the best AI frameworks based on my experience and research in this segment. As we all aware that AI field is evolving at a faster pace brings along many more libraries and frameworks. Keeping ourselves up to date with the technology advancement in AI is very important so that we could leverage the bests methods for our business cases. Comparison chart will give you a heads-up on the complexity of the framework adoption in terms of implementation, limitation, support, accuracy and learning curve. As the matrix provided in the comparison chart is based on the standard digit classification problem, there could be variations in results based on your processor capabilities and hyper parameter optimization.
Every data scientist has a unique requirement for their project, choice and preferences may differ from the frameworks listed above and even based on business cases. In addition there are many more AI libraries which can be used based on the custom requirements. Let me know in case I have missed any important information about any of the above AI tools by sharing your comments below.