什么是Tensor
Tensor,又名张量,最早接触这个词是来自于TensorFlow,这个概念也被广泛的应用于不同的深度学习框架。
如果一个物理量,在物体的某个位置上只是一个单值,那么就是普通的标量,比如密度。如果它在同一个位置、从不同的方向上看,有不同的值,而且这个数恰好可以用矩阵乘观察方向来算出来,就是张量。几何代数中定义的张量是基于向量和矩阵的推广,通俗一点理解的话,我们可以将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。
从工程角度来讲,可简单地认为它就是一个数组,且支持高效的科学计算。它可以是一个数(标量)、一维数组(向量)、二维数组(矩阵)和更高维的数组(高阶数据)。
PyTorch中的Tensor
Tensor是PyTorch中重要的数据结构,可认为是一个高维数组。Tensor和Numpy中的ndarrays类似,但Tensor可以使用GPU进行加速计算。PyTorch中有许多不同的方法可以创建Tensor。
创建Tensor的方法:
torch.Tensor(*sizes):随机创建指定形状的Tensor。
使用该方法创建Tensor时,系统不会马上分配空间,只是会计算剩余的内存是否足够使用,使用到Tensor时才会分配。而其它操作都是在创建完Tensor之后马上进行空间分配。
>>> a = torch.Tensor(2, 3)
>>> a
tensor([[1.2748e-10, 4.5916e-41, 0.0000e+00],
[0.0000e+00, 0.0000e+00, 0.0000e+00]])
torch.Tensor(data):将List转换为Tensor。
>>> a = torch.Tensor([[1,2,3],[4,5,6]])
>>> a
tensor([[1., 2., 3.],
[4., 5., 6.]])
torch.ones(data):创建全1的Tensor。
>>> torch.ones(2, 3)
tensor([[1., 1., 1.],
[1., 1., 1.]])
torch.zeros(dat