class_docstr: Implementation of the Geometric Decision-based Attack (GeoDA), a black-box attack requiring class predictions.
  Based on reference implementation: https://github.com/thisisalirah/GeoDA
  
  | Paper link: https://arxiv.org/abs/2003.06468
class_docstr_tok: ["Implementation","of","the","Geometric","Decision-based","Attack","(","GeoDA",")",",","a","black-box","attack","requiring","class","predictions",".","Based","on","reference","implementation",":","https",":","\/\/github.com\/thisisalirah\/GeoDA","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/2003.06468"]
code: def _check_params(self) -> None:
      if not isinstance(self.batch_size, int) or self.batch_size <= 0:
          raise ValueError(
              "The batch size has to be a positive integer."
          )
  
      if self.norm not in [1, 2, np.inf, "inf"]:
          raise ValueError(
              'The argument norm has to be either 1, 2, np.inf, or "inf".'
          )
  
      if not isinstance(self.sub_dim, int) or self.sub_dim <= 0:
          raise ValueError(
              "The subspace dimension has to be a positive integer."
          )
  
      if not isinstance(self.max_iter, int) or self.max_iter <= 0:
          raise ValueError(
              "The maximum number of iterations has to be a positive integer."
          )
  
      if (
          not isinstance(self.bin_search_tol, float)
          or self.bin_search_tol <= 0
      ):
          raise ValueError(
              "The binary search tolerance has to be a positive float."
          )
  
      if (
          not isinstance(self.lambda_param, float)
          or self.lambda_param <= 0
      ):
          raise ValueError(
              "The lambda parameter has to be a positive float."
          )
  
      if not isinstance(self.sigma, float) or self.sigma <= 0:
          raise ValueError("The sigma has to be a positive float.")
  
      # if not isinstance(self.targeted, bool):
      #     raise ValueError("The argument `targeted` has to be of type bool.")
  
      if not isinstance(self.verbose, bool):
          raise ValueError(
              "The argument `verbose` has to be of type bool."
          )
  
imports: import os
  import math
  import logging
  from typing import List, Optional, Tuple, Union, TYPE_CHECKING
  import numpy
  from tqdm.auto import trange
  from art.attacks.attack import EvasionAttack
  from art.config import ART_NUMPY_DTYPE
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassifierMixin
  from art.utils import check_and_transform_label_format, get_labels_np_array
label_desc: Use image node_id 11 for calling the GeoDA obj's underlying member method code with example usage: obj._check_params() without return types