Hi, given 2 tensors, I wanna keep only those elements in tensor1 that are in tensor 2. I am using the below snippet (output from debugger in italics)
def in1d(ar1, ar2):
mask = ar2.new_zeros((max(len(ar1), len(ar2))), dtype=torch.bool)
*tensor([False, False, False, False, False, False, False, False, False, False,*
* False, False, False, False, False, False, False, False, False, False,*
* False, False, False, False, False, False, False, False, False, False,*
* False, False, False, False, False, False, False, False, False, False,*
* False, False, False, False, False, False, False, False, False, False,*
* False, False, False, False, False, False, False, False, False, False,*
* False, False, False, False, False, False, False, False, False, False,*
* False, False, False, False, False, False, False, False, False, False,*
* False, False, False, False, False, False, False, False, False, False,*
* False, False, False, False, False, False, False, False, False],*
* device='cuda:0')*
mask[ar2.unique()] = True
mask
**<torch.Tensor object at 0x7fc12d7d1c20>*
return mask[ar1]
*CUDA Device side assert trigerred*
I noticed that as soon as I try assigning values as so - mask[ar2.unique()] = True, the mask tensor doesn’t get printed and instead only shows up as an object. Why?
How should tensors be indexed and masked? Is there a torch-ic way for this?