1. High Level Framework: Keras is an open source and high level neural network framework, written in Python.
2. Supports Multiple Backends: Keras uses TensorFlow as backend by default but you can also configure it to use Theano or CNTK as backend.
3. Cross Platform and Easy Model Deployment: Keras can run on all major operating systems. Keras supports a lot of devices and platforms, so we can deploy Keras on any device like iOS with CoreML, Android with Tensorflow Android, Web browser with .js support, Cloud engine, Raspberry Pi etc.
4. Multiple CPU and GPU compatible: Keras has built-in support for data parallelism, so it can process large volumes of data and speed up the time needed to train it.
5. Easy to use and understand: Keras is easy to use and understand. You can easily implement complex neural networks with few lines of code. You don't need to understand low level details as it is already a wrapper around complex low level frameworks like TensorFlow, Theano or CNTK. So, it is a boon for beginners.
Create a simple sequential mode in Keras
Create a CNN model in Keras
6. Pre-trained models: Keras contains a lot of pre-trained neural network models for our general purpose requirements. For example, for image classification, we don't need to create a CNN model from scratch. We can fine-tune an existing and well trained model called VGG16 for this purpose. Similarly, there are a lot of other models available with Keras like InceptionV3, ResNet, MobileNet, Xception, InceptionResNetV2 etc. which we just need to fine-tune as per our needs.
What is fine-tuning?
Fine-tuning VGG16 model
7. Great community: As mentioned earlier, Keras has a great community support. You can easily find a lot of tutorials, detailed articles on various concepts, solved examples and a lot more. Keras is also very well documented.
Limitations of Keras
As stated in point 1 and 2, Keras is only a high level API which uses other frameworks like TensorFlow, Theano and CNTK to perform low level tasks. If you want to research or write your own custom algorithm in deep learning project, you should use Tensorflow instead.