docstr: CatDogImageDataModule.
  
  Args:
      dl_path: root directory where to download the data
      num_workers: number of CPU workers
      batch_size: number of sample in a batch
code: def __init__(
      self,
      dl_path: Union[str, Path] = "data",
      num_workers: int = 0,
      batch_size: int = 8,
  ):
      """CatDogImageDataModule.
  
      Args:
          dl_path: root directory where to download the data
          num_workers: number of CPU workers
          batch_size: number of sample in a batch
      """
      super().__init__()
  
      self._dl_path = dl_path
      self._num_workers = num_workers
      self._batch_size = batch_size
  
imports: import logging
  from pathlib import Path
  from typing import Union
  import numpy
  import torch
  import torch.nn.functional
  from torch import nn, optim
  from torch.optim.lr_scheduler import MultiStepLR
  from torch.optim.optimizer import Optimizer
  from torch.utils.data import DataLoader, Subset
  from torchmetrics.classification import MulticlassAccuracy
  from torchvision import models, transforms
  from torchvision.datasets import ImageFolder
  from torchvision.datasets.utils import download_and_extract_archive
  from pytorch_lightning import LightningDataModule, LightningModule
  from pytorch_lightning.callbacks.finetuning import BaseFinetuning
  from pytorch_lightning.utilities.rank_zero import rank_zero_info
label_desc: Use image node_id 1 to create a new CatDogImageDataModule object from inherited base classes: LightningDataModule with example: obj = CatDogImageDataModule(dl_path, num_workers, batch_size)