A deep learning framework is a combination of interfaces, libraries, and tools used to define and train machine learning models in a fast and precise way.
Because deep learning uses unstructured and non-textual data, we need a framework that handles the interaction between layers and makes the development process quick by learning from the data you insert and make decisions automatically.
If you’re getting started in deep learning this year consider one of the frameworks we list below. Remember to pick the one that will help you reach your goals and vision.
TensorFlow is the first thing mentioned when we talk about studying deep learning. This framework is not only used by Google – the company that created it – but also by other companies such as Dropbox, eBay, Airbnb, Nvidia... the list goes on.
Its open-source structure allows multiple integrations, fast support and updates from the community; and its reliance on static graph computation, allows you to run your calculations immediately or save them for later use. These reasons and the fact that you can visualize the construction of your neural network using the Tensorboard makes TensorFlow the most popular framework for deep learning.
PyThorch is a framework developed by Facebook to power its services, but is now open source and is powering products from companies such as Salesforce and Udacity.
PyTorch operates with a dynamically updated graph, allowing you to make changes to the architecture while in the process. With PyTorch, it is easy to train and develop a neural network even if you have no prior experience with it.
Being open-source and relying on python you can expect easy integrations, easy learning, usage and debugging. In case of doubts, you can also count on the great support and updates from both communities – Python community and Pythorch community.
Theano is a python library that allows you to define, optimize and run mathematical expressions quickly and easily.
Although Theano can run on CPUs, it runs faster on a GPU, especially if implemented with C and used to handle large amounts of data.
Theano is also fast because neural networks structures can be represented (transformed) in matrixes, and the usage of Numpy (or other integrations) to compute matrixes accelerates the output1.
This is a framework created by Apache to power big industrial projects due to its great scalability, high performance/ fast problem solving and advanced GPU support.
Although the number of users and community support is low, MxNet has a well-written documentation and a great potential to grow, particularly now that Amazon chose it as the primary tool for machine learning on AWS.
Microsoft Cognitive Toolkit (previously CNTK)
If you’re thinking of coding applications or services to run on Azure (Microsoft cloud platform), the Microsoft Cognitive Toolkit is the framework to choose. It is an open-source and supported by python, C++, C#, Java and other languages.
Because Microsoft Cognitive Toolkit was created intending to think like a human brain, it can process huge amounts of unstructured data, while also providing a rapid training time and intuitive architecture.
By choosing this framework – the same behind skype, Xbox, and Cortana, you can have good performance, scalability, and easy integration of your app with the Azure cloud, but the number of members in the community and support is low.
Just like Pytorch and Theano, Keras is a python-based library, for those who have large amounts of data.
Keras is a high-level API, that can be used on top of low-level API’s such as TensorFlow, Theano and Microsoft Cognitive Toolkit.
Some advantages of using Keras are that it is easy to understand – thus being the recommended framework for someone who’s starting in deep learning; fast to deploy and it supports multiple devices and platforms as well as multiple GPUs. Being based on python and other frameworks, Keras has big support from many communities.
Apple CORE ML
The Core ML framework was developed by Apple and it is the one powering apple’s ecosystem.
This is a low-level API that can make good use of the CPU and GPU performances and allows the models to run without a network connection, reducing the memory footprint and power consumption.
By using Core ML, you can import trained deep learning models from all major Python frameworks, such as Keras, TensorFlow, Caffe, ONNX and more, in order to provide great performance to your apps on mobiles, tablets, and computers.
This is a framework that was born from the collaboration of Microsoft and Facebook to simplify the process of transferring and building models between different frameworks, tools, runtimes, and compilers.
ONNYX defines a common file type to run in all major platforms, while taking advantage of the benefits of low-level API’s such as Microsoft Cognitive Toolkit, MxNet, Caffe and (using converters) TensorFlow and Core ML.
The main idea of ONNX is to train a model in one stack and deploy it using another inference and prediction.