class_docstr: Implementation of a generic laser attack case.
class_docstr_tok: ["Implementation","of","a","generic","laser","attack","case","."]
docstr: :param estimator: Predictor of the image class.
  :param iterations: Maximum number of iterations of the algorithm.
  :param laser_generator: Object responsible for generation laser beams images and their update.
  :param image_generator: Object responsible for image generation.
  :param random_initializations: How many times repeat the attack.
  :param optimisation_algorithm: Algorithm used to generate adversarial example. May be replaced.
  :param debug: Optional debug handler.
docstr_tok: [":","param","estimator",":","Predictor","of","the","image","class",".",":","param","iterations",":","Maximum","number","of","iterations","of","the","algorithm",".",":","param","laser_generator",":","Object","responsible","for","generation","laser","beams","images","and","their","update",".",":","param","image_generator",":","Object","responsible","for","image","generation",".",":","param","random_initializations",":","How","many","times","repeat","the","attack",".",":","param","optimisation_algorithm",":","Algorithm","used","to","generate","adversarial","example",".","May","be","replaced",".",":","param","debug",":","Optional","debug","handler","."]
code: def __init__(
      self,
      estimator,
      iterations: int,
      laser_generator: AdvObjectGenerator,
      image_generator: ImageGenerator = ImageGenerator(),
      random_initializations: int = 1,
      optimisation_algorithm: Callable = greedy_search,
      debug: Optional[DebugInfo] = None,
  ) -> None:
      """
      :param estimator: Predictor of the image class.
      :param iterations: Maximum number of iterations of the algorithm.
      :param laser_generator: Object responsible for generation laser beams images and their update.
      :param image_generator: Object responsible for image generation.
      :param random_initializations: How many times repeat the attack.
      :param optimisation_algorithm: Algorithm used to generate adversarial example. May be replaced.
      :param debug: Optional debug handler.
      """
  
      super().__init__(estimator=estimator)
      self.iterations = iterations
      self.random_initializations = random_initializations
      self.optimisation_algorithm = optimisation_algorithm
      self._laser_generator = laser_generator
      self._image_generator = image_generator
      self._debug = debug
  
      self._check_params()
  
imports: import logging
  from typing import Callable, List, Optional, Tuple, Union, Any
  import numpy
  from art.attacks.attack import EvasionAttack
  from art.attacks.evasion.laser_attack.algorithms import greedy_search
  from art.attacks.evasion.laser_attack.utils import AdversarialObject, AdvObjectGenerator, DebugInfo, ImageGenerator, Line, wavelength_to_rgb
label_desc: Use image node_id 1 to create a new LaserAttack object from inherited base classes: EvasionAttack with example: obj = LaserAttack(estimator, iterations, laser_generator, image_generator, random_initializations, optimisation_algorithm, debug)