如何在pytorch中创建正态分布

问题描述 投票:7回答:3

我想在pytorch中创建一个随机正态分布,mean和std分别为4,0.5。我找不到它的API。有谁知道?非常感谢。

python statistics pytorch linear-algebra normal-distribution
3个回答
3
投票

对于标准正态分布(即mean=0variance=1),您可以使用torch.randn()

对于您自定义meanstd的情况,您可以使用torch.distributions.Normal()


初始签名: tdist.Normal(loc,scale,validate_args = None)

文档字符串: 创建由locscale参数化的普通(也称为高斯)分布。

ARGS: loc(float或Tensor):分布的平均值(通常称为mu) scale(float或Tensor):分布的标准偏差(通常称为sigma)


这是一个例子:

In [32]: import torch.distributions as tdist

In [33]: n = tdist.Normal(torch.tensor([4.0]), torch.tensor([0.5]))

In [34]: n.sample((2,))
Out[34]: 
tensor([[ 3.6577],
        [ 4.7001]])

1
投票

您可以像在文档中描述的here一样创建您的发行版。在您的情况下,这应该是正确的调用,包括从创建的分布中采样:

from torch.distributions import normal

m = normal.Normal(4.0, 0.5)
m.sample()

0
投票

一个简单的选择是使用基本模块中的randn函数。它从标准高斯分布中创建随机样本。要更改平均值和标准偏差,只需使用加法和乘法。下面我从您要求的发行版中创建大小为5的样本。

import torch
torch.randn(5) * 0.5 + 4 # tensor([4.1029, 4.5351, 2.8797, 3.1883, 4.3868])
© www.soinside.com 2019 - 2024. All rights reserved.