快捷方式

torch.matmul

torch.matmul(input, other, *, out=None) Tensor

兩個張量的矩陣乘積。

行為取決於張量的維度,具體如下:

  • 如果兩個張量都是 1 維,則返回點積(標量)。

  • 如果兩個引數都是 2 維,則返回矩陣-矩陣乘積。

  • 如果第一個引數是 1 維,第二個引數是 2 維,則在矩陣乘法之前,在第一個引數的維度前面新增一個 1。矩陣乘法之後,移除新增的維度。

  • 如果第一個引數是 2 維,第二個引數是 1 維,則返回矩陣-向量乘積。

  • 如果兩個引數至少都是 1 維,並且至少有一個引數是 N 維(N > 2),則返回批處理矩陣乘法。如果第一個引數是 1 維,則在批處理矩陣乘法之前,在其維度前面新增一個 1,之後移除。如果第二個引數是 1 維,則在批處理矩陣乘法之前,在其維度後面新增一個 1,之後移除。非矩陣(即批處理)維度會被廣播(因此必須是可廣播的)。例如,如果 input 是一個 (j×1×n×n)(j \times 1 \times n \times n) 形狀的張量,other 是一個 (k×n×n)(k \times n \times n) 形狀的張量,則 out 將是 (j×k×n×n)(j \times k \times n \times n) 形狀的張量。

    請注意,廣播邏輯在確定輸入是否可廣播時,僅檢視批處理維度,而不檢視矩陣維度。例如,如果 input 是一個 (j×1×n×m)(j \times 1 \times n \times m) 形狀的張量,other 是一個 (k×m×p)(k \times m \times p) 形狀的張量,即使最後兩個維度(即矩陣維度)不同,這些輸入對於廣播也是有效的。out 將是 (j×k×n×p)(j \times k \times n \times p) 形狀的張量。

此操作支援具有稀疏佈局的引數。特別是矩陣-矩陣乘法(兩個引數都是 2 維)支援具有與 torch.mm() 相同限制的稀疏引數。

警告

稀疏支援是 Beta 特性,某些 layout(s)/dtype/device 組合可能不受支援,或者可能不支援 autograd。如果您發現缺少功能,請提交 feature request。

此運算子支援 TensorFloat32

在某些 ROCm 裝置上,當使用 float16 輸入時,此模組將在 backward 過程中使用不同的精度

注意

此函式的 1 維點積版本不支援 out 引數。

引數
  • input (Tensor) – 第一個要相乘的張量

  • other (Tensor) – 第二個要相乘的張量

關鍵字引數

out (Tensor, optional) – 輸出張量。

示例

>>> # vector x vector
>>> tensor1 = torch.randn(3)
>>> tensor2 = torch.randn(3)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([])
>>> # matrix x vector
>>> tensor1 = torch.randn(3, 4)
>>> tensor2 = torch.randn(4)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([3])
>>> # batched matrix x broadcasted vector
>>> tensor1 = torch.randn(10, 3, 4)
>>> tensor2 = torch.randn(4)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([10, 3])
>>> # batched matrix x batched matrix
>>> tensor1 = torch.randn(10, 3, 4)
>>> tensor2 = torch.randn(10, 4, 5)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([10, 3, 5])
>>> # batched matrix x broadcasted matrix
>>> tensor1 = torch.randn(10, 3, 4)
>>> tensor2 = torch.randn(4, 5)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([10, 3, 5])

文件

查閱 PyTorch 的全面開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源