def __init__(
        self,
        root: Optional[Union[str, Path]] = None,
        *,
        train=True,
        transform=None,
        target_transform=None,
        loader=default_loader,
        download=True
    ):
        """

        :param root: root dir where the dataset can be found or downloaded.
            Defaults to None, which means that the default location for
            'CUB_200_2011' will be used.
        :param train: train or test subset of the original dataset. Default
            to True.
        :param transform: eventual input data transformations to apply.
            Default to None.
        :param target_transform: eventual target data transformations to apply.
            Default to None.
        :param loader: method to load the data from disk. Default to
            torchvision default_loader.
        :param download: default set to True. If the data is already
            downloaded it will skip the download.
        """

        if root is None:
            root = default_dataset_location("CUB_200_2011")

        self.train: bool = train

        # Needed for disambiguating the type,
        # which is not the same in the base classes
        self.root: Path = Path(root)
        self._images: List[Tuple[str, int]]

        DownloadableDataset.__init__(self, root, download=download, verbose=True)
        self._load_dataset()

        PathsDataset.__init__(
            self,
            os.path.join(root, CUB200.images_folder),
            self._images,
            transform=transform,
            target_transform=target_transform,
            loader=loader,
        )


        :param root: root dir where the dataset can be found or downloaded.
            Defaults to None, which means that the default location for
            'CUB_200_2011' will be used.
        :param train: train or test subset of the original dataset. Default
            to True.
        :param transform: eventual input data transformations to apply.
            Default to None.
        :param target_transform: eventual target data transformations to apply.
            Default to None.
        :param loader: method to load the data from disk. Default to
            torchvision default_loader.
        :param download: default set to True. If the data is already
            downloaded it will skip the download.
        
avalanche/benchmarks/datasets/cub200/cub200.py