使用pytorch从gpu上的分类分布快速采样
目前,如果您
需要从静态类别分布中提取大量样本。
而且,你只能有不超过2^24个不同的结果。
那个
"alias method"
让我们快速地从具有大型支持的发行版中进行采样,然后
在Pythorch中实现让您有超过2^24个结果。
我需要这个来快速生成单词嵌入
hilbert。
安装
pip install pytorch-categorical
使用import pytorch_categorical
import torch
num_outcomes = int(1e6)
probs = torch.random(num_outcomes)
probs /= probs.sum()
sampler = pytorch_categorical.Categorical(probs)
num_samples = int(1e6)
samples = sampler.sample((num_samples,))
如果要指定
他们。默认情况下
后人
在我做这件事的时候,有一个公开的问题要把
基于alias方法的采样器,但尚未发布任何内容。有希望地
很快就会发布的!现在,用这个!
经过测试。它是正确和快速的。
我已经通过一些简单的测试来支持这一点,包括对torch的基准测试。
这个实现需要大约175倍的时间来构造一个
百万个结果,但是在这个前期成本之后,它产生了
1000)样品大约快3000倍(更大的优势是更多的样品
最终画出来的)。所以主要的用途是
稳定分布的样本。
运行正确性和基准测试:python test.py。
享受吧!
欢迎加入QQ群-->: 979659372
推荐PyPI第三方库