Replies: 1 comment 1 reply
-
I think there are a few competing designs. Let me try to enumerate them: Dual functionsIn this pattern (the current choice):
Old Omega
Explicit within f spec
-- What is Questions
|
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Even though I've thought about this alot, I'm still not certain.
In the aircraft example I modelled the initial state as
Then I made several copies using iid. The issue was that suppose I wanted to introduce some correlations between these components with a shared parents, I'd then need to switch to ciid
Why not just start with the plate in the first place? Then you get to this same conclusion which is that why not just make everything a plate. Well, if you want to share structure, you need to actually make random variables
a
cannot be a plate here, because thats the point of a plate. I could makea
a plate and theninit_state_plate
andsome_other_func
use the same id for the same effect but that would be no good.The issue remains. If I decide there should be some shared structure then the type has to change from a randvar to a plate, which means everything downstream has to be updated. That's bad for compositionality.
Now I want to actually make 3 iid copies, but the most likely behaviour is that I don't. Rather, if you add parent structure then I want to share it.
You could imagine an operator
xiid(x)
, which is maybe what tilde should represent, which isiid(x)
if x is a randvar andciid(x)
if x is a plate.The problem is that I don't know that can implement this in Julia as we can't tell from the type, other than with a generated function.
Could making a plate take a pair of an omega and an id be the answer?
The alternative, is to
Q: What if I want to iid a plate?
Beta Was this translation helpful? Give feedback.
All reactions