购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 张量、矩阵和向量

标量(Scalar)只有大小的概念,没有方向的概念,通过一个具体的数值就能表达完整。比如重量、温度、长度、体积、时间、热量等数据是标量。

只有一行或者一列的数组被称为向量,因此我们把向量定义为一个一维数组。向量主要有2个维度:大小、方向。箭头的长度表示大小,箭头所指的方向表示方向。

矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵,而行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵。

如图3-1所示,由m×n个数a ij 排成的m行n列的数表称为m行n列的矩阵,简称m×n矩阵。

图3-1

标量、向量、矩阵、张量这四个概念的维度是不断上升的,我们用点、线、面、体的概念来比喻,解释起来会更加容易:

● 点——标量。

● 线——向量。

● 面——矩阵。

● 体——张量。

0阶的张量就是标量,1阶的张量就是向量,2阶的张量就是矩阵,大于等于3阶的张量没有名称,统一叫作张量。例如:

● 标量:很简单,就是一个数,比如1、2、5、108等。

● 向量:[1,2]、[1,2,3]、[1,2,3,4]、[3,5,67,…, n]都是向量。

● 矩阵:[[1,3],[3,5]]、[[1,2,3],[2,3,4],[3,4,5]]、[[4,5,6,7,8],[3,4,7,8,9],[2,11,34,56,18]]是矩阵。

● 3阶张量:比如[[[1,2],[3,4]],[[1,2],[3,4]]]。

TensorFlow内部的计算都是基于张量的,因此我们有必要先对张量有个认识。张量在我们熟悉的标量、向量之上定义,详细的定义比较复杂,我们可以先简单地将它理解成为一个多维数组:

    3                                 #这个 0 阶张量就是标量,shape=[]
    [1., 2., 3.]                      #这个 1 阶张量就是向量,shape=[3]
    [[1., 2., 3.], [4., 5., 6.]]      #这个 2 阶张量就是二维数组,shape=[2, 3]
    [[[1., 2., 3.]], [[7., 8., 9.]]]  #这个 3 阶张量就是三维数组,shape=[2, 1, 3]

这里有个容易混淆的地方,就是数学里面的3维向量、n维向量,其实指的是1阶张量(即向量)的形状,即它所包含分量的个数,比如[1,3]这个向量的维数为2,它有1和3这两个分量;[1,2,3,…,4096]这个向量的维数为4096,它有1、2、…、4096这4096个分量,说的都是向量的形状。我们不能说[1,3]这个“张量”的阶数是2,只能说[1,3]这个“1阶张量”的维数是2。矩阵也是类似,常常说的n×m阶矩阵,这里的阶指的也是矩阵的形状。

那么,张量的阶数和张量的形状怎么理解呢?阶数要看张量的最左边有多少个左中括号,有n个,则这个张量就是n阶张量。

比如,[[1,3],[3,5]]最左边有两个左中括号,它就是2阶张量;[[[1,2],[3,4]],[[1,2],[3,4]]]最左边有三个左中括号,它就是3阶张量。[[1,3],[3,5]]的最左边中括号里有[1,3]和[3,5]这两个元素,最左边的第二个中括号里有1和3这两个元素,所以形状为[2,2];[[[1,2],[3,4]],[[1,2],[3,4]]]的最左边中括号里有[[1,2],[3,4]]和[[1,2],[3,4]]这两个元素,最左边的第二个中括号里有[1,2]和[3,4]这两个元素,最左边的第三个中括号里有1和2这两个元素,所以形状为[2,2,2]。在形状的中括号中有多少个数字,就代表这个张量是多少阶的张量。 phPPolHNtW+K1snoVJvyU/xOD3a5IN8nNeu457hWk4adWb5UJKulgwtodIvErE8s

点击中间区域
呼出菜单
上一章
目录
下一章
×