class_docstr: ### Description
  Specification of generator and discriminator for generic gan
  
  ### Building blocks
  [GENERATOR]       - See ImageGenerator class below
  [DISCRIMINATOR]   - See ImageDiscriminator class below
  
  ### Diagram
  
  RANDOM NOISE --> [GENERATOR] --> [DISCRIMINATOR] --> fake logits
  TRAINING SET ------------------> [DISCRIMINATOR] --> real logits
  
  ### Constraints
class_docstr_tok: ["#","#","#","Description","Specification","of","generator","and","discriminator","for","generic","gan","#","#","#","Building","blocks","[","GENERATOR","]","-","See","ImageGenerator","class","below","[","DISCRIMINATOR","]","-","See","ImageDiscriminator","class","below","#","#","#","Diagram","RANDOM","NOISE","--",">","[","GENERATOR","]","--",">","[","DISCRIMINATOR","]","--",">","fake","logits","TRAINING","SET","--","--","--","--","--","--","--","--","--",">","[","DISCRIMINATOR","]","--",">","real","logits","#","#","#","Constraints"]
code: def __init__(self, name="simple_GAN"):
      generator = ImageGenerator(
          hidden_layer_channels=[128, 64, 32, 16], name="generator"
      )
      discriminator = ImageDiscriminator(
          hidden_layer_channels=[16, 32, 64, 128], name="discriminator"
      )
      super(SimpleGAN, self).__init__(generator, discriminator, 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 SimpleGAN object from inherited base classes: GenericGAN with example: obj = SimpleGAN(name)