快捷方式

torch.Tensor.to_sparse

Tensor.to_sparse(sparseDims) Tensor

返回张量的稀疏副本。PyTorch 支持坐标格式的稀疏张量。

参数

sparseDims (int, 可选) – 新稀疏张量中要包含的稀疏维度数

示例

>>> d = torch.tensor([[0, 0, 0], [9, 0, 10], [0, 0, 0]])
>>> d
tensor([[ 0,  0,  0],
        [ 9,  0, 10],
        [ 0,  0,  0]])
>>> d.to_sparse()
tensor(indices=tensor([[1, 1],
                       [0, 2]]),
       values=tensor([ 9, 10]),
       size=(3, 3), nnz=2, layout=torch.sparse_coo)
>>> d.to_sparse(1)
tensor(indices=tensor([[1]]),
       values=tensor([[ 9,  0, 10]]),
       size=(3, 3), nnz=1, layout=torch.sparse_coo)
to_sparse(*, layout=None, blocksize=None, dense_dim=None) Tensor

返回具有指定布局和块大小的稀疏张量。如果 self 是步长张量,则可以指定密集维度的数量,并将创建一个混合稀疏张量,其中包含 dense_dim 个密集维度和 self.dim() - 2 - dense_dim 个批次维度。

注意

如果 self 布局和块大小参数与指定的布局和块大小匹配,则返回 self。否则,返回 self 的稀疏张量副本。

参数
  • layout (torch.layout, 可选) – 期望的稀疏布局。可以是 torch.sparse_coo, torch.sparse_csr, torch.sparse_csc, torch.sparse_bsr, 或 torch.sparse_bsc 之一。默认值:如果 None, 则为 torch.sparse_coo

  • blocksize (list, tuple, torch.Size, 可选) – 结果 BSR 或 BSC 张量的块大小。对于其他布局,指定非 None 的块大小将导致 RuntimeError 异常。块大小必须是长度为 2 的元组,其项均匀地划分两个稀疏维度。

  • dense_dim (int, 可选) – 结果 CSR、CSC、BSR 或 BSC 张量的密集维度数。仅当 self 是步长张量时才应使用此参数,并且必须是介于 0 和 self 张量的维度减 2 之间的值。

示例

>>> x = torch.tensor([[1, 0], [0, 0], [2, 3]])
>>> x.to_sparse(layout=torch.sparse_coo)
tensor(indices=tensor([[0, 2, 2],
                       [0, 0, 1]]),
       values=tensor([1, 2, 3]),
       size=(3, 2), nnz=3, layout=torch.sparse_coo)
>>> x.to_sparse(layout=torch.sparse_bsr, blocksize=(1, 2))
tensor(crow_indices=tensor([0, 1, 1, 2]),
       col_indices=tensor([0, 0]),
       values=tensor([[[1, 0]],
                      [[2, 3]]]), size=(3, 2), nnz=2, layout=torch.sparse_bsr)
>>> x.to_sparse(layout=torch.sparse_bsr, blocksize=(2, 1))
RuntimeError: Tensor size(-2) 3 needs to be divisible by blocksize[0] 2
>>> x.to_sparse(layout=torch.sparse_csr, blocksize=(3, 1))
RuntimeError: to_sparse for Strided to SparseCsr conversion does not use specified blocksize

>>> x = torch.tensor([[[1], [0]], [[0], [0]], [[2], [3]]])
>>> x.to_sparse(layout=torch.sparse_csr, dense_dim=1)
tensor(crow_indices=tensor([0, 1, 1, 3]),
       col_indices=tensor([0, 0, 1]),
       values=tensor([[1],
                      [2],
                      [3]]), size=(3, 2, 1), nnz=3, layout=torch.sparse_csr)

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深度教程

查看教程

资源

查找开发资源并获得问题解答

查看资源