Skip to content

Repository files navigation

hasty-hamiltonian

Speedy, gradient-based traversal through parameter space.

Exports a mcmc function that prints a trace to stdout, a chain function for collecting results in memory, and a hamiltonian transition operator that can be used more generally.

If you don't want to calculate your gradients by hand you can use the handy ad library for automatic differentiation.

import Numeric.AD (grad)
import Numeric.MCMC.Hamiltonian

target :: RealFloat a => [a] -> a
target [x0, x1] = negate ((x0 + 2 * x1 - 7) ^ 2 + (2 * x0 + x1 - 5) ^ 2)

gTarget :: [Double] -> [Double]
gTarget = grad target

booth :: Target [Double]
booth = Target target (Just gTarget)

main :: IO ()
main = withSystemRandom . asGenIO $ mcmc 10000 0.05 20 [0, 0] booth

trace

hasty-hamiltonian is a member of the declarative suite of libraries, containing a bunch of MCMC algorithms that play nicely together.

About

Speedy gradient-based traversal through parameter space.

Resources

Stars

6 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages