code: def generate(self, x, **kwargs):
      
      # Parse and save attack-specific parameters
      assert self.parse_params(**kwargs)
      labels, _nb_classes = self.get_or_guess_labels(x, kwargs)
      return self.fgm(x, labels=labels, targeted=(self.y_target is not None))
docs: Generates the adversarial sample for the given input.
      :param x: The model's inputs.
      :param eps: (optional float) attack step size (input variation)
      :param ord: (optional) Order of the norm (mimics NumPy).
                  Possible values: np.inf, 1 or 2.
      :param y: (optional) A tf variable` with the model labels. Only provide
                this parameter if you'd like to use true labels when crafting
                adversarial samples. Otherwise, model predictions are used as
                labels to avoid the "label leaking" effect (explained in this
                paper: https://arxiv.org/abs/1611.01236). Default is None.
                Labels should be one-hot-encoded.
      :param y_target: (optional) A tf variable` with the labels to target.
                          Leave y_target=None if y is also set.
                          Labels should be one-hot-encoded.
      :param clip_min: (optional float) Minimum input component value
      :param clip_max: (optional float) Maximum input component value