赞
踩
全零、单位、对角、正态分布、随机采样、arange数列等张量
创建一些特殊取值的张量,用于模拟特殊取值的矩阵,如全0矩阵、对角矩阵等
(1)torch.zeros()方法,创建全零张量
(1)#创建全零张量
torch.zeros([2, 3])
结果为:tensor([[0., 0., 0.],
[0., 0., 0.]])
由于zeros就已经确定了张量元素的取值,因此该函数传入的参数实际上是决定了张量的形状。
(2)torch.eye()方法,创建单位张量
#创建单位张量
torch.eye(5)
结果为:tensor([[1., 0., 0., 0., 0.],
[0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.]])
(3)torch.diag()方法,创建对角矩阵:只有对角线上有非0元素的矩阵称为对角矩阵
注意:在pytorch中,需要利用一维张量去创建对角矩阵,不能使用list直接创建对角矩阵。
#创建对角矩阵
t = torch.tensor([1, 2, 3, 4])
torch.diag(t)
结果为:tensor([[1, 0, 0, 0],
[0, 2, 0, 0],
[0, 0, 3, 0],
[0, 0, 0, 4]])
(4)torch.rand()方法:创建服从0-1均匀分布的张量
#创建服从0-1均匀分布的张量
torch.rand(2, 3)
结果为:tensor([[0.9881, 0.5235, 0.6702],
[0.1762, 0.8337, 0.1581]])
(5)torch.randn()方法:创建服从标准正态分布的张量
#创建服从标准正态分布的张量
torch.randn(2, 3)
结果为:tensor([[ 1.9555, -0.4252, -0.2817],
[-0.3945, 1.1989, -0.0206]])
(6)torch.normal()方法:创建服从指定正态分布的张量
#创建服从指定正态分布的张量
torch.normal(2, 3, size = (2, 2))#均值为2标准差为3的张量
结果为:tensor([[ 0.3686, 6.1062],
[-0.4829, 8.1674]])
(7)torch.randint()方法:创建整数随机采样结果的张量
#创建整数随机采样结果的张量
torch.randint(1, 10, size = (2, 3))#在1-10之间随机抽取整数,组成2×3的张量
结果为:tensor([[2, 8, 8],
[3, 9, 3]])
(8)torch.arange()/torch.linspace()方法:生成数列,产生一维张量
#和range相同
torch.arange(5) #生成在0-4之间的一维张量
结果为:tensor([0, 1, 2, 3, 4])
torch.arange(1, 5, 0.5) #在1-5之间(不包括5)的一维张量,步长为0.5
结果为:tensor([1.0000, 1.5000, 2.0000, 2.5000, 3.0000, 3.5000, 4.0000, 4.5000])
torch.linspace(1, 5, 3) #从1到5(左右都包含),等距取三个数
结果为:tensor([1., 3., 5.])
(9)torch.empty()方法:生成未初始化的指定形状矩阵
torch.empty(2, 3) #括号中放入张量指定的形状
结果为:tensor([[1.4013e-45, 0.0000e+00, 8.1621e-27],
[8.6600e-43, 1.1868e+27, 3.4080e-41]])
(10)torch.full()方法:根据指定形状,填充指定数值
torch.full([2, 4], 2) #括号中放入张量指定的形状
结果为:tensor([[2, 2, 2, 2],
[2, 2, 2, 2]])
(11)_like:根据指定对象的形状进行数据填充,只需要在上述函数(full函数、rand等函数都可以)后面加上_like即可
t1 = torch.tensor([1, 2])
t2 = torch.tensor([[1, 2], [3, 4]])
torch.full_like(t1, 5) #根据t1形状,填充数值5
结果为:tensor([5, 5])
torch.randint_like(t2, 1, 10) #根据t2形状,填充1-10的随机数
结果为:tensor([[9, 2],
[8, 7]])
torch.zeros_like(t1) #根据t1形状,填充数值0
结果为:tensor([0, 0])
注意:_like类型转化需要注意转化前后数据类型一致的问题,类型不一致将会报错。
如:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。