class_docstr: ### Description
  Generic Generative Adversarial Network
  
  ### Diagram
  
  RANDOM NOISE --> [GENERATOR] --> [DISCRIMINATOR] --> fake logits
  TRAINING SET ------------------> [DISCRIMINATOR] --> real logits
  
  ### Constraints
class_docstr_tok: ["#","#","#","Description","Generic","Generative","Adversarial","Network","#","#","#","Diagram","RANDOM","NOISE","--",">","[","GENERATOR","]","--",">","[","DISCRIMINATOR","]","--",">","fake","logits","TRAINING","SET","--","--","--","--","--","--","--","--","--",">","[","DISCRIMINATOR","]","--",">","real","logits","#","#","#","Constraints"]
code: def __init__(self, generator, discriminator, name="generic_GAN"):
      self._generator = generator
      self._discriminator = discriminator
      super(GenericGAN, self).__init__(name=name)
  
file_path: NiftyNet/niftynet/network/simple_gan.py
imports: from __future__ import absolute_import, print_function
  import tensorflow
  import numpy
  from niftynet.layer.base_layer import TrainableLayer
label_desc: Use image node_id 1 to create a new GenericGAN object from inherited base classes: TrainableLayer with example: obj = GenericGAN(generator, discriminator, name)