深度學習第二階段之線性代數

2021-10-04 19:03:04 字數 2201 閱讀 1114

其他特殊矩陣

加減:形狀相同,對應位置相加相減(矩陣必須同形)

數加/數減:矩陣的每個位置跟乙個數相加,相減

點乘:要求兩個矩陣必須同樣形狀大小,矩陣各個對應元素相乘

數乘:矩陣的每個位置跟乙個數相乘

叉乘:前乙個矩陣的列需要和後乙個矩陣的行一致,不滿足乘法交換律(ab≠ba)

import torch

a = torch.tensor([[

1,2]

,[3,

4],[

5,6]

])b = torch.tensor([[

5,6]

,[7,

8]])

print

(a*a)

#點乘print

(a@b)

#叉乘

前幾項和矩陣相同

張量的叉乘: [n,x,y] @[n,y,c] = [n,x,c] 注意看形狀

矩陣的轉置

import torch

a = torch.tensor([[

1,2]

,[3,

4],[

5,6]

],dtype=torch.float32)

print

(a)print

(a.t)

tensor([[

1.,2

.],[

3.,4

.],[

5.,6

.]])

tensor([[

1.,3

.,5.

],[2

.,4.

,6.]

])

張量的轉置n h w c 轉成 n c h w

c = torch.randn((1

,5,6

,3))

print

(c.shape)

c_trans = c.permute(0,

3,1,

2)print

(c_trans.shape)

torch.size([1

,5,6

,3])

torch.size([1

,3,5

,6])

1. 逆的運算相當於矩陣的除法運算

2. 只有非奇異方陣才有逆

3. 違逆是逆的推廣,去除了方陣的限制

當x是方陣時:

y = w*x

w = y/x = y * x−1

x^x−

1 此時x−1

x^x−

1 就是x的逆

當x不是方陣時:

y = wx

w = y/x = y * xtx^

xt/ x * xtx^

xt(此時x * xtx^

xt就是方陣了)

= ( x∗

xt)−

1()}^

(x∗xt)

−1*x tx^

xty(最小二乘法)

( x∗

xt)−

1()}^

(x∗xt)

−1*x tx^

xt就是x的違逆

最小二乘法公式

import numpy as np

x = np.array([[

1],[

3],[

6]])

y = x*

4inv_x = np.linalg.inv(

(x.t)

.dot(x)

)print

(inv_x)

print

(inv_x @ x.t @y)

[

[0.02173913]]

[[4.

]]

方陣

斜對角陣(主對角線之外的元素皆為0的矩陣)

單位矩陣 (對角線上是1,其他都為零)

對稱矩陣(與對角線對稱)

零矩陣稀疏矩陣(大部分是0,少部分有之值)

第二階段小結

資料結構基本概念 資料 資料即資訊的載體,是能夠輸入到計算機中並且能被計算機識別,儲存和處理的符號總稱 資料元素 資料元素是資料的基本單位,又稱之為記錄。一般,資料元素由若干基本項 字段,域,屬性 組成。資料結構 資料結構指的是資料元素及資料元素之間的相互關係,或組織資料的形式 資料之間的結構關係 ...

第二階段小結

先是pta上的作業 這題要求我們熟練的掌握類之間的繼承與多型的使用,在類與類之間傳遞資訊時不能弄混,要弄清楚單一職責原則。這一題主要考察繼承與多型,泛型容器的應用。接下來是學習通上的課後作業 第乙個是單向鍊錶 單向鍊錶由乙個個的節點組成,這些節點都帶有下乙個節點的引用,最後乙個節點指向null,這樣...

vivi的第二階段

vivi 的第二階段 vivi 的第二階段是從 main 函式開始,同一般的 c語言程式一樣,該函式在 init main.c 檔案中,總共可以分為 8個步驟。1 函式開始,通過 putstr vivi banner 列印出vivi 的版本。vivi banner 在 init version.c ...