code: def D_wgan(
      G,
      D,
      opt,
      training_set,
      minibatch_size,
      reals,
      labels,
      wgan_epsilon=0.001,
  ):
      _ = opt, training_set
      latents = tf.random_normal(
          [minibatch_size] + G.input_shapes[0][1:]
      )
      fake_images_out = G.get_output_for(
          latents, labels, is_training=True
      )
      real_scores_out = D.get_output_for(
          reals, labels, is_training=True
      )
      fake_scores_out = D.get_output_for(
          fake_images_out, labels, is_training=True
      )
      real_scores_out = autosummary("Loss/scores/real", real_scores_out)
      fake_scores_out = autosummary("Loss/scores/fake", fake_scores_out)
      loss = fake_scores_out - real_scores_out
      with tf.name_scope("EpsilonPenalty"):
          epsilon_penalty = autosummary(
              "Loss/epsilon_penalty", tf.square(real_scores_out)
          )
          loss += epsilon_penalty * wgan_epsilon
      return loss, None
  
file_path: insightface/reconstruction/ostec/external/stylegan2/training/loss.py
imports: import numpy
  import tensorflow
  import dnnlib.tflib
  from dnnlib.tflib.autosummary import autosummary
label_desc: Use image node_id 7 for calling a global function with example usage: D_wgan(G, D, opt, training_set, minibatch_size, reals, labels, wgan_epsilon) and returns: loss,  None