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","."]
docstr: Parameters
  ----------
  F
  
  features
      Numerical features with shape: (N,T,C) or (N,C), where C is the
      number of numerical features.
  
  Returns
  -------
  concatenated_tensor: Tensor
      Concatenated tensor of embeddings whth shape: (N,T,C) or (N,C),
      where C is the sum of the embedding dimensions for each numerical
      feature, i.e. C = sum(self.config.embedding_dims).
docstr_tok: ["Parameters","--","--","--","--","--","F","features","Numerical","features","with","shape",":","(","N",",","T",",","C",")","or","(","N",",","C",")",",","where","C","is","the","number","of","numerical","features",".","Returns","--","--","--","-","concatenated_tensor",":","Tensor","Concatenated","tensor","of","embeddings","whth","shape",":","(","N",",","T",",","C",")","or","(","N",",","C",")",",","where","C","is","the","sum","of","the","embedding","dimensions","for","each","numerical","feature",",","i.e",".","C","=","sum","(","self.config.embedding_dims",")","."]
code: def hybrid_forward(self, F, features: Tensor) -> List[Tensor]:
      """
  
      Parameters
      ----------
      F
  
      features
          Numerical features with shape: (N,T,C) or (N,C), where C is the
          number of numerical features.
  
      Returns
      -------
      concatenated_tensor: Tensor
          Concatenated tensor of embeddings whth shape: (N,T,C) or (N,C),
          where C is the sum of the embedding dimensions for each numerical
          feature, i.e. C = sum(self.config.embedding_dims).
      """
  
      if self.__num_features > 1:
          # we slice the last dimension, giving an array of length
          # self.__num_features with shape (N,T) or (N)
          real_feature_slices = F.split_v2(
              features,
              tuple(np.cumsum(self.feature_dims)[:-1]),
              axis=-1,
          )
      else:
          # F.split will iterate over the second-to-last axis if the last
          # axis is one
          real_feature_slices = [features]
  
      return [
          proj(real_feature_slice)
          for proj, real_feature_slice in zip(
              self.__projectors, real_feature_slices
          )
      ]
  
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 2 for calling the FeatureProjector obj's underlying member method code with example usage: obj.hybrid_forward(F, features) and returns: unknown