快捷方式

torch.sparse.sampled_addmm

torch.sparse.sampled_addmm(input, mat1, mat2, *, beta=1., alpha=1., out=None) Tensor

在由 input 的稀疏模式指定的位置執行稠密矩陣 mat1mat2 的矩陣乘法。將矩陣 input 加到最終結果中。

在數學上,它執行以下運算

out=α (mat1@mat2)spy(input)+β input\text{out} = \alpha\ (\text{mat1} \mathbin{@} \text{mat2})*\text{spy}(\text{input}) + \beta\ \text{input}

其中 spy(input)\text{spy}(\text{input})input 的稀疏模式矩陣,alphabeta 是縮放因子。spy(input)\text{spy}(\text{input})input 非零值的位置取值為 1,其他位置為 0。

注意

input 必須是稀疏 CSR 張量。mat1mat2 必須是稠密張量。

引數
  • input (Tensor) – 形狀為 (m, n) 的稀疏 CSR 矩陣,用於新增並計算取樣的矩陣乘法

  • mat1 (Tensor) – 形狀為 (m, k) 的稠密矩陣,用於乘法運算

  • mat2 (Tensor) – 形狀為 (k, n) 的稠密矩陣,用於乘法運算

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

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

  • out (Tensor, optional) – 輸出張量。如果為 None 則忽略。預設值: None

示例

>>> input = torch.eye(3, device='cuda').to_sparse_csr()
>>> mat1 = torch.randn(3, 5, device='cuda')
>>> mat2 = torch.randn(5, 3, device='cuda')
>>> torch.sparse.sampled_addmm(input, mat1, mat2)
tensor(crow_indices=tensor([0, 1, 2, 3]),
    col_indices=tensor([0, 1, 2]),
    values=tensor([ 0.2847, -0.7805, -0.1900]), device='cuda:0',
    size=(3, 3), nnz=3, layout=torch.sparse_csr)
>>> torch.sparse.sampled_addmm(input, mat1, mat2).to_dense()
tensor([[ 0.2847,  0.0000,  0.0000],
    [ 0.0000, -0.7805,  0.0000],
    [ 0.0000,  0.0000, -0.1900]], device='cuda:0')
>>> torch.sparse.sampled_addmm(input, mat1, mat2, beta=0.5, alpha=0.5)
tensor(crow_indices=tensor([0, 1, 2, 3]),
    col_indices=tensor([0, 1, 2]),
    values=tensor([ 0.1423, -0.3903, -0.0950]), device='cuda:0',
    size=(3, 3), nnz=3, layout=torch.sparse_csr)

文件

查閱 PyTorch 的全面開發者文件

檢視文件

教程

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

檢視教程

資源

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

檢視資源