TensorFlow
Keras
machine learning
deep learning
model training

When are Model call and train_step called?

ML System Design practice on Codemia

Design recommenders, ranking systems and training pipelines the way ML interviews actually ask for them, with worked solutions.

Practice ML system design

In the realm of machine learning, particularly when utilizing frameworks like TensorFlow and Keras, understanding how different methods and functions work is crucial for developing, training, and deploying models effectively. Two essential methods in this context are `Model.call()` and `Model.train_step()`. This article delves into these methods' functionality, the scenarios in which they are invoked, and their significance in the broader machine learning workflow.

Model `call()`

Overview

The `Model.call()` method is an essential part of TensorFlow's Keras API. It defines the forward pass of a model. In simpler terms, it describes how the input data traverses through the network layers to produce the output.

Technical Details

  • Functionality: This method is responsible for performing computation using the model's layers on the given input data. When you use a model to make predictions, whether through `model(input_data)` or `model.predict()`, `call()` is executed internally.
  • Customization: You can override the `call()` method if you need custom forward pass logic. This is particularly useful if you're implementing models that require non-standard computation or additional operations beyond standard layer stacking.
  • Parameters:
    • inputs: The input data for the model.
    • training: A boolean indicating if the model is being run in training mode. This is significant for layers like `Dropout` or `BatchNormalization`, which behave differently during training and inference.
  • Return Values: The output of the forward computation typically as a tensor or a list of tensors.

Example

  • Functionality: Typically, `train_step()` encompasses the entire workflow for updating model weights, including computing the loss, gradients, and applying the optimizers.
  • Customization: By overriding `train_step()`, you can adapt the training process to suit unique requirements, such as experimenting with custom loss calculations, optimizer steps, or other custom training logic.
  • Parameters:
    • The method often takes a dictionary containing input data (features and labels) for a single batch.
  • Return Values: Returns a dictionary mapping metrics names to current values.

Related reading
Free course
Beginner
7 lessons
2 hours
Tackling System Design Interview Problems

A short course that equips you with the skills to approach system design interviews methodically.

Start the free course
Track what you have practised

A free account saves your progress, solutions and study plan across every problem on Codemia.

ML System Design practice on Codemia

Design recommenders, ranking systems and training pipelines the way ML interviews actually ask for them, with worked solutions.

Practice ML system design

All Rights Reserved.