torch.Tensor.scatter_add_¶
- Tensor.scatter_add_(dim, index, src) Tensor¶
- Adds all values from the tensor - srcinto- selfat the indices specified in the- indextensor in a similar fashion as- scatter_(). For each value in- src, it is added to an index in- selfwhich is specified by its index in- srcfor- dimension != dimand by the corresponding value in- indexfor- dimension = dim.- For a 3-D tensor, - selfis updated as:- 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,- indexand- srcshould have same number of dimensions. It is also required that- index.size(d) <= src.size(d)for all dimensions- d, and that- index.size(d) <= self.size(d)for all dimensions- d != dim. Note that- indexand- srcdo not broadcast.- Note - This operation may behave nondeterministically when given tensors on a CUDA device. See Reproducibility for more information. - Note - The backward pass is implemented only for - src.shape == index.shape.- Parameters
 - Example: - >>> 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.]])