class_docstr: Combination Importance Weighted Autoencoder model.
  
  Args:
      model_config (CIWAEConfig): The CIWAE 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 _sample_gauss(self, mu, std):
      # Reparametrization trick
      # Sample N(0, I)
      eps = torch.randn_like(std)
      return mu + eps * std, eps
  
file_path: benchmark_VAE/src/pythae/models/ciwae/ciwae_model.py
imports: from typing import Optional
  import torch
  import torch.nn.functional
  from ...data.datasets import BaseDataset
  from ..base.base_utils import ModelOutput
  from ..nn import BaseDecoder, BaseEncoder
  from ..vae import VAE
  from .ciwae_config import CIWAEConfig
label_desc: Use image node_id 4 for calling the CIWAE obj's underlying member method code with example usage: obj._sample_gauss(mu, std) and returns: unknown,  eps