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

def create_module(sym, data_shapes, label_shapes, label_names, gpus=''):
    """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
    """
    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