code: def mobile_net(
      num_classes=1000,
      data_shape=(1, 3, 224, 224),
      dtype="float32",
      alpha=1.0,
      is_shallow=False,
      layout="NCHW",
  ):
      """Function to construct a MobileNet"""
      data = relay.var("data", shape=data_shape, dtype=dtype)
      body = conv_block(
          data,
          "conv_block_1",
          int(32 * alpha),
          strides=(2, 2),
          layout=layout,
      )
      body = separable_conv_block(
          body,
          "separable_conv_block_1",
          int(32 * alpha),
          int(64 * alpha),
          layout=layout,
          dtype=dtype,
      )
      body = separable_conv_block(
          body,
          "separable_conv_block_2",
          int(64 * alpha),
          int(128 * alpha),
          downsample=True,
          layout=layout,
          dtype=dtype,
      )
      body = separable_conv_block(
          body,
          "separable_conv_block_3",
          int(128 * alpha),
          int(128 * alpha),
          layout=layout,
          dtype=dtype,
      )
      body = separable_conv_block(
          body,
          "separable_conv_block_4",
          int(128 * alpha),
          int(256 * alpha),
          downsample=True,
          layout=layout,
          dtype=dtype,
      )
      body = separable_conv_block(
          body,
          "separable_conv_block_5",
          int(256 * alpha),
          int(256 * alpha),
          layout=layout,
          dtype=dtype,
      )
      body = separable_conv_block(
          body,
          "separable_conv_block_6",
          int(256 * alpha),
          int(512 * alpha),
          downsample=True,
          layout=layout,
          dtype=dtype,
      )
      if is_shallow:
          body = separable_conv_block(
              body,
              "separable_conv_block_7",
              int(512 * alpha),
              int(1024 * alpha),
              downsample=True,
              layout=layout,
              dtype=dtype,
          )
          body = separable_conv_block(
              body,
              "separable_conv_block_8",
              int(1024 * alpha),
              int(1024 * alpha),
              downsample=True,
              layout=layout,
              dtype=dtype,
          )
      else:
          for i in range(7, 12):
              body = separable_conv_block(
                  body,
                  f"separable_conv_block_{i}",
                  int(512 * alpha),
                  int(512 * alpha),
                  layout=layout,
                  dtype=dtype,
              )
          body = separable_conv_block(
              body,
              "separable_conv_block_12",
              int(512 * alpha),
              int(1024 * alpha),
              downsample=True,
              layout=layout,
              dtype=dtype,
          )
          body = separable_conv_block(
              body,
              "separable_conv_block_13",
              int(1024 * alpha),
              int(1024 * alpha),
              layout=layout,
              dtype=dtype,
          )
      pool = relay.nn.global_avg_pool2d(data=body, layout=layout)
      flatten = relay.nn.batch_flatten(data=pool)
      weight = relay.var("fc_weight")
      bias = relay.var("fc_bias")
      fc = relay.nn.dense(
          data=flatten, weight=weight, units=num_classes
      )
      fc = relay.nn.bias_add(fc, bias)
      softmax = relay.nn.softmax(data=fc)
      return relay.Function(relay.analysis.free_vars(softmax), softmax)
  
imports: from tvm import relay
  from .None import layers
  from .init import create_workload
label_desc: Use image node_id 3 for calling a global function with example usage: mobile_net(num_classes, data_shape, dtype, alpha, is_shallow, layout) and returns: relay