本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com
在使用pytorch的tensor时,往往需要生成一些特殊的tensor,
例如空矩阵、单位矩阵、全0矩阵、全1矩阵、随机矩阵等等
本文讲解如何在pytorch中生成这些特殊的tensor,以方便使用时查阅借鉴
本节讲解如何在pytorch中生成一些特殊的tensor
特殊矩阵是指如下的矩阵:
空矩阵、单位矩阵、全0矩阵、全1矩阵、随机矩阵等等
下面讲述如何pytroch中的tensor如何生成这些特殊矩阵
1.生成-空矩阵(未经初始化)
pytroch使用empty生成空的tensor,
示例如下
import torch
x= torch.empty((2,3), dtype=torch.int64)
运行结果如下:
tensor([[27303553780220005, 28992339220037731, 32651492442964069],
[29273822787141743, 25896170310991964, 32651548277211241]])
tensor里有数据是因为它没有被初始化,它只是原来内存中的值
2.生成-单位矩阵
pytroch使用eye生成单位矩阵的tensor,
示例如下:
import torch
x = torch.eye(3)
y = torch.eye(3,4)
运行结果如下:
x = tensor([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
y = tensor([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.]])
3.生成-全1矩阵
pytroch使用full生成单位矩阵的tensor,
示例如下
import torch
x = torch.full((2, 3),1) # 1可以换成其它数
x = torch.ones(2, 3)
运行结果如下:
tensor([[1, 1, 1],
[1, 1, 1]])
4.生成-全0矩阵
pytroch使用zeros生成全0矩阵的tensor,
示例如下
import torch
x = torch.zeros(2, 3)
运行结果如下
tensor([[0., 0., 0.],
[0., 0., 0.]])
5.生成-随机矩阵
pytroch使用tand生成全0矩阵的tensor,
示例如下
import torch
r = torch.rand(2,3) # 生成2*3的[0,1)之间的随机矩阵,size为2*3矩阵
rn = torch.randn(2,3) # 生成均值为0,方差为1的正态分布随机矩阵,Size为2*3
print('r:',r)
print('rn:',rn)
运行结果如下:
r: tensor([[0.6837, 0.8483, 0.8070],
[0.8061, 0.0748, 0.0570]])
rn: tensor([[ 0.4365, 0.1459, 0.8120],
[-0.4174, -1.1193, 0.2643]])
本节讲解如何在pytorch中根据一个已有tensor的Size来生成另一个特殊的tensor
1.根据已有tensor的Size生成特殊tensor
如果要根据另一个tensor的Size来生成特殊矩阵,可以用like相关的语法进行生成
示例如下:
import torch
x = torch.tensor([[1, 2],[3, 4]]) # 生成x
r = torch.rand_like(x, dtype=torch.float) # 生成与x一样Size的随机矩阵
n = torch.ones_like(x) # 生成与x一样Size的全1矩阵
z = torch.zeros_like(x) # 生成与x一样Size的全0矩阵
print('x:',x)
print('r:',r)
print('n:',n)
print('z:',z)
运行结果如下:
x: tensor([[1, 2],
[3, 4]])
r: tensor([[0.3476, 0.4953],
[0.7952, 0.5406]])
n: tensor([[1, 1],
[1, 1]])
z: tensor([[0, 0],
[0, 0]])
好了,以上就是如何在pytorch中生成空矩阵、单位矩阵、全0矩阵、全1矩阵、随机矩阵等等特殊矩阵的方法了~
End