Spec-Zone.ru › PyTorch 1

torch.Tensor.scatter_add_

Tensor.scatter_add_(dim, index, src) → Tensor

Добавляет все значения из тензора src в self по индексам, указанным в тензоре index аналогичным образом, как и в scatter_(). Для каждого значения в src, оно добавляется к индексу в self, который определяется его индексом в src для dimension != dim и соответствующим значением в index для dimension = dim.

Для 3-мерного тензора, self обновляется следующим образом:

self[index[i][j][k]][j][k] += src[i][j][k]  # if dim == 0
self[i][index[i][j][k]][k] += src[i][j][k]  # if dim == 1
self[i][j][index[i][j][k]] += src[i][j][k]  # if dim == 2

self, index и src должны иметь одинаковое количество измерений. Также требуется, чтобы index.size(d) <= src.size(d) для всех измерений d, и чтобы index.size(d) <= self.size(d) для всех измерений d != dim. Обратите внимание, что index и src не поддерживают векторизацию.

Примечание

Данная операция может иметь недетерминированное поведение при использовании тензоров на устройстве CUDA. Подробнее см. Воспроизводимость.

Примечание

Обратное распространение реализовано только для src.shape == index.shape.

Параметры:
  • dim (int) – ось, по которой производить индексацию
  • index (LongTensor) – индексы элементов для разброса и сложения, могут быть пустыми или иметь ту же размерность, что и src. Если пустые, операция возвращает self без изменений.
  • src (Tensor) – источник элементов для разброса и сложения

Пример:

>>> src = torch.ones((2, 5))
>>> index = torch.tensor([[0, 1, 2, 0, 0]])
>>> torch.zeros(3, 5, dtype=src.dtype).scatter_add_(0, index, src)
tensor([[1., 0., 0., 1., 1.],
        [0., 1., 0., 0., 0.],
        [0., 0., 1., 0., 0.]])
>>> index = torch.tensor([[0, 1, 2, 0, 0], [0, 1, 2, 2, 2]])
>>> torch.zeros(3, 5, dtype=src.dtype).scatter_add_(0, index, src)
tensor([[2., 0., 0., 1., 1.],
        [0., 2., 0., 0., 0.],
        [0., 0., 2., 1., 1.]])

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

Spec-Zone.ru

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