张量定义:
- 在数学中,如果一个数组的维度超过2,那么我们可以称该数组为张量。
- 但是在PyTorch中,张量属于一种数据结构,它可以是一个标量、一个向量、一个矩阵,甚至是更高维度的数组。
- 因此PyTorch中的张量(Tenser)和Numpy中的数组(ndarray)非常相似,在使用时也会经常将二者相互转化。
- 在深度网络中,基于PyTorch的相关计算和优化都是在Tenser的基础上完成的。
一、张量的数据类型
在torch中CPU和GPU张量分别有8种数据类型
在torch中默认的数据类型是32位浮点型(torch.FloatTensor),可以通过torch.set_default_tensor_type()函数设置默认的数据类型,但是该函数只支持设置浮点型数据类型,代码如下:
import torch
torch.tensor([1.2,3.4]).dtype #获取张量的数据类型,其中torch.tensor()函数生成一个张量
# torch.float32
torch.set_default_tensor_type(torch.DoubleTensor) #设置张量的默认数据类型
torch.tensor([1.2,3.4]).dtype
#torch.float64
在torch中还有其他类型的数据,将浮点型转化为其他数据类型的方法如下:
a = torch.tensor([1.2,3.4])
print("a.dtype:",a.dtype)
print("a.long()方法",a.long().dtype)
print("a.int()方法",a.int().dtype)
print("a.float()方法",a.float().dtype)
#
#a.dtype:torch.float64
#a.long()方法:torch.int64
#a.int()方法:torch.int32
#a.float()方法:torch.float32
一系列转化之后还可以通过torch.set_default_tendor_type()来设置默认数据类型,也可以使用torch.get_default_dtype()函数获取默认的数据类型,代码如下:
torch.get_default_dtype()
#torch.float32