class_docstr: The L-infinity Fast Minimum Norm adversarial attack, in Lp norm. [#Pintor21Linf]_
  
  Args:
      steps: Number of iterations.
      max_stepsize: Initial stepsize for the gradient update.
      min_stepsize: Final stepsize for the gradient update. The
          stepsize will be reduced with a cosine annealing policy.
      gamma: Initial stepsize for the epsilon update. It will
          be updated with a cosine annealing reduction up to 0.001.
      init_attack: Optional initial attack. If an initial attack
          is specified (or initial points are provided in the run), the
          attack will first try to search for the boundary between the
          initial point and the points in a class that satisfies the
          adversarial criterion.
      binary_search_steps: Number of steps to use for the search
          from the adversarial points. If no initial attack or adversarial
          starting point is provided, this parameter will be ignored.
  
  References:
      .. [#Pintor21Linf] Maura Pintor, Fabio Roli, Wieland Brendel,
          Battista Biggio, "Fast Minimum-norm Adversarial
          Attacks through Adaptive Norm Constraints."
          arXiv preprint arXiv:2102.12827 (2021).
          https://arxiv.org/abs/2102.12827
code: def project(
      self, x: ep.Tensor, x0: ep.Tensor, epsilon: ep.Tensor
  ) -> ep.Tensor:
      clipped = ep.maximum(flatten(x - x0).T, -epsilon)
      clipped = ep.minimum(clipped, epsilon).T
      return x0 + clipped.reshape(x0.shape)
  
imports: import math
  from abc import abstractmethod, ABC
  from typing import Union, Optional, Any, Tuple
  import eagerpy
  from eagerpy.astensor import T
  from .base import MinimizationAttack, raise_if_kwargs, get_criterion, get_is_adversarial
  from .gradient_descent_base import uniform_l1_n_balls, normalize_lp_norms, uniform_l2_n_balls
  from ..None import Model, Misclassification, TargetedMisclassification
  from ..devutils import atleast_kd, flatten
  from ..distances import l1, linf, l2, l0, LpDistance
label_desc: Use image node_id 2 for calling the LInfFMNAttack obj's underlying member method code with example usage: obj.project(x, x0, epsilon) and returns: unknown