評價此頁

torch.addmm#

torch.addmm(input, mat1, mat2, out_dtype=None, *, beta=1, alpha=1, out=None) Tensor#

執行矩陣 mat1mat2 的矩陣乘法。矩陣 input 被新增到最終結果中。

如果 mat1 是一個 (n×m)(n \times m) 張量,mat2 是一個 (m×p)(m \times p) 張量,那麼 input 必須 可廣播 到一個 (n×p)(n \times p) 張量,並且 out 將是一個 (n×p)(n \times p) 張量。

alphabeta 分別是 mat1mat2 之間矩陣-向量乘積以及新增的矩陣 input 的縮放因子。

out=β input+α (mat1i@mat2i)\text{out} = \beta\ \text{input} + \alpha\ (\text{mat1}_i \mathbin{@} \text{mat2}_i)

如果 beta 為 0,則 input 的內容將被忽略,並且其中的 naninf 不會被傳播。

對於 FloatTensorDoubleTensor 型別的輸入,引數 betaalpha 必須是實數,否則它們應該是整數。

此操作支援具有 稀疏佈局 的引數。如果 input 是稀疏的,則結果將具有相同的佈局;如果提供了 out,則它必須與 input 具有相同的佈局。

警告

稀疏支援是測試版功能,某些佈局/資料型別/裝置組合可能不支援,或可能不支援自動求導。如果您發現缺少功能,請提交功能請求。

此運算子支援TensorFloat32

在某些 ROCm 裝置上,當使用 float16 輸入時,此模組將對反向傳播使用不同精度

引數
  • input (Tensor) – 要新增的矩陣

  • mat1 (Tensor) – 要進行矩陣乘法的第一個矩陣

  • mat2 (Tensor) – 要進行矩陣乘法的第二個矩陣

  • out_dtype (dtype, optional) – 輸出張量的資料型別。僅在 CUDA 上支援,並且當輸入資料型別為 torch.float16/torch.bfloat16 時,支援 torch.float32。

關鍵字引數
  • beta (Number, optional) – input 的乘數(β\beta

  • alpha (Number, optional) – mat1@mat2mat1 @ mat2 的乘數(α\alpha

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

示例

>>> M = torch.randn(2, 3)
>>> mat1 = torch.randn(2, 3)
>>> mat2 = torch.randn(3, 3)
>>> torch.addmm(M, mat1, mat2)
tensor([[-4.8716,  1.4671, -1.3746],
        [ 0.7573, -3.9555, -2.8681]])