dq.*_*hen 10 python statistics normal-distribution linear-algebra pytorch
我想在pytorch中创建一个随机正态分布,mean和std分别为4,0.5.我找不到它的API.有谁知道?非常感谢.
一个简单的选择是使用randn
基本模块中的函数。它从标准高斯分布中创建一个随机样本。要更改平均值和标准偏差,您只需使用加法和乘法。下面我根据您要求的分布创建了大小为 5 的样本。
import torch
torch.randn(5) * 0.5 + 4 # tensor([4.1029, 4.5351, 2.8797, 3.1883, 4.3868])
Run Code Online (Sandbox Code Playgroud)
对于标准正态分布(即mean=0
和variance=1
),您可以使用torch.randn()
对于custom mean
和std
,您可以使用torch.distributions.Normal()
初始化签名:
tdist.Normal(loc,scale,validate_args = None)Docstring:
创建由loc
和参数化的正态分布(也称为高斯分布)scale
。Args:
loc(浮点或张量):分布的平均值(通常称为mu)
刻度(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]])
Run Code Online (Sandbox Code Playgroud)
小智 5
You can easily use torch.Tensor.normal_() method.
Let's create a matrix Z (a 1d tensor) of dimension 1 × 5
, filled with random elements samples from the normal distribution parameterized by mean = 4
and std = 0.5
.
torch.empty(5).normal_(mean=4,std=0.5)
Run Code Online (Sandbox Code Playgroud)
Result:
tensor([4.1450, 4.0104, 4.0228, 4.4689, 3.7810])
Run Code Online (Sandbox Code Playgroud)
您可以按照文档中的描述创建您的发行版。在您的情况下,这应该是正确的调用,包括从创建的分布中采样:
from torch.distributions import normal
m = normal.Normal(4.0, 0.5)
s = m.sample()
Run Code Online (Sandbox Code Playgroud)
如果您想获得特定大小/形状的样本,您可以将其传递给sample()
,例如
s = m.sample([5, 5])
Run Code Online (Sandbox Code Playgroud)
对于 5x5 张量。
归档时间: |
|
查看次数: |
15228 次 |
最近记录: |