code: def get_or_guess_labels(model, x, **kwargs):
      """
      Get the label to use in generating an adversarial example for x.
      The kwargs are fed directly from the kwargs of the attack.
      If 'y' is in kwargs, then assume it's an untargeted attack and
      use that as the label.
      If 'y_target' is in kwargs and is not none, then assume it's a
      targeted attack and use that as the label.
      Otherwise, use the model's prediction as the label and perform an
      untargeted attack.
  
      :param model: PyTorch model. Do not add a softmax gate to the output.
      :param x: Tensor, shape (N, d_1, ...).
      :param y: (optional) Tensor, shape (N).
      :param y_target: (optional) Tensor, shape (N).
      """
      if "y" in kwargs and "y_target" in kwargs:
          raise ValueError("Can not set both 'y' and 'y_target'.")
      if "y" in kwargs:
          labels = kwargs["y"]
      elif "y_target" in kwargs and kwargs["y_target"] is not None:
          labels = kwargs["y_target"]
      else:
          _, labels = torch.max(model(x), 1)
      return labels
  
imports: import numpy
  import torch
label_desc: Use image node_id 2 for calling a global function with example usage: get_or_guess_labels(model, x) and returns: labels