Keras deserves considerable credit for making deep learning approachable at a time when the alternatives were genuinely hostile. Francois Chollet's design instinct, that the common case should be short and the rare case should be possible, produced an API that thousands of people learned neural networks on, including a lot of people who now use something else. The documentation has always been a strength. The site is organised into getting started, developer guides, code examples and API reference, and the developer guides are the best part.
Custom layers, custom training loops, the functional API, callbacks, transfer learning, distributed training. Each guide is a focused explanation with working code, written in prose rather than bullet points, and they consistently explain why the design is what it is rather than just how to invoke it. The code examples library is the standout asset and I would recommend it independently of whether you use Keras. It is hundreds of complete implementations across vision, text, audio, generative models, structured data, reinforcement learning and time series, each one a runnable script with explanation.
Want to understand how a vision transformer is assembled, or what a diffusion model looks like in code, or how a Siamese network is trained? There is an example, and it is short enough to read in one sitting. As a way of learning architectures by reading implementations, it is excellent, and the ideas transfer to any framework. Keras 3 is a significant and well handled change. The multi-backend design means the same code runs on TensorFlow, JAX or PyTorch, and the documentation covers the implications carefully.
This is a genuinely clever response to the framework wars, and if you want the Keras API with PyTorch underneath, you can now have that. Now the part that would be dishonest to leave out. The field has consolidated around PyTorch. Papers ship PyTorch code.
The Hugging Face ecosystem is PyTorch first. Job listings ask for PyTorch. New tooling targets PyTorch. Someone learning deep learning today with the intention of working in it professionally should end up in PyTorch, and time spent building Keras habits is time spent on a syntax they will have to leave.
That is not a criticism of the software, which is well engineered, it is an observation about where the ecosystem went. The abstraction question follows from this. Keras is designed so you do not have to think about the training loop, and for a beginner that is a feature that gets you to a working model fast. It is also the thing that has to be unlearned later, because understanding what happens in a training step is not optional if you intend to debug anything interesting.
PyTorch's greater verbosity is pedagogically useful in a way that is easy to miss. Coverage of current generative AI is the other visible gap. KerasNLP and KerasHub exist and are perfectly reasonable, and they are simply not where the LLM work is happening. If your interest is language models and agents, the documentation here will not take you far.
There is also residual confusion in the wider world between Keras 2 inside TensorFlow and standalone Keras 3, and a great deal of tutorial content and community answers predate the split, which makes searching for help less reliable than the official docs deserve. My four point one is for documentation and examples that remain genuinely excellent teaching material, marked down because the framework's position in the field has changed and the docs carry on as though it has not. Learn the concepts here if the syntax suits you, and plan your exit.