code: def __init__(
      self,
      feature_dims: List[int],
      embedding_dims: List[int],
  ):
      super().__init__()
  
      self.__num_features = len(feature_dims)
      if self.__num_features > 1:
          self.feature_slices = (
              feature_dims[0:1] + np.cumsum(feature_dims)[:-1].tolist()
          )
      else:
          self.feature_slices = feature_dims
      self.feature_dims = feature_dims
  
      self._projector = nn.ModuleList(
          [
              nn.Linear(
                  in_features=in_feature, out_features=out_features
              )
              for in_feature, out_features in zip(
                  self.feature_dims, embedding_dims
              )
          ]
      )
  
imports: from typing import List, Optional, Tuple
  import numpy
  import torch
  import torch.nn
  from pts.modules import FeatureEmbedder
label_desc: Use image node_id 1 to create a new FeatureProjector object from inherited base classes: nn with example: obj = FeatureProjector(feature_dims, embedding_dims)