code: def _compute_3d(self, joints_2d, depths):
      # joints_2d: (N * J * 2), depths: (N * J * 1)
      if depths.dim() < joints_2d.dim():
          depths = depths.unsqueeze(-1)
      ones = torch.ones_like(depths)
      depths = torch.max(ones, depths + self.c)
      if self.is_generic_baseline:
          joints_3d = torch.cat((joints_2d, depths), dim=-1)
      else:
          joints_3d = torch.cat((depths * joints_2d, depths), dim=-1)
      return joints_3d
  
imports: import torch
  import torch.nn
  import numpy
  import pickle
  from lib.utils.misc import init_weights, load_pickle
  from lib.utils.utils import Transform3D, transform_3d, transform_3d_v2
  from lib.models.building_blocks import ResBlock
  from lib.models.scaler import get_scaler
  from lib.models.rotater import get_rotater
  from lib.models.lifter import get_lifter_before, get_lifter_after
  from lib.models.simple_model import LinearModelBefore, LinearModelAfter, Linear
  from lib.utils.utils import rotate, rotate2
label_desc: Use image node_id 3 for calling the PoseModel obj's underlying member method code with example usage: obj._compute_3d(joints_2d, depths) and returns: joints_3d