class_docstr: Implementation of Hidden Trigger Backdoor Attack by Saha et al 2019.
  "Hidden Trigger Backdoor Attacks
  
  | Paper link: https://arxiv.org/abs/1910.00033
class_docstr_tok: ["Implementation","of","Hidden","Trigger","Backdoor","Attack","by","Saha","et","al","2019",".","``","Hidden","Trigger","Backdoor","Attacks","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/1910.00033"]
code: def _check_params(self) -> None:
      if not isinstance(self.target, np.ndarray) or not isinstance(
          self.source, np.ndarray
      ):
          raise ValueError("Target and source must be arrays")
  
      if np.array_equal(self.target, self.source):
          raise ValueError("Target and source values can't be the same")
  
      if self.learning_rate <= 0:
          raise ValueError("Learning rate must be strictly positive")
  
      if not isinstance(self.backdoor, PoisoningAttackBackdoor):
          raise TypeError(
              "Backdoor must be of type PoisoningAttackBackdoor"
          )
  
      if self.eps < 0:
          raise ValueError(
              "The perturbation size `eps` has to be non-negative."
          )
  
      if not isinstance(self.feature_layer, (str, int)):
          raise TypeError("Feature layer should be a string or int")
  
      if isinstance(self.feature_layer, int):
          if (
              not 0
              <= self.feature_layer
              < len(self.estimator.layer_names)
          ):
              raise ValueError(
                  "feature_layer is not a non-negative integer"
              )
  
      if self.decay_coeff <= 0:
          raise ValueError("Decay coefficient must be positive")
  
      if not 0 < self.poison_percent <= 1:
          raise ValueError(
              "poison_percent must be between 0 (exclusive) and 1 (inclusive)"
          )
  
      if not isinstance(self.verbose, bool):
          raise ValueError(
              "The argument `verbose` has to be of type bool."
          )
  
file_path: adversarial-robustness-toolbox/art/attacks/poisoning/hidden_trigger_backdoor/hidden_trigger_backdoor.py
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import List, Optional, Tuple, Union, TYPE_CHECKING
  import numpy
  from art.attacks.attack import PoisoningAttackWhiteBox
  from art.attacks.poisoning.backdoor_attack import PoisoningAttackBackdoor
  from art.estimators import BaseEstimator, NeuralNetworkMixin
  from art.estimators.classification.classifier import ClassifierMixin
  from art.estimators.classification.pytorch import PyTorchClassifier
  from art.estimators.classification.keras import KerasClassifier
  from art.estimators.classification.tensorflow import TensorFlowV2Classifier
  from art.attacks.poisoning.hidden_trigger_backdoor.hidden_trigger_backdoor_pytorch import HiddenTriggerBackdoorPyTorch
  from art.attacks.poisoning.hidden_trigger_backdoor.hidden_trigger_backdoor_keras import HiddenTriggerBackdoorKeras
label_desc: Use image node_id 3 for calling the HiddenTriggerBackdoor obj's underlying member method code with example usage: obj._check_params() without return types