class_docstr: AutoEncoder style architecture to map between embeddings.
  
  This class implements an autoencoder style architecture between two
  embedding spaces. This consists of a single encoder and one or more decoder
  heads from the latent dimension to the output. Both the encoder and the
  decoders are implemented as MLPs. Optionally, a skip connection may be added
  from the input embedding space to each of the output embedding spaces.
  
  When calling this layer, the input is assumed to be a 2-dimensional tensor, of
  shape (batch_size, embed_dim). The output is a 3-dimensional tensor, of
  shape (batch_size, num_decoders, embed_dim) - one extra dimension for the
  varying number of decoder heads.
  
  Attributes:
    encoder: The MLP mapping from input embedding to latent dimension.
    decoders: A list of decoder MLPs, mapping from latent dimension to the
      various output spaces.
    skip_connection: Whether to add a skip connection from the input embedding
      space to each of the output embedding spaces.
class_docstr_tok: ["AutoEncoder","style","architecture","to","map","between","embeddings",".","This","class","implements","an","autoencoder","style","architecture","between","two","embedding","spaces",".","This","consists","of","a","single","encoder","and","one","or","more","decoder","heads","from","the","latent","dimension","to","the","output",".","Both","the","encoder","and","the","decoders","are","implemented","as","MLPs",".","Optionally",",","a","skip","connection","may","be","added","from","the","input","embedding","space","to","each","of","the","output","embedding","spaces",".","When","calling","this","layer",",","the","input","is","assumed","to","be","a","2-dimensional","tensor",",","of","shape","(","batch_size",",","embed_dim",")",".","The","output","is","a","3-dimensional","tensor",",","of","shape","(","batch_size",",","num_decoders",",","embed_dim",")","-","one","extra","dimension","for","the","varying","number","of","decoder","heads",".","Attributes",":","encoder",":","The","MLP","mapping","from","input","embedding","to","latent","dimension",".","decoders",":","A","list","of","decoder","MLPs",",","mapping","from","latent","dimension","to","the","various","output","spaces",".","skip_connection",":","Whether","to","add","a","skip","connection","from","the","input","embedding","space","to","each","of","the","output","embedding","spaces","."]
docstr: Method to apply the autoencoder based mapping.
  
  Args:
    inputs: A 2-dimensional tensor, of shape (batch_size, embed_dim).
  
  Returns:
    result: A 3-dimensional tensor, of shape (batch_size, num_decoders,
      embed_dim)
docstr_tok: ["Method","to","apply","the","autoencoder","based","mapping",".","Args",":","inputs",":","A","2-dimensional","tensor",",","of","shape","(","batch_size",",","embed_dim",")",".","Returns",":","result",":","A","3-dimensional","tensor",",","of","shape","(","batch_size",",","num_decoders",",","embed_dim",")"]
code: def call(
      self, inputs: tf.Tensor
  ) -> tf.Tensor:  # pytype: disable=signature-mismatch
      """Method to apply the autoencoder based mapping.
  
      Args:
        inputs: A 2-dimensional tensor, of shape (batch_size, embed_dim).
  
      Returns:
        result: A 3-dimensional tensor, of shape (batch_size, num_decoders,
          embed_dim)
      """
      x = self.encoder(inputs)
      decoder_outputs = []
      for i in range(len(self.decoders)):
          decoder = self.decoders[i]
          out = decoder(x)
          if self.skip_connection:
              out = tf.keras.layers.Add()([out, inputs])
          out = tf.expand_dims(out, axis=1)
          decoder_outputs.append(out)
  
      result = tf.keras.layers.Concatenate(axis=1)(decoder_outputs)
      return result
  
imports: import abc
  from typing import Union, Tuple, Sequence, Optional
  import tensorflow
  import tensorflow_hub
label_desc: Use image node_id 2 for calling the AutoEncoderEmbeddingMapper obj's underlying member method code with example usage: obj.call(inputs) and returns: result