code: def create_module(sym, data_shapes, label_shapes, label_names, gpus=''):
      
      if gpus == '':
          devices = mx.cpu()
      else:
          devices = [mx.gpu(int(i)) for i in gpus.split(',')]
  
      data_names = [data_shape[0] for data_shape in data_shapes]
  
      mod = mx.mod.Module(
          symbol=sym,
          data_names=data_names,
          context=devices,
          label_names=label_names
      )
      mod.bind(
          for_training=False,
          data_shapes=data_shapes,
          label_shapes=label_shapes
      )
      return mod
docs: Creates a new MXNet module.
  
      Parameters
      ----------
      sym : Symbol
          An MXNet symbol.
  
      input_shape: tuple
          The shape of the input data in the form of (batch_size, channels, height, width)
  
      files: list of strings
          List of URLs pertaining to files that need to be downloaded in order to use the model.
  
      data_shapes: list of tuples.
          List of tuples where each tuple is a pair of input variable name and its shape.
  
      label_shapes: list of (str, tuple)
          Typically is ``data_iter.provide_label``.
  
      label_names: list of str
          Name of the output labels in the MXNet symbolic graph.
  
      gpus: str
          Comma separated string of gpu ids on which inferences are executed. E.g. 3,5,6 would refer to GPUs 3, 5 and 6.
          If empty, we use CPU.
  
      Returns
      -------
      MXNet module