code: def getDataLoaders(self, batch_size, shuffle=True, device="cuda"):
      # load base datasets
      t1, s1 = self.vaes[0].getDataLoaders(batch_size, shuffle, device)
      t2, s2 = self.vaes[1].getDataLoaders(batch_size, shuffle, device)
  
      kwargs = (
          {"num_workers": 2, "pin_memory": True}
          if device == "cuda"
          else {}
      )
      train_loader = DataLoader(
          TensorDataset(
              [
                  ResampleDataset(
                      t1.dataset, resampler, size=len(t1.dataset) * 10
                  ),
                  t2.dataset,
              ]
          ),
          batch_size=batch_size,
          shuffle=shuffle,
          **kwargs,
      )
      test_loader = DataLoader(
          TensorDataset(
              [
                  ResampleDataset(
                      s1.dataset, resampler, size=len(s1.dataset) * 10
                  ),
                  s2.dataset,
              ]
          ),
          batch_size=batch_size,
          shuffle=shuffle,
          **kwargs,
      )
      return train_loader, test_loader
  
imports: import matplotlib.pyplot
  import torch.distributions
  import torch.nn
  import torch.nn.functional
  import torch.utils.data
  from numpy import sqrt, prod
  from torch.utils.data import DataLoader
  from torchnet.dataset import TensorDataset, ResampleDataset
  from torchvision.utils import save_image, make_grid
  from utils import Constants
  from vis import plot_embeddings, plot_kls_df
  from .mmvae import MMVAE
  from .vae_cub_image_ft import CUB_Image_ft
  from .vae_cub_sent_ft import CUB_Sentence_ft
label_desc: Use image node_id 3 for calling the CUB_Image_Sentence_ft obj's underlying member method code with example usage: obj.getDataLoaders(batch_size, shuffle, device) and returns: train_loader,  test_loader