class_docstr: Layer which projects 3D points into a camera with intrinsics K and at position T
      
class_docstr_tok: ["Layer","which","projects","3D","points","into","a","camera","with","intrinsics","K","and","at","position","T"]
code: def hybrid_forward(self, F, points, K, T):
      P = F.batch_dot(K, T)[:, :3, :]
  
      cam_points = F.batch_dot(P, points)
  
      cam_pix = cam_points[:, :2, :] / (
          cam_points[:, 2, :].expand_dims(1) + self.eps
      )
      cam_pix = cam_pix.reshape(
          self.batch_size, 2, self.height, self.width
      )
  
      x_src = cam_pix[:, 0, :, :] / (self.width - 1)
      y_src = cam_pix[:, 1, :, :] / (self.height - 1)
      pix_coords = F.concat(
          x_src.expand_dims(1), y_src.expand_dims(1), dim=1
      )
      pix_coords = (pix_coords - 0.5) * 2
  
      return pix_coords
  
imports: from __future__ import absolute_import, division, print_function
  import numpy
  import mxnet
  from mxnet.gluon import nn
label_desc: Use image node_id 2 for calling the Project3D obj's underlying member method code with example usage: obj.hybrid_forward(F, points, K, T) and returns: pix_coords