def build_optimiser(name, **kwargs):
    """
    build an optimiser
    :param name: the name of optimiser
    :type name: str
    :param kwargs: the arguments that are passed to optimiser
    :return: the created optimiser wrapper
    :rtype: BaseOptimiserWrapper
    """
    optimiser = None
    if name.lower() == 'adam':
        from convtt.train.optimisers import AdamOptimiserWrapper
        optimiser = AdamOptimiserWrapper(**kwargs)
    elif name.lower() == 'scheduledsgd':
        from convtt.train.optimisers import ScheduledSGDOptimiserWrapper
        optimiser = ScheduledSGDOptimiserWrapper(**kwargs)
    return optimiser
