Comments (5)
@JaimeRZP can we fix this along with the efforts in #325?
In general, we want to capture the entire sampling state after an AHMC.step
call and pass it to the next step
call, so it is resumable and fully reproducible.
from advancedhmc.jl.
Done!
from advancedhmc.jl.
But rng
is an argument to AbstractMCMC.step
@yebai ; why do we want to also include it in the state? This is contrary to all other implementations of the AbstractMCMC-interface.
If you want it for reproducibility, then a) I'm a bit uncertain what scenario you have in mind, and b) you'd have to deepcopy
the rng
at every step
.
from advancedhmc.jl.
My original thought is to use non-mutating rng, so we need to return the new rng state after each step call and pass it to the next step call. The current design assumes mutating the rng state shared by all step calls, which is not ideal.
See, e.g., https://juliarandom.github.io/RandomNumbers.jl/stable/man/random123/
EDIT: we can use counter-based rngs -- saving the state is equivalent to saving the counter value, which is cheap.
from advancedhmc.jl.
I'm fully with you that keeping track of the rng
is potentially an idea to explore, but my argument is that this is not the current way we're doing things in AbstractMCMC, and so we should not start doing this here.
If we decide to add rng
to the state, then we should do this everywhere; not just in one of the packages.
Moreover, the rng
is also passed to the callback
and so the callback function is free to do whatever it wants with the rng
, e.g. saving it. So even for resuing chains, I don't see why the rng
needs to be added to the state
itself; it's already available.
EDIT: we can use counter-based rngs -- saving the state is equivalent to saving the counter value, which is cheap.
Am fully aware this is an option, but then you're suggesting always forcing usage of Random123? This is clearly not ideal.
from advancedhmc.jl.
Related Issues (20)
- README example fails HOT 3
- Step size initialization uses GLOBAL RNG instead of reproducible RNG from caller
- Forecasting
- Feature request: HMC sampling from convex polytopes defined by linear programs
- Add nuts-rs's metric adaptation HOT 15
- More friendly default `sample` interface HOT 9
- Weighted Log Likelihood #featurerequest
- Convinience Constructors HOT 16
- Objects of type LogTargetDensity are not callable HOT 2
- Removing support for AbstractMCMC.Sample piracy HOT 4
- Retest is broken HOT 2
- Moving ReadMe to Docs
- Component Arrays with DenseEuclideanMetric fails HOT 1
- Doc string error for NUTS HOT 2
- `AbstractMCMC.step` interface broken HOT 3
- Define a model HOT 1
- In sample progress=true prints more than a progress-bar HOT 1
- Accessing samples?
- Progress message `ratio_divergent_transitions_during_adaption` bug HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from advancedhmc.jl.