Spec-Zone.ru › PyTorch 2

torch.sparse.sampled_addmm

torch.sparse.sampled_addmm(input, mat1, mat2, *, beta=1., alpha=1., out=None) → Tensor

Выполняет матричное произведение плотных матриц mat1 и mat2 в позициях, заданных структурой разреженности input. Матрица input добавляется к конечному результату.

Математически это выполняет следующую операцию:

out=α(mat1@mat2)∗spy(input)+β input\text{out} = \alpha\ (\text{mat1} \mathbin{@} \text{mat2})*\text{spy}(\text{input}) + \beta\ \text{input}

где spy(input)\text{spy}(\text{input}) — матрица структуры разреженности input, alpha и beta — множители масштабирования. spy(input)\text{spy}(\text{input}) имеет значение 1 в позициях, где input имеет ненулевые значения, и 0 в противном случае.

Примечание

input должна быть разреженной тензором CSR. mat1 и mat2 должны быть плотными тензорами.

Параметры
  • input (Tensor) – разреженная CSR-матрица размера (m, n), которая должна быть добавлена и использована для вычисления выборочного матричного произведения
  • mat1 (Tensor) – плотная матрица размера (m, k), которая должна быть умножена
  • mat2 (Tensor) – плотная матрица размера (k, n), которая должна быть умножена
Ключевые аргументы
  • beta (Число, необязательно) – множитель для input (β\beta)
  • alpha (Число, необязательно) – множитель для mat1@mat2mat1 @ mat2 (α\alpha)
  • out (Tensor, необязательно) – выходной тензор. Игнорируется, если None. По умолчанию: None.

Примеры:

>>> input = torch.eye(3, device='cuda').to_sparse_csr()
>>> mat1 = torch.randn(3, 5, device='cuda')
>>> mat2 = torch.randn(5, 3, device='cuda')
>>> torch.sparse.sampled_addmm(input, mat1, mat2)
tensor(crow_indices=tensor([0, 1, 2, 3]),
    col_indices=tensor([0, 1, 2]),
    values=tensor([ 0.2847, -0.7805, -0.1900]), device='cuda:0',
    size=(3, 3), nnz=3, layout=torch.sparse_csr)
>>> torch.sparse.sampled_addmm(input, mat1, mat2).to_dense()
tensor([[ 0.2847,  0.0000,  0.0000],
    [ 0.0000, -0.7805,  0.0000],
    [ 0.0000,  0.0000, -0.1900]], device='cuda:0')
>>> torch.sparse.sampled_addmm(input, mat1, mat2, beta=0.5, alpha=0.5)
tensor(crow_indices=tensor([0, 1, 2, 3]),
    col_indices=tensor([0, 1, 2]),
    values=tensor([ 0.1423, -0.3903, -0.0950]), device='cuda:0',
    size=(3, 3), nnz=3, layout=torch.sparse_csr)

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.sparse.sampled_addmm.html

Spec-Zone.ru

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