注:以下運(yùn)算的對(duì)象a, b, c
均為numpy.ndarray
哩罪,并稱其為numpy數(shù)組
,簡(jiǎn)稱數(shù)組
單個(gè)數(shù)組運(yùn)算 a.shape = (4, 6)
-
a.sum(axis=0)
:縱向求和巡验,返回?cái)?shù)組的shape為(6)
-
a.sum(axis=1)
:橫向求和际插,返回?cái)?shù)組的shape為(4)
-
a.sum()
:求和,返回?cái)?shù)組所以元素的和
-
a+2, a-2, a*2, a/2, a%2, a//2, a**2
:對(duì)數(shù)組的每個(gè)元素進(jìn)行相應(yīng)的運(yùn)算操作
-
a.T
:轉(zhuǎn)置
兩個(gè)數(shù)組運(yùn)算
-
a+b
:a显设、b形狀相同框弛,同位置的元素相乘,返回同型數(shù)組捕捂。其他算術(shù)操作符(+, -, *, /, //, %)
同理
-
np.dot(a, b)
:按矩陣運(yùn)算法則
-
np.vdot(a, b)
:先將a瑟枫、b展開成行向量,再計(jì)算向量的數(shù)量積
數(shù)組自動(dòng)擴(kuò)展及變形a.shape=(4, 6), b.shape=(4, 1), c.shape=(1, 6), d.shape=(6,)
-
a+b
:a的每一列與b相加指攒,其他的算術(shù)運(yùn)算符(+, -, *, /, //, %)
同理
-
a+c
:a的每一行與c相加慷妙,其他的算術(shù)運(yùn)算符(+, -, *, /, //, %)
同理
-
np.dot(a, d)
:效果同np.dot(a, d.reshape(6, 1))
三維數(shù)組運(yùn)算
- 在實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的時(shí)候,為了優(yōu)化運(yùn)算速度允悦,需要將運(yùn)算向量化膝擂,也就是要用到這里的數(shù)組運(yùn)算,有時(shí)會(huì)出現(xiàn)三維數(shù)組的運(yùn)算隙弛。
x = [[[1, 1, 1]],
[[2, 2, 2]]]
a = np.array(x)
w = np.array(x)+1
z = np.array([np.dot(m.T, n) for m, n in zip(a, b)])
z
z.sum(axis=0)/2
array([[[2, 2, 2],
[2, 2, 2],
[2, 2, 2]],
[[6, 6, 6],
[6, 6, 6],
[6, 6, 6]]])
array([[ 4., 4., 4.],
[ 4., 4., 4.],
[ 4., 4., 4.]])
- 這里是簡(jiǎn)單模擬a架馋、w在每一層上求點(diǎn)積,得到的結(jié)果在深度方向上求平均全闷,在神經(jīng)網(wǎng)絡(luò)算法中求權(quán)重的梯度時(shí)經(jīng)常用到叉寂。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者