class_docstr: This attack was originally proposed by Miyato et al. (2016) and was used
  for virtual adversarial training.
  Paper link: https://arxiv.org/abs/1507.00677
  
  :param model: cleverhans.model.Model
  :param sess: optional tf.Session
  :param dtypestr: dtype of the data
  :param kwargs: passed through to super constructor
docstr: Generate symbolic graph for adversarial examples and return.
  
  :param x: The model's symbolic inputs.
  :param kwargs: See `parse_params`
code: def generate(self, x, **kwargs):
      """
      Generate symbolic graph for adversarial examples and return.
  
      :param x: The model's symbolic inputs.
      :param kwargs: See `parse_params`
      """
      # Parse and save attack-specific parameters
      assert self.parse_params(**kwargs)
  
      return vatm(
          self.model,
          x,
          self.model.get_logits(x),
          eps=self.eps,
          num_iterations=self.num_iterations,
          xi=self.xi,
          clip_min=self.clip_min,
          clip_max=self.clip_max,
      )
  
file_path: cleverhans/cleverhans_v3.1.0/cleverhans/attacks/virtual_adversarial_method.py
imports: import warnings
  import tensorflow
  from cleverhans.attacks.attack import Attack
  from cleverhans.model import Model, CallableModelWrapper
  from cleverhans.model import wrapper_warning_logits
  from cleverhans import utils_tf
label_desc: Use image node_id 2 for calling the VirtualAdversarialMethod obj's underlying member method code with example usage: obj.generate(x) and returns: vatm