class_docstr: Local Search Attack
  Algorithm 3 in https://arxiv.org/pdf/1612.06299.pdf
  
  :param predict: forward pass function.
  :param clip_min: mininum value per input dimension.
  :param clip_max: maximum value per input dimension.
  :param p: parameter controls pixel complexity
  :param r: perturbation value
  :param loss_fn: loss function
  :param d: the half side length of the neighbourhood square
  :param t: the number of pixels perturbed at each round
  :param k: the threshold for k-misclassification
  :param round_ub: an upper bound on the number of rounds
code: def perturb(self, x, y=None):
      x, y = self._verify_and_process_inputs(x, y)
      return _perturb_batch(self.perturb_single, x, y)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  import numpy
  import torch
  import torch.nn
  from advertorch.utils import clamp
  from advertorch.utils import replicate_input
  from .base import Attack
  from .base import LabelMixin
  from .utils import is_successful
label_desc: Use image node_id 3 for calling the LocalSearchAttack obj's underlying member method code with example usage: obj.perturb(x, y) and returns: _perturb_batch