code: def __init__(
      self,
      linear_size=1024,
      num_stage=3,
      p_dropout=0.5,
      spectral_norm=False,
      use_bn=True,
  ):
      super(SimpleDiscriminator, self).__init__()
  
      self.linear_size = linear_size
      self.p_dropout = p_dropout
      self.num_stage = num_stage
      self.use_spectral_norm = spectral_norm
      self.use_bn = use_bn
  
      # 2d joints
      self.input_size = 17 * 2
      # process input to linear size
      self.w1 = nn.Linear(self.input_size, self.linear_size)
      if self.use_spectral_norm:
          self.w1 = nn.utils.spectral_norm(self.w1)
      self.batch_norm1 = nn.BatchNorm1d(self.linear_size)
      self.linear_stages = []
      for l in range(num_stage):
          self.linear_stages.append(
              Linear(
                  self.linear_size,
                  self.p_dropout,
                  spectral_norm=spectral_norm,
                  use_bn=use_bn,
              )
          )
      self.linear_stages = nn.ModuleList(self.linear_stages)
      self.out = nn.Linear(self.linear_size, 1)
      if self.use_spectral_norm:
          self.out = nn.utils.spectral_norm(self.out)
  
imports: import torch
  import torch.nn
  import numpy
  import pickle
  from lib.utils.misc import init_weights, load_pickle
  from lib.utils.utils import Transform3D, transform_3d, transform_3d_v2
  from lib.models.building_blocks import ResBlock
  from lib.models.scaler import get_scaler
  from lib.models.rotater import get_rotater
  from lib.models.lifter import get_lifter_before, get_lifter_after
  from lib.models.simple_model import LinearModelBefore, LinearModelAfter, Linear
  from lib.utils.utils import rotate, rotate2
label_desc: Use image node_id 1 to create a new SimpleDiscriminator object from inherited base classes: nn with example: obj = SimpleDiscriminator(linear_size, num_stage, p_dropout, spectral_norm, use_bn)