def proposal(self, current, current_log_pdf, **kwargs): if self.surrogate.n >= self.num_minimum_samples_to_use_drift: return AdaptiveLangevin.proposal(self, current, current_log_pdf, **kwargs) else: # random walk until using gradients logger.debug("Waiting to use kernel gradient. Seen %d/%d data." % \ (self.surrogate.n, self.num_minimum_samples_to_use_drift)) return AdaptiveMetropolis.proposal(self, current, current_log_pdf, **kwargs) return AdaptiveMetropolis.proposal(self, current, current_log_pdf, **kwargs)
def __init__(self, D, target_log_pdf, grad, step_size, schedule=None, acc_star=None): StaticLangevin.__init__(self, D, target_log_pdf, grad, step_size, schedule, acc_star) # gamma2 in AM is not used gamma2_dummy = 0.1 AdaptiveMetropolis.__init__(self, D, target_log_pdf, step_size, gamma2_dummy, schedule, acc_star)
def get_AM_5(D, target_log_pdf): step_size = 5. acc_star = 0.234 gamma2 = 0.1 instance = AdaptiveMetropolis(D, target_log_pdf, step_size, gamma2, one_over_4th_root_t_schedule, acc_star) return instance
def get_AdaptiveMetropolis_instance(D, target_log_pdf): step_size = 8. schedule = one_over_sqrt_t_schedule acc_star = 0.234 gamma2 = 0.1 instance = AdaptiveMetropolis(D, target_log_pdf, step_size, gamma2, schedule, acc_star) return instance
def set_batch(self, Z): return AdaptiveMetropolis.set_batch(self, Z)
def update(self, Z, num_new=1, log_weights=None): return AdaptiveMetropolis.update(self, Z, num_new, log_weights)
def get_AdaptiveMetropolis_instance(D, target_log_pdf): step_size = 1. gamma2 = 0.1 instance = AdaptiveMetropolis(D, target_log_pdf, step_size, gamma2) return instance