在深度学习中什么是张量?张量的类别有几种?如何创建张量运算?
人工智能专栏
正文
本文我们将学习pytorch中的张量(Tensor),它是一个多维数组,零维就是一个点,一维就是向量,二维就是一般的矩阵,多维就相当于一个多维的数组,这和 numpy理解是一样的,不同的是Tensor不仅可以在CPU上跑,在GPU上也可以跑。
给定一个张量数据,我们可以确定它的维度(dimension)、大小(size)和元素的个数。
维度表示这个张量有几维(零位、一维、二维、多维),大小可以理解为这个张量的shape,元素的个数表示张量中的元素的总数。只有维度、大小、元素个数、更元素都相同的两个张量,才是两个相同的张量。
需要注意的是,对于某个张量,若其大小(shape)中有一个条目是1,那么这个1也是不可以省略的,也应该算进张量的维度里。例如,大小为(3,1)的二维张量和大小为(3,)的张量虽然虽然有相同的元素个数,但是它们的维度不用(前面的二维,后面的一维)、大小不同,所以二者不是相同的张量。
张量的维度是这样就算的,我们就看向量的大小()括号中有几个数字,有几个数字那么这个张量就是几维,也就是说一维向量的大小具有(s[0],)的形式。
要想创建tensor有以下几种方式
方式一:将numpy转成tensor
方式二:将列表转成tensor,常用于两维以下
torch.tensor([1,2])
torch.tensor([[1,2],[3,4]])
方式三:torch.FloatTensor(d1,d2,d3)创建维度为d1,d2,d3维度的tensor(此时的数据是为初始化的,也就是数字会很大或者很小,一般需要对应的对其进行覆盖操作)
创建向量
import torch
a=torch.tensor([1.])
print(a.type())
print(a.dim())
print(a.shape)
print(a.size())
创建向量的时候,直接在torch.tensor中放入我们想要创建的那个向量
还可以这样创建向量
import torch
a=torch.FloatTensor(2)#创建一个一维向量,里面有两个元素
print(a)
print(a.type())
print(a.dim())
print(a.shape)
print(a.size())