Accumulate the elements of source
into the self
tensor by accumulating to the indices in the order given in index
using the reduction given by the reduce
argument. For example, if dim == 0
, index[i] == j
, reduce == prod
and include_self == True
then the i
th row of source
is multiplied by the j
th row of self
. If include_self="True"
, the values in the self
tensor are included in the reduction, otherwise, rows in the self
tensor that are accumulated to are treated as if they were filled with the reduction identites.
The dim
th dimension of source
must have the same size as the length of index
(which must be a vector), and all other dimensions must match self
, or an error will be raised.
For a 3-D tensor with reduce="prod"
and include_self=True
the output is given as:
self[index[i], :, :] *= src[i, :, :] # if dim == 0 self[:, index[i], :] *= src[:, i, :] # if dim == 1 self[:, :, index[i]] *= src[:, :, i] # if dim == 2
>>> x = torch.empty(5, 3).fill_(2) >>> t = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]], dtype=torch.float) >>> index = torch.tensor([0, 4, 2, 0]) >>> x.index_reduce_(0, index, t, 'prod') tensor([[20., 44., 72.], [ 2., 2., 2.], [14., 16., 18.], [ 2., 2., 2.], [ 8., 10., 12.]]) >>> x = torch.empty(5, 3).fill_(2) >>> x.index_reduce_(0, index, t, 'prod', include_self=False) tensor([[10., 22., 36.], [ 2., 2., 2.], [ 7., 8., 9.], [ 2., 2., 2.], [ 4., 5., 6.]])
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4