如何在PyTorch中从具有约束的分布中采样?

2024-04-28 23:46:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的情况,比如:

Generate samples and log_prob from an uniform distribution for 2-dim variables (m1, m2) which is satisfying m1~U(5, 80), m2~U(5, 80) with constraint m1+m2 < 100.

from torch import distributions
prior = distributions.Uniform(torch.tensor([5.0, 5.0]),
                              torch.tensor([80.0, 80.0]))

我尝试像上面那样用PyTorch编码,但我不知道如何构造带有约束条件的^{}。顺便说一下,我看到了一些关于^{}的实现,但我不知道如何使用它


Tags: andfromanlog情况uniformtorchgenerate
1条回答
网友
1楼 · 发布于 2024-04-28 23:46:09

这可以通过使用rejection sampling实现:

d = torch.distributions.Uniform(5, 80)

m1 = 80
m2 = 80

while m1 + m2 >= 100:
    m1 = d.sample()
    m2 = d.sample()
    print(m1, m2)

示例输出:

tensor(52.3322) tensor(67.8245)
tensor(68.3232) tensor(40.0983)
tensor(44.7374) tensor(9.9690)

相关问题 更多 >