def __init__(
        self,
        num_classes: int,
        alpha: float = 1.0,
        probability: float = 0.5,
        channels_first: bool = False,
        apply_fit: bool = True,
        apply_predict: bool = False,
        device_type: str = "gpu",
        verbose: bool = False,
    ) -> None:
        """
        Create an instance of a CutMix data augmentation object.

        :param num_classes: The number of classes used for one-hot encoding.
        :param alpha: The hyperparameter for sampling the combination ratio.
        :param probability: The probability of applying CutMix per sample.
        :param channels_first: Set channels first or last.
        :param apply_fit: True if applied during fitting/training.
        :param apply_predict: True if applied during predicting.
        :param device_type: Type of device on which the classifier is run, either `gpu` or `cpu`.
        :param verbose: Show progress bars.
        """
        super().__init__(
            device_type=device_type,
            is_fitted=True,
            apply_fit=apply_fit,
            apply_predict=apply_predict,
        )
        self.num_classes = num_classes
        self.alpha = alpha
        self.probability = probability
        self.channels_first = channels_first
        self.verbose = verbose
        self._check_params()

        Create an instance of a CutMix data augmentation object.

        :param num_classes: The number of classes used for one-hot encoding.
        :param alpha: The hyperparameter for sampling the combination ratio.
        :param probability: The probability of applying CutMix per sample.
        :param channels_first: Set channels first or last.
        :param apply_fit: True if applied during fitting/training.
        :param apply_predict: True if applied during predicting.
        :param device_type: Type of device on which the classifier is run, either `gpu` or `cpu`.
        :param verbose: Show progress bars.
        
art/defences/preprocessor/cutmix/cutmix_pytorch.py