pytorch生成随机数

PyTorch生成随机数的几种类型:

  1. torch.rand() 均匀分布
    torch.randint(low, high)
    torch.randint_like()

  2. torch.randn() 标准正态分布
    torch.randn_like()

  3. torch.randperm() 随机排列

  4. torch.linespace() 线性间距向量

  5. torch.poisson() 泊松分布


1. 均匀分布:torch.rand()

torch.rand(*sizes, out=None) 输出返回一个张量

Tensor从区间[0, 1)的均匀分布中抽取的一组随机数。
张量的形状由参数sizes定义。

参数:
sizes (int…) - 整数序列,定义了输出张量的形状
out (Tensor, optinal) - 结果张量

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

输出打印:tensor([[0.7619, 0.4698, 0.2272], [0.7243, 0.2350, 0.8673]])
输出打印:tensor([0.3755, 0.2517, 0.8641]),注意,一个参数表示列数,默认一行。

拓展1:torch.randint()返回在 [ low , high) 之间均匀生成的随机整数填充的张量。
张量的形状由变量的参数大小来定义。

torch.randint(low=0, high, size, *, generator=None, out=None, dtype=None, 
			  layout=torch.strided, device=None	  , requires_grad=False	) → Tensor

拓展2:torch.randint_like()返回与张量输入相同形状的张量,该张量由在 [low , high) 之间均匀生成的随机整数填充。

torch.randint_like( input, low=0, high, *, dtype=None, layout=torch.strided, device=None, 
				 	requires_grad=False, memory_format=torch.preserve_format) → Tensor

2. 标准正态分布:torch.randn()

torch.randn(*sizes, out=None) 输出返回Tensor

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

参数:
sizes (int…) - 整数序列,定义了输出张量的形状
out (Tensor, optinal) - 结果张量

import torch
print(torch.randn(4))
print(torch.randn(3, 4))

输出打印:tensor([ 0.0800, 0.6913, -1.2425, 1.5333]) 注意,一个参数表示列数,默认一行。
输出打印:tensor([[-0.4171, 0.4794, 0.8845, 0.6911], [-1.7375, -1.3006, -2.8550, 0.6402], [-0.5704, -1.0660, -1.7093, -0.5898]])

拓展:torch.randn_like(),返回与输入相同大小的张量,该张量由均值为0和方差为1的正态分布中的随机数填充。


torch.randn_like(input	, *, dtype=None, layout=None, device=None, 
				 requires_grad=False, memory_format=torch.preserve_format) → Tensor


3. 随机排列:torch.randperm()

torch.randperm(n, *, out=None, dtype=torch.int64, layout=torch.strided, device=None , requires_grad=False) 输出返回 LongTensor

返回整数从0到n-1的随机排列。

import torch
print(torch.randperm(4))

打印输出:tensor([1, 3, 2, 0])注意,不含上限


4. 线性间距向量:torch.linspace()

torch.linspace(start, end, steps=100, out=None) → Tensor 输出返回Tensor

返回一个1维张量,包含在区间start和end上均匀间隔的step个点。
输出张量的长度由steps决定。

参数
start (float) - 区间的起始点
end (float) - 区间的终点
steps (int) - 在start和end间生成的样本数
out (Tensor, optional) - 结果张量

import torch
print(torch.linspace(3, 10, steps=5))

输出打印:tensor([ 3.0000, 4.7500, 6.5000, 8.2500, 10.0000])


5.泊松分布torch.poisson()

torch.poisson(input *, generator=None) → Tensor
返回与输入相同大小的张量,从泊松分布中取样的每个元素都具有相应元素在输入中给定的速率参数.
在这里插入图片描述
参数
input (Tensor)
包含泊松分布速率的输入张量

import torch
rates = torch.rand(3, 5) * 5  # rate parameter between 0 and 5
print(torch.poisson(rates))

输出打印:tensor([[0., 2., 5., 5., 3.], [4., 1., 2., 6., 4.], [3., 5., 0., 5., 0.]]),注意,rates为[0,1]均匀分布生成的3x4的tensor,乘5,返回值中每个元素0-5之间。


  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柏常青

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

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

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

打赏作者

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

抵扣说明:

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

余额充值