code: def get_loss(self, logits: mx.sym.Symbol, labels: mx.sym.Symbol) -> mx.sym.Symbol:
          
          if self.loss_config.normalization_type == C.LOSS_NORM_VALID:
              normalization = "valid"
          elif self.loss_config.normalization_type == C.LOSS_NORM_BATCH:
              normalization = "null"
          else:
              raise ValueError("Unknown loss normalization type: %s" % self.loss_config.normalization_type)
          return mx.sym.SoftmaxOutput(data=logits,
                                      label=labels,
                                      ignore_label=self.ignore_label,
                                      use_ignore=True,
                                      normalization=normalization,
                                      smooth_alpha=self.loss_config.label_smoothing,
                                      name=self.name)
docs: Returns loss symbol given logits and integer-coded labels.
  
          :param logits: Shape: (batch_size * target_seq_len, target_vocab_size).
          :param labels: Shape: (batch_size * target_seq_len,).
          :return: List of loss symbols.