docstr: return a (b, 1) logits
docstr_tok: ["return","a","(","b",",","1",")","logits"]
code: def discriminator(self, inputs, outputs):
      """return a (b, 1) logits"""
      l = tf.concat([inputs, outputs], 3)
      with argscope(
          Conv2D, kernel_size=4, strides=2, activation=BNLReLU
      ):
          l = (
              LinearWrap(l)
              .Conv2D("conv0", NF, activation=tf.nn.leaky_relu)
              .Conv2D("conv1", NF * 2)
              .Conv2D("conv2", NF * 4)
              .Conv2D("conv3", NF * 8, strides=1, padding="VALID")
              .Conv2D(
                  "convlast",
                  1,
                  strides=1,
                  padding="VALID",
                  activation=tf.identity,
              )()
          )
      return l
  
imports: import argparse
  import functools
  import glob
  import numpy
  import os
  import cv2
  import tensorflow
  from tensorpack import *
  from tensorpack.tfutils.scope_utils import auto_reuse_variable_scope
  from tensorpack.tfutils.summary import add_moving_summary
  from tensorpack.utils.gpu import get_num_gpu
  from tensorpack.utils.viz import stack_patches
  from GAN import GANModelDesc, GANTrainer
label_desc: Use image node_id 3 for calling the Model obj's underlying member method code with example usage: obj.discriminator(inputs, outputs) and returns: l