Spec-Zone.ru › PyTorch 2.14

torch.sparse_coo_tensor

torch.sparse_coo_tensor(indices, values, size=None, *, dtype=None, device=None, pin_memory=False, requires_grad=False, check_invariants=None, is_coalesced=None) → Tensor

Создаёт разреженный тензор в формате COO (координатном формате) с заданными значениями в указанных indices.

Примечание

Эта функция возвращает неслитый тензор, если is_coalesced не задан или имеет значение None.

Примечание

Если аргумент device не задан, устройство заданного values и тензора (тензоров) индексов должно совпадать. Однако если аргумент задан, входные тензоры будут преобразованы в указанное устройство, которое, в свою очередь, определит устройство созданного разреженного тензора.

Параметры:
  • indices (array_like) – Начальные данные тензора. Это может быть список, кортеж, массив NumPy ndarray, скаляр или данные других типов. Внутри они будут преобразованы в torch.LongTensor. Индексы представляют собой координаты ненулевых значений в матрице, поэтому должны быть двумерными: первая размерность соответствует количеству размерностей тензора, а вторая — количеству ненулевых значений.
  • values (array_like) – Начальные значения тензора. Это может быть список, кортеж, массив NumPy ndarray, скаляр или данные других типов.
  • size (list, tuple, or torch.Size, optional) – Размер разреженного тензора. Если не задан, размер будет определён как минимальный, достаточный для хранения всех ненулевых элементов.
Именованные аргументы:
  • dtype (torch.dtype, optional) – желаемый тип данных возвращаемого тензора. По умолчанию: если значение None, тип данных определяется по values.
  • device (torch.device, optional) – желаемое устройство возвращаемого тензора. По умолчанию: если значение None, используется текущее устройство для типа тензора по умолчанию (см. torch.set_default_device()). device будет CPU для типов тензоров CPU и текущим устройством CUDA для типов тензоров CUDA.
  • pin_memory (bool, optional) – Если задано, возвращаемый тензор будет размещён в закреплённой памяти. Работает только для тензоров CPU. По умолчанию: False.
  • requires_grad (bool, optional) – Нужно ли autograd записывать операции над возвращаемым тензором. По умолчанию: False.
  • check_invariants (bool, optional) – Проверять ли инварианты разреженного тензора. По умолчанию: значение, возвращаемое torch.sparse.check_sparse_tensor_invariants.is_enabled(); изначально False.
  • is_coalesced (bool, optional) – Если значение равно ``True``, вызывающая сторона отвечает за передачу индексов тензора, соответствующих слитому тензору. Если флаг check_invariants равен False, при невыполнении предусловий ошибка не возникнет, что приведёт к незаметно неверным результатам. Чтобы выполнить слияние, вызовите coalesce() для полученного тензора. По умолчанию: None; за исключением тривиальных случаев (например, nnz < 2), для полученного тензора параметр is_coalesced установлен в False`.

Пример:

>>> i = torch.tensor([[0, 1, 1],
...                   [2, 0, 2]])
>>> v = torch.tensor([3, 4, 5], dtype=torch.float32)
>>> torch.sparse_coo_tensor(i, v, [2, 4])
tensor(indices=tensor([[0, 1, 1],
                       [2, 0, 2]]),
       values=tensor([3., 4., 5.]),
       size=(2, 4), nnz=3, layout=torch.sparse_coo)

>>> torch.sparse_coo_tensor(i, v)  # Shape inference
tensor(indices=tensor([[0, 1, 1],
                       [2, 0, 2]]),
       values=tensor([3., 4., 5.]),
       size=(2, 3), nnz=3, layout=torch.sparse_coo)

>>> torch.sparse_coo_tensor(i, v, [2, 4],
...                         dtype=torch.float64,
...                         device=torch.device('cuda:0'))
tensor(indices=tensor([[0, 1, 1],
                       [2, 0, 2]]),
       values=tensor([3., 4., 5.]),
       device='cuda:0', size=(2, 4), nnz=3, dtype=torch.float64,
       layout=torch.sparse_coo)

# Create an empty sparse tensor with the following invariants:
#   1. sparse_dim + dense_dim = len(SparseTensor.shape)
#   2. SparseTensor._indices().shape = (sparse_dim, nnz)
#   3. SparseTensor._values().shape = (nnz, SparseTensor.shape[sparse_dim:])
#
# For instance, to create an empty sparse tensor with nnz = 0, dense_dim = 0 and
# sparse_dim = 1 (hence indices is a 2D tensor of shape = (1, 0))
>>> S = torch.sparse_coo_tensor(torch.empty([1, 0]), [], [1])
tensor(indices=tensor([], size=(1, 0)),
       values=tensor([], size=(0,)),
       size=(1,), nnz=0, layout=torch.sparse_coo)

# and to create an empty sparse tensor with nnz = 0, dense_dim = 1 and
# sparse_dim = 1
>>> S = torch.sparse_coo_tensor(torch.empty([1, 0]), torch.empty([0, 2]), [1, 2])
tensor(indices=tensor([], size=(1, 0)),
       values=tensor([], size=(0, 2)),
       size=(1, 2), nnz=0, layout=torch.sparse_coo)

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.sparse_coo_tensor.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API