快捷键

torch.sparse.spdiags

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

通过将 diagonals 的行值放置在输出指定的对角线上来创建一个稀疏的 2D 张量

第 0#个张量控制哪些对角线被设置。

  • 如果 offsets[i] 等于 0,则是主对角线

  • 如果 offsets[i] 小于 0,则位于主对角线下方

  • 如果 offsets[i] 大于 0,则位于主对角线上方

diagonals 的行数必须与 offsets 的长度匹配,且偏移量不得重复。

参数:
  • 对角线(张量)- 按行存储对角线的矩阵

  • 偏移量(张量)- 要设置的对角线,存储为向量

  • 形状(两个整数的元组)- 所需的结果形状

关键字参数:

布局( 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 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源