Example #1
0
                              D=D,
                              bananicity=bananicity,
                              V=V,
                              num_benchmark_samples=num_benchmark_samples,
                              population_size=population_size,
                              num_iter_per_particle=num_iter_per_particle,
                                
                              mmd=mmd,
                              rmse_mean=rmse_mean,
                              rmse_cov=rmse_cov,
                              time_taken=time_taken,
                              )
        
                if False:
                    import matplotlib.pyplot as plt
                    visualize_scatter_2d(samples)
                    plt.title("%s" % sampler.get_name())
                    
                    if isinstance(sampler, OracleKernelAdaptiveLangevin):
                        Xs = np.linspace(-30, 30, 50)
                        Ys = np.linspace(-20, 40, 50)
                        visualise_fit_2d(sampler.surrogate, samples, Xs, Ys)
                    
                    if isinstance(sampler, StaticLangevin):
                        plt.figure()
                        plt.grid(True)
                        plt.title("Drift norms %s" % sampler.get_name())
                        plt.hist(sampler.forward_drift_norms)
                    
                    plt.show()
Example #2
0
    
    D = mdl.dim
    pop_size=50
    target_log_pdf = mdl.get_logpdf_closure()

    samplers = [
#                get_StaticMetropolis_instance(D, target_log_pdf),
#                get_AdaptiveMetropolis_instance(D, target_log_pdf),
#                get_OracleKameleon_instance(D, target_log_pdf),
#                get_Kameleon_instance(D, target_log_pdf),
#                get_StaticLangevin_instance(D, target_log_pdf, target_grad),
#                get_AM_5(D, target_log_pdf),
                get_AM_1(D, target_log_pdf),
#                get_AM_2(D, target_log_pdf),
#                get_AM_05(D, target_log_pdf),
                ]
    
    for sampler in samplers:
        print(sampler.__class__)
        start = mdl.rvs(pop_size)
        num_iter = 5000
        
        samples, log_target_densities, times = mini_pmc(sampler, start, num_iter, pop_size)
        mom_samp = np.array([(samples**i).mean(0) for i in range(1,4)])
        
        visualize_scatter_2d(samples[:,:2])
        Log.get_logger().info('===='+str(sampler.step_size)+'====')

    plt.show()

Example #3
0
                    sampler_name=sampler.get_name(),
                    D=D,
                    bananicity=bananicity,
                    V=V,
                    num_benchmark_samples=num_benchmark_samples,
                    population_size=population_size,
                    num_iter_per_particle=num_iter_per_particle,
                    mmd=mmd,
                    rmse_mean=rmse_mean,
                    rmse_cov=rmse_cov,
                    time_taken=time_taken,
                )

                if False:
                    import matplotlib.pyplot as plt
                    visualize_scatter_2d(samples)
                    plt.title("%s" % sampler.get_name())

                    if isinstance(sampler, OracleKernelAdaptiveLangevin):
                        Xs = np.linspace(-30, 30, 50)
                        Ys = np.linspace(-20, 40, 50)
                        visualise_fit_2d(sampler.surrogate, samples, Xs, Ys)

                    if isinstance(sampler, StaticLangevin):
                        plt.figure()
                        plt.grid(True)
                        plt.title("Drift norms %s" % sampler.get_name())
                        plt.hist(sampler.forward_drift_norms)

                    plt.show()
    target_grad = lambda x: log_banana_pdf(x, bananicity, V, compute_grad=True)

    samplers = [
                get_StaticMetropolis_instance(D, target_log_pdf),
                get_AdaptiveMetropolis_instance(D, target_log_pdf),
                get_OracleKameleon_instance(D, target_log_pdf),
                get_Kameleon_instance(D, target_log_pdf),
                get_StaticLangevin_instance(D, target_log_pdf, target_grad),
                get_AdaptiveLangevin_instance(D, target_log_pdf, target_grad),
                get_OracleKernelAdaptiveLangevin_instance(D, target_log_pdf, target_grad),
                get_KernelAdaptiveLangevin_instance(D, target_log_pdf, target_grad),
                ]
    
    # SMC sampler
    for sampler in samplers:
        start = np.zeros(D)
        
        num_population = 200
        num_samples = num_population
        bridge_start = mvnorm(np.zeros(D), np.eye(D) * 10)
        samples, log_target_densities, step_sizes, acceptance_rates, evid = mini_smc(num_samples,
                                                                                      num_population,
                                                                                      bridge_start,
                                                                                      target_log_pdf,
                                                                                      sampler)
                    
        visualize_scatter_2d(samples, step_sizes, acceptance_rates)
        plt.suptitle("%s" % (sampler.__class__.__name__))
    plt.show()

    D = mdl.dim
    pop_size = 50
    target_log_pdf = mdl.get_logpdf_closure()

    samplers = [
        #                get_StaticMetropolis_instance(D, target_log_pdf),
        #                get_AdaptiveMetropolis_instance(D, target_log_pdf),
        #                get_OracleKameleon_instance(D, target_log_pdf),
        #                get_Kameleon_instance(D, target_log_pdf),
        #                get_StaticLangevin_instance(D, target_log_pdf, target_grad),
        #                get_AM_5(D, target_log_pdf),
        get_AM_1(D, target_log_pdf),
        #                get_AM_2(D, target_log_pdf),
        #                get_AM_05(D, target_log_pdf),
    ]

    for sampler in samplers:
        print(sampler.__class__)
        start = mdl.rvs(pop_size)
        num_iter = 5000

        samples, log_target_densities, times = mini_pmc(
            sampler, start, num_iter, pop_size)
        mom_samp = np.array([(samples**i).mean(0) for i in range(1, 4)])

        visualize_scatter_2d(samples[:, :2])
        Log.get_logger().info('====' + str(sampler.step_size) + '====')

    plt.show()