There are a lot of frameworks available to implement deep learning algorithms. You don't need to implement CNN, RNN, LSTM algorithms from scratch because these frameworks do this complex task for you very easily, quickly and efficiently. You just need to learn how to use these frameworks.
Some of the widely used frameworks available for deep learning are TensorFlow, PyTorch, Keras, Theano, CNTK, DL4J, Caffe, MXNet, Chainer, Sonnet, Swift, ONNX, Gluon, MATLAB, PaddlePaddle etc.
While choosing a framework for your deep learning models, you should consider some basic points about frameworks like:
Some of the widely used frameworks available for deep learning are TensorFlow, PyTorch, Keras, Theano, CNTK, DL4J, Caffe, MXNet, Chainer, Sonnet, Swift, ONNX, Gluon, MATLAB, PaddlePaddle etc.
While choosing a framework for your deep learning models, you should consider some basic points about frameworks like:
- Easy to understand and code
- Open source
- Good community support
- Well documented
- Good performance over large datasets
- Should be able to implement complex models like CNN, RNN, LSTM etc.
- Automatic gradient computations
- Should consume less resources
- CUDA support
All of these frameworks are open source, efficient and support CUDA. Instead of writing hundreds of lines of code, we can use any of these frameworks and build deep learning model quickly.
I will not go in detail in explaining all the deep learning frameworks. I am just going to write some basic points about these frameworks.
TensorFlow
- Developed by Google Brain Team
- Most widely used deep learning framework till date
- Supports multiple languages like Python, C++ and R
- Largest community support as compared to other frameworks
- Well documented
- Best suited to implement CNN, RNN, LSTM type of neural models
- Support for multiple devices like CPU and GPU
- Available on both desktop and mobile
- For more details on TensorFlow, please visit my this post.
Keras
- Written in Python and can run on top of TensorFlow, Theano and CNTK.
- Well suited for beginners as you don't have to deal with low-level libraries unlike TensorFlow.
- For more details on Keras, please visit my this post.
PyTorch
- Developed by Facebook AI Group
- Strong competitor of Google's TensorFlow
- Supports Windows, Linux and macOS
Caffe
- Developed by Yangqing Jia during his Ph.D at the University of Claifornia, Berkeley.
- Released under the BSD 2-Clause license
- Supports C, C++, Python, MATLAB
- Supports Windows, Linux and macOS
CNTK
- Microsoft Cognitive Toolkit
- Supports Python, C#, Java and C++
- Supports Windows and Linux
MXNet
- Developed by Apache Software Foundation
- Released under Apache License 2.0
- Written in C++, Python, R, Julia, JavaScript, Scala, Go, Perl
- Supports Windows, Linux and macOS
- Pronounced as mix-net
DL4J
- Eclipse Deeplearning4j is a deep learning programming framework written for Java and the Java Virtual Machine (JVM).
- Written in Java, Scala, CUDA, C, C++, Python, Clojure
- Supports Linux, macOS, Windows, Android
Theano
- Developed by Montreal Institute for Learning Algorithms (MILA), University of Montreal
- Released under 3-Clause BSD License
- Written in Python and CUDA
I personally use TensorFlow to implement my deep learning models as I think it provides me everything I need to build your model. I feel very comfortable using TensorFlow but this choice may vary person to person. I also use Keras with TensorFlow as backend for my tutorials.