|  View source on GitHub | 
Runs one step of the No U-Turn Sampler.
Inherits From: TransitionKernel
tfp.experimental.mcmc.NoUTurnSampler(
    target_log_prob_fn,
    step_size,
    max_tree_depth=10,
    unrolled_leapfrog_steps=1,
    num_trajectories_per_step=1,
    use_auto_batching=True,
    stackless=False,
    backend=None,
    seed=None,
    name=None
)
The No U-Turn Sampler (NUTS) is an adaptive variant of the Hamiltonian Monte
Carlo (HMC) method for MCMC.  NUTS adapts the distance traveled in response to
the curvature of the target density.  Conceptually, one proposal consists of
reversibly evolving a trajectory through the sample space, continuing until
that trajectory turns back on itself (hence the name, "No U-Turn").  This
class implements one random NUTS step from a given
current_state.  Mathematical details and derivations can be found in
[Hoffman, Gelman (2011)][1].
The one_step function can update multiple chains in parallel. It assumes
that a prefix of leftmost dimensions of current_state index independent
chain states (and are therefore updated independently).  The output of
target_log_prob_fn(*current_state) should sum log-probabilities across all
event dimensions.  Slices along the rightmost dimensions may have different
target distributions; for example, current_state[0][0, ...] could have a
different target distribution from current_state[0][1, ...].  These
semantics are governed by target_log_prob_fn(*current_state). (The number of
independent chains is tf.size(target_log_prob_fn(*current_state)).)
pick sensible step sizes, or implement step size adaptation, or both.
References
[1] Matthew D. Hoffman, Andrew Gelman. The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo. 2011. https://arxiv.org/pdf/1111.4246.pdf
| Attributes | |
|---|---|
| experimental_shard_axis_names | The shard axis names for members of the state. | 
| is_calibrated | Returns Trueif Markov chain converges to specified distribution.
 | 
| parameters | |
Methods
bootstrap_results
bootstrap_results(
    init_state
)
Creates initial previous_kernel_results using a supplied state.
copy
copy(
    **override_parameter_kwargs
)
Non-destructively creates a deep copy of the kernel.
| Args | |
|---|---|
| **override_parameter_kwargs | Python String/value dictionaryof
initialization arguments to override with new values. | 
| Returns | |
|---|---|
| new_kernel | TransitionKernelobject of same type asself,
initialized with the union of self.parameters and
override_parameter_kwargs, with any shared keys overridden by the
value of override_parameter_kwargs, i.e.,dict(self.parameters, **override_parameters_kwargs). | 
experimental_with_shard_axes
experimental_with_shard_axes(
    shard_axis_names
)
Returns a copy of the kernel with the provided shard axis names.
| Args | |
|---|---|
| shard_axis_names | a structure of strings indicating the shard axis names for each component of this kernel's state. | 
| Returns | |
|---|---|
| A copy of the current kernel with the shard axis information. | 
one_step
one_step(
    current_state, previous_kernel_results
)
Runs one iteration of the No U-Turn Sampler.
| Args | |
|---|---|
| current_state | Tensoror PythonlistofTensors representing the
current state(s) of the Markov chain(s). The firstrdimensions index
independent chains,r = tf.rank(target_log_prob_fn(*current_state)). | 
| previous_kernel_results | collections.namedtuplecontainingTensors
representing values from previous calls to this function (or from thebootstrap_resultsfunction.) | 
| Returns | |
|---|---|
| next_state | Tensoror Python list ofTensors representing the state(s)
of the Markov chain(s) after takingself.num_trajectories_per_stepsteps. Has same type and shape ascurrent_state. | 
| kernel_results | collections.namedtupleof internal calculations used to
advance the chain. |