傻傻的不清點積和矩陣乘法第 4 部分

Mondo 娛樂 更新 2024-02-03

作者: Minkyung Kang

譯者:知道來源並尋找流。

原文鏈結:

在上面,我提到不推薦使用 np.DOT 對高維陣列進行操作。 這是什麼意思?

在 stackoverflow 中,有乙個有趣的問題(np.dot 和 @ 之間的區別。 讓我們來看看這個。

# define input arrays

a = np.random.rand(3,2,2) # 2 rows, 2 columns, in 3 layers

b = np.random.rand(3,2,2) # 2 rows, 2 columns, in 3 layers

# perform matrix multiplication

c = np.dot(a, b)

d = a @ b # python 3.5+

c.shape # np.dot

d.shape #

對於相同的輸入,有完全不同的輸出,這怎麼可能? 這是由於對 np 的支援dot 和 @. 看看 stackoverflow 上最受歡迎的答案(也許可以觸及我們的疑問。

從文件中可以看出,matmul 與 dot 在兩個重要方面有所不同:

1.matmul 不允許標量乘法。

2.Matmul 將矩陣堆疊在一起進行廣播,就好像矩陣是元素一樣。 (stacks of matrices are broadcast together as if the matrices were elements.)

最後一點清楚地表明,在處理 3-D 或更高階別的陣列時,dot 和 matmul 方法的行為是不同的。 讓我們從下面的文件中獲取更多資訊。

對於 matmul 函式:如果任何引數是 n-d 陣列 (n>2),則將它們視為駐留在最後兩個索引中的矩陣堆疊並相應地廣播。 (if either argument is n-d, n > 2, it is treated as a stack of matrices residing in the last two indexes and broadcast accordingly.)

對於NP點函式:對於二維陣列,它相當於矩陣乘法; 對於一維陣列,它等價於向量的內積(不包括復共軛)。 對於 n 維陣列,它是 a 的最後乙個軸和 b 的倒數第二個軸上元素的乘積之和。 (for 2-d arrays it is equivalent to matrix multiplication, and for 1-d arrays to inner product of vectors (without complex conjugation). for n dimensions it is a sum product over the last axis of a and the second-to-last of b.)

此外,numpy 的官方文件(其中也有更多詳細資訊。

如果 a 是 n-d 陣列,b 是 m-d 陣列(其中 m>>=2),則它是 a 的最後乙個軸和 b 的倒數第二個軸的總和積:

dot(a, b)[i,j,k,m] = sum(a[i,j,:]b[k,:,m])

因此,簡而言之,在矩陣乘法的正常情況下,如果我們想處理最後兩個索引中的每個矩陣堆疊,我們應該使用 matmul。

np.multiply != np.dot != np.matmul == @

和 NP乘法需要 np求和來執行點積。 不建議用於點積或矩陣乘法。

np.DOT適用於點積和矩陣乘法。 但是,由於其名稱,建議避免將其用於矩陣乘法。

np.matmul 和 @ 是一回事,旨在執行矩陣乘法。 @被新增到python 35+ 為矩陣乘法提供自己的中綴。

np.DOT 和 NPMatmul 的行為大致相似,但有兩個例外:1) Matmul 不允許使用標量乘法,以及 2) 它對 n>2 維的計算方式不同。您可以檢視文件以決定使用哪個函式。

一句話概述:

對於點積運算,使用 np.dot。對於矩陣乘法,對於 python 3@ 用於版本 5 或更高版本,np. 用於早期 Python 版本matmul。

numpy matrix multiplication — np.matmul() and @(

numpy.dot official document(

pep 465 – a dedicated infix operator for matrix multiplication(

difference between numpy dot() and python 3.5+ matrix multiplication @(

我是一名技術創作者

收集知識來滋養你和我。

相關問題答案

    區分“化妝”和“機器”面具還是愚蠢的嗎?

    通常,我們可以在化妝品的包裝上看到 彩妝名稱 和 特殊品牌 而近年來,這些 品牌名稱 被商家用作產品的賣點進行炒作,並在消費者中掀起了一股熱風。那麼這些字型大小究竟代表什麼呢?如何區分?化妝尺寸 化妝品上標明的 化妝品編號 是指非專用化妝品向藥品監督管理部門備案後取得的許可證編號。例如,保濕或抗衰老...

    “易念關山”傻傻分不清,以為“他”是男人!外觀令人驚嘆

    本文作者 茉莉花。責任編輯 細雨。新劇 易念關山 爆火!不僅是因為劇情的反套路,點燃了觀眾封印已久的新想法,還因為何蘭的女性偽裝,實在是假真,讓人傻傻不清。在這個 女裝 一眼就掉下來的時代,她的戲實在是讓觀眾眼前一亮。老天爺可憐,導演終於不再把我們當傻子了!李王 是何嵐拓出道的有效途徑 在 易念關山...

    “易念關山”傻傻分不清,以為“他”是男人!外觀令人驚嘆

    新劇 易念關山 猶如一顆冉冉公升起的新星,以其不拘一格的劇情和何蘭出眾的女性氣質引起轟動 這部劇通過女主角何蘭拓的外表設計與精湛的演技巧妙結合,成功打破了影視作品中女性裝 的陳舊印象,為這部經典劇情注入了新的生命。何嵐國在 彝念關山 中的表演著實令人眼前一亮,尤其是她成功打造的 禮王 形象。在劇中,...

    鞠靜怡又“變臉”了?分不清楊穎和楊穎的區別,震驚了網友?

    月日,楊穎工作室上傳了一組楊穎的最新 其中楊穎打扮成小龍女,身穿白色服裝,看起來相當清爽清純。提到網路上相關事物的熱點,可以提一下楊穎和鞠靜怡的風格相似。兩位明星都有一頭清澈的長髮和韓式的 鐵劉海 他們都用不尋常的髮型來吸引眼球。在這次拍攝中,鞠靜怡將她所有的劉海都收攏起來,變成了乙個大大的後背。妝...

    瑪瑙、玉石、玉石、傻傻的、不清楚的?本文將帶你了解三者的區別!

    瑪瑙 翡翠和翡翠在許多方面有很大不同。首先,從礦物學的角度來看,瑪瑙 翡翠和翡翠有不同的定義和性質。.礦物成分。.瑪瑙 主要由二氧化矽礦物組成,通常為透明或半透明。.翡翠 主要由翡翠礦物成分組成,是比較稀有的翡翠之一。.翡翠 涵蓋多種礦物成分,包括軟玉 翡翠 綠松石等,質地各異。.顏色和質地。.瑪瑙...