class_docstr: Trainer using distinct optimizers for encoder and decoder nn.
  
  Args:
      model (BaseAE): The model to train
  
      train_dataset (BaseDataset): The training dataset of type
          :class:`~pythae.data.dataset.BaseDataset`
  
      training_args (CoupledOptimizerTrainerConfig): The training arguments summarizing the main
          parameters used for training. If None, a basic training instance of
          :class:`CoupledOptimizerTrainerConfig` is used. Default: None.
  
      encoder_optimizer (~torch.optim.Optimizer): An instance of `torch.optim.Optimizer` used for
          training the encoder. If None, a :class:`~torch.optim.Adam` optimizer is used.
          Default: None.
  
      decoder_optimizer (~torch.optim.Optimizer): An instance of `torch.optim.Optimizer` used for
          training the decoder. If None, a :class:`~torch.optim.Adam` optimizer is used.
          Default: None.
code: def __init__(
      self,
      model: BaseAE,
      train_dataset: BaseDataset,
      eval_dataset: Optional[BaseDataset] = None,
      training_config: Optional[CoupledOptimizerTrainerConfig] = None,
      callbacks: List[TrainingCallback] = None,
  ):
      BaseTrainer.__init__(
          self,
          model=model,
          train_dataset=train_dataset,
          eval_dataset=eval_dataset,
          training_config=training_config,
          callbacks=callbacks,
      )
  
imports: import datetime
  import logging
  import os
  from copy import deepcopy
  from typing import List, Optional
  import torch
  import torch.distributed
  import torch.optim
  import torch.optim.lr_scheduler
  from ...data.datasets import BaseDataset
  from ...models import BaseAE
  from ..base_trainer import BaseTrainer
  from ..trainer_utils import set_seed
  from ..training_callbacks import TrainingCallback
  from .coupled_optimizer_trainer_config import CoupledOptimizerTrainerConfig
label_desc: Use image node_id 1 to create a new CoupledOptimizerTrainer object from inherited base classes: BaseTrainer with example: obj = CoupledOptimizerTrainer(model, train_dataset, eval_dataset, training_config, callbacks)