torch.Tensor.scatter_
Tensor.scatter_(dim, index, src, reduce=None) -> Tensor
Writes all values from the tensor "src" into "self" at the indices
   specified in the "index" tensor. For each value in "src", its
   output index is specified by its index in "src" for "dimension !=
   dim" and by the corresponding value in "index" for "dimension =
   dim".
For a 3-D tensor, "self" is 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

This is the reverse operation of the manner described in
   "gather()".
"self", "index" and "src" (if it is a Tensor) should all have the
   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 "index" and
   "src" do not broadcast.