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имеет формат strided, можно указать количество плотных измерений; в этом случае будет создан гибридный разреженный тензор с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. Размер блока должен быть кортежем из двух элементов, значения которых без остатка делят два разреженных измерения. -
dense_dim (int, необязательно) – Количество плотных измерений результирующего тензора CSR, CSC, BSR или BSC. Этот аргумент следует использовать, только если
selfявляется тензором с форматом strided, и его значение должно находиться в диапазоне от 0 до размерности тензораselfминус два.
-
layout (
Пример:
>>> 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)
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.Tensor.to_sparse.html