class_docstr: The L_2 optimized attack of Carlini and Wagner (2016). This attack is among the most effective and should be used
  among the primary attacks to evaluate potential defences. A major difference wrt to the original implementation
  (https://github.com/carlini/nn_robust_attacks) is that we use line search in the optimization of the attack
  objective.
  
  | Paper link: https://arxiv.org/abs/1608.04644
code: def _check_params(self) -> None:
      if (
          not isinstance(
              self.binary_search_steps,
              int,
          )
          or self.binary_search_steps < 0
      ):
          raise ValueError(
              "The number of binary search steps must be a non-negative integer."
          )
  
      if not isinstance(self.max_iter, int) or self.max_iter < 0:
          raise ValueError(
              "The number of iterations must be a non-negative integer."
          )
  
      if not isinstance(self.max_halving, int) or self.max_halving < 1:
          raise ValueError(
              "The number of halving steps must be an integer greater than zero."
          )
  
      if (
          not isinstance(self.max_doubling, int)
          or self.max_doubling < 1
      ):
          raise ValueError(
              "The number of doubling steps must be an integer greater than zero."
          )
  
      if not isinstance(self.batch_size, int) or self.batch_size < 1:
          raise ValueError(
              "The batch size must be an integer greater than zero."
          )
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import Optional, Tuple, TYPE_CHECKING
  import numpy
  from tqdm.auto import trange
  from art.config import ART_NUMPY_DTYPE
  from art.optimizers import Adam
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassGradientsMixin
  from art.attacks.attack import EvasionAttack
  from art.utils import compute_success, get_labels_np_array, tanh_to_original, original_to_tanh
  from art.utils import check_and_transform_label_format
label_desc: Use image node_id 5 for calling the CarliniL2Method obj's underlying member method code with example usage: obj._check_params() without return types