torch.sparse_coo_tensor
-
torch.sparse_coo_tensor(indices, values, size=None, *, dtype=None, device=None, 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) – Размер разреженного тензора. Если не указан, размер будет определён как минимальный размер, достаточный для хранения всех ненулевых элементов.
-
indices (array_like) – Начальные данные для тензора. Может быть списком, кортежем, NumPy
- Ключевые аргументы
-
-
dtype (
torch.dtype, optional) – Желаемый тип данных возвращаемого тензора. По умолчанию: если None, тип данных определяется изvalues. -
device (
torch.device, optional) – Желаемое устройство возвращаемого тензора. По умолчанию: если None, используется текущее устройство для типа тензора по умолчанию (см.torch.set_default_tensor_type()).deviceбудет CPU для CPU-тензоров и текущее CUDA-устройство для CUDA-тензоров. -
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`.
-
dtype (
Пример:
>>> 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)
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.sparse_coo_tensor.html