class_docstr: This attack was originally implemented by Vargas et al. (2019). It is generalisation of One Pixel Attack originally
  implemented by Su et al. (2019).
  
  | One Pixel Attack Paper link: https://arxiv.org/abs/1710.08864
  | Pixel Attack Paper link: https://arxiv.org/abs/1906.06026
docstr: Define the bounds for the image `img` within the limits `limit`.
docstr_tok: ["Define","the","bounds","for","the","image","`","img","`","within","the","limits","`","limit","`","."]
code: def _get_bounds(
      self, img: np.ndarray, limit
  ) -> Tuple[List[list], list]:
      """
      Define the bounds for the image `img` within the limits `limit`.
      """
      initial: List[int] = []
      bounds: List[List[int]]
      if self.es == 0:
          for count, (i, j) in enumerate(
              product(range(self.img_rows), range(self.img_cols))
          ):
              initial += [i, j]
              for k in range(self.img_channels):
                  if not self.estimator.channels_first:
                      initial += [img[i, j, k]]
                  else:
                      initial += [img[k, i, j]]
  
              if count == limit - 1:
                  break
  
          min_bounds = [0, 0]
          for _ in range(self.img_channels):
              min_bounds += [0]
          min_bounds = min_bounds * limit
          max_bounds = [self.img_rows, self.img_cols]
          for _ in range(self.img_channels):
              max_bounds += [255]
          max_bounds = max_bounds * limit
          bounds = [min_bounds, max_bounds]
      else:
          bounds = [[0, self.img_rows], [0, self.img_cols]]
          for _ in range(self.img_channels):
              bounds += [[0, 255]]
          bounds = bounds * limit
      return bounds, initial
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from itertools import product
  from typing import List, Optional, Tuple, TYPE_CHECKING
  import numpy
  from six import string_types
  import scipy
  from scipy._lib._util import check_random_state
  from scipy.optimize import OptimizeResult, minimize
  from tqdm.auto import tqdm
  from art.config import ART_NUMPY_DTYPE
  from art.attacks.attack import EvasionAttack
  from art.estimators.estimator import BaseEstimator, NeuralNetworkMixin
  from art.estimators.classification.classifier import ClassifierMixin
  from art.utils import check_and_transform_label_format
label_desc: Use image node_id 3 for calling the PixelAttack obj's underlying member method code with example usage: obj._get_bounds(img, limit) and returns: bounds,  initial