在深度学习的实践中,我们通常使用向量或矩阵运算来提高计算效率。,这样可以充分利用计算机的并行计算能力,特别是利用GPU来实现高效矩阵运算。
在深度学习框架中,数据经常用张量(Tensor)的形式来存储。张量是矩阵的扩展与延伸,可以认为是高阶的矩阵。1阶张量为向量,2阶张量为矩阵。如果你对Numpy熟悉,那么张量是类似于Numpy的多维数组(ndarray)的概念,可以具有任意多的维度。
张量的大小可以用形状(shape)来描述。比如一个三维张量的形状是 [2,2,5][2, 2, 5][2,2,5],表示每一维(也称为轴(axis))的元素的数量,即第0轴上元素数量是2,第1轴上元素数量是2,第2轴上的元素数量为5。
张量中元素的类型可以是布尔型数据、整数、浮点数或者复数,但同一张量中所有元素的数据类型均相同。因此我们可以给张量定义一个数据类型(dtype)来表示其元素的类型。
创建张量的方式:
(1)通过指定的Python列表数据[2.0, 3.0, 4.0],创建一个一维张量。(一维是向量)
(2)通过指定的Python列表数据来创建类似矩阵(matrix)的二维张量(二维矩阵.......)。
张量在任何一个维度上的元素数量必须相等
创建张量的方法:
(1)指定形状创建
如果要创建一个指定形状、元素数据相同的张量,可以使用paddle.zeros(全0 )
、paddle.ones(全1)
、paddle.full(指定数字大小)
**stop_gradient=True,表示不计算梯度
使用paddle.full创建数据全为指定值,形状为[m, n]的Tensor,这里我们指定数据为10 full_Tensor = paddle.full([m, n], 10),下面为full的结果:
[[10., 10., 10.], [10., 10., 10.]])
(2)指定区间创建:
如果要在指定区间内创建张量,可以使用paddle.arange
、paddle.linspace
使用paddle.arange创建以步长step均匀分隔数值区间[start, end)的一维Tensor arange_Tensor = paddle.arange(start=1, end=5, step=1)不包括end
使用paddle.linspace创建以元素个数num均匀分隔数值区间[start, stop]的Tensor linspace_Tensor = paddle.linspace(start=1, stop=5, num=5)可包括end,根据num确定
使用reshape时存在一些技巧,比如: