TensorFlow 2.0 Beta is available Learn more

tfp.mcmc.UncalibratedHamiltonianMonteCarlo

Class UncalibratedHamiltonianMonteCarlo

Runs one step of Uncalibrated Hamiltonian Monte Carlo.

Inherits From: TransitionKernel

Defined in python/mcmc/hmc.py.

For more details on UncalibratedHamiltonianMonteCarlo, see HamiltonianMonteCarlo.

__init__

__init__(
    target_log_prob_fn,
    step_size,
    num_leapfrog_steps,
    state_gradients_are_stopped=False,
    seed=None,
    store_parameters_in_results=False,
    name=None
)

Initializes this transition kernel.

Args:

  • target_log_prob_fn: Python callable which takes an argument like current_state (or *current_state if it's a list) and returns its (possibly unnormalized) log-density under the target distribution.
  • step_size: Tensor or Python list of Tensors representing the step size for the leapfrog integrator. Must broadcast with the shape of current_state. Larger step sizes lead to faster progress, but too-large step sizes make rejection exponentially more likely. When possible, it's often helpful to match per-variable step sizes to the standard deviations of the target distribution in each variable.
  • num_leapfrog_steps: Integer number of steps to run the leapfrog integrator for. Total progress per HMC step is roughly proportional to step_size * num_leapfrog_steps.
  • state_gradients_are_stopped: Python bool indicating that the proposed new state be run through tf.stop_gradient. This is particularly useful when combining optimization over samples from the HMC chain. Default value: False (i.e., do not apply stop_gradient).
  • seed: Python integer to seed the random number generator.
  • store_parameters_in_results: If True, then step_size and num_leapfrog_steps are written to and read from eponymous fields in the kernel results objects returned from one_step and bootstrap_results. This allows wrapper kernels to adjust those parameters on the fly.
  • name: Python str name prefixed to Ops created by this function. Default value: None (i.e., 'hmc_kernel').

Properties

is_calibrated

Returns True if Markov chain converges to specified distribution.

TransitionKernels which are "uncalibrated" are often calibrated by composing them with the tfp.mcmc.MetropolisHastings TransitionKernel.

name

num_leapfrog_steps

Returns the num_leapfrog_steps parameter.

If store_parameters_in_results argument to the initializer was set to True, this only returns the value of the num_leapfrog_steps placed in the kernel results by the bootstrap_results method. The actual num_leapfrog_steps in that situation is governed by the previous_kernel_results argument to one_step method.

Returns:

  • num_leapfrog_steps: An integer Tensor.

parameters

Return dict of __init__ arguments and their values.

seed

state_gradients_are_stopped

step_size

Returns the step_size parameter.

If store_parameters_in_results argument to the initializer was set to True, this only returns the value of the step_size placed in the kernel results by the bootstrap_results method. The actual step size in that situation is governed by the previous_kernel_results argument to one_step method.

Returns:

  • step_size: A floating point Tensor or a list of such Tensors.

target_log_prob_fn

Methods

bootstrap_results

bootstrap_results(init_state)

Creates initial previous_kernel_results using a supplied state.

one_step

one_step(
    current_state,
    previous_kernel_results
)

Runs one iteration of Hamiltonian Monte Carlo.

Args:

  • current_state: Tensor or Python list of Tensors representing the current state(s) of the Markov chain(s). The first r dimensions index independent chains, r = tf.rank(target_log_prob_fn(*current_state)).
  • previous_kernel_results: collections.namedtuple containing Tensors representing values from previous calls to this function (or from the bootstrap_results function.)

Returns:

  • next_state: Tensor or Python list of Tensors representing the state(s) of the Markov chain(s) after taking exactly one step. Has same type and shape as current_state.
  • kernel_results: collections.namedtuple of internal calculations used to advance the chain.

Raises:

  • ValueError: if there isn't one step_size or a list with same length as current_state.