class_docstr: Implementation of the attack from Moosavi-Dezfooli et al. (2016). Computes a fixed perturbation to be applied to all
  future inputs. To this end, it can use any adversarial attack method.
  
  | Paper link: https://arxiv.org/abs/1610.08401
class_docstr_tok: ["Implementation","of","the","attack","from","Moosavi-Dezfooli","et","al",".","(","2016",")",".","Computes","a","fixed","perturbation","to","be","applied","to","all","future","inputs",".","To","this","end",",","it","can","use","any","adversarial","attack","method",".","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/1610.08401"]
docstr: The fooling rate of the universal perturbation on the most recent call to `generate`.
  
  :return: Fooling Rate.
docstr_tok: ["The","fooling","rate","of","the","universal","perturbation","on","the","most","recent","call","to","`","generate","`",".",":","return",":","Fooling","Rate","."]
code: def fooling_rate(self) -> Optional[float]:
      """
      The fooling rate of the universal perturbation on the most recent call to `generate`.
  
      :return: Fooling Rate.
      """
      return self._fooling_rate
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  import random
  import types
  from typing import Any, Dict, Optional, Union, TYPE_CHECKING
  import numpy
  from tqdm.auto import tqdm
  from art.attacks.attack import EvasionAttack
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassifierMixin
  from art.utils import projection, get_labels_np_array, check_and_transform_label_format
label_desc: Use image node_id 2 for calling the UniversalPerturbation obj's underlying member method code with example usage: obj.fooling_rate() and returns: self