从 Pyro 的联合分布中采样

alp*_*aca 8 probability bayesian sampling pytorch pyro.ai

我了解如何从多维分类或多变量正态分布(每列内具有依赖性)进行采样。例如,对于多元分类,可以按如下方式完成:

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))
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果有多个发行版,我们该如何做同样的事情?例如,下面的不是我想要的obs1obs2并且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)
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情

p.sample("obs", d.joint(d.Bernoulli(...), d.Normal(...), d.Bernoulli(...)).independent(1),obs)
Run Code Online (Sandbox Code Playgroud)