我想在pytorch中创建一个随机正态分布,mean和std分别为4,0.5。我找不到它的API。有谁知道?非常感谢。
对于标准正态分布(即mean=0
和variance=1
),您可以使用torch.randn()
对于您自定义mean
和std
的情况,您可以使用torch.distributions.Normal()
初始签名: tdist.Normal(loc,scale,validate_args = None)
文档字符串: 创建由
loc
和scale
参数化的普通(也称为高斯)分布。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]])
您可以像在文档中描述的here一样创建您的发行版。在您的情况下,这应该是正确的调用,包括从创建的分布中采样:
from torch.distributions import normal
m = normal.Normal(4.0, 0.5)
m.sample()
一个简单的选择是使用基本模块中的randn
函数。它从标准高斯分布中创建随机样本。要更改平均值和标准偏差,只需使用加法和乘法。下面我从您要求的发行版中创建大小为5的样本。
import torch
torch.randn(5) * 0.5 + 4 # tensor([4.1029, 4.5351, 2.8797, 3.1883, 4.3868])