class_docstr: Implementation of the 'Auto Conjugate Gradient' attack.
  The original implementation is https://github.com/yamamura-k/ACG.
  
  | Paper link: https://arxiv.org/abs/2206.09628
class_docstr_tok: ["Implementation","of","the","'Auto","Conjugate","Gradient","'","attack",".","The","original","implementation","is","https",":","\/\/github.com\/yamamura-k\/ACG",".","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/2206.09628"]
code: def _check_params(self) -> None:
      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.eps, (int, float)) or self.eps <= 0.0:
          raise ValueError(
              "The argument eps has to be either of type int or float and larger than zero."
          )
  
      if (
          not isinstance(self.eps_step, (int, float))
          or self.eps_step <= 0.0
      ):
          raise ValueError(
              "The argument eps_step has to be either of type int or float and larger than zero."
          )
  
      if not isinstance(self.max_iter, int) or self.max_iter <= 0:
          raise ValueError(
              "The argument max_iter has to be of type int and larger than zero."
          )
  
      if not isinstance(self.targeted, bool):
          raise ValueError("The argument targeted has to be of bool.")
  
      if (
          not isinstance(self.nb_random_init, int)
          or self.nb_random_init <= 0
      ):
          raise ValueError(
              "The argument nb_random_init has to be of type int and larger than zero."
          )
  
      if not isinstance(self.batch_size, int) or self.batch_size <= 0:
          raise ValueError(
              "The argument batch_size has to be of type int and larger than zero."
          )
  
      # if self.loss_type not in self._predefined_losses:
      #     raise ValueError("The argument loss_type has to be either {}.".format(self._predefined_losses))
  
      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/auto_conjugate_gradient.py
imports: import abc
  import logging
  import math
  from typing import Optional, Union, TYPE_CHECKING
  import numpy
  from tqdm.auto import trange
  from art.config import ART_NUMPY_DTYPE
  from art.attacks.attack import EvasionAttack
  from art.estimators.estimator import BaseEstimator, LossGradientsMixin
  from art.estimators.classification.classifier import ClassifierMixin
  from art.utils import check_and_transform_label_format, projection, random_sphere, is_probability, get_labels_np_array
label_desc: Use image node_id 3 for calling the AutoConjugateGradient obj's underlying member method code with example usage: obj._check_params() without return types