def METHOD_NAME(num_classes, num_layers=11, batch_norm=False, dtype="float32", **kwargs):
    """
    Parameters
    ----------
    num_classes : int, default 1000
        Number of classification classes.
    num_layers : int
        Number of layers for the variant of densenet. Options are 11, 13, 16, 19.
    batch_norm : bool, default False
        Use batch normalization.
    dtype: str, float32 or float16
        Data precision.
    """
    vgg_spec = {
        11: ([1, 1, 2, 2, 2], [64, 128, 256, 512, 512]),
        13: ([2, 2, 2, 2, 2], [64, 128, 256, 512, 512]),
        16: ([2, 2, 3, 3, 3], [64, 128, 256, 512, 512]),
        19: ([2, 2, 4, 4, 4], [64, 128, 256, 512, 512]),
    }
    if num_layers not in vgg_spec:
        raise ValueError(
            "Invalide num_layers {}. Possible choices are 11,13,16,19.".format(num_layers)
        )
    layers, filters = vgg_spec[num_layers]
    data = mx.sym.Variable(name="data")
    if dtype == "float16":
        data = mx.sym.Cast(data=data, dtype=np.float16)
    feature = get_feature(data, layers, filters, batch_norm)
    classifier = get_classifier(feature, num_classes)
    if dtype == "float16":
        classifier = mx.sym.Cast(data=classifier, dtype=np.float32)
    symbol = mx.sym.softmax(data=classifier, name="softmax")
    return symbol