其他特殊矩陣
加減:形狀相同,對應位置相加相減(矩陣必須同形)
數加/數減:矩陣的每個位置跟乙個數相加,相減
點乘:要求兩個矩陣必須同樣形狀大小,矩陣各個對應元素相乘
數乘:矩陣的每個位置跟乙個數相乘
叉乘:前乙個矩陣的列需要和後乙個矩陣的行一致,不滿足乘法交換律(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 ...