A framework for deep learning consists of a combination of interfaces, libraries and tools to define and train Machine Learning models quickly and accurately.
Because deep learning uses a large amount of unstructured, non-textual data, you need a framework that controls the interaction between the “layers” and makes model development fast by learning from the input data and making autonomous decisions.
If you are interested in learning about deep learning in 2021, consider using one of the frameworks indicated below. Remember to choose one that will help you achieve your goals and vision.
When talking about deep learning, TensorFlow is often the first framework mentioned. Highly popular, this framework is not only used by Google – the company responsible for its creation – but also by other companies like Dropbox, eBay, Airbnb, Nvidia, and so many others.
Being open-source, TensorFlow allows you to make several integrations with other APIs and get fast support and updates from the community. Its reliance on “static graphs” for computation allows you to make immediate calculations or save operations for access at another time. These reasons, added to the possibility that you can “watch” the development of your neural network through TensorBoard, make TensorFlow the most popular framework for deep learning.
- Fast debugging
PyTorch is a framework developed by Facebook to support the operation of its services. Since becoming open-source, this framework has been used by companies other than Facebook, such as Salesforce and Udacity.
This framework operates dynamically updated graphs, allowing you to make changes to the architecture of your dataset as you process it. With PyTorch it is simpler to develop and train a neural network, even without any experience in deep learning.
Being open-source and based on Python, you can make simple and fast integrations to PyTorch. It is also a simple framework to learn, use, and debug. If you have questions, you can count on the great support and updates from both communities – Python community and the PyTorch community.
- Easy to learn
- Supports GPU and CPU
- Rich set of APIs to extend libraries
3. Apache MXNet
Due to its high scalability, high performance, fast troubleshooting, and advanced GPU support, this framework was created by Apache for use in large industrial projects.
MXNet includes the Gluon interface that allows developers of all skill levels to get started with deep learning on the cloud, on edge devices, and on mobile apps. In just a few lines of Gluon code, you can build linear regression, convolutional networks and recurrent LSTMs for object detection, speech recognition, recommendation, and personalization.
- 8 language bindings
- Distributed Training, supporting multi-CPU and multi-GPU systems
- Hybrid front-end, allowing to switch between imperative and symbolic modes
If you are thinking of developing applications or services that run on Azure (Microsoft cloud services), the Microsoft Cognitive Toolkit is the framework to select for your deep learning projects. This is open-source, and supported by programming languages such as Python, C++, C#, Java, among others. This framework is designed to “think like the human brain”, so it can process large amounts of unstructured data, while offering fast training and an intuitive architecture.
By selecting this framework – the same one behind Skype, Xbox, and Cortana – you will get good performance from your applications, scalability and simple integration with Azure. However, when compared to TensorFlow or PyTorch, the number of members in its community and support is reduced.
The following video offers a complete introduction and application examples:
- Clear documentation
- Support from Microsoft team
- Direct graph visualization
Like PyTorch, Keras is a Python-based library for data-intensive projects. The keras API works at a high level and allows integrations with low level APIs such as TensorFlow, Theano, and Microsoft Cognitive Toolkit.
Some advantages of using keras are its simplicity to learn – being the recommended framework for beginners in deep learning; its speed of deployment; having great support from the python community and from communities of the other frameworks with which it is integrated.
Keras contains various implementations of the building blocks of neural networks such as layers, objective functions, activation functions, and mathematical optimizers. Its code is hosted on GitHub and there are forums and a Slack support channel. In addition to support for standard neural networks, Keras offers support for Convolutional Neural Networks and Recurrent Neural Networks.
Keras allows deep learning models to be generated on smartphones on both iOS and Android, on a Java Virtual Machine, or on the web. It also allows the use of distributed training of deep learning models on clusters of Graphics Processing Units (GPU) and Tensor Processing Units (TPU).
- Pre-trained models
- Multiple backend support
- User-friendly and large community support
Core ML was developed by Apple to support its ecosystem – IOS, Mac OS, and iPad OS. Its API works at a low level, making good use of CPU’s and GPU’s resources, which allows models and applications created to keep running even without an internet connection, which reduces the “memory footprint” and power consumption of the device.
The way Core ML accomplishes this is not exactly by making yet another machine learning library which is optimized for running on iphones/ipads. Instead, Core ML is more like a compiler which takes model specifications and trained parameters expressed with other machine learning software and converts it into a file that becomes a resource for an iOS app. This conversion to a Core ML model happens during app development, not in real-time as the app is being used, and is facilitated by the coremltools python library.
Core ML delivers fast performance with easy integration of machine learning models into applications. It supports deep learning with over 30 types of layers as well as decision trees, support vector machines, and linear regression methods, all built on top of low-level technologies such as Metal and Accelerate.
- Easy to integrate into apps
- Optimal use of local resources, not requiring internet access
- Privacy: the data doesn’t have to leave the device
The last framework on our list is ONNX. This framework emerged from a collaboration between Microsoft and Facebook, with the goal of simplifying the process of transferring and building models between different frameworks, tools, runtimes and compilers.
ONNX defines a common file type that can run on multiple platforms, while making use of the benefits of low-level APIs such as those from Microsoft Cognitive Toolkit, MXNet, Caffe and (using converters) Tensorflow and Core ML. The principle behind ONNX is to train a model on a stack and implement it using other inferences and predictions.
The LF AI Foundation, a sub-organization of the Linux Foundation, is an organization dedicated to building an ecosystem to support open-source innovation in artificial intelligence (AI), machine learning (ML), and deep learning (DL). It added ONNX as a graduate-level project on 14 November 2019. This move of ONNX under the umbrella of the LF AI Foundation was seen as an important milestone in establishing ONNX as a vendor-neutral open-format standard.
The ONNX Model Zoo is a collection of pre-trained models in Deep Learning available in ONNX format. For each model there are Jupyter notebooks for model training and performing inference with the trained model. The notebooks are written in Python and contain links to the training dataset and references to the original scientific document describing the model architecture.
- Framework interoperability
- Hardware Optimization
This is a summary of the best frameworks for deep learning. There are several frameworks for this purpose, free or paid. To select the best for your project, first know for which platform you will be developing your application.
General frameworks like TensorFlow and Keras are the best options to start. But if you need to use OS or device-specific advantages, then Core ML and Microsoft Cognitive Toolkit might be the best options.
There are other frameworks aimed at Android devices, other machines, and specific purposes that have not been mentioned in this list. If the latter group interests you, we suggest doing a search for their information on Google or other machine learning sites.