torch.normal函数用法

本文介绍了在PyTorch中如何使用`torch.normal()`函数生成正态分布的张量,包括官方示例和实际操作中的错误及解决方法。通过两种正确的方式展示了如何指定均值、标准差和大小来创建正态分布的张量。
摘要由CSDN通过智能技术生成

官方文档给的用法:

torch.normal(means, std, out=None)

意思为means给定tensor的均值范围和形状,std给出每个均值服从的标准差

官方示例:

torch.normal(means=torch.arange(1, 11), std=torch.arange(1, 0, -0.1))

 1.5104
 1.6955
 2.4895
 4.9185
 4.9895
 6.9155
 7.3683
 8.1836
 8.7164
 9.8916
[torch.FloatTensor of size 10]

实际情况:

>>> torch.normal(means=torch.arange(1, 11), std=torch.arange(1, 0, -0.1))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: normal() received an invalid combination of arguments - got (means=Tensor, std=Tensor, ), but expected one of:
 * (Tensor mean, Tensor std, *, torch.Generator generator, Tensor out)
 * (Tensor mean, float std, *, torch.Generator generator, Tensor out)
 * (float mean, Tensor std, *, torch.Generator generator, Tensor out)
 * (float mean, float std, tuple of ints size, *, torch.Generator generator, Tensor out, torch.dtype dtype, torch.layout layout, torch.device device, bool pin_memory, bool requires_grad)

从错误类型中看出现在torch中已经不再使用means而是使用mean,即只能生成固定均值的正态分布。

正确的打开方式:

采用第四种:

torch.normal(mean, std, size)

三个参数分别为均值,标准差和size

>>> torch.normal(3, 0.1, (3, 4))
tensor([[2.9425, 3.1877, 2.9735, 3.0982],
        [3.0061, 2.9918, 2.7953, 3.0066],
        [2.8219, 2.9578, 2.8813, 2.9014]])

采用第三种:

torch.normal(mean, stds)

两个参数分别为:均值和标准差,使用标准差来确定范围size

>>> torch.normal(3, torch.ones(3, 4)/10)
tensor([[2.8491, 3.0263, 3.0888, 3.0818],
        [3.1101, 2.7490, 3.1847, 3.0861],
        [2.8530, 2.8666, 2.9634, 3.1875]])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值