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()
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()
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()