快捷方式

torch.sparse.spdiags

torch.sparse.spdiags(diagonals, offsets, shape, layout=None) Tensor

透過將 diagonals 張量各行的值放置到指定對角線上來建立一個稀疏二維張量。

``offsets`` 張量控制設定哪些對角線。

  • 如果 offsets[i] = 0,則表示主對角線

  • 如果 offsets[i] < 0,則表示主對角線下方

  • 如果 offsets[i] > 0,則表示主對角線上方

diagonals 中的行數必須與 offsets 的長度匹配,並且偏移量不能重複。

引數
  • diagonals (Tensor) – 以行方式儲存對角線的矩陣

  • offsets (Tensor) – 要設定的對角線,儲存為一個向量

  • shape (由整陣列成的 2 元組) – 結果的期望形狀

關鍵字引數

layout (torch.layout, 可選) – 返回張量的期望佈局。支援 torch.sparse_cootorch.sparse_csctorch.sparse_csr。預設值:torch.sparse_coo

示例

設定矩陣的主對角線和前兩個下對角線

>>> diags = torch.arange(9).reshape(3, 3)
>>> diags
tensor([[0, 1, 2],
        [3, 4, 5],
        [6, 7, 8]])
>>> s = torch.sparse.spdiags(diags, torch.tensor([0, -1, -2]), (3, 3))
>>> s
tensor(indices=tensor([[0, 1, 2, 1, 2, 2],
                       [0, 1, 2, 0, 1, 0]]),
       values=tensor([0, 1, 2, 3, 4, 6]),
       size=(3, 3), nnz=6, layout=torch.sparse_coo)
>>> s.to_dense()
tensor([[0, 0, 0],
        [3, 1, 0],
        [6, 4, 2]])

改變輸出佈局

>>> diags = torch.arange(9).reshape(3, 3)
>>> diags
tensor([[0, 1, 2],[3, 4, 5], [6, 7, 8])
>>> s = torch.sparse.spdiags(diags, torch.tensor([0, -1, -2]), (3, 3), layout=torch.sparse_csr)
>>> s
tensor(crow_indices=tensor([0, 1, 3, 6]),
       col_indices=tensor([0, 0, 1, 0, 1, 2]),
       values=tensor([0, 3, 1, 6, 4, 2]), size=(3, 3), nnz=6,
       layout=torch.sparse_csr)
>>> s.to_dense()
tensor([[0, 0, 0],
        [3, 1, 0],
        [6, 4, 2]])

設定大型輸出的部分對角線

>>> diags = torch.tensor([[1, 2], [3, 4]])
>>> offsets = torch.tensor([0, -1])
>>> torch.sparse.spdiags(diags, offsets, (5, 5)).to_dense()
tensor([[1, 0, 0, 0, 0],
        [3, 2, 0, 0, 0],
        [0, 4, 0, 0, 0],
        [0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0]])

注意

在設定給定對角線的值時,對角線上的索引以及 diagonals 張量中對應行的索引被用作輸出中的列索引。這意味著,當設定帶有正偏移量 k 的對角線時,該對角線上的第一個值將是 diagonals 張量中對應行中位置 k 的值

指定正偏移量

>>> diags = torch.tensor([[1, 2, 3], [1, 2, 3], [1, 2, 3]])
>>> torch.sparse.spdiags(diags, torch.tensor([0, 1, 2]), (5, 5)).to_dense()
tensor([[1, 2, 3, 0, 0],
        [0, 2, 3, 0, 0],
        [0, 0, 3, 0, 0],
        [0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0]])

文件

查閱 PyTorch 全面的開發者文件

查閱文件

教程

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

查閱教程

資源

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

查閱資源