【发布时间】:2020-10-07 21:54:13
【问题描述】:
我的问题非常具体。给定具有均值和标准差的k 维高斯分布,假设我希望从该分布中抽取10 点。但是10 样本应该彼此非常不同。例如,我不希望对那些非常接近均值的5 进行采样(非常接近,我们可以假设此示例在1 sigma 内),如果我进行随机采样可能会发生这种情况。让我们还添加一个额外的约束,即所有抽取的样本应该至少相距 1 sigma。有没有一种已知的方法可以有条不紊地以这种方式进行采样? PyTorch 中有没有这样的模块可以做到这一点?
对不起,如果这个想法是不恰当的,但我正在尝试了解这样的事情是否可能。
【问题讨论】:
-
所以你想生成一个高斯分布,从中选择
n个样本,但是每个样本之间应该至少相差1 sigma? -
@wundermahn 是的,我刚刚更新了问题,询问 Python 中是否存在一个模块可以有效地做到这一点?
-
为什么不对您需要的每个
n样本使用torch.normal()和不同的mean和std,然后将所有样本堆叠在一个张量中?另一个想法是 oversample 并丢弃不符合您的约束的样本。 -
@kmario23 请参阅我对以下关于过采样的答案的评论。我在那里解释了为什么我认为这种方法在计算上是令人望而却步的。关于使用不同的
mean和std,不幸的是,这不是我的用例的选项。
标签: python pytorch sampling normal-distribution