Pytorch教程

【例子】pytorch-tensor生成特殊矩阵

作者 : 老饼 发表日期 : 2023-07-28 10:51:04 更新日期 : 2024-06-24 14:43:39
本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com



在使用pytorch的tensor时,往往需要生成一些特殊的tensor,

例如空矩阵、单位矩阵、全0矩阵、全1矩阵、随机矩阵等等

本文讲解如何在pytorch中生成这些特殊的tensor,以方便使用时查阅借鉴




一. 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]])





二、根据另一个tensor的Size生成特殊矩阵 



本节讲解如何在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 




联系老饼