class_docstr: Implementation of the Shadow Attack.
  
  | Paper link: https://arxiv.org/abs/2003.08937
class_docstr_tok: ["Implementation","of","the","Shadow","Attack",".","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/2003.08937"]
code: def _check_params(self) -> None:
      if not isinstance(self.sigma, (int, float)):
          raise ValueError("The sigma must be of type int or float.")
  
      if self.sigma <= 0:
          raise ValueError("The sigma must larger than zero.")
  
      if not isinstance(self.nb_steps, int):
          raise ValueError("The number of steps must be of type int.")
  
      if self.nb_steps <= 0:
          raise ValueError("The number of steps must larger than zero.")
  
      if not isinstance(self.learning_rate, float):
          raise ValueError("The learning rate must be of type float.")
  
      if self.learning_rate <= 0:
          raise ValueError("The learning rate must larger than zero.")
  
      if not isinstance(self.lambda_tv, float):
          raise ValueError("The lambda_tv must be of type float.")
  
      if self.lambda_tv < 0:
          raise ValueError("The lambda_tv must larger than zero.")
  
      if not isinstance(self.lambda_c, float):
          raise ValueError("The lambda_c must be of type float.")
  
      if self.lambda_c < 0:
          raise ValueError("The lambda_c must larger than zero.")
  
      if not isinstance(self.lambda_s, float):
          raise ValueError("The lambda_s must be of type float.")
  
      if self.lambda_s < 0:
          raise ValueError("The lambda_s must larger than zero.")
  
      if not isinstance(self.batch_size, int):
          raise ValueError("The batch size must be of type int.")
  
      if self.batch_size <= 0:
          raise ValueError("The sigma must larger than zero.")
  
      if not isinstance(self.targeted, bool):
          raise ValueError(
              "The targeted argument must be of type bool."
          )
  
      if not isinstance(self.verbose, bool):
          raise ValueError(
              "The argument `verbose` has to be of type bool."
          )
  
file_path: adversarial-robustness-toolbox/art/attacks/evasion/shadow_attack.py
imports: import logging
  from typing import Optional, Union
  import numpy
  from tqdm.auto import trange
  from art.config import ART_NUMPY_DTYPE
  from art.estimators.estimator import BaseEstimator, LossGradientsMixin
  from art.estimators.classification.classifier import ClassifierMixin
  from art.estimators.classification import TensorFlowV2Classifier, PyTorchClassifier
  from art.estimators.certification.randomized_smoothing import TensorFlowV2RandomizedSmoothing, PyTorchRandomizedSmoothing
  from art.attacks.attack import EvasionAttack
  from art.utils import get_labels_np_array, check_and_transform_label_format
label_desc: Use image node_id 4 for calling the ShadowAttack obj's underlying member method code with example usage: obj._check_params() without return types