def __init__(
        self, classifier: "CLASSIFIER_NEURALNETWORK_TYPE", sample_size: int, scale: float = 0.1, alpha: float = 0.001
    ):
        """
        Create a randomized smoothing wrapper.
        :param classifier: The Classifier we want to wrap the functionality for the purpose of smoothing.
        :param sample_size: Number of samples for smoothing
        :param scale: Standard deviation of Gaussian noise added.
        :param alpha: The failure probability of smoothing
        """
        if classifier.preprocessing_defences is not None:
            warnings.warn(
                "\n With the current backend Gaussian noise will be added by Randomized Smoothing "
                "BEFORE the application of preprocessing defences. Please ensure this conforms to your use case.\n"
            )

        super().__init__(
            model=classifier.model,
            channels_first=classifier.channels_first,
            clip_values=classifier.clip_values,
            preprocessing_defences=classifier.preprocessing_defences,
            postprocessing_defences=classifier.postprocessing_defences,
            preprocessing=classifier.preprocessing,
            sample_size=sample_size,
            scale=scale,
            alpha=alpha,
        )
        self._input_shape = classifier.input_shape
        self.nb_classes = classifier.nb_classes

        self.classifier = classifier

        Create a randomized smoothing wrapper.
        :param classifier: The Classifier we want to wrap the functionality for the purpose of smoothing.
        :param sample_size: Number of samples for smoothing
        :param scale: Standard deviation of Gaussian noise added.
        :param alpha: The failure probability of smoothing
        
art/estimators/certification/randomized_smoothing/numpy.py