def __init__(
        self,
        classifier: "PyTorchClassifier",
        net_size: tuple[int, int],
        min_tr: float = 0.8,
        num_xforms: int = 100,
        step_size: float = 0.0157,
        steps: int = 50,
        first_steps: int = 500,
        patch_removal_size: float = 4,
        patch_removal_interval: float = 2,
        num_patches_to_remove: int = 4,
        rand_start_epsilon_range: tuple[float, float] = (-8 / 255, 8 / 255),
        rotation_range: tuple[float, float] = (-30.0, 30.0),
        dist_range: tuple[float, float] = (0.0, 0.0),
        gamma_range: tuple[float, float] = (1.0, 2.0),
        crop_percent_range: tuple[float, float] = (-0.03125, 0.03125),
        off_x_range: tuple[float, float] = (-0.03125, 0.03125),
        off_y_range: tuple[float, float] = (-0.03125, 0.03125),
        blur_kernels: tuple[int, int] | list[int] = (0, 3),
        batch_size: int = 64,
    ) -> None:
        """
        Create a GRAPHITEWhiteboxPyTorch attack instance.

        :param classifier: A trained classifier.
        :param net_size: The resolution to resize images to before feeding to the model in (w, h).
        :param min_tr: minimum threshold for EoT PGD to reach.
        :param num_xforms: The number of transforms to use.
        :param step_size: The step size.
        :param steps: The number of steps for EoT PGD after the first iteration.
        :param first_steps: The number of steps for EoT PGD for the first iteration.
        :param patch_removal_size: size of patch removal.
        :param patch_removal_interval: stride for patch removal.
        :param num_patches_to_remove: the number of patches to remove per iteration.
        :param rand_start_epsilon_range: the range for random start init.
        :param rotation_range: The range of the rotation in the perspective transform.
        :param dist_range: The range of the dist (in ft) to be added to the focal length in the perspective transform.
        :param gamma_range: The range of the gamma in the gamma transform.
        :param crop_percent_range: The range of the crop percent in the perspective transform.
        :param off_x_range: The range of the x offset (percent) in the perspective transform.
        :param off_y_range: The range of the y offset (percent) in the perspective transform.
        :param blur_kernels: The kernels to blur with.
        :param batch_size: The size of the batch used by the estimator during inference.
        """
        super().__init__(estimator=classifier)
        self.net_size = net_size
        self.min_tr = min_tr
        self.num_xforms = num_xforms
        self.step_size = step_size
        self.steps = steps
        self.first_steps = first_steps
        self.patch_removal_size = patch_removal_size
        self.patch_removal_interval = patch_removal_interval
        self.num_patches_to_remove = num_patches_to_remove
        self.rand_start_epsilon_range = rand_start_epsilon_range
        self.rotation_range = rotation_range
        self.dist_range = dist_range
        self.gamma_range = gamma_range
        self.crop_percent_range = crop_percent_range
        self.off_x_range = off_x_range
        self.off_y_range = off_y_range
        self.blur_kernels = blur_kernels
        self.batch_size = batch_size

        self._check_params()

        Create a GRAPHITEWhiteboxPyTorch attack instance.

        :param classifier: A trained classifier.
        :param net_size: The resolution to resize images to before feeding to the model in (w, h).
        :param min_tr: minimum threshold for EoT PGD to reach.
        :param num_xforms: The number of transforms to use.
        :param step_size: The step size.
        :param steps: The number of steps for EoT PGD after the first iteration.
        :param first_steps: The number of steps for EoT PGD for the first iteration.
        :param patch_removal_size: size of patch removal.
        :param patch_removal_interval: stride for patch removal.
        :param num_patches_to_remove: the number of patches to remove per iteration.
        :param rand_start_epsilon_range: the range for random start init.
        :param rotation_range: The range of the rotation in the perspective transform.
        :param dist_range: The range of the dist (in ft) to be added to the focal length in the perspective transform.
        :param gamma_range: The range of the gamma in the gamma transform.
        :param crop_percent_range: The range of the crop percent in the perspective transform.
        :param off_x_range: The range of the x offset (percent) in the perspective transform.
        :param off_y_range: The range of the y offset (percent) in the perspective transform.
        :param blur_kernels: The kernels to blur with.
        :param batch_size: The size of the batch used by the estimator during inference.
        
art/attacks/evasion/graphite/graphite_whitebox_pytorch.py