tqdm=tqdm, tqdm_iter=True, ) print(sampler.noisy_logjoint(kind='pf', pf='paris', N=1000, return_loglike=True, tqdm=tqdm)) ############################################################################### # Evaluate Fit ############################################################################### from sgmcmc_ssm.evaluator import OfflineEvaluator, half_average_parameters_list from sgmcmc_ssm.metric_functions import ( sample_function_parameters, noisy_logjoint_loglike_metric, ) # Evaluate Loglikelihood on Training Set metric_functions=[ noisy_logjoint_loglike_metric(tqdm=tqdm, kind='pf', pf='paris', N=1000), ] sample_functions=sample_function_parameters(['A', 'Q', 'R']) # Evaluate SGLD samples sgld_evaluator = OfflineEvaluator(sampler, parameters_list=sgld_parameters, parameters_times=sgld_time, metric_functions = metric_functions, sample_functions = sample_functions, ) sgld_evaluator.evaluate(40, tqdm=tqdm) ld_evaluator = OfflineEvaluator(sampler, parameters_list=ld_parameters, parameters_times=ld_time,
sampler.parameters = sampler.prior.sample_prior() print(sampler.parameters) for _ in range(5): print(sampler.sample_sgrld(epsilon=0.1, preconditioner=preconditioner).project_parameters()) ## Using Evaluator from sgmcmc_ssm import SamplerEvaluator from sgmcmc_ssm.metric_functions import ( sample_function_parameters, noisy_logjoint_loglike_metric, metric_function_parameters, ) metric_functions = [ noisy_logjoint_loglike_metric(), metric_function_parameters( parameter_names=['A', 'Q', 'C', 'R'], target_values=[parameters.A, parameters.Q, parameters.C, parameters.R], metric_names = ['mse', 'mse', 'mse', 'mse'], ) ] sample_functions = sample_function_parameters( ['A', 'Q', 'LQinv', 'C', 'R', 'LRinv'], ) sampler = SLDSSampler(**parameters.dim) sampler.setup(data['observations'], prior) sampler.init_sample_latent() ## THIS IS IMPORTANT
for _ in range(5): print(sampler.sample_sgld(kind='pf', N=1000, epsilon=0.1, subsequence_length=10, buffer_length=5 ).project_parameters()) ## Using Evaluator from sgmcmc_ssm import SamplerEvaluator from sgmcmc_ssm.metric_functions import ( sample_function_parameters, noisy_logjoint_loglike_metric, metric_function_parameters, ) metric_functions = [ noisy_logjoint_loglike_metric(kind='pf', N=1000), metric_function_parameters( parameter_names=['A', 'LQinv', 'LRinv'], target_values=[parameters.A, parameters.LQinv, parameters.LRinv], metric_names = ['mse', 'mse', 'mse'], ) ] sample_functions = sample_function_parameters( ['A', 'Q', 'LQinv', 'R', 'LRinv'], ) sampler = SVMSampler(**parameters.dim) sampler.setup(data['observations'], prior) evaluator = SamplerEvaluator( sampler=sampler,
for parameter_name in parameter_names2 ], metric_names=['mse' for parameter_name in parameter_names2], criteria=[min for parameter_name in parameter_names2], ), metric_function_parameters( parameter_names3, target_values=[ getattr(my_data['parameters'], parameter_name) for parameter_name in parameter_names3 ], metric_names=['mse' for parameter_name in parameter_names2], ), # metric_compare_x(my_data['latent_vars']['x']), # metric_compare_z(my_data['latent_vars']['z']), noisy_logjoint_loglike_metric(subsequence_length=50, buffer_length=10), ] my_sample_functions = [ sample_function_parameters(parameter_names2 + ['LRinv', 'LQinv']), ] my_evaluators = { "{0}_{1}".format(*key): SamplerEvaluator(sampler, my_metric_functions, my_sample_functions, sampler_name="{0}_{1}".format(*key)) for key, sampler in my_samplers.items() } keys = my_evaluators.keys() for step in tqdm(range(1000)):
parameters_list = sampler.fit( num_iters=1000, iter_type='SGRLD', epsilon=0.1, subsequence_length=16, buffer_length=4, tqdm=tqdm, output_all=True, ) ## Specify Metric Functions metric_functions = [] ### Loglikelihood and Logjoint from sgmcmc_ssm.metric_functions import noisy_logjoint_loglike_metric metric_functions += [noisy_logjoint_loglike_metric()] ### log10 MSE at recovering X from sgmcmc_ssm.metric_functions import metric_compare_x metric_functions += [metric_compare_x(data['latent_vars'])] ### log10 MSE at recovering parameters from sgmcmc_ssm.metric_functions import metric_function_parameters metric_functions += [ metric_function_parameters( parameter_names=['A', 'Q', 'R'], target_values=[parameters.A, parameters.Q, parameters.R], metric_names=['logmse', 'logmse', 'logmse'], ) ]
fig.suptitle('Final SGRLD Fit') ################################################################################ # Sampler Evaluation ################################################################################ from sgmcmc_ssm.evaluator import OfflineEvaluator, half_average_parameters_list from sgmcmc_ssm.metric_functions import ( sample_function_parameters, noisy_logjoint_loglike_metric, noisy_predictive_logjoint_loglike_metric, ) # Evaluate Loglikelihood on Training and Predictive Loglikelihood on Test metric_functions=[ noisy_logjoint_loglike_metric(tqdm=tqdm, observations=Y), noisy_predictive_logjoint_loglike_metric( num_steps_ahead=3, observations=Y_test, tqdm=tqdm), ] sample_functions=sample_function_parameters(['pi', 'logit_pi', 'mu', 'R']) # Evaluate Gibbs samples gibbs_evaluator = OfflineEvaluator(sampler, parameters_list=half_average_parameters_list(gibbs_parameters), parameters_times=gibbs_time, metric_functions = metric_functions, sample_functions = sample_functions, ) gibbs_evaluator.evaluate(16, tqdm=tqdm)