docstr:     A tensor embedder is an input embedder that takes a tensor with arbitrary dimension and produces a vector
      embedding by passing it through a neural network. An example is video data or 3D image data (i.e. 4D tensors)
  or other type of data that is more than 1 dimension (i.e. not vector) but is not an image.
  
      NOTE: There are no pre-defined schemes for tensor embedder. User must define a custom scheme by passing
      a callable object as InputEmbedderParameters.scheme when defining the respective preset. This callable
      object must return a Gluon HybridBlock. The hybrid_forward() of this block must accept a single input,
      normalized observation, and return an embedding vector for each sample in the batch.
      Keep in mind that the scheme is a list of blocks, which are stacked by optional batchnorm,
      activation, and dropout in between as specified in InputEmbedderParameters.
  
      :param params: parameters object containing input_clipping, input_rescaling, batchnorm, activation_function
          and dropout properties.
      
code: def __init__(self, params: InputEmbedderParameters):
      """
          A tensor embedder is an input embedder that takes a tensor with arbitrary dimension and produces a vector
          embedding by passing it through a neural network. An example is video data or 3D image data (i.e. 4D tensors)
      or other type of data that is more than 1 dimension (i.e. not vector) but is not an image.
  
          NOTE: There are no pre-defined schemes for tensor embedder. User must define a custom scheme by passing
          a callable object as InputEmbedderParameters.scheme when defining the respective preset. This callable
          object must return a Gluon HybridBlock. The hybrid_forward() of this block must accept a single input,
          normalized observation, and return an embedding vector for each sample in the batch.
          Keep in mind that the scheme is a list of blocks, which are stacked by optional batchnorm,
          activation, and dropout in between as specified in InputEmbedderParameters.
  
          :param params: parameters object containing input_clipping, input_rescaling, batchnorm, activation_function
              and dropout properties.
      """
      super(TensorEmbedder, self).__init__(params)
      self.input_rescaling = params.input_rescaling["tensor"]
      self.input_offset = params.input_offset["tensor"]
  
file_path: coach/rl_coach/architectures/mxnet_components/embedders/tensor_embedder.py
imports: from typing import Union
  from types import ModuleType
  import mxnet
  from rl_coach.architectures.embedder_parameters import InputEmbedderParameters
  from rl_coach.architectures.mxnet_components.embedders.embedder import InputEmbedder
label_desc: Use image node_id 1 to create a new TensorEmbedder object from inherited base classes: InputEmbedder with example: obj = TensorEmbedder(params)