class_docstr: First layer is a Hypergyroplane followed by usual decoder
code: def __init__(self, model_config):
      super(Decoder, self).__init__()
      self.manifold = PoincareBall(
          dim=model_config.latent_dim, c=model_config.curvature
      )
      self.input_dim = model_config.input_dim
      self.dec = nn.Sequential(
          GeodesicLayer(model_config.latent_dim, 600, self.manifold),
          nn.ReLU(),
          nn.Linear(600, np.prod(model_config.input_dim)),
          nn.Sigmoid(),
      )
  
imports: import logging
  import math
  import os
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from pythae.data.preprocessors import DataProcessor
  from pythae.models import AutoModel, PoincareVAE, PoincareVAEConfig
  from pythae.models.base.base_utils import ModelOutput
  from pythae.models.nn import BaseDecoder, BaseEncoder
  from pythae.models.pvae.pvae_utils import PoincareBall
  from pythae.trainers import BaseTrainer, BaseTrainerConfig
label_desc: Use image node_id 1 to create a new Decoder object from inherited base classes: BaseDecoder with example: obj = Decoder(model_config)