def initializer(init_obj, shape, name, **kwargs):
    """
    Call an Initializer from an init_obj

    Parameters
    ----------
    init_obj : `init_obj`
            an init_obj is an initializer function or the tuple of (initializer function, dict of args)
            example : init_obj = glorot_uniform  or init_obj = (glorot_uniform, {'gain':tanh, 'borrow':False})
    shape : `tuple` or int
        shape of the return shared variables
    Returns
    -------
        Initialized shared variables
    """
    if not isinstance(init_obj, tuple):
        return init_obj(shape, name=name, **kwargs)
    else:
        kwargs.update(init_obj[1])
        return init_obj[0](shape, name=name, **kwargs)