docstr: Used for forward pass through embedder network.
  
  :param F: backend api, either `mxnet.nd` or `mxnet.sym` (if block has been hybridized).
  :param x: environment state, where first dimension is batch_size, then dimensions are data type dependent.
  :return: embedding of environment state, where shape is (batch_size, channels).
code: def hybrid_forward(
      self, F: ModuleType, x: nd_sym_type, *args, **kwargs
  ) -> nd_sym_type:
      """
      Used for forward pass through embedder network.
  
      :param F: backend api, either `mxnet.nd` or `mxnet.sym` (if block has been hybridized).
      :param x: environment state, where first dimension is batch_size, then dimensions are data type dependent.
      :return: embedding of environment state, where shape is (batch_size, channels).
      """
      # `input_rescaling` and `input_offset` set on inheriting embedder
      x = x / self.input_rescaling
      x = x - self.input_offset
      if self.input_clipping is not None:
          x.clip(
              a_min=self.input_clipping[0], a_max=self.input_clipping[1]
          )
      x = self.net(x)
      return x.flatten()
  
file_path: coach/rl_coach/architectures/mxnet_components/embedders/embedder.py
imports: from typing import Union
  from types import ModuleType
  import mxnet
  from mxnet.gluon import nn
  from rl_coach.architectures.embedder_parameters import InputEmbedderParameters
  from rl_coach.architectures.mxnet_components.layers import convert_layer
  from rl_coach.base_parameters import EmbedderScheme
label_desc: Use image node_id 3 for calling the InputEmbedder obj's underlying member method code with example usage: obj.hybrid_forward(F, x) and returns: x