def __init__(
        self,
        classifier: "CLASSIFIER_CLASS_LOSS_GRADIENTS_TYPE",
        max_iter: int = 10000,
        window_length: int = 100,
        threshold: float = 0.99,
        learning_rate: float = 0.1,
        batch_size: int = 1,
        verbose: bool = True,
    ):
        """
        Create an MIFace attack instance.

        :param classifier: Target classifier.
        :param max_iter: Maximum number of gradient descent iterations for the model inversion.
        :param window_length: Length of window for checking whether descent should be aborted.
        :param threshold: Threshold for descent stopping criterion.
        :param batch_size: Size of internal batches.
        :param verbose: Show progress bars.
        """
        super().__init__(estimator=classifier)

        self.max_iter = max_iter
        self.window_length = window_length
        self.threshold = threshold
        self.learning_rate = learning_rate
        self.batch_size = batch_size
        self.verbose = verbose
        self._check_params()

        Create an MIFace attack instance.

        :param classifier: Target classifier.
        :param max_iter: Maximum number of gradient descent iterations for the model inversion.
        :param window_length: Length of window for checking whether descent should be aborted.
        :param threshold: Threshold for descent stopping criterion.
        :param batch_size: Size of internal batches.
        :param verbose: Show progress bars.
        
art/attacks/inference/model_inversion/mi_face.py