Hi, everyone.
My colleague found a interesting problem when check the id of some tensors.
Here is the code:
import torch
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
x = torch.tensor(x, dtype=torch.float32)
pos_idxes = torch.tensor([1, 2, 3, 4], dtype=torch.int64)
idxes = pos_idxes > 2
n = 10
for i in range(n):
print(f"[{i}]", "x[pos_idxes][idxes]:", id(x[pos_idxes][idxes]), "x[pos_idxes[idxes]]:", id(x[pos_idxes[idxes]]))
Results:
[0] x[pos_idxes][idxes]: 2217284501312 x[pos_idxes[idxes]]: 2217284108096
[1] x[pos_idxes][idxes]: 2217284501312 x[pos_idxes[idxes]]: 2217284108096
[2] x[pos_idxes][idxes]: 2217284501312 x[pos_idxes[idxes]]: 2217284108096
[3] x[pos_idxes][idxes]: 2217284501312 x[pos_idxes[idxes]]: 2217284108096
[4] x[pos_idxes][idxes]: 2217284501312 x[pos_idxes[idxes]]: 2217284108096
[5] x[pos_idxes][idxes]: 2217284501312 x[pos_idxes[idxes]]: 2217284108096
[6] x[pos_idxes][idxes]: 2217284501312 x[pos_idxes[idxes]]: 2217284108096
[7] x[pos_idxes][idxes]: 2217284501312 x[pos_idxes[idxes]]: 2217284108096
[8] x[pos_idxes][idxes]: 2217284501312 x[pos_idxes[idxes]]: 2217284108096
[9] x[pos_idxes][idxes]: 2217284501312 x[pos_idxes[idxes]]: 2217284108096
Pytorch should be return a new tensor when use index, it will have a new id of new tensor, but the code’s output make me confused.
Why it give the same id?