code: def adv_regularizer(adv_neighbors, target_scores, model_fn, loss_fn):
      """Calculates adversarial loss from generated adversarial samples.
  
      Args:
        adv_neighbors: dense `float32` tensor, with two possible shapes: (a)
          `[batch_size, feat_len]` for pointwise samples, or (b)
          `[batch_size, seq_len, feat_len]` for sequence samples.
        target_scores: target tensor used to compute loss.
        model_fn: a method that has input tensor (same shape as `adv_neighbors`),
          `is_train` and `reuse` as inputs, and returns predicted logits.
        loss_fn: a loss function that has `target` and `prediction` as inputs, and
          returns a `float32` scalar.
  
      Returns:
        adv_loss: a `float32` denoting the adversarial loss.
      """
      adv_predictions = model_fn(
          adv_neighbors, is_train=tf.constant(False), reuse=True
      )
      adv_loss = loss_fn(target_scores, adv_predictions)
      tf.compat.v1.summary.scalar("adv_loss", adv_loss)
      return adv_loss
  
imports: from neural_structured_learning.lib import distances
  from neural_structured_learning.lib import utils
  import tensorflow
label_desc: Use image node_id 1 for calling a global function with example usage: adv_regularizer(adv_neighbors, target_scores, model_fn, loss_fn) and returns: adv_loss