pytorch的各种随机数 | randn和normal的关系 | rand和uniform_的关系

pytorch的rand*随机数

torch.rand

torch.rand(*sizes, out=None) → Tensor

返回一个张量,包含了从区间[0,1)的均匀分布中抽取的一组随机数,形状由可变参数sizes 定义。

print(torch.rand(3))
print(torch.rand(3,2))

输出为:

>>
tensor([0.3445, 0.9567, 0.7707])
tensor([[0.7644, 0.5776],
        [0.4379, 0.5460],
        [0.1860, 0.2946]])

*因为是随机的,所以你我输出结果不一样很正常(这个解释是不是有点多余……)

torch.randn

torch.randn(*sizes, out=None) → Tensor

返回一个张量,包含了从标准正态分布(均值为0,方差为 1,即高斯白噪声)中抽取一组随机数,形状由可变参数sizes定义。

参数:

  • sizes (int…) – 整数序列,定义了输出形状
  • out (Tensor, optinal) - 结果张量
print(torch.randn(3))
print(torch.randn(3,2))
>>
tensor([ 0.7186, -1.4286,  0.6510])
tensor([[ 1.1820, -0.4163],
        [-1.2188,  1.3141],
        [ 0.9691,  0.2682]])

torch.randperm

torch.randperm(n, out=None) → LongTensor

给定参数n,返回一个从[0, n -1) 的随机整数排列。

参数:

  • n (int) – 上边界(不包含)
print(torch.randperm(10))
>>
tensor([2, 4, 8, 5, 0, 9, 6, 1, 7, 3])

可以回想一下range或者arrange。他们俩是返回有序的数列并且可以设定步长,官方建议是使用函数 torch.arange()

介绍完上边的rand*函数再介绍一个torch.normal()

torch.normal()

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

返回一个张量,包含从给定参数means,std的离散正态分布中抽取随机数。 均值means是一个张量,包含每个输出元素相关的正态分布的均值。 std是一个张量,包含每个输出元素相关的正态分布的标准差。 均值和标准差的形状不须匹配,但每个张量的元素个数须相同。

参数:

  • means (Tensor) – 均值
  • std (Tensor) – 标准差
  • out (Tensor) – 可选的输出张量

randn和normal的区别

虽然randn和normal都可以生成服从正态分布的随机数,但是normal可以自己设定均值和标准差。

就这点区别。

torch.Tensor.uniform_()

返回一个浮点数 N,取值范围为如果 x<y 则 x <= N <= y,如果 y<x 则y <= N <= x.

比如:

a = torch.Tensor(2,3).uniform_(5,6)
b = torch.zeros(2,3).uniform_(5,6)
c = torch.ones(2,3).uniform_(5,6)
print(a,b,c,sep="\n")

三种都是,生成一个2×3的张量,将其中的值改为5-6之间的浮点数。

>>
tensor([[5.5388, 5.6403, 5.2553],
        [5.0379, 5.8440, 5.0334]])
tensor([[5.0001, 5.2357, 5.4277],
        [5.9316, 5.4877, 5.3986]])
tensor([[5.4156, 5.6199, 5.4743],
        [5.4273, 5.4571, 5.6763]])

torch.rand和torch.Tensor.uniform_

这样看到话,两个都能取0-1之间的均匀分布,但是问题在于rand取不到1,uniform_可以取到1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ann's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值