Model Orchestration in R

Introduction

Welcome back to the third lesson of "Building and Applying Your Neural Network Library"! You've made tremendous progress in this course. In our first lesson, we successfully modularized our core neural network components — dense layers and activation functions. Then, in our previous lesson, we organized our training components by creating dedicated modules for loss functions and optimizers, building a solid foundation for our neural network package.

However, as you may have noticed from our previous training examples, we're still writing quite a bit of boilerplate code for each training session. We manually create layers, set up optimizers, write training loops, handle forward and backward passes, and coordinate all these components ourselves. While this gives us complete control, it also means we're repeating the same orchestration logic every time we want to train a model.

In this lesson, we're going to orchestrate all these components into a unified, high-level interface. We'll build a powerful Model R6 class that acts as the conductor of our neural network orchestra, coordinating layers, optimizers, and loss functions through clean, intuitive methods like compile(), fit(), and predict(), as well as a SequentialModel concrete subclass that can be seen as a better and improved replacement for any manual training approach we developed previously, providing a much more elegant and maintainable API for building and training neural networks. Let's get started!

The Need for Orchestration

Sign up

Join the 1M+ learners on CodeSignal

Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal