pytorch生成随机数

时间:2024-11-06 15:03:37

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

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

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

  3. () 随机排列

  4. () 线性间距向量

  5. () 泊松分布


1. 均匀分布:()

(*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:()返回在 [ 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. 标准正态分布:()

(*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. 随机排列:()

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

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

import torch
print(torch.randperm(4))

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


4. 线性间距向量:()

(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.泊松分布()

(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之间。