class_docstr: Implementation of Randomized Smoothing applied to classifier predictions and gradients, as introduced
  in Cohen et al. (2019).
  
  | Paper link: https://arxiv.org/abs/1902.02918
docstr: 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
docstr_tok: ["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"]
code: 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
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import List, Optional, Union, TYPE_CHECKING, Tuple
  import warnings
  import numpy
  from art.config import ART_NUMPY_DTYPE
  from art.estimators.estimator import BaseEstimator, LossGradientsMixin, NeuralNetworkMixin
  from art.estimators.certification.randomized_smoothing.randomized_smoothing import RandomizedSmoothingMixin
  from art.estimators.classification import ClassifierMixin, ClassGradientsMixin
  from art.defences.preprocessor.gaussian_augmentation import GaussianAugmentation
label_desc: Use image node_id 1 to create a new NumpyRandomizedSmoothing object from inherited base classes: RandomizedSmoothingMixin, ClassGradientsMixin, ClassifierMixin, NeuralNetworkMixin, LossGradientsMixin, BaseEstimator with example: obj = NumpyRandomizedSmoothing(classifier, sample_size, scale, alpha)