Выборка из совместного распределения в Пиро - PullRequest
0 голосов
/ 13 октября 2018

Я понимаю, как сделать выборку из многомерного категориального или многомерного нормального (с зависимостью в каждом столбце).Например, для многомерной категориальной категории это можно сделать следующим образом:

import pyro as p
import pyro.distributions as d
import torch as t
p.sample("obs1", d.Categorical(logits=logit_pobs1).independent(1), obs=t.t(obs1))

Мой вопрос: как мы можем сделать то же самое, если существует несколько распределений?Например, следующее не то, что я хочу, поскольку obs1, obs2 и obs3 независимы друг от друга.

p.sample("obs1", d.Categorical(logits=logit_pobs1).independent(1), obs=t.t(obs1))
p.sample("obs2", d.Normal(loc=mu_obs2, scale=t.ones(mu_obs2.shape)).independent(1), obs=t.t(obs2))
p.sample("obs3", d.Bernoulli(logits=logit_pobs3).independent(1),obs3)

Я хотел бы сделать что-то вроде

p.sample("obs", d.joint(d.Bernoulli(...), d.Normal(...), d.Bernoulli(...)).independent(1),obs)
...