1. 程式人生 > >線性代數教程之一——矩陣乘法計算、理解及程式碼實現

線性代數教程之一——矩陣乘法計算、理解及程式碼實現

參考了《深度學習》鉅作,以下是矩陣篇的目錄。
這裡寫圖片描述

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 c import numpy as np a = np.matrix([[2,3,4],[1,0,5]]) b = np.matrix([1,0,1]).T Matrix_Mul(a=a,b=b)

輸出結果:

這裡寫圖片描述

當然,你可以直接用a*b計算出來一樣的結果,我這裡只是為了單純的自己實現一下矩陣的乘法運算。

2 矩陣與向量乘法運算的三種等價寫法

第一種
第一種
第二種
第二種
第三種
這裡寫圖片描述
這裡寫圖片描述

3、矩陣乘法的理解

矩陣乘法對應了一個變換,是把任意一個向量變成另一個方向或長度的新向量。在這個變化過程中,原向量主要發生旋轉、伸縮的變化。如果矩陣對某些向量只發生伸縮變換,不產生旋轉效果,那麼這些向量就稱為這個矩陣的特徵向量,伸縮的比例就是特徵值。

比如M矩陣變換:
這裡寫圖片描述

它對應的線性變換是下面的形式形式:
這裡寫圖片描述

那麼如果矩陣M不是對稱的,比如
這裡寫圖片描述

它所描述的變換如下圖所示:
這裡寫圖片描述

這其實是在平面上對一個軸進行的拉伸變換【如藍色箭頭所示】,在圖中藍色箭頭是一個最主要的變化方向。變化方向可能有不止一個,但如果我們想要描述好一個變換,那我們就描述好這個變換主要的變化方向就好了。