As of today, we can use long, byte or bool tensor as indices. but indexing with byte tensor is deprecated.
But indexing with longtensor doesn’t give same answer as indexing with booltensor.
x = torch.rand(3, 3)
>>> x
tensor([[0.0857, 0.9867, 0.0330],
[0.9295, 0.9787, 0.4835],
[0.9376, 0.3851, 0.8934]])
y = torch.tensor([[1, 1, 1],
[0, 0, 0],
[0, 0, 0]])
>>> y
tensor([[1, 1, 1],
[0, 0, 0],
[0, 0, 0]])
indexing with booltensor gives
>>> x[y.bool()]
tensor([0.0857, 0.9867, 0.0330])
indexing with longtensor gives
>>> x[y]
tensor([[[0.9295, 0.9787, 0.4835],
[0.9295, 0.9787, 0.4835],
[0.9295, 0.9787, 0.4835]],
[[0.0857, 0.9867, 0.0330],
[0.0857, 0.9867, 0.0330],
[0.0857, 0.9867, 0.0330]],
[[0.0857, 0.9867, 0.0330],
[0.0857, 0.9867, 0.0330],
[0.0857, 0.9867, 0.0330]]])
Is this an expected behavior? Is there something am i doing wrong?
I want indexing with longtensor to give same result as indexing with booltensor.
Thank you in advance!