class_docstr: Project a sequence of numerical features.
  
  Parameters
  ----------
  feature_dims
      dimensions for each numerical feature.
  
  embedding_dims
      number of dimensions to embed each numerical feature.
  
  dtype
      Data type of the embedded features.
class_docstr_tok: ["Project","a","sequence","of","numerical","features",".","Parameters","--","--","--","--","--","feature_dims","dimensions","for","each","numerical","feature",".","embedding_dims","number","of","dimensions","to","embed","each","numerical","feature",".","dtype","Data","type","of","the","embedded","features","."]
code: def __init__(
      self,
      feature_dims: List[int],
      embedding_dims: List[int],
      dtype: Type = np.float32,
      **kwargs,
  ) -> None:
      super().__init__(**kwargs)
  
      assert (
          feature_dims
      ), "Length of `cardinalities` list must be greater than zero"
      assert len(feature_dims) == len(
          embedding_dims
      ), "Length of `embedding_dims` and `embedding_dims` should match"
      assert all(
          c > 0 for c in feature_dims
      ), "Elements of `feature_dims` should be > 0"
      assert all(
          d > 0 for d in embedding_dims
      ), "Elements of `embedding_dims` should be > 0"
  
      self.feature_dims = feature_dims
      self.dtype = dtype
      self.__num_features = len(feature_dims)
  
      def create_projector(i: int, c: int, d: int) -> nn.Dense:
          projection = nn.Dense(
              units=d,
              in_units=c,
              flatten=False,
              dtype=self.dtype,
              prefix=f"real_{i}_projection_",
          )
          self.register_child(projection)
          return projection
  
      with self.name_scope():
          self.__projectors = [
              create_projector(i, c, d)
              for i, (c, d) in enumerate(
                  zip(feature_dims, embedding_dims)
              )
          ]
  
imports: from typing import List, Tuple, Type
  import numpy
  from mxnet.gluon import HybridBlock, nn
  from gluonts.core.component import validated
  from gluonts.mx import Tensor
  from gluonts.mx.block.feature import FeatureEmbedder
  from gluonts.mx.block.quantile_output import QuantileOutput
  from gluonts.mx.util import weighted_average
  from ._layers import GatedResidualNetwork, TemporalFusionDecoder, TemporalFusionEncoder, VariableSelectionNetwork
label_desc: Use image node_id 1 to create a new FeatureProjector object from inherited base classes: HybridBlock with example: obj = FeatureProjector(feature_dims, embedding_dims, dtype)