code: def setup(self, stage: Optional[str] = None):
      if stage == "fit" or stage is None:
          self.random_train = Subset(
              self.random_full, indices=range(64)
          )
          self.dims = self.random_train[0].shape
  
      if stage in ("fit", "validate") or stage is None:
          self.random_val = Subset(
              self.random_full, indices=range(64, 64 * 2)
          )
  
      if stage == "test" or stage is None:
          self.random_test = Subset(
              self.random_full, indices=range(64 * 2, 64 * 3)
          )
          self.dims = getattr(self, "dims", self.random_test[0].shape)
  
      if stage == "predict" or stage is None:
          self.random_predict = Subset(
              self.random_full, indices=range(64 * 3, 64 * 4)
          )
          self.dims = getattr(
              self, "dims", self.random_predict[0].shape
          )
  
imports: from typing import Optional
  import torch
  from pytorch_lightning import LightningDataModule, LightningModule
  from torch.utils.data import DataLoader, Dataset, Subset
label_desc: Use image node_id 3 for calling the BoringDataModule obj's underlying member method code with example usage: obj.setup(stage) without return types