Custom Loss
1. How to Define a Loss in model.yaml
You can define the loss in two ways:
Simple format
loss: NameLoss
Advanced format (for configurable losses)
loss:
internal_name_loss: # internal key used by the model to log/save loss values
name: NameLoss # name of the loss class
params: # parameters passed to the loss constructor
param1: abc
param2: 123
2. How to Load the Loss in Your Code
In your main.py, use the following:
from src import your_module
from easy_torch.preparation import prepare_loss
your_loss = prepare_loss(cfg["model"]["loss"], your_module)
The function will try to locate and load the class NameLoss by searching in this order:
your_moduleeasy_lightning.lossestorch.nn
If the class is not found, an error will be raised.
Loading from multiple modules
your_loss = prepare_loss(cfg["model"]["loss"], [your_module, another_module])
3. Using the Loss in the Standard Pipeline
If you’re using the standard EasyLightning pipeline, you can inject the loss into:
model_params["loss"]
This allows the training loop to automatically use the configured loss.
Additional Notes
For additional details about how inputs and outputs are handled internally, see the step_routing section.