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
Exemple #3
0
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,
Exemple #4
0
            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)