torch.Tensor.index_add_
-
Tensor.index_add_(dim, index, source, *, alpha=1) → Tensor -
Накапливает элементы
alpha, умноженные наsource, в тензореself, добавляя их к индексам в порядке, заданном вindex. Например, еслиdim == 0,index[i] == jиalpha=-1, тоi-я строкаsourceвычитается изj-й строкиself.Размер
sourceпо измерениюdimдолжен совпадать с длинойindex(который должен быть вектором), а все остальные измерения должны совпадать сself, иначе будет вызвана ошибка.Для 3-мерного тензора результат задаётся следующим образом:
self[index[i], :, :] += alpha * src[i, :, :] # if dim == 0 self[:, index[i], :] += alpha * src[:, i, :] # if dim == 1 self[:, :, index[i]] += alpha * src[:, :, i] # if dim == 2
Примечание
Эта операция может вести себя недетерминированно, если тензоры находятся на устройстве CUDA. Дополнительные сведения см. в разделе Воспроизводимость.
- Параметры:
- Именованные аргументы:
-
alpha (Number) – скалярный множитель для
source
Пример:
>>> x = torch.ones(5, 3) >>> t = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=torch.float) >>> index = torch.tensor([0, 4, 2]) >>> x.index_add_(0, index, t) tensor([[ 2., 3., 4.], [ 1., 1., 1.], [ 8., 9., 10.], [ 1., 1., 1.], [ 5., 6., 7.]]) >>> x.index_add_(0, index, t, alpha=-1) tensor([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 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.index_add_.html