@TOC
这些方法的共同点是都可以用来创建一个张量,并且都可以指定输出张量的数据类型、形状、设备类型等参数。它们的不同之处如下:
rand()
方法用于生成在 [ 0 , 1 ) [0,1) [0,1) 区间内的均匀分布随机数。randn()
方法用于生成标准正态分布随机数,即均值为0,方差为1的正态分布。randint()
方法用于生成指定范围内的随机整数。normal()
方法用于生成从均值为mean
,标准差为std
的正态分布中生成随机数。full()
方法用于创建一个指定形状的张量,并用指定固定值填充。
因此,在实际应用中需要根据具体情况选择不同的方法,以满足数据的需要。以下为几个方法的介绍及运用。
1.rand()方法
rand()方法是生成大小在[0,1)区间的size大小的张量
torch.rand(size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
参数详解
参数 | 意义 |
---|---|
size | 要生成张量的形状,可以是整数也可以是元组。唯一必要参数,调用方法时必须给出。 |
out | 输出张量。非必要参数 |
dtype | 输出张量的数据类型 |
layout | 输出张量的布局形式 |
device | 输出张量的设备类型 |
requires_grad | 是否需要计算梯度,默认为 False |
代码演示
import torch
print(torch.rand(2,3))
print(torch.rand(5))
输出
tensor([[0.7151, 0.7481, 0.6143],
[0.3310, 0.0784, 0.4184]])
tensor([0.2428, 0.4320, 0.2535, 0.9386, 0.5276])
2.randn()方法
与rand()方法返回[0,1)区间数据不同,randn()方法是返回一个包含了从标准正态分布(均值为0,方差为1)中抽取的随机数张量。
torch.randn(size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
参数详解
参数与rand()方法一样
参数 | 意义 |
---|---|
size | 要生成张量的形状,可以是整数也可以是元组。唯一必要参数,调用方法时必须给出。 |
out | 输出张量。非必要参数 |
dtype | 输出张量的数据类型 |
layout | 输出张量的布局形式 |
device | 输出张量的设备类型 |
requires_grad | 是否需要计算梯度,默认为 False |
代码演示
import torch
print(torch.randn(2,3))
print(torch.randn(5))
演示输出
tensor([[ 1.9817, -0.6548, 0.3505],
[-0.5065, -0.7093, 0.6304]])
tensor([ 0.6409, -0.1716, -1.0290, 2.5210, -1.2670])
3.randint()方法
返回一个包含了从区间 [low, high) 的离散均匀分布中抽取的随机整数的张量
torch.randint(low=0, high, size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
参数详解
参数 | 意义 |
---|---|
low | 生成的整数下界,也就是说最小值。必要参数 |
high | 生成的整数上界,即最大值。非必要参数 |
size | 要生成张量的形状,可以是整数也可以是元组。唯一必要参数,调用方法时必须给出。 |
out | 输出张量。非必要参数 |
dtype | 输出张量的数据类型 |
layout | 输出张量的布局形式 |
device | 输出张量的设备类型 |
requires_grad | 是否需要计算梯度,默认为 False |
代码示例
import torch
print(torch.randint(1,10,(2,3)))
演示结果
tensor([[2, 4, 3],
[9, 7, 9]])
4.normal()方法
用于从均值为 mean ,标准差为 std 的正态分布中生成随机数。
torch.normal(mean, std, size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
参数详解
参数 | 意义 |
---|---|
mean | 正态分布的均值。 |
std | 正态分布的标准差。 |
size | 输出张量的形状,可以是整数或元组类型。 |
out | 输出张量。 |
dtype | 输出张量的数据类型。 |
layout | 输出张量的布局类型。 |
device | 输出张量的设备类型。 |
requires_grad | 是否需要计算梯度,默认为 False |
代码演示
均值为10,标准差为1,形状为(2,3)的张量
print(torch.normal(10,1,(2,3)))
演示结果
tensor([[10.1562, 9.1040, 8.8467],
[ 9.8670, 10.7527, 9.2519]])
5.full()方法
于创建一个指定形状的张量,并用 fill_value 填充,即指定形状固定数值的一个张量
torch.full(size, fill_value, dtype=None, layout=torch.strided, device=None, requires_grad=False
参数详解
参数 | 意义 |
---|---|
size | 要生成张量的形状,可以是整数也可以是元组。唯一必要参数,调用方法时必须给出。 |
fill_value | 要填充的数值。必要参数 |
dtype | 输出张量的数据类型 |
layout | 输出张量的布局形式 |
device | 输出张量的设备类型 |
requires_grad | 是否需要计算梯度,默认为 False |
代码演示
import torch
print(torch.full((2,3),5))
演示结果
tensor([[5, 5, 5],
[5, 5, 5]])