code: def get_symbol(num_classes=10, add_stn=False, **kwargs):
      data = mx.symbol.Variable("data")
      if add_stn:
          data = mx.sym.SpatialTransformer(
              data=data,
              loc=get_loc(data),
              target_shape=(28, 28),
              transform_type="affine",
              sampler_type="bilinear",
          )
      # first conv
      conv1 = mx.symbol.Convolution(
          data=data, kernel=(5, 5), num_filter=20
      )
      tanh1 = mx.symbol.Activation(data=conv1, act_type="tanh")
      pool1 = mx.symbol.Pooling(
          data=tanh1, pool_type="max", kernel=(2, 2), stride=(2, 2)
      )
      # second conv
      conv2 = mx.symbol.Convolution(
          data=pool1, kernel=(5, 5), num_filter=50
      )
      tanh2 = mx.symbol.Activation(data=conv2, act_type="tanh")
      pool2 = mx.symbol.Pooling(
          data=tanh2, pool_type="max", kernel=(2, 2), stride=(2, 2)
      )
      # first fullc
      flatten = mx.symbol.Flatten(data=pool2)
      fc1 = mx.symbol.FullyConnected(data=flatten, num_hidden=500)
      tanh3 = mx.symbol.Activation(data=fc1, act_type="tanh")
      # second fullc
      fc2 = mx.symbol.FullyConnected(data=tanh3, num_hidden=num_classes)
      # loss
      lenet = mx.symbol.SoftmaxOutput(data=fc2, name="softmax")
      return lenet
  
label_desc: Use image node_id 2 for calling a global function with example usage: get_symbol(num_classes, add_stn) and returns: lenet