Specification of sampler #606
Replies: 4 comments 2 replies
-
I disagree. The philosophy for the design of BlackJax has been to give the user as much flexibility as possible.
EDIT: other reasons:
|
Beta Was this translation helpful? Give feedback.
-
@junpenglao I am not sure where it's at but didn't you have design notes that arose from your work on vmapping NUTS at some point? All these points got raised then if I remember correctly, but I'd be damned if I can find a trace of this. |
Beta Was this translation helpful? Give feedback.
-
Thanks for your response! That makes sense. I suppose if I have an objection, it's that to be really transparent, a (symplectic) integrator should be directly a function of the two updates (call them But I agree that passing functions directly, and having a maximally modular design is the goal. |
Beta Was this translation helpful? Give feedback.
-
Yeah i think the general approach we are taking here is that: the top level API for users just want to run the sampler, and if low level functions are used we assume the user knows what they are doing. @reubenharry I heard your concern tho but maybe let's improve it via documentation first? |
Beta Was this translation helpful? Give feedback.
-
Current behavior
Sampling algorithms like hmc (and soon, mclmc) allow the user to specify an integrator. This is a little too much power, since if a user specified a non-euclidean integrator for hmc (or a euclidean one for mclmc), the algorithm would no longer be correct.
Desired behavior
It seems like what they should really be choosing are the coefficients of the symplectic integrator.
One way to do this would be to provide an enum
IntegratorType = Enum('IntegratorType', ['mclachlan', 'yoshida', 'leapfrog'])
Beta Was this translation helpful? Give feedback.
All reactions