class_docstr: Associative Embedding Loss.
  
  More details can be found in
  `Associative Embedding <https://arxiv.org/abs/1611.05424>`_ and
  `CornerNet <https://arxiv.org/abs/1808.01244>`_ .
  Code is modified from `kp_utils.py <https://github.com/princeton-vl/CornerNet/blob/master/models/py_utils/kp_utils.py#L180>`_  # noqa: E501
  
  Args:
      pull_weight (float): Loss weight for corners from same object.
      push_weight (float): Loss weight for corners from different object.
docstr: Forward function.
code: def forward(self, pred, target, match):
      """Forward function."""
      batch = pred.size(0)
      pull_all, push_all = 0.0, 0.0
      for i in range(batch):
          pull, push = ae_loss_per_image(pred[i], target[i], match[i])
  
          pull_all += self.pull_weight * pull
          push_all += self.push_weight * push
  
      return pull_all, push_all
  
file_path: mmdetection/mmdet/models/losses/ae_loss.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  from mmdet.registry import MODELS
label_desc: Use image node_id 2 for calling the AssociativeEmbeddingLoss obj's underlying member method code with example usage: obj.forward(pred, target, match) and returns: pull_all,  push_all