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``.
code: def __init__(
      self,
      model_config: AEConfig,
      encoder: Optional[BaseEncoder] = None,
      decoder: Optional[BaseDecoder] = None,
  ):
      BaseAE.__init__(self, model_config=model_config, decoder=decoder)
  
      self.model_name = "AE"
  
      if encoder is None:
          if model_config.input_dim is None:
              raise AttributeError(
                  "No input dimension provided !"
                  "'input_dim' parameter of BaseAEConfig instance must be set to 'data_shape' where "
                  "the shape of the data is (C, H, W ..). Unable to build encoder "
                  "automatically"
              )
  
          encoder = Encoder_AE_MLP(model_config)
          self.model_config.uses_default_encoder = True
  
      else:
          self.model_config.uses_default_encoder = False
  
      self.set_encoder(encoder)
  
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 1 to create a new AE object from inherited base classes: BaseAE with example: obj = AE(model_config, encoder, decoder)