def sample(self):
"""Define the computation graph for one hmc sampling."""
accept_rate, new_pos = hmc_sample(
self.pos, self.stepsize, self.num_steps, self.potential_fn
)
new_avg_accept_rate = tf.add(
self.avg_accept_slowness * self.avg_accept_rate,
(1.0 - self.avg_accept_slowness) * accept_rate
)
new_stepsize = tf.select(new_avg_accept_rate > self.target_accept_rate,
self.stepsize * self.stepsize_inc,
self.stepsize * self.stepsize_dec)
new_stepsize = tf.clip_by_value(
new_stepsize, self.stepsize_min, self.stepsize_max
)
updates = [self.pos.assign(new_pos),
self.stepsize.assign(new_stepsize),
self.avg_accept_rate.assign(new_avg_accept_rate)]
return new_pos, updates
# test =================
评论列表
文章目录