1 基本数据Tensor
1.1 Tensor数据类型
Tensor即张量,是pytorch中基本的操作对象,可以看作是包含单一数据类型元素的多维矩阵。
数据类型 | CPU Tensor | GPU Tensor |
---|---|---|
32位浮点 | torch.FloatTensor | torch.cuda.FloatTensor |
64位浮点 | torch.DoubleTensor | torch.cuda.DoubleTensor |
16位半精度浮点 | N/A | torch.cuda.halfTensor |
8位无符号整型 | torch.ByteTensor | torch.cuda.ByteTensor |
8位有符号整型 | torch.CharTensor | torch.cuda.CharTensor |
16位有符号整型 | torch.ShortTensor | torch.cuda.ShortTensor |
32位有符号整型 | torch.IntTensor | torch.cuda.IntTensor |
64位有符号整型 | torch.LongTensor | torch.cuda.LongTensor |
Pytorch可以通过set_default_tensor_type(‘torch.cuda.DoubleTensor’)函数设置默认的Tensor类型。
torch.set_default_tensor_type('torch.DoubleTensor')
a=torch.Tensor(2,2)
a.type()
#'torch.DoubleTensor'
对于tensor之间类型转换,可以通过type(new_type)、type_as()、int()等多种方式进行操作。
torch.set_default_tensor_type('torch.FloatTensor')
a=torch.Tensor(2,2)
a.type()
#'torch.FloatTensor'
b=a.int()
b
#tensor([[0, 4],
# [0, 0]], dtype=torch.int32)
c=a.type(torch.DoubleTensor)
c
#tensor([[0.0000e+00, 4.4766e+00],
# [1.4013e-45, 0.0000e+00]], dtype=torch.float64)
d=a.type_as(b)
d
#tensor([[0, 4],
# [0, 0]], dtype=torch.int32) 与b的类型相同
1.2 Tensor的创建与维度查看
#使用python的李斯特进行创建
c=torch.Tensor([[2,2],[2,2]])
c
输出为 tensor([[2., 2.],
[2., 2.]])
torch.zero(2,2)#所有元素均为0
torch.ones(2,2)#所有元素均为1
torch.eyes(2,2)#对角线上元素为1,其他为0,不要求行列数相同
torch.randn(2,2)#生成随机数矩阵
torch.arange(1,6,2)#生成从1到6间距为2的一维向量
输出为 tensor([1, 3, 5])
torch.linspace(1,6,2) #生成从1到6一共2个数的一维向量
输出为 tensor([1., 6.])
torch.randperm(4) #生成长度为4的随机排列向量
输出为 tensor([0, 3, 1, 2])
torch.tensor([1,2,3]) #torch 0.4 增加了此方法,参数可以是python的list和numpy的ndarray等
输出为 tensor([1, 2, 3])
查看Tensor维度
>>>a=torch.Tensor(2,2)
>>>a.shape
torch.Size([2, 2])
>>>a.size()
torch.Size([2, 2])
查看Tensor中元素的总个数
>>>a.numel()
4
>>>a.nelement()
4