欢迎访问宙启技术站
智能推送

使用torch.distributions.Normal()生成服从指定均值和标准差的正态分布随机数

发布时间:2023-12-24 07:32:44

torch.distributions.Normal()是PyTorch中的一个分布类,用来生成符合正态分布的随机数。它接受两个参数,分别是均值和标准差。

首先,我们需要导入必要的库:

import torch
from torch.distributions import Normal

接下来,我们可以创建一个均值为mu,标准差为sigma的正态分布:

mu = 0
sigma = 1
normal_distribution = Normal(mu, sigma)

我们可以使用sample()方法生成服从指定均值和标准差的正态分布的随机数。比如,我们生成1000个服从均值为0,标准差为1的正态分布的随机数:

num_samples = 1000
samples = normal_distribution.sample((num_samples,))

这里我们使用sample()的参数指定要生成的样本数目,并使用元组的形式传入。生成的随机数形状为(num_samples,)。

我们还可以通过mean属性和stddev属性分别获取分布的均值和标准差:

mean = normal_distribution.mean
stddev = normal_distribution.stddev

下面的代码展示了一个完整的例子,生成了1000个服从均值为5,标准差为2的正态分布的随机数,并统计了生成的样本的均值和标准差:

import torch
from torch.distributions import Normal

mu = 5
sigma = 2
normal_distribution = Normal(mu, sigma)

num_samples = 1000
samples = normal_distribution.sample((num_samples,))

print('Sample mean:', samples.mean())
print('Sample std deviation:', samples.std())

运行上述代码,输出结果如下所示:

Sample mean: tensor(4.9579)
Sample std deviation: tensor(2.0170)

我们可以看到,生成的样本的均值大约接近于5,标准差大约接近于2,与我们给定的参数相吻合。

总结一下,通过torch.distributions.Normal()可以方便地生成服从指定均值和标准差的正态分布的随机数,我们可以使用sample()方法生成指定数目的随机数,并可以通过mean和stddev属性获取分布的均值和标准差。