class_docstr: Vanilla Autoencoder model.
  
  Args:
      model_config (AEConfig): The Autoencoder configuration setting the main parameters of the
          model.
  
      encoder (BaseEncoder): An instance of BaseEncoder (inheriting from `torch.nn.Module` which
          plays the role of encoder. This argument allows you to use your own neural networks
          architectures if desired. If None is provided, a simple Multi Layer Preception
          (https://en.wikipedia.org/wiki/Multilayer_perceptron) is used. Default: None.
  
      decoder (BaseDecoder): An instance of BaseDecoder (inheriting from `torch.nn.Module` which
          plays the role of decoder. This argument allows you to use your own neural networks
          architectures if desired. If None is provided, a simple Multi Layer Preception
          (https://en.wikipedia.org/wiki/Multilayer_perceptron) is used. Default: None.
  
  .. note::
      For high dimensional data we advice you to provide you own network architectures. With the
      provided MLP you may end up with a ``MemoryError``.
docstr: The input data is encoded and decoded
  
  Args:
      inputs (BaseDataset): An instance of pythae's datasets
  
  Returns:
      ModelOutput: An instance of ModelOutput containing all the relevant parameters
docstr_tok: ["The","input","data","is","encoded","and","decoded","Args",":","inputs","(","BaseDataset",")",":","An","instance","of","pythae","'s","datasets","Returns",":","ModelOutput",":","An","instance","of","ModelOutput","containing","all","the","relevant","parameters"]
code: def forward(self, inputs: BaseDataset, **kwargs) -> ModelOutput:
      """The input data is encoded and decoded
  
      Args:
          inputs (BaseDataset): An instance of pythae's datasets
  
      Returns:
          ModelOutput: An instance of ModelOutput containing all the relevant parameters
      """
  
      x = inputs["data"]
  
      z = self.encoder(x).embedding
      recon_x = self.decoder(z)["reconstruction"]
  
      loss = self.loss_function(recon_x, x)
  
      output = ModelOutput(loss=loss, recon_x=recon_x, z=z)
  
      return output
  
file_path: benchmark_VAE/src/pythae/models/ae/ae_model.py
imports: import os
  from typing import Optional
  import torch.nn.functional
  from ...data.datasets import BaseDataset
  from ..base import BaseAE
  from ..base.base_utils import ModelOutput
  from ..nn import BaseDecoder, BaseEncoder
  from ..nn.default_architectures import Encoder_AE_MLP
  from .ae_config import AEConfig
label_desc: Use image node_id 2 for calling the AE obj's underlying member method code with example usage: obj.forward(inputs) and returns: output