I have a tensor
B x 4 and another tensor
B of size
H x N.
A has integer values and many are -1 like:
tensor([[ 2.2640e+03, -1.0000e+00, -1.0000e+00, -1.0000e+00], [ 3.5400e+02, -1.0000e+00, -1.0000e+00, -1.0000e+00], [ 6.2700e+02, 6.2900e+02, -1.0000e+00, -1.0000e+00]
I want a new tensor of size
B x H with values from
B according to the indices in
A. For example, for the first entry, I have the tensor [2260, -1, -1, -1] and I want the tensor of size
H, in position
N (i.e., tensor2[:, 2260]). There might be entries from
A where there are more than one number higher than -1, in which case I would like to get the respective tensors in the indices and then average them.
torch.index_select(b, 0, a[:, 0]) almost gives the correct answer. Just need a way to handle the case where more than 1 integer is given, like in the third row of the above example.
Thanks for any help you can provide.