def model(): latent = named.Object("latent") latent.list = named.List() loc = latent.list.add().loc.param_(torch.zeros(1)) latent.dict = named.Dict() foo = latent.dict["foo"].foo.sample_(dist.Normal(loc, torch.ones(1))) latent.object.bar.sample_(dist.Normal(loc, torch.ones(1)), obs=foo)
def model(): latent = named.Object("latent") latent.list = named.List() mu = latent.list.add().mu.param_(Variable(torch.zeros(1))) latent.dict = named.Dict() foo = latent.dict["foo"].foo.sample_(dist.normal, mu, ng_ones(1)) latent.object.bar.observe_(dist.normal, foo, mu, ng_ones(1))
def test_eval_str(): state = named.Object("state") state.x = 0 state.ys = named.List() state.ys.add().foo = 1 state.zs = named.Dict() state.zs[42].bar = 2 assert state is eval(str(state)) assert state.x is eval(str(state.x)) assert state.ys is eval(str(state.ys)) assert state.ys[0] is eval(str(state.ys[0])) assert state.ys[0].foo is eval(str(state.ys[0].foo)) assert state.zs is eval(str(state.zs)) assert state.zs[42] is eval(str(state.zs[42])) assert state.zs[42].bar is eval(str(state.zs[42].bar))
def model(data, k): latent = named.Object("latent") # Create parameters for a Gaussian mixture model. latent.ps.param_(Variable(torch.ones(k) / k, requires_grad=True)) latent.mus.param_(Variable(torch.zeros(k), requires_grad=True)) latent.sigmas.param_(Variable(torch.ones(k), requires_grad=True)) # Observe all the data. We pass a local latent in to the local_model. latent.local = named.List() for x in data: local_model(latent.local.add(), latent.ps, latent.mus, latent.sigmas, obs=x)
def model(data, k): latent = named.Object("latent") # Create parameters for a Gaussian mixture model. latent.probs.param_(torch.ones(k) / k, constraint=constraints.simplex) latent.locs.param_(torch.zeros(k)) latent.scales.param_(torch.ones(k), constraint=constraints.positive) # Observe all the data. We pass a local latent in to the local_model. latent.local = named.List() for x in data: local_model(latent.local.add(), latent.probs, latent.locs, latent.scales, obs=x)
def model(): latent = named.Object("latent") loc = latent.loc.param_(torch.zeros(1)) foo = latent.foo.sample_(dist.Normal(loc, torch.ones(1))) latent.bar.sample_(dist.Normal(loc, torch.ones(1)), obs=foo) latent.x.z.sample_(dist.Normal(loc, torch.ones(1)))
def guide(data, k): latent = named.Object("latent") latent.local = named.List() for x in data: # We pass a local latent in to the local_guide. local_guide(latent.local.add(), k)
def guide(data): guide_recurse(data, named.Object("latent"))
def model(data): latent = named.Object("latent") latent.z.sample_(dist.normal, ng_zeros(1), ng_ones(1)) model_recurse(data, latent)
def model(data): latent = named.Object("latent") latent.z.sample_(dist.Normal(0.0, 1.0)) model_recurse(data, latent)
def model(): latent = named.Object("latent") mu = latent.mu.param_(Variable(torch.zeros(1))) foo = latent.foo.sample_(dist.normal, mu, ng_ones(1)) latent.bar.observe_(dist.normal, foo, mu, ng_ones(1)) latent.x.z.sample_(dist.normal, mu, ng_ones(1))