numpyro.render_model render unexpected graph with handler.do
Open
Nobody has claimed this yet.
discussion
- Dominant language
- Python
- Stars
- 2.8k
- Forks
- 316
- Avg merge
- 3d 9h
- Merged PRs (30d)
- 27
Description
Similar to #1710.
The reproduced code is as follows.
import numpyro
import numpyro.distributions as dist
from numpyro.handlers import do
def model(y=None):
alpha = numpyro.sample("alpha", dist.Normal(0., 1.))
beta = numpyro.sample("beta", dist.Normal(alpha, 1.))
gamma = numpyro.sample("gamma", dist.HalfNormal(beta))
return gamma
intervention = {
"beta": 0.,
}
model_intervention = do(model, intervention)
numpyro.render_model(model_intervention)
This code render the graph below.
But expected is the edge between alpha and beta is cut and the edge between beta and gamma exists.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the reproduced Python snippet with numpyro.render_model and handlers.do, then compare its graph with the expected image and the related behavior in #1710. Done means the intervention graph cuts the alpha-to-beta edge while retaining the beta-to-gamma edge.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- machine-learning
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100