因為我的記憶力不好,還得輔導兒子的小學奧數,面對好多「腳」的問題,學了線性代數後根本就不用動腦筋,「兩個動物」的通過克拉默法則一下就出來,「三個動物」以上的通過高斯變換就計算出來,都不用思考,於是對線性代數使用python的技術進行總結歸納,為了好玩,也會熟練掌握numpy,以便在神經網路中找到線性代數的身影
1 nump中矩陣運算
1.1 array和matrix
array的乘法,與矩陣的乘法得到結果不同,故雖然array表面和matrix看起來一樣,實則不同,
numpy陣列,矩陣和列表之間的相互轉換,matrix的計算邏輯是a矩陣的行*b矩陣的列,那麼陣列的乘法計算邏輯是什麼呢?numpy中陣列和矩陣的乘法,從這篇文章,可以看出陣列的乘法是兩個陣列相同座標的數值計算,故連個結果不相同
a = np.array([[1,1,1],[0,1,1],[0,0,1]])
b = np.array([[1,0,1],[0,1,0],[1,0,1]])
print(a*b)
a = np.mat([[1,1,1],[0,1,1],[0,0,1]])
b = np.mat([[1,0,1],[0,1,0],[1,0,1]])
print(a*b)
--------------------------------
[[1 0 1]
[0 1 0]
[0 0 1]]
[[2 1 2]
[1 1 1]
[1 0 1]]
雖說如此,但是陣列的內積,計算結果又與matrix乘法等價
a = np.array([[1,1,1],[0,1,1],[0,0,1]])
b = np.array([[1,0,1],[0,1,0],[1,0,1]])
print(np.dot(a,b))
print(a.dot(b))
1.2 解決小學奧數的一道題1.3 矩陣轉換基礎參見np.transpose
這裡記錄乙個例子訓練分類器,先看pytorch中顯示問題中描述因為plt.imshow
中引數順序是imagesize,imagesize,channels
,而npimg的引數順序是channels,imagesize,imagesize
,所以需要轉換。那麼為什麼轉換順序是1,2,0
呢,我們知道np.transpose的預設順序是2,1,0
.
def imshow(img):
img = img / 2 + 0.5 # unnormalize
npimg = img.numpy()
# opencv讀取影象的通道是bgr,而matplotlib的通道是rgb
plt.imshow(np.transpose(npimg, (1, 2, 0)))
plt.show()
在看乙個np.transpose的作用及在影象操作中的使用,你會發現np.transpose
對**逆時針旋轉了90度,而np.transpose(npimp, (1, 2, 0))
則顯示的正確視角。
再閱讀pytorch顯示影象,
待完善…
線性代數(1)線性代數需要解決的問題
線性代數的中心問題是求解線性方程組。那什麼是線性方程呢?所謂線性方程就是指未知量是一次冪的等式,它的一般形式是ax by cz 0。也就是說線性方程組是由方程組成的,而這些方程的未知量都是一次冪。就如我們經常見到的y ax b就是線性方程,如果我們把y ax b畫到二維的直角座標系上,這個方程就是一...
線性代數 線性代數的本質
線性代數在機器學習的領域中扮演者十分重要的角色,所以這裡岔開先整理一些線性代數的基本概念和計算方法。這裡是3blue1brown的線性代數課程的截圖和筆記。作為快速複習的網路筆記。本課程的特點 通過影象展現線性代數計算在幾何圖形上意義。這樣能更好的理解線性代數為什麼叫做線性代數。線性代數為什麼採用這...
線性代數與Python
1.向量 1.1向量例子 1.2向量加法與減法 1.3向量的乘法 2.矩陣 2.1矩陣例子 2.2矩陣的形狀 2.3矩陣的建立函式 向量是指可以加總 以生成新的向量 可以乘以標量 即數字 也可以生成新的向量的物件。向量是有限維空間的點。向量以分量方式 componentwise 做運算。這意味著,如...