class_docstr: AugMix data augmentation method based on
  `"AugMix: A Simple Data Processing Method to Improve Robustness and Uncertainty" <https://arxiv.org/abs/1912.02781>`_.
  If the image is torch Tensor, it should be of type torch.uint8, and it is expected
  to have [..., 1 or 3, H, W] shape, where ... means an arbitrary number of leading dimensions.
  If img is PIL Image, it is expected to be in mode "L" or "RGB".
  
  Args:
      severity (int): The severity of base augmentation operators. Default is ``3``.
      mixture_width (int): The number of augmentation chains. Default is ``3``.
      chain_depth (int): The depth of augmentation chains. A negative value denotes stochastic depth sampled from the interval [1, 3].
          Default is ``-1``.
      alpha (float): The hyperparameter for the probability distributions. Default is ``1.0``.
      all_ops (bool): Use all operations (including brightness, contrast, color and sharpness). Default is ``True``.
      interpolation (InterpolationMode): Desired interpolation enum defined by
          :class:`torchvision.transforms.InterpolationMode`. Default is ``InterpolationMode.NEAREST``.
          If input is Tensor, only ``InterpolationMode.NEAREST``, ``InterpolationMode.BILINEAR`` are supported.
      fill (sequence or number, optional): Pixel fill value for the area outside the transformed
          image. If given a number, the value is used for all bands respectively.
code: def _augmentation_space(
      self, num_bins: int, image_size: Tuple[int, int]
  ) -> Dict[str, Tuple[Tensor, bool]]:
      s = {
          # op_name: (magnitudes, signed)
          "ShearX": (torch.linspace(0.0, 0.3, num_bins), True),
          "ShearY": (torch.linspace(0.0, 0.3, num_bins), True),
          "TranslateX": (
              torch.linspace(0.0, image_size[1] / 3.0, num_bins),
              True,
          ),
          "TranslateY": (
              torch.linspace(0.0, image_size[0] / 3.0, num_bins),
              True,
          ),
          "Rotate": (torch.linspace(0.0, 30.0, num_bins), True),
          "Posterize": (
              4
              - (torch.arange(num_bins) / ((num_bins - 1) / 4))
              .round()
              .int(),
              False,
          ),
          "Solarize": (torch.linspace(255.0, 0.0, num_bins), False),
          "AutoContrast": (torch.tensor(0.0), False),
          "Equalize": (torch.tensor(0.0), False),
      }
      if self.all_ops:
          s.update(
              {
                  "Brightness": (
                      torch.linspace(0.0, 0.9, num_bins),
                      True,
                  ),
                  "Color": (torch.linspace(0.0, 0.9, num_bins), True),
                  "Contrast": (
                      torch.linspace(0.0, 0.9, num_bins),
                      True,
                  ),
                  "Sharpness": (
                      torch.linspace(0.0, 0.9, num_bins),
                      True,
                  ),
              }
          )
      return s
  
imports: import math
  from enum import Enum
  from typing import Dict, List, Optional, Tuple
  import torch
  from torch import Tensor
  from .None import functional, InterpolationMode
label_desc: Use image node_id 2 for calling the AugMix obj's underlying member method code with example usage: obj._augmentation_space(num_bins, image_size) and returns: s