class_docstr: Implementation of the `AutoAttack` attack.
  
  | Paper link: https://arxiv.org/abs/2003.01690
class_docstr_tok: ["Implementation","of","the","`","AutoAttack","`","attack",".","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/2003.01690"]
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, "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.batch_size, int) or self.batch_size <= 0:
          raise ValueError(
              "The argument batch_size has to be of type int and larger than zero."
          )
  
file_path: adversarial-robustness-toolbox/art/attacks/evasion/auto_attack.py
imports: import logging
  from copy import deepcopy
  from typing import TYPE_CHECKING, List, Optional, Tuple, Union
  import numpy
  from art.attacks.attack import EvasionAttack
  from art.attacks.evasion.auto_projected_gradient_descent import AutoProjectedGradientDescent
  from art.attacks.evasion.deepfool import DeepFool
  from art.attacks.evasion.square_attack import SquareAttack
  from art.config import ART_NUMPY_DTYPE
  from art.estimators.classification.classifier import ClassifierMixin
  from art.estimators.estimator import BaseEstimator
  from art.utils import check_and_transform_label_format, get_labels_np_array
label_desc: Use image node_id 3 for calling the AutoAttack obj's underlying member method code with example usage: obj._check_params() without return types