f6793c73d7703720f3336dc1efd71196.png

Tensor

Tensor,中文叫做张量,它是Pytorch中最基本的数据类型,同时也是最最最重要的数据类型,基本上后面你无时不刻都在和它打交道。

数学含义

在数学中,标量是只有大小没有方向的量。例如,1,2,3等。向量是既有大小又有方向的量。例如,

。矩阵是由多个向量组成的一堆数字。例如,
.

向量其实也可以看成矩阵,可以把它看成1*x列的矩阵,或者x*1列的矩阵。

那么,张量其实是标量、向量和矩阵的统称。也就是说,标量、向量和矩阵都是张量的特例:

标量是零维张量、向量是一维张量、矩阵是二维张量。当然还有3维张量,4维张量,等等。

其中,矩阵是三维张量下的一个二维切面。具体如下图所示。

a26db6d93bac9692a6f783f8fafaaa16.png

Tensor的基本创建方法

1.torch.Tensor()函数创建

在Pytorch中穿件Tensor,需要导入torch包,首先在pycharm中导入torch包

import torch

然后使用最基本的方法torch.Tensor()方法创建Tensor。这里我们创建一个4*4的矩阵,也就是二维张量。

import torch
x = torch.Tensor(4,4)
x
tensor([[3.4175e+02, 8.9123e-43, 3.4174e+02, 8.9123e-43],
        [3.4170e+02, 8.9123e-43, 3.4170e+02, 8.9123e-43],
        [3.4175e+02, 8.9123e-43, 3.4175e+02, 8.9123e-43],
        [3.4172e+02, 8.9123e-43, 3.4172e+02, 8.9123e-43]])

可以看到,我们虽然没有对矩阵x进行初始化,但是它已经有了值,下面我们看一下,它的这个值是什么类型的。

x.type()
'torch.FloatTensor'
x.dtype
torch.float32

从x.type()返回的变量类型可以看出,torch.Tensor()默认类型是torch.FloatTensor,而该类型的dtype为32为的浮点数。下图是pytorch的8种数据类型

64e734bab8b850a704e6cad9957931a5.png

下面使用torch.DoubleTensor()函数创建一个1*2*5的64位浮点数的Tensor

x = torch.DoubleTensor(1,2,5)
x
tensor([[[1.9582e-306, 2.2252e-306, 8.4561e-307, 1.4242e-306, 1.1126e-306],
         [1.1126e-306, 1.4241e-306, 7.5660e-307, 6.2306e-307, 8.4561e-307]]],
       dtype=torch.float64)

2.torch.Tensor()使用List创建

在这里我们使用Python中的列表创建Tensor。

list = [[1,2,3],[4,5,6],[7,8,9]]
torch.Tensor(list)
tensor([[1., 2., 3.],
        [4., 5., 6.],
        [7., 8., 9.]])

3.快速创建法

torch.zeros()函数:用于创建元素全为0的Tensor.示例如下:

>>> torch.zeros(3,4)
tensor([[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])

torch.eye()函数:用于创建对角线位置元素全为1、其它位置全为0的Tensor.示例如下:

>>> torch.eye(4,4)
tensor([[1., 0., 0., 0.],
        [0., 1., 0., 0.],
        [0., 0., 1., 0.],
        [0., 0., 0., 1.]])

torch.ones()函数:用于创建元素全为1的Tensor.示例如下:

>>> torch.ones(4,4)
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])

torch.rand()函数:用于创建元素初始化在[0,1)区间的随机数的Tensor.示例如下:

>>> torch.rand(4,4)
tensor([[0.6398, 0.1484, 0.5834, 0.5358],
        [0.1273, 0.9559, 0.8656, 0.4693],
        [0.6571, 0.2421, 0.8601, 0.0044],
        [0.7654, 0.8349, 0.8755, 0.5225]])

torch.arange()函数:用于创建创建一个在区间内按指定步长递增的一维的Tensor.前两个参数指定区间范围,第三个参数指定步长。示例如下:

>>> torch.arange(1,4,0.5)
tensor([1.0000, 1.5000, 2.0000, 2.5000, 3.0000, 3.5000])

还有一些其它函数的创建方法,如下面所示:

torch.eye() 创建对角线位置元素全为1的Tensor;

torch.from_numpy() 将Numpy的ndarray对象转换为Tensor;

torch.linspace() 创建一个区间内被均匀划分的一维Tensor;

torch.randn() 创建服从标准正太分布的一组随机数Tensor.

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐