torch.Tensor.to_sparse#
- Tensor.to_sparse(sparseDims) Tensor#
返回張量的稀疏副本。PyTorch支援 座標格式 的稀疏張量。
- 引數
sparseDims (int, optional) – 新建稀疏張量中包含的稀疏維度數量。
示例
>>> 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, optional) – 期望的稀疏佈局。可以是torch.sparse_coo,torch.sparse_csr,torch.sparse_csc,torch.sparse_bsr, 或torch.sparse_bsc之一。預設值:如果為None,則為torch.sparse_coo。blocksize (list, tuple,
torch.Size, optional) – 結果 BSR 或 BSC 張量的塊大小。對於其他佈局,指定非None的塊大小將導致 RuntimeError 異常。塊大小必須是長度為二的元組,其元素能整除兩個稀疏維度。dense_dim (int, optional) – 結果 CSR, CSC, BSR 或 BSC 張量的密集維度數量。此引數僅在
self是跨步張量時使用,並且必須介於 0 和self張量維度減二之間的值。
示例
>>> 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)