"src" do not broadcast.
Moreover, as for "gather()", the values of "index" must be between
   "0" and "self.size(dim) - 1" inclusive.
Warning:
 When indices are not unique, the behavior is non-deterministic
 (one of the values from "src" will be picked arbitrarily) and the
 gradient will be incorrect (it will be propagated to all
 locations in the source that correspond to the same index)!

Note:
 The backward pass is implemented only for "src.shape ==
 index.shape".

Additionally accepts an optional "reduce" argument that allows
   specification of an optional reduction operation, which is applied
   to all values in the tensor "src" into "self" at the indices
   specified in the "index". For each value in "src", the reduction
   operation is applied to an index in "self" which is specified by
   its index in "src" for "dimension != dim" and by the corresponding
   value in "index" for "dimension = dim".
Given a 3-D tensor and reduction using the multiplication