Keras has become a popular high-level deep learning API due to its user-friendly interface and ease of use. However, as the field of deep learning evolves, there is a growing need to support a broader range of tasks, including unsupervised, self-supervised, and reinforcement learning. There are several key challenges in developing a more unified and extensible Keras API to support these tasks:
1. Model Architecture Flexibility: Keras is known for its layer-by-layer approach, and the current architecture is highly dependent on the specific task at hand. Extending this architecture approach to tasks that don’t fit neatly into this paradigm, such as those requiring complex recurrent architectures, requires a more flexible model architecture definition process.
2. Portability: Given most deep learning frameworks’ highly specialized and unique APIs, developers invest a considerable amount of time learning the framework. Ensuring portability across deep learning frameworks requires abstracting the differences between the targeted frameworks so they can operate uniformly.
3. Intuitive API: Machine learning users come from a wide range of backgrounds, most notably in engineering domains. Therefore, it is imperative that Keras’s API be intuitive and easy to learn to encourage future innovation.
4. Scalability: Many tasks like self-supervised learning require enormous amounts of data. Therefore, scalability is essential, and the support for distributed training and the flexible architecure mentioned before goes a long way to achieving this.
5. Lack of Standardization: The deep learning field is still relatively young, and there is a general lack of standardization in approaches and methods. As a result, offering extensibility requires compromise and balancing of best practices and cooperation with other frameworks to produce a standardized deep learning workflow.
To address these challenges, the Keras development team has taken various steps, including:
1. Integrating key functionality directly into Keras, such as TensorFlow Probability for probabilistic approaches.
2. Collaborating with other frameworks and industry leaders to establish best practices and ensure future compatibility.
3. Offering custom layer and model classes to enable more flexibility in Keras’s model architecture.
4. Designing more modular and pluggable APIs so developers can modify, extend and reimagine existing components without the need for core changes.
5. Progressively adding to the API with new building blocks, such as the recent addition of the transformers module targeting long-context NLP tasks.
Overall, although Keras has enjoyed considerable success, the challenges in developing a more unified and extensible API that supports a broader range of deep learning tasks will not be solved overnight, and the team behind Keras will continue to work tirelessly in that direction.