class_docstr: Implementation of Gradient Matching Attack by Geiping, et. al. 2020.
  "Witches' Brew: Industrial Scale Data Poisoning via Gradient Matching"
  
  | Paper link: https://arxiv.org/abs/2009.02276
class_docstr_tok: ["Implementation","of","Gradient","Matching","Attack","by","Geiping",",","et",".","al",".","2020",".","``","Witches","'","Brew",":","Industrial","Scale","Data","Poisoning","via","Gradient","Matching","''","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/2009.02276"]
code: def _check_params(self) -> None:
      if (
          not isinstance(self.learning_rate_schedule, tuple)
          or len(self.learning_rate_schedule) != 2
      ):
          raise ValueError(
              "learning_rate_schedule must be a pair of a list of learning rates and a list of epochs"
          )
  
      if self.percent_poison > 1 or self.percent_poison < 0:
          raise ValueError("percent_poison must be in [0, 1]")
  
      if self.max_epochs < 1:
          raise ValueError("max_epochs must be positive")
  
      if self.max_trials < 1:
          raise ValueError("max_trials must be positive")
  
      if (
          not isinstance(self.clip_values, tuple)
          or len(self.clip_values) != 2
      ):
          raise ValueError(
              "clip_values must be a pair (min, max) of floats"
          )
  
      if self.epsilon <= 0:
          raise ValueError("epsilon must be nonnegative")
  
      if not isinstance(self.batch_size, int) or self.batch_size <= 0:
          raise ValueError("batch_size must be a positive integer")
  
      if (
          isinstance(self.verbose, int)
          and self.verbose < 0
          or not isinstance(self.verbose, int)
          and not isinstance(self.verbose, bool)
      ):
          raise ValueError(
              "verbose must be nonnegative integer or Boolean"
          )
  
file_path: adversarial-robustness-toolbox/art/attacks/poisoning/gradient_matching_attack.py
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import Any, Dict, Tuple, TYPE_CHECKING, List
  import numpy
  from tqdm.auto import trange, tqdm
  from art.attacks.attack import Attack
  from art.estimators import BaseEstimator, NeuralNetworkMixin
  from art.estimators.classification.classifier import ClassifierMixin
label_desc: Use image node_id 10 for calling the GradientMatchingAttack obj's underlying member method code with example usage: obj._check_params() without return types