线性代数教程之一——矩阵乘法计算、理解及代码实现

来源:互联网 发布:淘宝详情页图片拉长 编辑:程序博客网 时间:2024/06/06 09:27

参考了《深度学习》巨作,以下是矩阵篇的目录。
这里写图片描述

1 矩阵的乘法

设矩阵A为m×n矩阵,B为n×p矩阵,则它们的乘法公式为:
这里写图片描述

相关代码实现:

# 矩阵滴乘法运算# 注意:需要传入np.matrix类型数据def Matrix_Mul(a,b):    if a.shape[1] != b.shape[0]:        print('这两个矩阵无法做乘法,请检查左边矩阵的列数是否与右边矩阵的行数相等!')    else:        c = np.zeros(a.shape[0]*b.shape[1]).reshape(a.shape[0],b.shape[1])        for i in range(a.shape[0]):            for j in range(b.shape[1]):                for k in range(a.shape[1]):                    c[i,j] = c[i,j] + a[i,k]*b[k,j]    return cimport numpy as npa = np.matrix([[2,3,4],[1,0,5]])b = np.matrix([1,0,1]).TMatrix_Mul(a=a,b=b)

输出结果:

这里写图片描述

当然,你可以直接用a*b计算出来一样的结果,我这里只是为了单纯的自己实现一下矩阵的乘法运算。

2 矩阵与向量乘法运算的三种等价写法

第一种
第一种
第二种
第二种
第三种
这里写图片描述
这里写图片描述

3、矩阵乘法的理解

矩阵乘法对应了一个变换,是把任意一个向量变成另一个方向或长度的新向量。在这个变化过程中,原向量主要发生旋转、伸缩的变化。如果矩阵对某些向量只发生伸缩变换,不产生旋转效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。

比如M矩阵变换:
这里写图片描述

它对应的线性变换是下面的形式形式:
这里写图片描述

那么如果矩阵M不是对称的,比如
这里写图片描述

它所描述的变换如下图所示:
这里写图片描述

这其实是在平面上对一个轴进行的拉伸变换【如蓝色箭头所示】,在图中蓝色箭头是一个最主要的变化方向。变化方向可能有不止一个,但如果我们想要描述好一个变换,那我们就描述好这个变换主要的变化方向就好了。

原创粉丝点击