示例#1
0
        
        return instance
    
    def get_KernelAdaptiveLangevin_instance(D, target_log_pdf):
        step_size = 1.
        m = 500
        
        surrogate = KernelExpFiniteGaussian(sigma=10, lmbda=1., m=m, D=D)
        logger.info("kernel exp family uses %s" % surrogate.get_parameters())
        
        instance = KernelAdaptiveLangevin(D, target_log_pdf, surrogate, step_size)

        return instance
    
if __name__ == '__main__':
    Log.set_loglevel(20)
    
    D = 2
    
    bananicity = 0.03
    V = 100
    true_mean = np.zeros(D)
    true_var = np.ones(D)
    true_var[0] = 100
    true_var[1] = 20
    true_cov = np.diag(true_var)
    
    num_iter_per_particle = 200
    population_sizes = [5, 10, 25, 50, 100]
    
    num_repetitions = 30
示例#2
0
        proposal_mu = np.array([ 0.19404095, -0.14017837,  0.35465807, -0.22049461, -4.53669311])
        proposal_var = np.array([ 0.0898059 ,  0.07987   ,  0.60627872,  2.79810551,  4.48372874])
        proposal_L_C = np.diag(np.sqrt(proposal_var))
        proposal_L_C *= 2
        # these results were averaged over many repetitions.
        # mean: array([ 0.18482533, -0.13985885,  0.29183487, -0.52620493, -4.62597391])
        # var: array([ 0.10732838,  0.10290396,  0.51048946,  2.92114185,  4.70979457])
        # np.mean(var): 1.670
        # np.linalg.norm(mean): 4.671
        
        instance = AdaptiveIndependentMetropolis(D, target_log_pdf, gamma2, proposal_mu, proposal_L_C)
        
        return instance

if __name__ == '__main__':
    Log.set_loglevel(10)
    
    num_iter_per_particle = 100
    population_size = 50
    num_iter = population_size * num_iter_per_particle
    
    mdl = SVoneSP500Model()
    target_log_pdf = mdl.get_logpdf_closure()

    # number of particles used for integrating out the latent variables
    mdl.mdl_param.NX = mdl.mdl_param.NX * 1
    
    D = mdl.dim
    start = np.zeros(D)

    sampler = get_AdaptiveIndependentMetropolis_instance(D, target_log_pdf)
    return instance


def get_AdaptiveLangevin(D, target_log_pdf, grad, prec=False, step_size=1):

    acc_star = 0.574
    gamma2 = 0.1
    instance = AdaptiveLangevin(D, target_log_pdf, grad, step_size,
                                one_over_4th_root_t_schedule, acc_star)
    instance.do_preconditioning = prec
    instance.manual_gradient_step_size = 1
    return instance


if __name__ == '__main__':
    Log.set_loglevel(20)
    max_moment = 8
    D = 10
    pop_size = 10
    bananicity = 0.03
    V = 100
    Z = sample_banana(3000, D, bananicity, V)
    moments = np.array([(Z**i).mean(0) for i in range(1, max_moment)])
    pk = PolynomialKernel(3)
    print(moments)
    true_correct = np.linalg.inv(np.cov(Z.T))
    target_log_pdf = lambda x: log_banana_pdf(
        x, bananicity, V, compute_grad=False)
    target_grad = lambda x: log_banana_pdf(x, bananicity, V, compute_grad=True)

    samplers = [