class_docstr: Starts with an adversarial and performs a binary search between
  the adversarial and the original for each dimension of the input
  individually. [#Sch18]_
  
  References:
      .. [#Sch18] Lukas Schott, Jonas Rauber, Matthias Bethge, Wieland Brendel,
             "Towards the first adversarially robust neural network model on MNIST",
             https://arxiv.org/abs/1805.09190
class_docstr_tok: ["Starts","with","an","adversarial","and","performs","a","binary","search","between","the","adversarial","and","the","original","for","each","dimension","of","the","input","individually",".","[","#","Sch18","]","_","References",":","..","[","#","Sch18","]","Lukas","Schott",",","Jonas","Rauber",",","Matthias","Bethge",",","Wieland","Brendel",",","``","Towards","the","first","adversarially","robust","neural","network","model","on","MNIST","''",",","https",":","\/\/arxiv.org\/abs\/1805.09190"]
code: def __init__(
      self,
      init_attack: Optional[MinimizationAttack] = None,
      l2_binary_search: bool = True,
  ):
      self.init_attack = init_attack
      self.l2_binary_search = l2_binary_search
  
file_path: foolbox/foolbox/attacks/pointwise.py
imports: from typing import Union, Any, Optional, Tuple, Callable, List
  import eagerpy
  import numpy
  import logging
  from ..criteria import Criterion
  from .base import FlexibleDistanceMinimizationAttack
  from .saltandpepper import SaltAndPepperNoiseAttack
  from ..devutils import flatten
  from .base import Model
  from .base import MinimizationAttack
  from .base import get_is_adversarial
  from .base import get_criterion
  from .base import T
  from .base import raise_if_kwargs
  from .base import verify_input_bounds
label_desc: Use image node_id 1 to create a new PointwiseAttack object from inherited base classes: FlexibleDistanceMinimizationAttack with example: obj = PointwiseAttack(init_attack, l2_binary_search)