class_docstr: `The SUN397 Data Set <https://vision.princeton.edu/projects/2010/SUN/>`_.
  
  The SUN397 or Scene UNderstanding (SUN) is a dataset for scene recognition consisting of
  397 categories with 108'754 images.
  
  Args:
      root (string): Root directory of the dataset.
      transform (callable, optional): A function/transform that takes in a PIL image and returns a transformed
          version. E.g, ``transforms.RandomCrop``.
      target_transform (callable, optional): A function/transform that takes in the target and transforms it.
      download (bool, optional): If true, downloads the dataset from the internet and
          puts it in root directory. If dataset is already downloaded, it is not
          downloaded again.
code: def __init__(
      self,
      root: str,
      transform: Optional[Callable] = None,
      target_transform: Optional[Callable] = None,
      download: bool = False,
  ) -> None:
      super().__init__(
          root, transform=transform, target_transform=target_transform
      )
      self._data_dir = Path(self.root) / "SUN397"
  
      if download:
          self._download()
  
      if not self._check_exists():
          raise RuntimeError(
              "Dataset not found. You can use download=True to download it"
          )
  
      with open(self._data_dir / "ClassName.txt") as f:
          self.classes = [c[3:].strip() for c in f]
  
      self.class_to_idx = dict(
          zip(self.classes, range(len(self.classes)))
      )
      self._image_files = list(self._data_dir.rglob("sun_*.jpg"))
  
      self._labels = [
          self.class_to_idx[
              "/".join(path.relative_to(self._data_dir).parts[1:-1])
          ]
          for path in self._image_files
      ]
  
file_path: vision/torchvision/datasets/sun397.py
imports: from pathlib import Path
  from typing import Any, Callable, Optional, Tuple
  import PIL.Image
  from .utils import download_and_extract_archive
  from .vision import VisionDataset
label_desc: Use image node_id 1 to create a new SUN397 object from inherited base classes: VisionDataset with example: obj = SUN397(root, transform, target_transform, download)