Deep Learning Frameworks

From DeepSense Docs
Jump to: navigation, search

1. Keras

Keras is an open-source framework that provides high-level APIs for large machine learning applications such as neural networks. These APIs can run on top of the backend engines such as TensorFlow, CNTK(Cognitive Toolkit), Theano, MXNet, and PlaidML. Its simple and easy to use architecture facilitates the fast development of models. It is most suitable for Rapid Prototyping and Small Datasets.

2. TensorFlow

TensorFlow is an open-source AI framework developed by Google. It provides both high and low-level APIs that have a library for numerical computations and large-scale machine learning applications like neural networks. Its library supports static* computation graph and is compatible with various coding languages such as C, C++, Java, etc. It renders visualization using the inbuilt Tensorboard library and easy deployment using TensorFlow serving. It is most suitable for Large Dataset, High Performance, and Object Detection. Some of the projects on TensorFlow are SIGHT, Meter Maid Monitor, Farmaid, A Sudoku Solver's Robot, Real-time face mask detector.

3. PyTorch

PyTorch is an open-source Machine learning library developed by Facebook’s AI (Artificial Intelligence) Research group. It is based on the torch library and provides a lower-level API that helps the user to customize the layers and optimize tasks. It offers python like coding, distributed training, debugging capabilities , and supports dynamic** computation graph. However, it needs third party software for visualization and APIs for production. It is preferred where single homogeneous computation is not needed for example such as Natural Language Processing (NLP) where the length of words in documents or length of different documents is not the same. Today, most of the big companies are using PyTorch, for example, Microsoft for language modeling service, Airbnb to enhance customer experience, Genentech for drug discovery and cancer therapy, Toyota Research Institute for adding new driver support features in cars check here.

4. Caffe

Caffe (Convolutional Architecture for Fast Feature Embedding) is an open-source deep learning framework originally developed at the University of California. It supports many different types of deep learning designs such as CNN (Convolutional Neural Network), RCNN(Region-based Convolutional Neural Networks), and fully connected neural network that ease image classification and image segmentation effectively. Today, it is being used in academic research projects, start-up prototypes, and even large-scale industrial applications such as vision, speech, and multimedia.

5. Caffe2

Caffe2 is launched by Facebook in 2017 with the addition of new features to Caffe such as Recurrent Neural Networks (RNN), flexibility, large-scale distributed training, and support for mobile deployment. It has been merged into PyTorch in 2018 to create PyTorch 1.0 that is suitable for both research and production. It is well-suited for applications that hold large-scale image classification and object detection.

6. Open Neural Network Exchange

Open Neural Network Exchange (ONNX) is an open-source AI ecosystem introduced by Facebook in collaboration with Microsoft in 2017 which was later supported by IBM, Huawei, Intel, AMD, ARM, and Qualcomm also. It is an open standard format for representing machine learning models that enables the developers to switch between frameworks. More information is available on GitHub

*In static framework i.e., Tensorflow, the graph is created at the very beginning of the training, and then for each example, data is fed to it followed by the calculations of the result based on that graph computation and perform backpropagation and update but the underlying graph never changes. This method is useful for image classification problems where the size of the image will be fixed. 

**In dynamic framework i.e. PyTorch, the graph is created for each mini-batch in data, followed by calculation of result based on that graph computation. If training, perform backpropagation, and update. This method is useful in NLP, where we have words and documents of different lengths. 

For information regarding how to install DL frameworks Getting started with Deep Learning.