code: def generate(self, x, **kwargs):
      
      assert self.sess is not None, \
          'Cannot use `generate` when no `sess` was provided'
      self.parse_params(**kwargs)
  
      if self.y_target is None:
        self.y_target, nb_classes = self.get_or_guess_labels(x, kwargs)
        self.targeted_attack = False
      else:
        _, nb_classes = self.get_or_guess_labels(x, kwargs)
        self.targeted_attack = True
  
      attack = LBFGS_impl(
          self.sess, x, self.model.get_logits(x),
          self.y_target, self.targeted_attack,
          self.binary_search_steps, self.max_iterations, self.initial_const,
          self.clip_min, self.clip_max, nb_classes, self.batch_size)
  
      def lbfgs_wrap(x_val, y_val):
        """
        Wrapper creating TensorFlow interface for use with py_func
        """
        return np.array(attack.attack(x_val, y_val), dtype=self.np_dtype)
  
      wrap = tf.py_func(lbfgs_wrap, [x, self.y_target], self.tf_dtype)
      wrap.set_shape(x.get_shape())
  
      return wrap
docs: Return a tensor that constructs adversarial examples for the given
      input. Generate uses tf.py_func in order to operate over tensors.
      :param x: (required) A tensor with the inputs.
      :param kwargs: See `parse_params`