2D Pytorch 张量没有独立的随机值

数据挖掘 Python 火炬
2022-03-01 05:56:38

我编写了一些 Python 来创建一个随机值的 pytorch 张量,从具有 10 个自由度的学生 t 分布中采样:

t = torch.Tensor(())
def random_from(shape):
    return torch.distributions.StudentT(10, t.new_zeros(shape), t.new_ones(shape)).sample()

如果shape是形式(n,m),得到的二维张量中的所有值都是相同的。我不明白为什么。我确实尝试阅读 Pytorch 的文档,但我找不到任何可以帮助我理解什么是更好的语法的东西。我想我可以创建单独的样本然后将它们连接起来,但除了速度影响之外,我想知道我现有的语法哪里出错了。

1个回答

您没有以正确的方式使用参数“loc”和“scale”。它们不应该是张量。波纹管正确的语法:

dist = torch.distributions.StudentT(10, 0, 1)
dist = torch.distributions.StudentT(10) # 0 and 1 are the default parameters

然后你可以像这样采样多个值:

t = dist.rsample(torch.Size([n,m]))
t = dist.rsample(torch.Size([n]))