code: def forward(self, predicts, batch):
      self.total_loss = {}
      total_loss = 0.0
      # batch [image, label_ctc, label_sar, length, valid_ratio]
      for name, loss_func in self.loss_funcs.items():
          if name == "CTCLoss":
              loss = (
                  loss_func(predicts["ctc"], batch[:2] + batch[3:])[
                      "loss"
                  ]
                  * self.weight_1
              )
          elif name == "SARLoss":
              loss = (
                  loss_func(predicts["sar"], batch[:1] + batch[2:])[
                      "loss"
                  ]
                  * self.weight_2
              )
          elif name == "NRTRLoss":
              loss = (
                  loss_func(predicts["nrtr"], batch[:1] + batch[2:])[
                      "loss"
                  ]
                  * self.weight_2
              )
          else:
              raise NotImplementedError(
                  "{} is not supported in MultiLoss yet".format(name)
              )
          self.total_loss[name] = loss
          total_loss += loss
      self.total_loss["loss"] = total_loss
      return self.total_loss
  
file_path: PaddleOCR/ppocr/losses/rec_multi_loss.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import paddle
  from paddle import nn
  from .rec_ctc_loss import CTCLoss
  from .rec_sar_loss import SARLoss
  from .rec_nrtr_loss import NRTRLoss
label_desc: Use image node_id 2 for calling the MultiLoss obj's underlying member method code with example usage: obj.forward(predicts, batch) and returns: self