code: def forward(self, feats, targets=None):
      x1 = feats[0]
      xo1 = self.conv1(x1)
      x2 = self.blocks(self.deconv(self.concat((x1, xo1))))
      xo2 = self.conv2(x2)
      num_joints = self.num_joints
      if self.training:
          heatmap1, tagmap = paddle.split(xo1, 2, axis=1)
          if self.swahr:
              so1 = self.scalelayer0(x1)
              so2 = self.scalelayer1(x2)
              hrhrnet_outputs = ([heatmap1, so1], [xo2, so2], tagmap)
              return self.loss(hrhrnet_outputs, targets)
          else:
              hrhrnet_outputs = (heatmap1, xo2, tagmap)
              return self.loss(hrhrnet_outputs, targets)
  
      # averaged heatmap, upsampled tagmap
      upsampled = self.interpolate(xo1)
      avg = (upsampled[:, :num_joints] + xo2[:, :num_joints]) / 2
      return avg, upsampled[:, num_joints:]
  
file_path: PaddleDetection/ppdet/modeling/heads/keypoint_hrhrnet_head.py
imports: import paddle
  import paddle.nn
  from ppdet.core.workspace import register
  from ..None import layers
  from ..backbones.hrnet import BasicBlock
label_desc: Use image node_id 2 for calling the HrHRNetHead obj's underlying member method code with example usage: obj.forward(feats, targets) and returns: avg,  upsampled, self, self