littlemcmc.HamiltonianMC¶
-
class
littlemcmc.
HamiltonianMC
(logp_dlogp_func: Callable[[numpy.ndarray], Tuple[numpy.ndarray, numpy.ndarray]], model_ndim: int, scaling: Optional[numpy.ndarray] = None, is_cov: bool = False, potential=None, target_accept: float = 0.8, Emax: float = 1000, adapt_step_size: bool = True, step_scale: float = 0.25, gamma: float = 0.05, k: float = 0.75, t0: int = 10, step_rand: Optional[Callable[[float], float]] = None, path_length: float = 2.0, max_steps: int = 1024)¶ A sampler for continuous variables based on Hamiltonian mechanics.
See NUTS sampler for automatically tuned stopping time and step size scaling.
-
__init__
(logp_dlogp_func: Callable[[numpy.ndarray], Tuple[numpy.ndarray, numpy.ndarray]], model_ndim: int, scaling: Optional[numpy.ndarray] = None, is_cov: bool = False, potential=None, target_accept: float = 0.8, Emax: float = 1000, adapt_step_size: bool = True, step_scale: float = 0.25, gamma: float = 0.05, k: float = 0.75, t0: int = 10, step_rand: Optional[Callable[[float], float]] = None, path_length: float = 2.0, max_steps: int = 1024)¶ Set up the Hamiltonian Monte Carlo sampler.
Parameters: - logp_dlogp_func : Python callable
Python callable that returns the log-probability and derivative of the log-probability, respectively.
- model_ndim : int
Total number of parameters. Dimensionality of the output of
logp_dlogp_func
.- scaling : 1 or 2-dimensional array-like
Scaling for momentum distribution. 1 dimensional arrays are interpreted as a matrix diagonal.
- is_cov : bool
Treat scaling as a covariance matrix/vector if True, else treat it as a precision matrix/vector
- potential : littlemcmc.quadpotential.Potential, optional
An object that represents the Hamiltonian with methods
velocity
,energy
, andrandom
methods. Only one ofscaling
orpotential
may be non-None.- target_accept : float
Adapt the step size such that the average acceptance probability across the trajectories are close to target_accept. Higher values for target_accept lead to smaller step sizes. Setting this to higher values like 0.9 or 0.99 can help with sampling from difficult posteriors. Valid values are between 0 and 1 (exclusive).
- Emax : float
The maximum allowable change in the value of the Hamiltonian. Any trajectories that result in changes in the value of the Hamiltonian larger than
Emax
will be declared divergent.- adapt_step_size : bool, default=True
If True, performs dual averaging step size adaptation. If False,
k
,t0
,gamma
andtarget_accept
are ignored.- step_scale : float
Size of steps to take, automatically scaled down by 1 / (
size
** 0.25).- gamma : float, default .05
- k : float, default .75
Parameter for dual averaging for step size adaptation. Values between 0.5 and 1 (exclusive) are admissible. Higher values correspond to slower adaptation.
- t0 : int, default 10
Parameter for dual averaging. Higher values slow initial adaptation.
- step_rand : Python callable
Callback for step size adaptation. Called on the step size at each iteration immediately before performing dual-averaging step size adaptation.
- path_length : float, default=2
total length to travel
- max_steps : int, default=1024
The maximum number of leapfrog steps.
Methods
__init__
(logp_dlogp_func, …[, potential])Set up the Hamiltonian Monte Carlo sampler. reset
(start)Reset quadpotential and begin retuning. reset_tuning
(start)Reset quadpotential and step size adaptation, and begin retuning. stop_tuning
()Stop tuning. warnings
()Generate warnings from HMC sampler. Attributes
generates_stats
name
stats_dtypes
-