深度学习全书:公式+推导+代码+TensorFlow全程案例
上QQ阅读APP看书,第一时间看更新

2-2-2 矩阵

矩阵是二维的张量,拥有行(Row)与列(Column),可用于表达一个平面N个点(N×2)、或一个3D空间N个点(N×3),例如:

矩阵加法/减法与向量相似,相同位置的元素作运算即可,但乘法运算通常是指内积,使用@。

以下程序请参考02_02_线性代数_矩阵.ipynb。

1.两个矩阵相加

程序代码如下:

2.两个矩阵相乘

解题:左边矩阵的第二维须等于右边矩阵的第一维,即(m, k)×(k, n)=(m, n),则有

其中左上角的计算过程为(1,2,3)×(9,7,5)=(1×9)+(2×7)+(3×5)=38,右上角的计算过程为(1,2,3)×(8,6,4)=(1×8)+(2×6)+(3×4)=32,以此类推,如图2.7所示。

图2.7 矩阵相乘

程序代码如下:

3.矩阵(AB)相乘

A×B是否等于B×A?程序代码如下:

执行结果:A×B不等于B×A

4.特殊矩阵

矩阵在运算时,除了一般的加减乘除外,还有一些特殊的矩阵,包括转置矩阵(Transpose)、反矩阵(Inverse)、对角矩阵(Diagonal Matrix)、单位矩阵(Identity Matrix)等。

(1)转置矩阵:列与行互换。例如:

ATT = A:进行两次转置,会恢复成原来的矩阵。

对上述矩阵作转置。程序代码如下:

也可以使用np.transpose(A)。

(2)反矩阵(A-1):A必须为方阵,即列数与行数须相等,且必须是非奇异方阵(Non-singular),即每一列或行之间不可以相异于其他列或行。程序代码如下:

执行结果如下:

(3)单位矩阵:若A为非奇异(Non-singular)矩阵,则A @ A-1 =单位矩阵(I)。所谓的非奇异矩阵是指任一行不能为其他行的倍数或多行的组合,包括各种四则运算,矩阵的列也须符合相同的规则。

试对下列矩阵验算A @ A-1是否等于单位矩阵(I)。

程序代码如下:

执行结果如下:

结果为单位矩阵,表示A为非奇异矩阵。

试对下列矩阵验算A @ A-1是否等于单位矩阵(I)。

程序代码如下:

执行结果如下:

A为奇异(Singular)矩阵,因为

第二列=第一列+ 1

第三列=第一列+ 2

A @ A-1不等于单位矩阵。