class_docstr: `LowProFool` attack.
  
  | Paper link: https://arxiv.org/abs/1911.03274
class_docstr_tok: ["`","LowProFool","`","attack",".","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/1911.03274"]
docstr: Gradient of the objective function with regards to the data vector, i.e. sum of the classifier's loss gradient
  and weighted lp-space norm gradient, both with regards to data vector.
  
  :param samples: Base design matrix.
  :param perturbations: Perturbations of samples towards being adversarial.
  :param targets: The target labels for the attack.
  :return: Aggregate gradient of objective function.
docstr_tok: ["Gradient","of","the","objective","function","with","regards","to","the","data","vector",",","i.e",".","sum","of","the","classifier","'s","loss","gradient","and","weighted","lp-space","norm","gradient",",","both","with","regards","to","data","vector",".",":","param","samples",":","Base","design","matrix",".",":","param","perturbations",":","Perturbations","of","samples","towards","being","adversarial",".",":","param","targets",":","The","target","labels","for","the","attack",".",":","return",":","Aggregate","gradient","of","objective","function","."]
code: def __get_gradients(
      self,
      samples: np.ndarray,
      perturbations: np.ndarray,
      targets: np.ndarray,
  ) -> np.ndarray:
      """
      Gradient of the objective function with regards to the data vector, i.e. sum of the classifier's loss gradient
      and weighted lp-space norm gradient, both with regards to data vector.
  
      :param samples: Base design matrix.
      :param perturbations: Perturbations of samples towards being adversarial.
      :param targets: The target labels for the attack.
      :return: Aggregate gradient of objective function.
      """
      clf_loss_grad = self.estimator.loss_gradient(
          (samples + perturbations).astype(np.float32),
          targets.astype(np.float32),
      )
      norm_grad = self.lambd * self.__weighted_lp_norm_gradient(
          perturbations
      )
  
      return clf_loss_grad + norm_grad
  
imports: import logging
  from typing import Callable, Optional, Union, TYPE_CHECKING
  import numpy
  from scipy.stats import pearsonr
  from tqdm.auto import trange
  from art.attacks.attack import EvasionAttack
  from art.estimators.estimator import LossGradientsMixin
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassifierMixin
label_desc: Use image node_id 4 for calling the LowProFool obj's underlying member method code with example usage: obj.__get_gradients(samples, perturbations, targets) and returns: unknown