code: def generator(self, img):
      assert img is not None
      with argscope(
          [Conv2D, Conv2DTranspose],
          activation=BNLReLU,
          kernel_size=4,
          strides=2,
      ), argscope(Conv2DTranspose, activation=BNReLU):
          l = (
              LinearWrap(img)
              .Conv2D("conv0", NF, activation=tf.nn.leaky_relu)
              .Conv2D("conv1", NF * 2)
              .Conv2D("conv2", NF * 4)
              .Conv2D("conv3", NF * 8)
              .Conv2DTranspose("deconv0", NF * 4)
              .Conv2DTranspose("deconv1", NF * 2)
              .Conv2DTranspose("deconv2", NF * 1)
              .Conv2DTranspose("deconv3", 3, activation=tf.identity)
              .tf.sigmoid()()
          )
      return l
  
file_path: tensorpack/examples/GAN/DiscoGAN-CelebA.py
imports: import argparse
  import numpy
  import os
  import tensorflow
  from tensorpack import *
  from tensorpack.tfutils.scope_utils import auto_reuse_variable_scope
  from tensorpack.tfutils.summary import add_moving_summary
  from GAN import GANModelDesc, SeparateGANTrainer
label_desc: Use image node_id 2 for calling the Model obj's underlying member method code with example usage: obj.generator(img) and returns: l