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не выполняют широковещательную передачу. Еслиindexпуст, всегда возвращается исходный тензор без дополнительной проверки ошибок.Примечание
При работе с тензорами на устройстве 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.]])
© 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.scatter_add_.html