torch.rand、torch.randn、torch.normal、torch.linespace
torch.
rand
(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
#返回从[0,1)均匀分布中抽取的一组随机数;均匀分布采样;#*sizes指定张量的形状;
torch.randn(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) #返回从标准正态分布中抽取的一组随机数,也即高斯白噪声;
torch.
normal
(mean, std, *, generator=None, out=None) → Tensor
返回一个由不同正态分布的随机数组成的张量,其均值和标准差已给出。
均值是一个张量,它是每个输出元素正态分布的均值;
std是一个张量,它是每个输出元素正态分布的标准差;
均值和标准差的形状不需要匹配,但每个张量的元素总数需要相同。
torch.normal()#返回正态分布;
#采样离散正态分布,相比c于torch.randn,每一个数字都可以来自不同均值和方差的正态分布 #有以下三种形式 torch.normal(mean=0.0, std, out=None) → Tensor #mean为标量(共用),std为tensor指定shape和每个位置的方差 torch.normal(mean, std=1.0, out=None) → Tensor #std为标量(共用),mean为tensor指定shape和每个位置的均值 torch.normal(mean, std, size, out=None) → Tensor #std和mean都是标量,此时需要size指定shape
randn和normal的区别
虽然randn和normal都可以生成服从正态分布的随机数,但是normal可以自己设定均值和标准差。就这点区别。
torch.randperm(n, out=None, requires_grad=True)#返回从0到n-1的整数的随机排列数
torch.linespace()
#线性间距采样 torch.linspace(start, end, steps=100, out=None) → Tensor #start起点,end终点,steps点数
torch.randperm()
randperm(n, out=None, dtype=torch.int64)-> LongTensor
#torch中没有random.shuffle
#y = torch.randperm(n) y是把1到n这些数随机打乱得到的一个数字序列,给定参数n
,返回一个从[0, n -1) 的随机整数排列。n (int) – 上边界。(不包含)
torch.randint(low=0, high, size, out=None, requires_grad=False)
返回一个张量,该张量填充了在[low,high)均匀生成的随机整数。
张量的形状由可变的参数大小定义。
从离散正态分布中随机抽样
torch.normal(means, std, out=None) → → Tensor
线性间距向量
torch.linspace(start, end, steps=100, out=None) → Tensor
返回一个1维张量,包含在区间start和end上均匀间隔的step个点。
输出张量的长度由steps决定。
torch.Tensor.uniform_()
torch.rand和torch.Tensor.uniform_
这样看到话,两个都能取0-1之间的均匀分布,但是问题在于rand取不到1,uniform_可以取到1。
此外,可参考:
https://blog.csdn.net/u011699626/article/details/112062173