code: def __call__(self, preds, tagmaps):
      bs = preds.shape[0]
      losses = [
          self.apply_single(
              preds[i : i + 1].squeeze(), tagmaps[i : i + 1].squeeze()
          )
          for i in range(bs)
      ]
      pull = (
          self.pull_factor
          * sum(loss[0] for loss in losses)
          / len(losses)
      )
      push = (
          self.push_factor
          * sum(loss[1] for loss in losses)
          / len(losses)
      )
      return pull, push
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from itertools import cycle, islice
  from collections import abc
  import numpy
  import paddle
  import paddle.nn
  from ppdet.core.workspace import register, serializable
label_desc: Use image node_id 3 for calling the AELoss obj's underlying member method code with example usage: obj.__call__(preds, tagmaps) and returns: pull,  push