【问题标题】:Python PyTorch Pyro - Multivariate DistributionsPython PyTorch Pyro - 多元分布
【发布时间】:2020-08-27 23:30:00
【问题描述】:

如何在 Pyro 中对多元分布进行采样?我只想要一个(M, N) Beta 发行版,但以下不起作用:

impor torch
import pyro
with pyro.plate("theta_plate", M):
    theta = pyro.sample("theta",
                        pyro.distributions.Beta(concentration0=torch.ones(N),
                                                concentration1=torch.ones(N)))

【问题讨论】:

    标签: python pytorch pyro.ai


    【解决方案1】:

    使用to_event(n) 声明依赖样本。

    import torch
    import pyro
    import pyro.distributions as dist
    
    def model(N, M):
        with pyro.plate("theta_plate", M):
            theta = pyro.sample("theta", dist.Beta(torch.ones(N),1.).to_event(1))
        return theta
    
    
    if __name__ == '__main__':
        print(model(10,12).shape) # (10,12)
    

    【讨论】:

      【解决方案2】:

      对于 PyTorch 和 Pyro 发行版,语法相同:

      import pyro.distributions as dist
      
      samples = dist.Beta(2, 2).sample([200]) # Will draw 200 samples.
      

      除非您只是想对分布进行抽样,否则您不需要板的概念。

      【讨论】:

      • 我不明白。我确实希望板块概念表明从 $N$ 维度提取的 $M$ 在给定分布参数的情况下是条件独立的。这不正是盘子的用途吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 2015-06-30
      • 2020-12-21
      • 2018-09-01
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      相关资源
      最近更新 更多