code: def forward(
      self, past_target: torch.Tensor, future_target: torch.Tensor
  ) -> torch.Tensor:
      forecast = super().forward(past_target=past_target)
  
      if self.loss_function == "sMAPE":
          loss = self.smape_loss(forecast, future_target)
      elif self.loss_function == "MAPE":
          loss = self.mape_loss(forecast, future_target)
      elif self.loss_function == "MASE":
          loss = self.mase_loss(
              forecast, future_target, past_target, self.periodicity
          )
      else:
          raise ValueError(
              f"Invalid value {self.loss_function} for argument loss_function."
          )
  
      return loss.mean()
  
imports: from typing import List, Tuple
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from gluonts.time_feature import get_seasonality
label_desc: Use image node_id 2 for calling the NBEATSTrainingNetwork obj's underlying member method code with example usage: obj.forward(past_target, future_target) and returns: loss